Занятие № 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 и проверь, появилась ли диаграмма.

Важно!

Сохрани этот проект, так как на следующем занятии мы продолжим его улучшать. Для того чтобы сохранить проект выбери пункт меню Файл - Сохранить.