Занятие № 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.

Если до этого вы уже вводили оценки, нажмите на кнопку Граф. и проверьте, появилась ли диаграмма.

Важно!

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