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