Занятие №28 "Больше блоков-циклов в Scratch"
Как вы уже знаете, блоки-циклы дают возможность повторить в программе команду или набор программ. Scratch поддерживает три блока повторения
Блоки повторения в Scratch
Вы уже не раз пользовались двумя из этих блоков: повторить и всегда. В этом разделе вы познакомитесь с третьим — блоком повторять пока не — и разберетесь в технических моментах, связанных с циклами в целом. Каждый повтор цикла называется итерацией, а словом «счет» описывается количество повторов цикла. Блок повторить — цикл со счетчиком: он повторяет свои команды определенное число раз. Это лучший вариант, когда мы знаем, сколько нужно повторений: например, если мы хотим нарисовать многоугольник с известным числом сторон. А блок повторять пока не — цикл, управляемый условием. Его команды выполняются, если верно проверяемое условие. Мы используем этот метод, когда не знаем заранее, сколько раз нужно повторить цикл, и хотим, чтобы алгоритм выполнялся до тех пор, пока не будет выполнено некое условие. Например, вы можете сказать: «Повторять команду спросить до тех пор, пока пользователь не введет положительное число». Или «Повторять пуск ракет до тех пор, пока уровень энергии игрока не опустится ниже определенного показателя».
Блок повторять пока не

Представим себе, что вы разрабатываете игру, в которой перед пользователем ставится элементарная математическая задача. Если он отвечает неправильно, игра снова задает тот же вопрос, чтобы дать ему еще один шанс. Иными словами, игра задает один и тот же вопрос до тех пор, пока пользователь не ответит правильно. Очевидно, блок повторить здесь не подходит: вы не знаете, сколько попыток понадобится игроку, чтобы ответить правильно. Может, повезет прямо с первой попытки, а может, придется попробовать 100 раз. В таких случаях поможет блок повторять пока не.
Блок повторять пока не дает возможность выполнять серию команд до тех пор, пока не будет соблюдено некое условие
Блок содержит булево выражение, значение которого проверяется в начале цикла. Если оно верно, команды внутри цикла будут выполняться. Когда последняя команда цикла выполнена, он запускается заново и выражение проверяется снова. Если выражение неверно, команды внутри цикла будут выполнены еще раз. Цикл будет продол- жаться до тех пор, пока тестовое выражение не станет верным. Тогда команды внутри цикла будут приостановлены и программа сразу перейдет к команде, следующей за циклом.

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

Блок повторять пока не остановится, только если команда (либо внутри цикла, либо из другой активной части программы) сделает условие верным. Если оно не может стать верным никогда, мы получим бесконечный цикл. Рисунок демонстрирует пример использования на практике блока повторять пока не. В этом примере до тех пор, пока спрайт Игрок (Player) находится на расстоянии более 100 шагов от спрайта Страж (Guard), последний будет двигаться в том направлении, в котором он движется (в данном случае по горизонтали), при касании отталкиваясь от правого и левого края Сцены. Если расстояние между двумя спрайтами становится меньше 100 шагов, блок повторять пока не прекратит работу и Страж начнет погоню за Игроком. Код для этой погони на рисунке не показан. Блок расстояние до вы найдете в разделе Сенсоры.
Создание блока всегда если

Бесконечные циклы полезны во многих программах. Например, в предыдущих главах мы использовали блок всегда для проигрывания фоновой музыки и анимации спрайтов путем постоянной смены их костюмов.

Блок всегда — безусловный бесконечный цикл. Он не имеет проверяемого условия, которое контролирует выполнение команд внутри него. Вы легко можете изменить это, вложив блок если внутрь блока всегда, чтобы создать условный бесконечный цикл .

Условие блока если тестируется в начале каждой итерации, и его команды выполняются только в случае, если оно верно. Блок всегда предполагает бесконечное выполнение команд без возможности добавления после него других блоков.
Вы можете создать цикл всегда/если, соединив блок всегда с блоком если
Комбинированная структура всегда/если часто используется для управления движением спрайтов при помощи клавиш со стрелками, как показано
УПРАЖНЕНИЕ 28.1

Рассмотрим еще один способ управления движением спрайта при помощи клавиш со стрелками. Сравните этот метод с тем, что показан ранее. Какой из них более чувствителен к нажатиям клавиш? Как альтернативный скрипт ведет себя, если вы нажмете сразу две клавиши (например, вниз и направо)? Попробуйте поместить четыре блока если, в один цикл всегда и нажмите одновременно две клавиши со стрелками. Как изменится поведение спрайта?
Когда пользователь щелкнет по зеленому флажку, четыре клавиши со стрелками (влево, вправо, вверх и вниз) будут отслеживаться в четырех независимых бесконечных циклах. Когда нажимается одна из клавиш, соответствующий цикл меняет значение координаты x или y спрайта.

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

Scratch - Учись играя!
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website