Занятие № 11. Списки в Scratch
Проект “Школьный журнал”
На основе Scratch разработаем программу для работы с оценками учеников. Программа должна обладать следующими функциями:
- возможность сохранить список оценок (количество оценок вводится пользователем);
- нахождение минимальной и максимальной оценки;
- построение диаграммы, которая показывает, каких оценок больше.
Ввод оценок
Откройте шаблон проекта по следующей ссылке. В проекте уже содержатся четыре спрайта: три из них будут кнопками, а четвёртый - будет рисовать график (этот спрайт скрыт и не виден на сцене). Также в проекте уже создан список с именем xPos. Он содержит координату x в которой должен находится карандаш перед рисованием очередного столбца диаграммы.
Создадим необходимые переменные. Перейдите в раздел Данные и создайте следующие переменные:
Переменная | Назначение |
---|---|
количествоОценок | сколько оценок будет введено пользователем |
поз | переменная будет использоваться в скриптах для перебора всех элементов |
максимум | хранит временное значение максимальной оценки |
балл | будет хранить промежуточное значение балла в одном из алгоритмов |
Теперь создайте необходимые списки:
Список | Назначение |
---|---|
оценки | список будет содержать оценки, которые введены пользователем |
подсчётОценок | в списке будет содержаться информация о количестве одинаковых оценок |
Выберите спрайт Ввод и добавьте следующий скрипт:
После нажатия на спрайт, программа запросит, сколько оценок будет сохранено в списке оценки. После этого программа с помощью цикла повторить … запрашивает ввод необходимого количества оценок.
Нахождение максимальной оценки
Выберите спрайт Максимум и добавьте следующий скрипт:
Проверьте работу программы. Нажмите на спрайт с текстом Ввод, введите сколько оценок будет в вашем журнале и затем введите оценки. Помните, что оценка не может быть больше 10. После того как оценки введены, нажмите на кнопку с текстом Макс.
Построение диаграммы
Наша программа будет строить диаграмму, показывающую, каких оценок было введено больше. Пример такой диаграммы приведён на следующем рисунке:
Как видно из диаграммы, больше всего в списке хранится оценок 8.
Выберите спрайт График.
Создайте блок Подсчёт оценок. Для этого нажмите кнопку Создать блок в категории Другие блоки. В окне конструктора блока задайте его имя:
Нажмите кнопку OK, чтобы создать определение блока. Блок содержит следующий скрипт:
Алгоритм подсчёта оценок работает следующим образом. Сначала полностью очистим список подсчётОценок 1
. Затем с помощью цикла добавим в список 10 нулей 2
. Сейчас содержимое списка выглядит следующим образом:
После этого мы запускаем цикл, с помощью которого перебираем все введённые оценки 3
4
. В переменной балл будет сохраняться текущее значение оценки на этом шаге цикла 5
. Основная идея алгоритма состоит в том, что мы используем переменную балл для доступа к нужному элементу списка подсчётОценок 6
. Если к примеру значение переменной балл равно 7, то на этом шаге цикла мы обратимся к седьмому элементу списка подсчётОценок, и добавляем к текущему значению которое хранилось в этом элементе списка единицу 7
. То есть, каждый элемент списка подсчётОценок хранит в себе количество оценок соответствующих номеру этого элемента в списке.
К примеру если список оценок будет хранить следующие значения:
то после выполнения блока Подсчёт значений в списке подсчётЗначений будут храниться следующие значения:
Обратите внимание, что в списке оценки хранится две оценки 7. По этому в списке подсчётЗначений на седьмой позиции записано число 2.
Теперь когда блок готов, добавьте к спрайту основной скрипт:
После нажатия на спрайт График блок Подсчёт оценок посчитает, сколько раз встречается каждая из оценок в списке оценки и запишет результаты в список подсчётОценок. После этого мы передаём сообщение спрайту Карандаш, чтобы он начал рисование диаграммы.
Выберите спрайт Карандаш и добавьте следующий скрипт:
После того как спрайту придёт сообщение рисовать очистим предыдущую диаграмму, поднимем перо и установим его размер 1
. В цикле повторить … переберём все значения списка подсчётОценок 2
. Координата x для карандаша берётся из списка xPos. Каждой оценке соответствует свой столбец диаграммы 3
. После этого опускаем перо и рисуем линию, длина которой зависит от того, сколько раз оценка встречается в списке оценки. Для того чтобы линия не была слишком короткой, количество оценок умножается на 15 4
.
Если до этого вы уже вводили оценки, нажмите на кнопку Граф. и проверьте, появилась ли диаграмма.
Сохраните этот проект, так как на следующем занятии мы продолжим его улучшать. Для того чтобы сохранить проект выберите пункт меню Файл - Сохранить.