Визуальный язык Scratch был придуман специально для того, чтобы научить детей программировать. На одноименной платформе ученики младших классов знакомятся с азами кодинга, создают первые игры и анимации. При этом юных разработчиков не пугают длинными столбцами кода: алгоритм формируется путем перемещения графических блоков.
Вот несколько интересных фактов о платформе Scratch:
- язык разработан медиалабораторией Массачусетского технологического института;
- в 2022 году Scratch исполнилось 15 лет;
- в среднем официальный сайт посещают более 38 миллионов пользователей в месяц;
- на площадке уже размещено 113 миллионов проектов;
- платформа переведена на 74 языка (в том числе на русский) и используется в 200 странах мира.
Знакомство со Скретч станет базой для дальнейшего погружения в область IT и обучения другим языкам – например, Python или C++.
Детская школа программирования «Пиксель» собрала наиболее полный гайд о языке Скретч и устройстве интерфейса этой визуальной среды.
Почему детям стоит изучать язык программирования Scratch
Кодить на Скретч ребенку 8-12 лет несложно: вместо текстового кода применяются яркие блоки с названиями команд, а интерфейс прост и интуитивно понятен. Процесс разработки напоминает сборку деталей Лего.
Для дошкольников от 5-6 лет и вовсе создана версия Scratch Junior, где блоки обозначены символами и картинками. Это максимально упрощенный вариант блочного программирования: дети смогут начать проектировать игры и мультфильмы на Скретч Джуниор еще до того, как научатся читать и писать.
Результат действий наблюдается в реальном времени: на экране видна сцена с персонажем, ребенок может в любой момент запустить программу и проверить, что получилось. Визуальность площадки вовлекает детей в процесс кодинга, располагает и мотивирует продолжать изучать программирование. Так ребята уже с раннего возраста начинают познавать мир IT.
Scratch-обучение для детей не только увлекательно, но и полезно:
- Учит размышлять логически и аналитически. Дети улавливают связи между действиями и итогом, учатся разбивать задачу на подзадачи.
- Дает почувствовать, что ошибки – это нормально. Запуская программу, ребята видят неточности и ищут варианты решения проблемы. Дети исправляют промахи и стараются в будущем не допускать их.
- Воспитывает целеустремленность. Ученик прокладывает маршрут выполнения цели и последовательно идет по намеченному плану.
- Помогает раскрываться и выражать себя с креативной стороны. Техническое творчество приучает замечать красоту, мыслить шире и выходить за рамки. Школьник высказывает идеи и делится ими с окружающими – это вдохновляет.
- Пробуждает интерес к учебе. Ребенок узнает мир и начинает интересоваться школьными предметами, которые раньше казались скучными: математика, английский, информатика.
Уже при обучении на Скретч дети исследуют базовые IT-термины: функции, циклы, условные конструкции, переменные и многое другое. Знания, приобретенные на занятиях по Скретч, пригодятся при освоении других языков кодинга.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Scratch: как начать делать игру с нуля новичку
Чтобы приступить к разработке в конструкторе Scratch, необязательно устанавливать программу. На онлайн-платформе ребята практикуются даже без регистрации – правда, в таком случае не выйдет сохранять игры и делиться с друзьями, получать отклики юзеров.
При большом желании можно скачать программу на компьютер.
Созданные на Скретч проекты можно конвертировать в другие типы файлов при участии стороннего ПО и дополнительных инструментов, однако процесс может оказаться непростым. Например, можно перевести игру в формат APK и скачать программу на Android.
С чего начать программирование на Скретч
Зайдите на веб-страницу Scratch и нажмите «Начни создавать», запустив редактор проекта (также можно нажать на «Создавай» в верхнем меню).
В выпадающем списке выберите русский язык, затем перейдите в раздел «Учебник»: он покажет потенциал воплощения проектов и поможет привыкнуть к редактору. Пошаговые инструкции помогут разобраться в программе.
В разделе «Учебник» можно выбрать тип проекта и инструкцию, которой хотели бы следовать.
Для включения в проект новых спрайтов нажимаем на кнопку добавления персонажей. Выбираем подходящего героя из встроенной библиотеки спрайтов. Внешний вид персонажа изменяется во вкладке «Костюмы». Также в проект можно загрузить собственных спрайтов: героев, предметы, фоны.
Для программирования спрайта нажимаем на него и создаем алгоритм. Для этого отбираем необходимые блоки из меню слева и соединяем их между собой.
В проект можно добавить звуковые эффекты – для этого переходим во вкладку «Звуки». Есть возможность импортировать музыкальные дорожки с компьютера или записать свои звуки во встроенном редакторе.
В библиотеке спрайтов есть раздел «Музыка», где собраны музыкальные инструменты. Если добавить их в проект, они будут производить соответствующие звуки.
Категории блоков в Scratch
Разноцветные блоки с командами – замена текстового кода для детей. Элементы перетаскиваются с места на место, прикрепляются друг к другу с помощью специальных выемок: так формируется скрипт. Созданный алгоритм «оживляет» героя: учит двигаться, издавать звуки, менять цвета. Для каждого из спрайтов можно задать одну или несколько программ.
Блоки делятся на типы, различаясь по назначению функций, цвету и форме. Ниже рассмотрим подробнее разновидности блоков.
Блоки событий в Scratch
Событийные блоки – стартовые и располагаются в начале кода. Такие блоки закрашены желтым цветом, с круглым выступом наверху. Миссия деталей из этой категории – обозначить триггер запуска проекта.
Поводом запустить последовательность событий могут стать нажатие флажка или спрайта, смена фона, увеличение громкости.
Между собой желтые блоки не объединяются – только с элементами других типов.
Блоки движения в Scratch
Синие блоки помогают персонажу перемещаться по траектории, поворачиваться, плыть – словом, двигаться разнообразными способами.
В отличие от элементов желтого цвета, синие соединяются между собой – так выполняется заданный порядок действий.
С помощью синих блоков персонаж может прыгать: для этого указываются точки перемещения в системе координат.
Блоки внешнего вида в Scratch
Меняют облик героя блоки фиолетового цвета.
Как сделать в Scratch смену размера или цвета персонажа, спрятать или показать героя на сцене – все эти действия по отношению к спрайту совершаются с помощью фиолетовых деталей.
Фиолетовые блоки прикрепляются друг к другу.
Блоки управления в Scratch
Блоки оранжевого цвета задают процессы и отвечают за циклы и клоны. Совмещаются и используются пошагово. Внутрь такого блока можно добавить другие команды.
Блоки звуков в Scratch
С помощью сиреневых блоков ребенок управляет звуком в игре или анимации: добавляет, изменяет и останавливает его.
Сиреневые элементы крепятся между собой в нужной последовательности.
Блоки сенсоров в Scratch
Сенсорные блоки посодействуют в конструировании проекта, где внешние условия напрямую влияют на последующее развитие событий.
Не все эти детали соединяются между собой.
Создание блока
В Скретч пользователь может создать новый блок с заданными параметрами.
Расширения Скретч и дополнительные функции
В среде Scratch доступны различные расширения, которые добавляют в редактор новые функции. С их помощью можно записать музыку, добавить видео и т. д. Кнопка для расширений в редакторе находится в левом нижнем углу.
Добавление видео в проект
С помощью расширения «Видео распознавание» в Scratch можно записать себя на камеру и добавить ролик в игру. При вставке расширения включится веб-камера и в проекте появятся новые блоки.
Необходимо записать на видео свои действия: например, как вы гладите кота Скретча по макушке, играете на инструментах или надуваете шары. Программа будет выхватывать ваши движения на камеру: считать их количество и местонахождение на экране.
Добавление речи персонажей
Благодаря расширению «Текст в речь» герои игры или мультфильма заговорят: достаточно прописать реплику текстом в специальном блоке.
Добавление пера – рисование спрайтами
В проект можно добавить функцию рисования. Для этого необходимо выбрать спрайт (например, изображение карандаша или ручки) и составить для него программу. Установка размера пера, смена цвета при определенных условиях, удаление нарисованных линий – такие возможности предлагает расширение.
С помощью пера можно создать 3D-проект в Scratch: например, программу для проектирования трехмерных вращающихся фигур.
Также в Scratch есть расширения для наборов робототехники (Lego Mindstorms EV3, Lego WeDo 2.0).
Алгоритм освоения среды программирования Скретч для начинающих
Начать обучение рекомендуем с блоков движения и внешности героев, ведь спрайты – центральные компоненты игры. Затем стоит обратить внимание на ключевые термины кодинга: запомнить понятия условий и циклов, научиться создавать клонов и события. Небольшие проекты помогут адаптироваться к платформе, а после следует перейти к осуществлению полноценной игры: раннера, гонок или шутера.
Получить представление о Scratch будет полезно с бесплатными видеоуроками на YouTube. Устройство площадки, особенности интерфейса, механизм формирования проектов – этому научат видеоролики.
Усвоив основы Скретч-программирования и сконструировав игры по шаблонам, можно идти дальше и углублять познания: составлять собственные блоки и добавлять облачные переменные (для мультиплеера), чтобы играть не одному, а вместе с друзьями.
Уроки Скретч-программирования для детей
Представляем видеоуроки для создания занимательных проектов: попробуйте воссоздать мир «Звездных войн» и Minecraft, воплотить игровую классику – гонки или раннера, реализовать интерактивную открытку.
1. Охота за привидениями
Цель игрока – стрелять по призракам, получая за это баллы. 20 привидений за минуту – скорость нешуточная, но тем и увлекательнее. Юный программист подберет подходящий фон, выберет персонажей и напишет скрипт.
2. Гонки на двоих
В этот проект играют с приятелем, состязаясь, кто первый доберется до финиша. Для захватывающего соревнования нужно создать трассу и машины, сформировать скрипты. А заодно познакомиться с понятиями цикла и условного оператора if.
3. «Звездные войны»
Игра для фанатов Star Wars: космолет открывает огонь по кораблям противника, зарабатывая очки. Требуется спроектировать и запрограммировать космические судна, задать поведение врага, настроить подсчет баллов.
4. Minecraft
Благодаря широкому функционалу в Скретч можно воссоздавать популярные игры: например, вселенную Майнкрафт. Попутно изучаются такие понятия, как клоны, переменные, условия. Суть проекта – за наименьшее количество шагов добраться до сундука. Ошибаться не рекомендуется, ведь за это отнимается жизнь.
5. Among Us
В игре Among Us члены экипажа должны вычислить самозванца среди своих и выполнить задания. В 1-й части урока создаются карта и участники экипажа.
Во 2-й части проект усложняется: добавляются звуковые эффекты и еще одна задача.
7. Раннер
Неутомимому бегуну необходимо пробежать как можно дольше, не наткнувшись на призрака. При столкновении у героя забирается жизнь. В конце таймер на экране продемонстрирует, какое время удалось удержаться в игре. Для конструирования нужно добавить фон и спрайты, задать управление персонажами, прописать алгоритм шагов и вычисление очков.
8. Интерактивная открытка
Благодаря этому уроку по Скретч вы узнаете, как сделать анимированную открытку. При нажатии на кнопку-триггер поздравительная карточка будет открываться. В видео мы показываем, как нарисовать саму открытку и собрать для нее код.
9. Brawl Stars
В эпичной игре противники стреляют друг в друга с оружием: космическая битва не на жизнь, а на смерть. Для создания клона «Бравл Старс» на Скретч необходимо сделать фон, кнопки, персонажей и орудия, счетчик времени.
10. Flappy Bird
Птичка летает между помехами, стараясь их не касаться. За каждое препятствие начисляются очки. Для реализации прописываются ход и условия, подсчет очков, анимация и передвижения спрайта.
Публикация проекта на сайте Scratch
После создания проекта можно опубликовать его на сайте Scratch (для этого необходимо зарегистрироваться). Так в него смогут сыграть другие пользователи Скретч. На онлайн-платформе собрано большое сообщество единомышленников со всего мира: начинающие программисты заходят в проекты друг друга, оценивают их и оставляют комментарии.
На платформе соблюдаются принципы полной свободы: каждый пользователь может войти внутрь проекта и посмотреть его исходный код. А еще есть возможность сделать ремикс: скопировать проект и дополнить его своими идеями.
***
Визуальное программирование в Scratch может стать для школьников не только любимым хобби, но и фундаментом для будущей высокооплачиваемой профессии. Изучать Скретч можно как самостоятельно, так и вместе с опытными педагогами. Главное – регулярно практиковаться и исследовать различные инструменты Scratch, пробовать создавать собственные проекты: например, на основе любимых видеоигр. Старайтесь развивать и поддерживать в себе интерес к IT, и тогда у вас все получится.
Делимся подробным гайдом по Scratch-программированию: как устроен интерфейс визуальной среды и какие блоки в ней можно использовать.
Начать изучать программирование школьникам намного проще, чем может показаться. Одним из действенных инструментов является обучение с помощью платформ визуального программирования: например, среды Scratch, специально разработанной для детей.
Scratch откроет детям увлекательный мир программирования с помощью блоков, из которых можно составить код. Благодаря блочному программированию ребята смогут создать настоящую игру и затем сами поиграть в нее.
Создание различных проектов на языке Scratch помогает детям не только постепенно изучать сферу IT, но и развивать различные навыки и качества, такие как креативность, логическое мышление, усидчивость и любознательность.
На сайте Scratch вы сможете найти огромное количество различных игр, презентаций, мультфильмов от начинающих и профессиональных разработчиков.
Школа программирования для детей «Пиксель» подготовила подробный гайд по Scratch, чтобы помочь ученикам начальных классов разработать свой первый проект.
Как начать программировать на Scratch?
Для начала перейдите на сайт Scratch и откройте редактор проекта, нажав на кнопку «Создать».
Выберите русский язык в программе в выпадающем списке, далее перейдите в раздел «Учебник».
Здесь можно выбрать разные виды проектов, которые создаются на платформе.
Прямо на рабочей сцене программы вы пошагово можете повторить выбранную анимацию.
А еще можно выбрать вкладку «Костюмы» и теперь уже в графическом редакторе изменить персонажа.
Раздел «Костюмы» во многом схож с графическим редактором Paint, поэтому прост в освоении детьми
А во вкладке «Звуки» можно добавить различные музыкальные эффекты, подходящие игре
Посмотрите видеоурок, посвященный введению в Скретч и началу работы с программой. С его помощью вы сможете создать свою первую простейшую программу.
Чтобы добавить новых персонажей в проект, нажмите на кнопку добавления спрайтов и выберите из библиотеки подходящие.
Чтобы запрограммировать каждый спрайт, нажмите на него и создайте программу: выберите нужные блоки из левого меню и соедините их между собой.
Блоки кода — это команды для персонажа. Соединив их вместе, вы создаете программу для героя. Такой скрипт может заставить спрайта двигаться, менять цвета и издавать различные звуки. В проект можно добавлять много персонажей, а затем для каждого из них создавать одну или несколько программ.
Смотрите подробное видео про создание спрайтов и программирование первых игр на Скретч:
В Scratch есть много разных типов блоков и у каждого из них своя функция. Обратите внимание на форму блоков: в них есть специальные выемки сверху и снизу, предназначенные для соединения между собой.
Блоки событий в Scratch
Блоки из этой категории обозначаются желтым цветом и имеют особую форму с выступом наверху. Это стартовые блоки, которые должны располагаться в начале кода. Желтые блоки показывают, какая цепочка действий должна произойти после того, как проект будет запущен.
Триггером для старта могут стать разные события: нажатие флажка, изменение громкости или заднего фона, получение сообщения и другое.
Обратите внимание, что между собой такие блоки нельзя соединить.
Блоки движения в Scratch
Эти блоки синего цвета позволяют спрайту двигаться по заданной траектории и выполнять определенную последовательность действий.
Блоки синего цвета можно соединять между собой для выполнения заданного порядка действий.
А еще эти блоки могут заставить спрайта прыгать, для этого нужно выбрать блок с указанием точки перемещения в системе координат.
Блоки внешнего вида в Scratch
Блоки фиолетового цвета изменяют внешний вид спрайта.
Например, при заданных условиях ваш спрайт может увеличиться или уменьшится в размере, изменить цвет, спрятаться или показаться на карте.
Фиолетовые блоки также можно соединять между собой.
Блоки управления в Scratch
Оранжевые блоки помогут запрограммировать процессы в игре и настроить периодичность их выполнения. С помощью блоков управления дети знакомятся с циклами в программировании, разбираются в том, что такое бесконечный и ограниченный цикл.
Такие блоки также можно соединять и использовать пошагово.
Блоки звуков в Scratch
Розовые блоки позволяют управлять звуками, задействовать звуковое сопровождение в игре.
Фиолетовые блоки можно соединять между собой и расставлять их в определенной последовательности.
Блоки сенсоров Scratch
Команды из этой категории помогут создать проект, который реагирует на внешние условия и может воспроизводить несколько вариантов событий в зависимости от условий запуска.
Обратите внимание, что не все синие блоки можно соединять между собой.
Создание собственного блока
В Скретч также можно сделать новый блок по заданным параметрам.
Уроки программирования на Scratch для школьников
В наших плейлистах мы подробно пошагово разбираем процесс создания различных проектов на Скретч.
Попробуйте создать игры на Скретч самостоятельно. Мы подготовили отдельный плейлист видеоуроков, посвященных созданию онлайн-игр.
Учитесь, развивайтесь и изучайте программирование вместе с уроками школы «Пиксель». Смотрите бесплатные туториалы на нашем YouTube-канале или приходите на курсы, чтобы открыть ребенку мир возможностей в IT.
Визуальная среда программирования Scratch 3. Теория и
практика программирования. Методическое пособие для школьников и студентов. /
сост.: Абухба А.М. – Сухум: АГУ, 2020.
Пособие содержит теоретические сведения и практическую часть
по основам программирования в среде Scratch 3. Приведены примеры составления
линейных, разветвляющихся и циклических программ, а также примеры программ с
использованием одномерных массивов и подпрограмм. Предусмотрено выполнение
лабораторных работ по вариантам.
Оглавление
Введение ………………………………………………………………………………….
4
1.
Основы работы с
программой Scratch 3 …………………………… 6
1.1.
Интерфейс
среды программирования Scratch 3………………. 6
1.2.
Основные понятия в среде Scratch…………………………………… 7
1.3.
Содержимое блоков………………………………………………………….. 9
1.4.
Переменные в Scratch………………………………………………………. 10 1.5. Типы данных в Scratch………………………………………………………
12
1.6.
Запись выражении в Scratch…………………………………………….. 14 1.7. Ввод данных и вывод результата……………………………………..
16
2.
Основы программирования
в среде Scratch 3………………….
19 Лабораторная
работа №1. Запись математических выражений и программирование
линейного вычислительного процесса……………………………………………… 19
Лабораторная работа №2.
Программирование разветвляющегося вычислительного процесса ……………… 24
Лабораторная
работа №3. Программирование
циклического
вычислительного процесса ……………………… 32
Лабораторная работа №4. Программирование с
использованием списков (одномерных массивов)………… 41
Лабораторная работа №5. Программирование с
использованием подпрограмм………………………………………. 54
3.
Последовательные
и параллельные процессы…………….. 69
3.1.
Последовательное выполнение скриптов……………………….. 69
3.2.
Параллельное выполнение скриптов путем передачи сообщений…………………………………………………………………………
71
3.3.
Параллельное выполнение скриптов путем создания клона
спрайта…………………………………………………………………… 75
3.4.
Параллельно — последовательное выполнение скриптов… 78
Приложение.
Понятие алгоритма. Блок-схема…………… 81 Список
рекомендуемой литературы………………………………… 84
Введение
Scratch – новая
учебная среда для обучения школьников и студентов младших курсов
программированию. Scratch, с точки зрения теории, — объектно-ориентированный
язык с возможностью создавать многопоточные программы. С практической точки
зрения это простой в изучении, красивый, мощный инструмент, который не требует
двухмесячного изучения, прежде чем появится возможность написать программу для
решения квадратного уравнения. Изучается в более чем 150 странах мира. На
сегодняшний день её интерфейс переведен на многие языки в т. ч. на Абхазский
(перевод Абухба А.М.). Данный факт является отличительной чертой и огромным
достоинством перед другими языками программирования т.к. позволяет заниматься
алгоритмизацией и программированием на родном языке, что способствует сохранению
и развитию национальных языков. При смене языка интерфейса происходит
автоматический перевод программы(скрипта) на устанавливаемый язык.
Scratch был создан в 2006 г., а версия Scratch 1.4 вышел в
2009 г., и был разработан на базе языка Squeak. Версия 2.0 была выпущена в мае
2013 года и реализован на Flash и ActionScript. Scratch 3.0 выпущена 2 января 2019 и является улучшенной
версией Scratch 2.0 и сделана на HTML5, используя движок WebGL, что даёт ему возможность работать на мобильных устройствах и планшетах.
Одной из важнейших особенностей Scratch как языка
программирования является его событийно-ориентированный характер. Это означает,
что все объекты взаимодействуют при помощи обмена сообщениями. Такая схема
обмена информацией делает Scratch близким к современным объектно-ориентированным
языкам и позволяет впоследствии более просто организовать переход к изучению
Java, Delphi, C# и др.
Scratch – это не только среда программирования, но и социальная
сеть (http://scratch.mit.edu),
которая объединяет пользователей из разных стран. Здесь можно опубликовать свои
проекты и посмотреть чужие, скачать их, изменить.
Изучение среды программирования Scratch, может серьезно
помочь освоить азы алгоритмизации и программирования, создавать и исследовать
компьютерные модели, а полученные знания пригодятся для дальнейшего и более
серьезного изучения программирования.
Одной из главных особенностью языка Scratch, является
развитие собственных задумок с первой идеи до конечного программного продукта.
Для этого в Scratch имеются все необходимые средства:
–
стандартные для языков процедурного типа: следование, ветвление,
циклы, переменные, типы данных (целые и вещественные числа, строки, логические,
списки — динамические массивы), псевдослучайные числа;
–
объектно-ориентированные: объекты (их поля и методы), передача
сообщений и обработка событий;
–
интерактивные: обработка взаимодействия объектов между собой, с
пользователем, а также событий вне компьютера (при помощи подключаемого
сенсорного блока);
–
параллельное выполнение (многопоточность): запуск методов
объектов в параллельных потоках с возможностью координации и синхронизации; – создание
простого и эффективного интерфейса пользователя.
Целью данного пособия является изучение основных методов, касающихся
основам программирования, работы в визуальной среде программирования Scratch
3.
Пособие содержит теоретические сведения и практическую часть
по основам программирования в среде Scratch 3. Приведены примеры составления
линейных, разветвляющихся и циклических программ, а также примеры программ с
использованием одномерных массивов и подпрограмм. Для большинства рассмотренных
примеров, составлены блок – схемы алгоритмов решения. Предусмотрено выполнение
лабораторных работ по вариантам.
Выполнение лабораторных работ включает: предварительную подготовку
– изучение теоретической части, выполнение упражнений и составление отчета о
результатах работы.
Ссылка для скачивания архива всех программ, рассмотренных в
упражнениях данного пособия:
https://disk.yandex.ru/d/YkpQ4vZ—Us9DBw
Ссылка для скачивания данного пособия: https://disk.yandex.ru/i/9Ssx2cw7LM42ww
1.
Основы работы с программой Scratch 3
1.1.
Интерфейс среды программирования Scratch 3
Интерфейс
(англ. Interface) – совокупность возможностей, способов и методов
одновременного взаимодействия двух систем (любых, а не обязательно являющиеся
вычислительными или информационными), устройств или программ для обмена
информацией между ними, определённая их характеристиками, характеристиками
соединения, сигналов обмена и т. п. В случае, если одна из взаимодействующих
систем – человек, чаще говорят лишь о второй системе, то есть об интерфейсе той
системы, с которой человек взаимодействует в режиме одновременности. (Материал
из Википедии).
Независимо от системы и языка программирования в процесс
создания приложения входит дизайн и реализация интерфейса пользователя. Интерфейс
пользователя содержит средства, с помощью которых пользователь может общаться с
программой: задавать требуемые команды и видеть результаты их выполнения,
изменять исходные данные и т.п.
Нижеприведенные скриншоты и пояснения к ним дают
представление об интерфейсе среды программирования Scratch 3.
Рис. 1. Главное окно программы
Рис. 2. Перечень расширений среды Scratch 3
1.2.
Основные понятия в среде Scratch
Основными понятиями в среде Scratch являются: спрайты,
скрипты и сцена.
Скрипт – это программа на языке Scratch, которая
составляется (собирается) из готовых блоков. Эти блоки играют роль операторов
(команд) языка.
Спрайт – это исполнитель скрипта. В качестве спрайта может
быть любой графический объект: человек, поезд, бабочка и т.д. Можно изменять
внешний вид спрайтов, меняя их костюмы. Костюмом может быть любая картинка,
которую можно нарисовать самому, используя графический редактор, импортировать
ее из файла или WEB – сайта. Проект (код программы), подготовленный в среде Scratch
может состоять из нескольких спрайтов и скриптов. Причем каждый спрайт может
содержать в себе несколько скриптов. Каждый скрипт однозначно определяет
соответствующий ему спрайт.
Сцена – это место, где осуществляется выполнение
созданных проектов: обучающие программы, игры, истории, анимации и т.п. На
сцене спрайты выполняют те скрипты, которые составлены для них. Сцена всегда
одна, меняются только ее фоны. Аналогично спрайтам, сцена может изменять свой
внешний вид меняя свой фон. Фоном может быть любая картинка, которую можно
нарисовать самому, используя графический редактор, импортировать ее из файла
или WEB – сайта. Причем сцена также может содержать в себе несколько скриптов и
фонов.
Рис. 3. Координатная сетка экрана (сцены)
При нажатии на вкладку «Костюмы» откроется окно встроенного
Графического редактора среды Scratch. Здесь мы можем нарисовать новые спрайты и
их костюмы, новые сцены и их фоны, а также редактировать уже имеющиеся.
Рис. 4. Окно встроенного графического редактора
Рис. 5. Окно отображения звуков (музыки)
Здесь мы можем записать новый звук (при наличии микрофона)
или импортировать уже имеющуюся музыку или звук.
1.3. Содержимое
блоков
Блоки в Scratch подразделяются на три вида: блоки стека, блоки
заголовков и блоки ссылок.
Блоки стека (Stack
Blocks). Такие блоки имеют выемку сверху и выступ снизу, с помощью
которых блоки объединяются в стек, например,
. Многие блоки стека имеют поле для ввода значения
(например, 10 в блоке идти ) или в это поле можно
поместить ссылку на переменную или выражение (x0 и выражение y0+10 в блоке
перейти в ). Некоторые блоки имеют раскрывающиеся меню, в
которых можно выбрать требуемое значение, как например в
блоках: .
В некоторые блоки стека, имеющие
, можно помещать другие блоки. Блоки стека образуют основную
часть используемых блоков. С их помощью можно задавать необходимые действия со
спрайтами и управлять порядком выполнения действий: описывать разветвления
(выбор), повторения (циклы) и т.п.
Блоки заголовков (Hats). Такие блоки имеют выпуклый верхний край и
выступ для объединения снизу, как например . Блоки
заголовков помещаются на стеки, и они реагируют на соответствующие события:
нажатие на заданную клавишу (например, пробел), щелчок по спрайту или по сцене,
поступление сообщения от другого скрипта и т.п. При наступлении
соответствующего события запускаются блоки (стек) расположенного ниже скрипта.
Блоки ссылок (Reporters).
Эти блоки, как например, , предназначаются для заполнения внутренних
полей других блоков.
Блоки ссылок с
круглыми концами, как например, и , дают возможность
ссылаться на числа и тексты (стринги), используя в том числе переменные и
выражения. Они помещаются в поля с круглыми концами, как например, . Блоки ссылок
с острыми концами, как например, , ссылаются на логические значения
(истина или ложь), их
можно помещать в поля с острыми и круглыми концами, как например, . Перед
некоторыми блоками ссылок, такими как , имеется флажок. Если по нему щелкнуть,
то на сцене появится так называемый монитор, в котором отображается значение
данного блока ссылок.
Все блоки распределены по 9 основным группам и 11 – ти
дополнительным группам, которые доступны после нажатия на — Добавить
расширение.
Содержимое всех групп команд, среды Scratch 3, и пояснения к
ним приведены в книге: Scratch 3. Справочник команд (Куринный Сергей Леонидович), https://www.rulit.me/tag/software/scratch—3—spravochnikkomand—download—free—548674.html.
1.4.
Переменные в Scratch
Переменная – это ячейка памяти, в которую программа может
записывать некоторые значения. Значением переменной может быть число, текст или
логическое значение (истина — true, ложь — false). В каждый момент времени
переменная может иметь только одно значение. Запись в ячейку значения
переменной называется присваиванием. При присваивании переменной нового
значения ее предыдущее значение теряется!
В Scratch переменные можно создавать и использовать с
помощью блоков в группе переменные. При создании переменной задается имя, которое
используется в командах для ссылки на ее текущее значение. Кроме того, при
создании задается, является ли переменная доступной всем спрайтам (глобальная
переменная) или только одному конкретному спрайту (локальная переменная).
Последовательность действий создания глобальной переменной х:
в меню команд Переменные появится отображение
Аналогичным образом можно создавать и локальную переменную,
для этого надо пометить «Только для этого спрайта». Можно, также удалять,
ненужные в данный момент переменные командой .
Для присваивания и
изменений значений переменных используются блоки: . Значение переменной можно
отобразить на сцене с помощью монитора (если поставить галочку перед переменной
). Значение можно изменять и вручную с помощью слайдера (рычажка).
1.5.
Типы данных в Scratch
Тип данных – фундаментальное понятие теории программирования.
Тип данных определяет множество значений, набор операций, которые можно применять
к таким значениям и, возможно, способ реализации хранения значений и выполнения
операций. Любые данные, которыми оперируют программы, относятся к определённым
типам.
В Scratch можно использовать три типа данных: числовые, строковые
и логические.
1. Числовой
тип данных
Числовые данные состоят из цифр, могут включать знак минус (-)
и точку для отделения целой и дробной частей в числах. Это положительные и
отрицательные, целые и дробные числа.
Числа добавляют в овальные поля блоков, например: и т.п.
С числовыми данными можно выполнять:
1) арифметические операции
и математические функции:
;
2) округлять до
ближайшего целого числа ;
3) получать
остаток от деления целых чисел ;
4) получать случайное
число в любом диапазоне значений .
2. Строковой
тип данных
Строковые данные – это цепочки любых символов, любой длины,
которые можно написать, используя клавиатуру: буквы, знаки препинания, цифры. Строковые
данные добавляют в овальные поля блоков, такие как: и т.п.
Со строками тоже можно производить операции, как и с числами,
однако таких операций значительно меньше — всего три:
1) объединение
любых слов (символов):
2) подсчет количества
символов в строке:
3) показ символа
из строки по указанному месту: .
3. Логический
тип данных
Существует огромное количество чисел и букв, а логические
данные могут принимать только два значения: истина (Да, 1 или+) — ложь (Нет, 0 или
–).
В реальной жизни свойства многих объектов и явлений можно
определить двумя значениями, например: день — ночь, белое — черное. Также и в
компьютерных программах часто для выполнения определенных действий достаточно
знать, является истиной или ложью наличие чего-либо, не вдаваясь в другие
признаки. Например, нам неважно кто именно и какой рукой нажал на клавишу
пробел, достаточно знать, что нажатие действительно было, если нажатие было, то
– истина, иначе – ложь.
Логические операции имеют вид:
Для логических операций в категории Операторы есть 7 блоков.
С их помощью можно определить истинно или ложно, что:
1) левое значение меньше правого :
2) оба параметра
равны
3) левое значение
больше правого ;
4) верно
одновременно и левое и правое значения – логическое умножение (конъюнкция) ;
5) верно или то,
или это, или оба сразу — логическое сложение
(дизъюнкция) ;
6) неверно,
что данный параметр действителен (отрицание) ; 7)
Что строка содержит подстроку .
Для логических операций в категории Сенсоры есть 4 блока. С
их помощью можно определить истинно или ложно, что:
1) – результатом
является ИСТИНА, если этот спрайт касается другого спрайта, краев экрана или
указателя мыши;
2) – результатом
является ИСТИНА, если спрайт касается определенного цвета;
3) – результатом
является ИСТИНА, если указанные цвета касаются друг друга;
4) – результатом
является ИСТИНА, если нажата клавиша пробел или другая клавиша из выпадающего
меню.
Логические операторы и логические
данные используются для программирования циклов
и ветвлений внутри С-блоков (группа
«Контроль»).
1.6.
Запись выражении в Scratch
Для составления математических выражений используют: числа,
действия над ними, различные математические функции и переменные.
Примеры записи математических выражений:
Выражение |
Запись на Scratch |
12+5 |
|
100−35 |
|
125 2 |
|
55:2 |
|
x+7 |
|
(a b+ |
|
sinx |
|
a + b
2 − 3c |
|
−k |
|
2 − 3− x |
|
− 2a |
|
Логические выражения могут принимать только два значения – истина
либо ложь. Например, логическое выражение x5принимает
значение истина, если x = 6
и – ложь, если x = 4. Для
составления логических выражении используют знаки сравнения и
логические операции (функции) (И, ИЛИ, НЕ).
Знаки сравнения и примеры их использования:
Знаки сравнения |
Запись |
выражение |
Запись на Scratch |
= |
|
x5 |
|
|
|
D = 0 |
|
> |
|
z 4 |
|
|
|
m n |
|
< |
|
b2 −4ac0 |
|
|
|
x7 |
|
Логические операции и их значения:
Логическая |
Значение |
|
Конъюнкция (логическое умножение). |
|
Дизъюнкция |
|
Отрицание |
Таблицы истинности для логических операции:
Где А, В – логические выражения (или операнды), + – истина, – — ложь.
Примеры:
1.
, принимает значение истина если x
=
8
и z=
4,
– ложь, если x = 6 , независимо
от значения z.
2.
, принимает значение истина если z
4или
z=
4,
ложь при z
4.
3.
, принимает значение ложь если x=5,
в противном случае – истина.
1.7.
Ввод данных и вывод результата
При решении задач часто необходимо задать программе исходные
данные и отобразить результаты. В первом случае говорят о вводе (считывании)
данных, во втором – о выводе данных (печати, отображении).
1. Ввод
данных
В Scratch для ввода данных можно использовать мониторы данных
с рычажком (только для чисел) – и блок (из группы
«Сенсоры»), который дает возможность вводить числа и тексты в режиме диалога.
При использовании монитора, значение переменной меняют путем
перемещения слайдера (влево или вправо): .
Примечание: Для
появления слайдера, необходимо дважды щелкнут по изображению переменной, на
сцене.
Использование команды позволяет, в диалоговом
режиме, вводить числа и тексты. При выполнении данной команды выполнение
скрипта (программа) приостанавливается, выноска с вопросом выводится рядом с
соответствующим спрайтом (исполнитель) и снизу на сцене появляется поле для
ввода данных, в которое можно с клавиатуры набрать требуемое значение (текст
или число).
После нажатия на клавишу Enter или на флажок () справа от
поля ввода, введенное пользователем значение будет присвоено блоку и
работа скрипта продолжится. Значение блока можно рассматривать как
глобальную переменную специального вида, которая доступна всем спрайтам. Это
встроенная переменная (ее не нужно создавать) и находится она в группе «Сенсоры».
При выполнении
следующего блока новое введенное значение заменяет предыдущее значение блока
, т.к. в нем может хранится только одно данное. Если введенное значение
необходимо в дальнейшем использовать, то его необходимо присвоить переменной,
которой необходимо предварительно создать.
Например, введем в поле для ввода данных число 8 и с помощью
ниже приведенного скриншота проследим за его передвижением:
Введенное нами
число 8 после нажатия на клавишу Enter или кнопку будет присвоено (передано)
специальной глобальной переменной .
Если, после этого мы введем значение другой переменной,
например, y, то
введенное значение 8 мы потеряем. Чтобы этого не случилось, необходимо это
значение присвоить некоторой переменной, с помощью команды присваивания .
Например, если для решения некоторой задачи, нам необходимы значения трех
переменных a, b и с, то в программе это необходимо записать так:
2. Вывод
результатов
Результаты переменных и/или списков можно выводить с помощью
мониторов или команд (группа «Внешность).
При использовании монитора, значение переменной меняют путем
перемещения слайдера (влево или вправо). После того, как мы поменяем значение
переменной, чтобы получить новое значение результата необходимо нажать на
кнопку (флажок).
Разница в командах вывода и
использовании первой команды, результат будет виден на сцене
указанное в этой команде количество секунд, а затем исчезнет, а при
использовании второй команды результат со сцены не исчезает. Пример
использования команды :
2.
Основы программирования в среде Scratch 3
Программа
– это последовательность команд (операторов), которая определяет, какие
действия должен выполнять компьютер с данными и объектами и обеспечивает работу
интерфейса. В каждом языке имеется ограниченный набор команд, для представления
которых заданы определенные правила. В Scratch, команды (операторы)
представляют собой графические блоки, разделенные на группы: Движение,
Управление и т.д. Блок однозначно определяет синтаксис и возникновение
синтаксических ошибок практически невозможно. В Scratch программные единицы
называются скриптами. Каждый скрипт связан с одним спрайтом (исполнитель
алгоритма) и определяет его действия. У одного спрайта может быть несколько
скриптов. Скрипт может запустить (обратиться, вызвать) другие скрипты,
принадлежащие тому же или другим спрайтам.
Лабораторная работа №1. Запись математических выражений и
программирование линейного вычислительного процесса
Необходимо отметить, в Scratch отсутствуют скобки. Роль
скобок, как бы играют сами операторы из группы «Операторы». Примеры, порядка
составления математических выражении:
1.
2.
3.
Для выполнения заданий данной лабораторной работы,
необходимо, предварительно создать переменные, входящие в выражения (см. п.
1.4).
Упражнение 1
Составить математические выражения на языке Scratch:
5 1 b2
а) − ;
б) −lna
.
2
+
2b a
+1 a
−1
Запись на Scratch 3:
а)
б) .
Упражнение 2 Составить логические выражения на
языке Scratch:
а) 2 + x
a 3,2; б) 0 x
Запись на Scratch 3:
а)
б)
Линейным называется вычислительный процесс (алгоритм), в
котором операторы (команды) выполняются последовательно.
Понятие алгоритма и правила записи алгоритма в виде блок-схемы даны в
Приложении.
Упражнение 3
Составить блок – схему и программу для вычисления значения
функций:
2 3y
f :=
− +x 2y z
, где, z:= x
y− и с ее помощью
вычислить значение этой 2+e
функции при x = 4;
y
=
2
(Lin1).
Упражнение 4
Дана длина ребра куба а. Найти объем куба и площадь
его полной поверхности. Составить блок – схему и программу. Проверить работу
программы при, а =2,5 (Lin2).
Пояснение к программе: Здесь, a – длина ребра куба, V – объем куба, S – площадь полной
поверхности.
Индивидуальные
задания
1. Составить выражения на языке Scratch (Табл. 1)
2. Составить блок – схему и программу для вычисления
значения функций f x y z( , , ) , где, z = w
x y(
, ). Значения x и y заданы
в Табл. 2
Таблица 1
№ |
Выражение |
№ |
Выражение |
|||||
1 |
1) 3)2 |
9 |
2ab 1) 2 x |
|||||
2 |
a 1) 2) 2) x 2xy 3) 1 x x+ cos |
10 |
2ab b 1) 2 +2a 3) x+55a 4) 3x |
|||||
3 |
y z 1) 2 x a− 3) 0 |
11 |
7b (a 1) + 2) 3 a a x cos y 3) 0 |
|||||
4 |
a 1) p+ a 20x 3) 0,1 x 0,4 4) 2 y2 x + |
12 |
1) 2) cosz+ 12 3) 4− |
|||||
5 |
5 1) x− 3) x −110 4) |
13 |
1) 2) 3) a |
|||||
6 |
a 1) 2) y+ 2 y x+ 3) 6 |
14 |
2b 5b ez−1 1) − 2) 6(b+ 4) a 2y 3) 2 6x 5,1 4) cos2 |
|||||
7 |
b− 2a 1) 2) 3 4(b+ a) x 15 |
15 |
7 1) a c− 4b x+ 6y 3) 0 −1 x sin x+ ln |
|||||
8 |
2 5b z2 1) 4a 3x 3) 9 s cos y+ 3 |
16 |
1)8a2 b+1 8z+ln y x 3) x −a x +10 |
|||||
Лабораторная работа №2. Программирование разветвляющегося
вычислительного процесса
Разветвления в программе возникают при необходимости выбора
одного из нескольких возможных путей в решении задачи.
Блоки ветвления применяются, когда выполнение шагов алгоритма
зависит от выполнения заданного условия. Условный блок разрешает их исполнять,
если заданное логическое выражение (условие) принимает значение истина. В Scratch
есть команды (блоки) для полного и неполного ветвления:
|
Условие, при Если |
|
Условие, при выполнении |
Приведенные внизу рисунки, показывают взаимосвязь команд ветвления
с блок – схемами:
а) Полная
форма:
Где, B
– логическое выражение (условие), S1
и S2 – операторы
языка программирования, – истина, –ложь.
б) Сокращенная
форма:
Где, B
– логическое выражение (условие), S–
оператор(ы) языка программирования Scratch, – истина, –ложь.
Условные блоки можно вкладывать друг в друга, собирая
ветвления любой сложности. Примеры вложенных условных блоков:
Понятие взаимно – дополняемых условии:
1. Два
условия называются взаимно – дополняемыми, если ложность одного из них влечет
за собой истинность другого.
2. Три
условия называются взаимно – дополняемыми, если ложность любых, двух из них,
влечет за собой истинность третьего.
Примеры: x5
и
x<5 , x = 0
и x 0 – взаимно – дополняемые
условия; x
5
и <4x , x = 0
и x 0– не взаимно – дополняемые
условия; x
5,
<3 x и 3 x 5,
x
0,
<0 x и x = 0 – взаимно
– дополняемые условия; x 5,
<3 x и 3 x 4
, x
0,
<0 x и x 0
– не взаимно – дополняемые условия.
Примечание:
1.
В случае двух взаимно – дополняемых
условии, проверяется только одно (любое), а в случае трех взаимно – дополняемых
условии, проверяются только любые два из них.
2.
В случае двух не взаимно – дополняемых
условии, проверяются оба, а в случае трех не взаимно – дополняемых условии,
проверяются все три.
Упражнение 1
Найти y= −4
x, если x 2
. Составить блок – схему и программу решения (Vetv1).
Пояснение к программе: Здесь, если x2то,
значение y
не нужно находить. Для таких случаев предусмотрен вывод текстового
сообщения: “Нет реш.” Если, после запуска программы, вместо x
введем 1, то на
сцене рядом со спрайтом увидим:
, если введем 5, то увидим:
Примечание: Текстовое сообщение
необходимо заключать в кавычки типа “ ”.
Упражнение 2
Составить блок – схему и программу для вычисления значения
функций:
1−x
x,
4
y = (Vetv2).
3+
x
x,
4
форме. Т.к. условия x>4 х≤4 взаимно – дополняемы,
то проверке подлежит одно из них. В нашем случае проверено условие x>4, если оно ложно, то
второе условие – х≤4
автоматически окажется истинным.
Упражнение 3
Составить блок – схему и программу для вычисления значения
функций:
y = 4х
−5,еслиx
6
(Vetv3).
4 −5x,если
х
3
Пояснение к программе: Здесь, использованы вложенные
команды ветвления в полной форме. Т.к. условия x>6 и х<3
не взаимно – дополняемы, то проверке подлежат оба эти условия. Для случая, если
они ложны, предусмотрен вывод текстового сообщения “Нет реш.”
Упражнение 4
Составить блок – схему и программу для вычисления значения
функций:
x2
−1,если
0
x
1
y = 1/
,x если x 1 (Vetv4).
3x
+1,если
x
0
Пояснение к программе: Здесь, использованы вложенные
команды ветвления в полной форме. Т.к. данные условия взаимно – дополняемы, то
проверке подлежат, любые два из них. В нашем случае проверены второе и третье
условия. Если, они оба ложны, то первое условие окажется истинным.
Упражнение 5
Составить блок – схему и программу решения линейного
уравнения ax
b=
(Vetv5).
Рассмотрим всевозможные случаи:
1)
если ab|a;
2)
если a, то b|a;
3)
если a=0,
то – любое;
4)
если a то нет решения.
Видно, что если a, то решение не
зависит от b, тогда =b|a,
а если a=0, то решение зависит от b, если b =0, то – любое, иначе нет решения.
Блок-схема: |
Программа на Scratch 3: |
|
|
Пояснение к программе: Здесь, использованы вложенные
команды ветвления в полной форме. Т.к. данные условия a≠0 и a=0, b=0
и b≠0 взаимно – дополняемы,
то проверке подлежат, по одному из них. В нашем случае проверены условия a≠0b=0.
Индивидуальные
задания
1. Составить блок – схему и программу вычисления значения
функции:
f1(
)x , если x 0 Y =
f 2( )x , если 0
x 1.
f
3(
)x , если x 1
Функции f1(
)x , f 2( )x , f 3( )x заданы в Табл. 1.
2. Составить программу вычисления значения функции. Функции заданы
в Табл. 2.
Таблица 1
Таблица 2
№ |
Функция |
№ |
Функция |
|||||
1 |
x2 2cos 2 y= lg(x+5), |
2 |
1,8x2 e − y= ln(x−6), x2 |
|||||
3 |
1,5cos2x +1, ln x |
4 |
x+ y=3cos | x−1, 99, |
|||||
5 |
x xsin2 y= lg5 |
6 |
ex2 y =tg 3x, |
|||||
7 |
cos(3x−1), y= x 1,5x−7, |
8 |
x y = ln(x 3x, |
|||||
9 |
x2 y=sin 1,1x−1, |
10 |
lg y x2 x2 |
|||||
11 |
1+sin2 y= x 0,1 |
12 |
cos(2x+1), y= 0,1 |
|||||
13 |
x y=e1−x, cos3 |
14 |
tg ln(x2 y = 3x 2,25 |
|||||
15 |
sin y= 1,11 |
16 |
ln | x |, если tg x2 |
|||||
Лабораторная работа №3. Программирование циклического
вычислительного процесса
Циклическим называется вычислительный процесс, содержащий
многократные вычисления по одним и тем же математическим зависимостям, но для
различных значений, входящих в него переменных. Количество повторений может
задаваться заранее или зависеть от выполнения определенного условия.
Тело цикла – команда или группа команд, выполнение которых
повторяется в зависимости от значения некоторого заданного условия.
Для описания циклических процессов в Scratch, как и в других
языках программирования, имеется несколько блоков (операторов):
1 |
|
Блок команд, заключенных внутрь конструкции будет |
2 |
|
Повторение. Параметр |
3 |
|
Цикл с |
Приведенные внизу рисунки, показывают взаимосвязь циклических
блоков (команд) с блок – схемами:
а) Бесконечный цикл:
Здесь, тело цикла S
будет выполнятся без остановки. Остановить выполнение такого цикла возможно
нажатием кнопки или с помощью команды .
б) Цикл с предусловием:
Где, B
– логическое выражение (условие) S – команда (ы) языка Scratch (тело цикла), – истина, –ложь.
Здесь, тело цикла S
будет выполнятся до тех пор, пока B
ложно ().
в) Цикл с параметром:
или
Где, i – параметр цикла (счетчик),
S – команда (ы) языка
Scratch. Здесь,
выполнение тела цикла S будет
повторятся i (N) –
раз.
Упражнение 1
Составить
блок – схему и программу нахождения суммы S =
+1 2+3+…+
N
.
а) используя цикл с предусловием; б) используя цикл с
параметром.
a) цикл с предусловием (Cikl1_1):
б) цикл с параметром (Cikl1_2):
Блок-схема: |
Программа |
|
|
Пояснение к программам: Здесь S – искомая сумма, i – переменная, которая
принимает значения от 1
до N, N – количество повторений
тела цикла. Обязательным является увеличение переменной i на 1 в теле цикла (команда ),
иначе S останется
равным 1.
Примечание: Обычно,
при нахождении суммы (S), его значение вначале
считают равным 0. Добавление числа 0 не изменяет значение суммы, однако упрощает организацию
цикла. При нахождении произведения (P) его значение вначале считают
равным 1. Умножение числа на 1 не
изменяет значение произведения, однако упрощает организацию цикла.
Упражнение 2
Составить блок – схему и программу вычисления факториала
P
=
N!=1
2 3 …
N
с использованием цикла с параметром (Cikl2)
Блок-схема: |
Программа |
|
|
Пояснение к программе: Здесь Р – искомое произведение, i – переменная, которая
принимает значения от 1
до N, N – количество повторений
тела цикла. Обязательным является увеличение параметра цикла i на 1 в теле цикла (команда ),
иначе Р останется
равным 1.
Упражнение 3
Составить блок – схему и программу вычисления: S
=
2−4+6−…+2n
с использованием цикла с предусловием (Cikl3).
Блок-схема: |
Программа на Scratch |
|
|
Пояснение к программе: Здесь S – искомая сумма, i – переменная, значения
которого меняется от 2
до 2n c шагом
равным 2, n – количество слагаемых, k – вспомогательная
переменная, предназначенная для организации чередования знаков слагаемых
(команда ).
Упражнение 4
Даны натуральные числа m
и n. Найти их
наибольший общий делитель (НОД) используя алгоритм Евклида (Cikl4).
Пошагово-словесное описание алгоритма Евклида нахождения
наибольшего общего делителя двух натуральных чисел (m и n)
выглядит следующим образом:
1. Если m = n, результатом считать m и закончить вычисления.
2. Если m > n, найти разность m – n, новым значением m считать значение разности
и перейти к п.1;
3. Если n > m, найти разность n – m; новым значением n считать значение разности
и перейти к п.1;
Пояснение к программе: Здесь, в теле цикла
используется команда ветвления в полной форме. Как, только выполнится условие m = n работа цикла
завершится и будет выведено значение НОД.
Упражнение 5
Составить блок – схему и программу вычисления значений
функции
2 1
y x= − , где x меняется от a до b с шагом h
(Cikl5).
Пояснение к программе: Здесь, х – переменная, от значения
которого будет зависеть, количество повторений команд тела цикла, а значит и
количество найденных значений y. Вывод значений y предусмотрен в теле цикла
с помощью команды . Если эту команду записать после циклической, то
будет выведено только последнее значение y.
Примечание: Задачи
такого типа, когда необходимо выводит несколько результатов, предпочтительнее
решать с использованием массива (списка), который будет рассмотрен далее.
Упражнение 6
Найти все двузначные числа, сумма цифр которых равна 7 (Примеры:
16=1+6=7, 43=4+3=7, …). Использовать циклы с предусловием 2- ого типа (Cikl6).
Программа на Scratch 3:
Пояснение к программе: Здесь, i – первая цифра
двузначного числа, j
– вторая цифра. Тогда, любое двузначное число k
можно представить, как: k=10*i+j.
Примеры: 45=4*10+5,
72=7*10+2.
Использованы два вложенных цикла, цикл по i
и цикл по j.
Каждый раз, после завершения работы внутреннего цикла, счетчик цикла j обнуляется. Вывод всех
двузначных чисел, удовлетворяющих условию задачи, осуществляется в теле
вложенных циклов, командой .
Индивидуальные
задания
1. Найти сумму Y =F
xF x1(
)2( ) , Где, a
x
b , x
меняется с шагом h =1 .
Варианты заданий, а также
значения F x F1( ), 2( )x a b, , приведены в Табл.1.
Задачу решить, используя: a) цикл
с предусловием; б) цикл с параметром.
2. Составить блок – схему и программу вычисления значений функции
F1(
)x , если x a
Y = , F2(
)x , если x a
для значений аргумента x[
1x xn, ], изменяющимся с шагом h . Исходные данные приведены в Табл. 2.
Таблица 2
№ |
F1(x) |
F2(x) |
x1 |
xn |
h |
a |
1 |
x2 |
e2 10x− |
-2,1 |
3,5 |
0,8 |
0 |
2 |
ln(x2 +1,5) |
arctg(4 )x |
-10,3 |
-1,9 |
1,2 |
-5 |
3 |
e2 5x− |
tg(x5) |
3,2 |
7,2 |
0,8 |
4,1 |
4 |
10x2 −tg |
5x2 |
1,3 |
6,8 |
0,5 |
3,2 |
5 |
e−2x |
sin(x2) |
1,2 |
3,6 |
0,4 |
3,1 |
6 |
cos (2 x) |
x+5 |
2,8 |
5,55 |
0,25 |
3,5 |
7 |
cos(x) |
ln(x2 +1,8) |
1,4 |
4,1 |
0,3 |
2,8 |
8 |
sin(x) |
ln(3x+1) |
10 |
15 |
0,5 |
12,6 |
9 |
ln(x2 + |
x2 |
2,2 |
5,2 |
0,5 |
3,8 |
10 |
e−x4 |
2sin(x |
0,7 |
3,5 |
0,4 |
2,4 |
11 |
arctg(3 )x |
ln(x +1,5) |
9 |
12 |
0,5 |
10,3 |
12 |
sin(x30) |
ln |
2,3 |
9,5 |
0,75 |
5,4 |
Лабораторная работа №4. Программирование с использованием
списков (одномерных массивов)
Список (List) – это набор упорядоченных элементов (значений).
Набор обозначается одним именем, которое можно использовать для ссылки на весь
набор и вместе с индексом (порядковый номер) — для ссылки на отдельные
элементы. Подобные наборы в других языках программирования называются
одномерными массивами или векторами. Элементами списка могут быть числа и
тексты (стринги). Списки в Scratch выполняют роль одномерных динамических массивов. Массив называется
динамическим, если количество его элементов может изменятся в процессе
выполнения программы.
Примечание: В
среде Scratch,
не предусмотрены средства, для работы с
двумерными массивами.
Создание списков происходит с помощью команды, входящий
в группу Переменные. Вместе с первым списком появляются и блоки (команды),
задающие действия со списками.
После создания списка на Сцене появляется соответствующий монитор (Рис. 1). Вначале
он пустой и его длина равна 0.
Рис. 1. Пустой список (массив)
Элементы в список можно добавлять и изменять, вводя их
значения прямо в монитор. Щелчок по знаку «+» добавляет в список
новую ячейку. Для добавления можно использовать блоки добавить и вставить как вручную, так и в скрипте. Размер монитора
можно изменять, растягивая его за нижний правый угол.
Элементы списка можно импортировать из текстового файла (с
расширением .txt) и экспортировать тоже в текстовый файл. Соответствующие
команды появляются, если щелкнуть по монитору правой кнопкой мыши.
Рис. 2. Меню команд импорта и экспорта
В дальнейшем, список будем называть одномерным массивом.
Любой массив состоит из элементов. Элементами массива могут
быть как числа, так и символы (тексты). Размер массива определяется количеством
его элементов. На рисунке 3, изображен одномерный массив L, содержащий 6 – элементов.
Рис. 3. Изображение одномерного массива
Индексы показывают порядковые номера элементов. В одномерных
массивах любой элемент определяется одним индексом.
Представленная ниже программа, создает одномерный массив L.
Здесь, для формирования заданного массива, мы воспользовались
командой (блоком) 6
– раз. Однако, при формировании массива с большим количеством элементов, данный
метод неэффективен. В этом случае лучше воспользоватся командами для
организации цикла, как это представлено ниже:
Доступ к элементам массива осуществляется по имени и индексу.
Для этого в Scratch используют команду , где вместо 1 записывают
нужный индекс. Например:
=5.7.
В некоторых языках программирования (например Turbo Pascal), рассмотренный
нами массив обозначается – L[1..6],
а доступ к элементам
– L[2], L[4].
Можно, сформировать массив и с использованием команды
формирования случайных чисел : . Программа для формирования
случайного массива:
В этой программе, происходит автоматическое формирование
массива из 6 элементов,
случайными числами, из диапазона от 1
до 10. Сами, мы
никакие элементы не вводим!
Все задачи на массивы можно разделить на две группы:
1. Элементы
и индексы элементов исходного массива, в процессе выполнения программы не
изменяются;
2. Значения
элементов и их индексов или одно из них, в процессе выполнения программы
изменяются;
При составлениях программ, для решения задач первой группы, в
выводе массива нет необходимости.
При составлениях программ, для решения задач второй группы, необходимо
организовать вывод массива. При этом, для удобства пользователя, лучше, если
будут видны исходный и обработанный массивы. Например, при решениях задачи на
сортировку элементов массива по возрастанию, лучше видеть исходный и
отсортированные массивы. При решении задач этой группы, будем создавать два
одинаковых массива с разными именами. При этом, первый массив будем оставлять
неизменным, а работать будем со вторым.
Упражнение 1
Создать массив случайных чисел из 10 элементов. Найти сумму всех его элементов.
Первый способ (Massiv1_1):
Программа на Scratch |
Результат: |
|
|
Пояснение к программе: Здесь, последовательно
использованы два цикла со счетчиком. В первом () из них создается
массив М из десяти
случайных чисел (от 1
до 20). Во втором
(), вычисляется сумма всех элементов созданного
массива. Переменная i
– выполняет роль индексов элементов массива, и принимает значения от 1 до 10.
Примечание: После
запуска вышеуказанной программы, вы необязательно получите показанный здесь
результат, т.к. использование команды формирования случайных чисел –, после каждого запуска может выдавать различные числа.
Второй способ (Massiv1_2):
Пояснение к программе: Здесь, использован один цикл со
счетчиком. В нем, одновременно, с созданием массива М происходит суммирование его элементов. Естественно,
что каждый вновь введенный элемент становится последним в массиве. Данная
программа является более эффективной, т.к. в ней количество команд меньше.
Упражнение 2
Создать массив случайных чисел из 10 элементов. Поменять местами четвертый и
восьмой элементы.
Для решения этой задачи потребуется вспомогательная
переменная. Если, вместо четвертого элемента запишем восьмой, то мы потеряем
значение четвертого элемента. Чтобы этого не случилось, необходимо его значение
временно передать (присвоить) вспомогательной переменной. Массиву дадим имя М1, а вспомогательной
переменной – L.
Изображение на рисунке 4 дает представление о процессе обмена
местами, элементов одномерного массива.
Рис. 4. Процесс обмена местами элементов массива
Как видно, для обмена элементов местами необходимо выполнить
три команды. В Scratch эти команды выглядят так:
Пусть исходный массив имеет имя М, а полученный после перестановки элементов –
М1. Полная
программа решения нашей задачи (Massiv2):
Программа на Scratch 3: |
Результат: |
|
|
Пояснение к программе: Здесь, одновременно создаются
массивы М и М1(
). В результате работы программы, массив М остается неизменным, а в
массиве М1 обмениваются
местами четвертый и восьмой элементы (). Для пользователя, такой
подход к решению задачи удобен, т.к. рядом видны исходный и обработанный
массивы. Е – принимает
значения элементов формируемых массивов М
и М1. L – вспомогательная
переменная для временного хранения элемента массива.
Упражнение 3
Создать массив случайных чисел из 8 элементов. Найти максимальный элемент этого
массива.
Назовем максимальный элемент МАХ. Алгоритм поиска максимального элемента
массива следующий: первый элемент считают максимальным т.е. равным МАХ и сравнивают его со
вторым, и если он оказывается меньше, то второй считают равным МАХ, в противном случае
ничего не меняют и т.д. В результате таких действии будет выбран максимальный
элемент массива. Приведенная ниже таблица, демонстрирует алгоритм поиска
максимального элемента одномерного массива, состоящего из 8 элементов.
Из этой таблицы видно, что количество проводимых сравнении
равно 7, а элементов – 8. Вообще, количество
сравнении в таком алгоритме поиска максимального элемента, при количестве
элементов N равно N-1
(Massiv3).
Программа на Scratch |
Результат: |
|
|
Пояснение к программе: Здесь, М – формируемый массив, МАХ – максимальный элемент
этого массива, i – переменная, принимающая значения индексов
массива от 2 до 8. Использованы две
циклические команды «повторять — раз». В первом () из них происходит
формирование массива М из
случайных чисел, во втором () поиск максимального элемента.
Упражнение 4
Сформировать массив из значений 1!,2!,…,10!
(Massiv4).
Программа на Scratch |
Результат: |
|
|
Пояснение к программе: Здесь, Fakt – имя формируемого
массива, состоящего из значения факториалов, р
– значения факториалов, i–
переменная, принимающая значения заданных чисел от 1 до 10.
Упражнение 5
Создать массив случайных чисел из 12 элементов. Найти в этом
массиве, количество четных чисел и их сумму (Massiv5).
Программа на Scratch |
Результат: |
|
Пояснение к программе: Здесь, М – формируемый массив, k – количество четных
чисел, S – сумма
четных чисел, I
– переменная, с помощью которого выбираются индексы четных элементов. Она
принимает все значения от 1
до 12, однако при
помощи условия, записанного после «если» выбираются только четные элементы
массива.
Примечания:
1.
Обычно, в задачах на подсчет количества (k), его значение вначале считают равным 0. Добавление числа 0 не изменяет значение
количества, однако упрощает организацию цикла.
2.
Для установления четности заданного
числа N используют логическое выражение , если оно истинно, то N – четное,
в противном случае – нечетное.
Упражнение 6
Переписать нечетные элементы массива X в массив Y и подсчитать их количество.
Элементы массива X вычисляются по формуле: Xi
= i2
+
4i
, где i =1,2,…,n
(Massiv6).
Программа на Scratch |
Результат при N=12: |
|
|
Пояснение
к программе: Здесь, X
– исходный массив, Y–
результирующий массив, N
– количество элементов исходного массива, k
– количество нечетных элементов, Е
– принимает значения элементов массива X,
формируемые по заданной формуле,
i – принимает значения индексов элементов массивов X и Y. В первом цикле ( ) происходит
формирование исходного массива. Во втором цикле ( ), содержащем, команду
ветвления в сокращенной форме () происходит отбор нечетных чисел
и формирование из них результирующего массива Y,
здесь же подсчитывается количество нечетных элементов. Перед выполнением второй
циклической команды, значение переменной i
возвращается к 1
(
), т.к. его значение, после завершения работы
первого цикла,
становится равным N+1.
Упражнение 7
Составить
программу
вычисления значений функции y x=
−2x
, где x меняется от 2 до 20 с шагом 2.
Найденные значения функции записать в массив L (Massiv7).
Программа на Scratch |
Результат: |
|
|
Пояснение к программе: Здесь, в теле цикла с
предусловием, будут найдены значения заданной функции y и записаны в массив L, а также значение x,
после каждого выполнения тела цикла, увеличивается на 2. Подобная задача (без
использования массива) была решена на стр. 37 (Упражнение 5).
Индивидуальные
задания
1. Составить программу для решения задачи из Табл.1.
2. Создать одномерный массив случайных чисел размером N (N <=10). Составить
программу решения задачи из Табл.2.
Таблица 1
№ |
Задача |
|||
1 |
Вычислить сумму и количество элементов массива Х, больших числа а, где а – среднее арифметическое |
|||
2 |
Вычислить среднее арифметическое отрицательных |
|||
3 |
Вычислить среднее арифметическое отрицательных и |
|||
4 |
Переписать положительные элементы массива Х в массив Y и |
|||
5 |
Переписать отрицательные элементы массива Х в массив Y и |
|||
6 |
Определить Xi |
|||
7 |
Определить минимальный элемент массива Х и его порядковый номер. Элементы массива вычисляются |
|||
8 |
Найти максимальный и минимальный элементы массива Х и поменять их местами. Элементы массива вычисляются по |
|||
9 |
Найти , где i |
|||
10 |
Расположить в массиве Y сначала |
|||
11 |
Определить Xi |
|||
12 |
Определить Xi |
|||
13 |
Вычислить сумму и количество элементов массива Х, больших заданного числа а, где а>0. Элементы |
|||
14 |
Найти Xi |
|||
15 |
Найти среди элементов массива Х, |
|||
16 |
Переписать Xi |
|||
Таблица 2
№ |
Задача |
|||
1 |
Поменять |
|||
2 |
Определить |
|||
3 |
Скопировать |
|||
4 |
Определить |
|||
5 |
Определить |
|||
6 |
Найти |
|||
7 |
Найти |
|||
8 |
Найти минимальный элемент и им заменить все элементы |
|||
9 |
Найти минимальный элемент и им заменить все элементы с |
|||
10 |
Найти сумму элементов, следующих за первым максимальным |
|||
11 |
Найти сумму элементов, следующих за первым минимальным элементом |
|||
12 |
Определить среднее арифметическое всех элементов |
|||
13 |
Каждый элемент с четным индексом увеличить на значение |
|||
14 |
Найти сумму элементов больших |
|||
15 |
Найти среднее |
|||
16 |
Элементы с четным индексом увеличить на 10, с нечетным |
|||
Лабораторная работа №5. Программирование с использованием
подпрограмм
При создании программ часто появляется некоторая
последовательность команд (инструкций), которую необходимо выполнять в
нескольких местах. Можно эту последовательность переписать несколько раз в
нужных местах, но, во первых, это удлинит текст программы и уменьшит ее
читабельность, но и существенно увеличит вероятность появления ошибок в
программе. В большинстве языков программирования для решения этой проблемы
введено понятие подпрограммы (название зависит от языка). Подпрограмма – это
«кусок» кода, который вынесен из основной программы и которому дано уникальное
имя. В месте, где необходимо выполнить эту последовательность кода, необходимо
просто сослаться на имя подпрограммы. Это называется вызовом подпрограммы.
В системе Scratch, практически каждая составленная программа,
может быть использована при составлении более сложных программ в качестве
подпрограммы.
Схема взаимодействия основной программы с подпрограммой:
Подпрограмма составляется по тем же правилам что и основная
программа. Параметры подпрограммы называются формальными. Обращение к
подпрограмме происходит по имени с указанием фактических параметров. Фактические параметры указывают,
при каких конкретных значениях осуществляются вычисления в теле программы. При
выполнении подпрограммы его формальные параметры заменяются на фактические – параметры
основной программы.
Имена фактических параметров при вызове подпрограммы могут
либо совпадать, либо не совпадать с именами ее формальных параметров. Однако,
для лучшего понимания процесса взаимодействия подпрограммы с основной
программой, все же лучше использовать разные имена.
В Scratch, подпрограммы можно организовывать двумя способами.
Первый
способ: Использование
вкладки «События».
Здесь,
для работы с подпрограммами предусмотрены команды:
– обращение (вызов) к подпрограмме и дожидания
завершения
его выполнения, – обращение (вызов) к подпрограмме, –
запуск указанной подпрограммы на выполнение.
Подпрограмме, необходимо дать имя. Имя дается в диалоговом
окне, которая появляется, после нажатия на «Новое сообщение»:
здесь, «Новое имя сообщения»
и есть имя подпрограммы.
По указанному здесь имени, и происходит запуск (вызов)
подпрограммы
. Например,
Внешне, основная программа отличается от подпрограммы блоком
заголовка (командой запуска). В основной программе, это блоки –
, и .
В Упражнение 1
m n!
Вычислить Cn =,
используя подпрограмму вычисления
m n m!( −
)!
факториала числа (C_N_M_1).
Программа на Scratch
3:
Пояснение к программе: Здесь, P
n1=
!,
P
m2=
!,
P1 (= −n
m)!, C
C=
nm
. Тогда
P1
C = .
Обращение к подпрограмме происходит 3
раза с помощью P P2 3
команды и
вычисленные значения факториалов P
передаются в основную программу. Ссылка
Упражнение 2
Найти S= + + +1!
2! … N!. Вычисление факториала оформить в виде подпрограммы (SUM_FAKT1).
Программа на Scratch 3:
Пояснение к программе: Здесь, Fakt – подпрограмма
вычисления факториала, S
– сумма факториалов, K
– глобальная переменная, значения которой, доступны и в подпрограмме, I – переменная, которая
принимает значения от 1
до N, P – возвращаемые
подпрограммой результаты. Обращение к подпрограмме происходит N – раз из тела цикла «повторить», основной
программы.
Второй способ: Использование вкладки
«Другие блоки» –
В среде Scratch 3 можно создавать собственные блоки. Новый
блок появится в разделе Другие блоки, его вы сможете использовать его точно так
же, как и любые другие блоки в Scratch. Созданный и определенный вами новый
блок может быть использован в качестве подпрограммы, которая затем будет
вызываться из основной программы. Механизм создания нового блока приведен на
рис. 1.
Рис. 1. Создание пользовательского блока
Подпрограмма может не содержат параметров. Тогда ее называют
подпрограммой без параметров. Если подпрограмма содержит параметр(ы), то ее
называют подпрограммой с параметром (Рис. 2).
Рис. 2. Подпрограмма с параметрами
Здесь, 20 и 15 – фактические параметры подставляемые вместо
формальных, – формальные
параметры подпрограммы
Perimetr.
Упражнение 1
m n!
ВычислитьCn = ,
используя подпрограмму вычисления
m n m!( −
)!
факториала числа.
Способ 1. Использование подпрограммы без параметров (C_N_M_2_1):
Способ 2. Использование подпрограммы с параметром (C_N_M_2_2):
Упражнение 2
Найти S= + + +1!
2! … N!. Вычисление факториала оформить в виде подпрограммы.
Способ 1. Использование подпрограммы без параметров (SUM_FAKT2):
Пояснение к программе: Здесь, Fakt – имя подпрограммы для
вычисления факториала, – глобальная переменная, значения которой, доступно
и в подпрограмме Fakt,
P – значения
вычисленных факториалов, которые передаются в основную программу, S – сумма факториалов, I
– переменная, которая принимает значения от 1 до N.
Обращение к подпрограмме происходит N–
раз из тела цикла «повторить»,
основной программы.
Способ 2. Использование подпрограммы с параметром (SUM_FAKT2_2):
Пояснение к программе: Здесь, Fakt – имя подпрограммы для
вычисления факториала, – глобальная переменная, значения которой, из
основной программы подставляются вместо – локальной
переменной
(параметр) подпрограммы Fakt.
Вложенные подпрограммы
Для решения некоторых задач совершенно логично – а во многих
случаях и желательно – сделать так, чтобы одна подпрограмма обращалась к
другой. Вложенные подпрограммы дают возможность быть более гибкими при
структурировании и организации программ.
Упражнение 1
Найдите все коэффициенты разложения (x
+
y)n
, т.е. Cnk
, где k = 0,…,n.
Вычисление Cnk
и факториала оформить как подпрограммы.
Способ 1. С помощью команд и
(Vlojen_Podpr_1_1).
Пояснение к программе: Здесь, Sochet и Fakt – имена подпрограмм.
Основная программа обращается к подпрограмме Sochet n+1 раз, а она в свою очередь
обращается к Fakt
3 раза. Переменная P
принимает значения вычисленных факториалов, CNK
– коэффициенты разложения, которые записываются в одномерный массив Koef.
Упражнение 2
Паутина
Можно создать паутину, рисуя шестиугольники, которые
постепенно увеличиваются в размере (Vlojen_Podpr_2).
Пояснение
к программе: Результат однократного выполнения подпрограммы Треугольник: . Результат
однократного выполнения подпрограммы Шестиугольник:
. Подпрограмма Треугольник
рисует равносторонний треугольник с переменной длиной стороны Сторона, а Шестиугольник вызывает Треугольник 6 раз, шесть
раз поворачивая его на 60 градусов (360 градусов, деленные на 6) направо при
каждом обращении. Шестиугольник собирается из шести треугольников. Подпрограмма
Паутина 5 раз
обращается к подпрограмме Шестиугольник,
каждый раз меняя величину переменной Сторона
1. В результате получаются концентрические (имеющие общий центр)
шестиугольники. Здесь, команда изменить
использована, чтобы изменять величину Сторона
2 внутри цикла повторить.
Упражнение 3
Составить программу рисования различных фигур путем вращения
квадрата (Vlojen_Podpr_3).
Пояснение к программе: Здесь, ВращКвадр, Квадраты и Квадрат – имена
подпрограмм; n1 и m – формальные параметры
подпрограмм; n – фактический
параметр, значение которого из тела основной программы подставляется вместо
формального параметра n1;
числа 40, 60, 80 и 100 – фактические параметры
(стороны квадратов) подпрограммы Квадраты которые подставляются вместо
формального параметра m подпрограммы Квадрат. В данном случае
подпрограмма ВращКвадр обращается
n раз к
подпрограмме Квадраты,
которая в свою очередь 4 раза обращается к Квадрат.
Результаты работы программы:
При n=4 |
При n=8 |
При n=16 |
При n=32 |
|
|
|
|
Рекурсия
До сих пор мы рассматривали случаи, когда основная программа
обращается к подпрограмме, но существуют случаи, когда в теле программы
(подпрограммы) происходит обращение к самой себе.
Рекурсия – это такой способ организации вычислительного процесса,
при котором программа (подпрограмма) в ходе выполнения составляющих ее
операторов обращается сама к себе.
В Scratch имеется возможность для реализации рекурсивных
алгоритмов. Рассмотрим эту возможность на примерах.
Упражнение 1
Вычисление
факториала можно определить следующим образом:
P
n= !=
1,
если n = 0
n n(
−1)!,
если n 0 (Rekursia_1).
Пояснение к программе: Здесь, Fakt – имя подпрограммы
вычисления факториала; P
– результат вычисленного факториала; k
– формальный параметр подпрограммы Fakt;
n – фактический
параметр, который из тела основной программы подставляется вместо k. Подпрограмма обращается
к самой себе до тех пор, пока k
≠0.
Рекурсивный алгоритм обращается к самому себе, пока не
выполнится определенное условие, поэтому в любой рекурсивной подпрограмме
должна быть нерекурсивная ветвь (в нашем примере это: ).
Упражнение 2
n 1,
если n = 0
Найти P
=
a
=
n−1
(Rekursia_2).
a a,
если n 0
Пояснение к программе: Здесь, степень – имя подпрограммы
возведения в степень; P
– результат возведения в степень; основание
и показатель – формальные
параметры подпрограммы степень;
a и n – фактические параметр,
который из тела основной программы подставляются вместо формальных параметров. Подпрограмма
обращается к самой себе до тех пор, пока показатель
≠0.
Упражнение 3
Составить программу содержащую рекурсивную подпрограмму
рисования вложенных квадратов (Rekursia_3).
Пояснение к программе: Здесь, Квадрат – имя подпрограммы
рисования вложенных квадратов. Переменная k
принимает поочередно значения длин сторон квадрата, при этом каждый раз его
величина уменьшается на 20.
Подпрограмма обращается к самой себе до тех пор, пока k ≥ 20.
Побочный эффект
Поскольку глобальные переменные видны в контекстах всех
блоков, то их значение может быть изменено изнутри любой подпрограммы. Этот
эффект называется побочным, а его использование очень нежелательно, потому что
может стать источником непонятных ошибок в программе.
Чтобы избежать побочного эффекта, необходимо строго следить
за тем, чтобы подпрограммы изменяли только свои локальные переменные (в том
числе и параметры–переменные).
Упражнение (POB_EFFEKT_1)
Здесь, A,
Res – глобальные
переменные, доступные и в подпрограмме PodProg;
X – локальная
переменная, определенная в подпрограмме. Подпрограмма PodProg изменяет значение
глобальной переменной A
на 1, в результате
чего F(1)+F(A)≠F(A)+F(1),
т.е. нарушается переместительный закон сложения.
Замечание: Несмотря на то, что совпадения имён локальных и глобальных
переменных не вызывают никаких ошибок в среде Scratch, стоит всё–таки
воздерживаться от использования одинаковых имен, потому что они также могут
стать причиной непредвиденного побочного эффекта, аналогичного описанному в
нашем примере.
Индивидуальные
задания
Задачи решить двумя способами.
№ |
Задача |
|||
1 |
Найдите |
|||
2 |
Найдите |
|||
3 |
Дан одномерный Найти P = |
|||
4 |
Вычислите Ank (n k− )! оформите в виде |
|||
5 |
Даны |
|||
6 |
Вычислите F оформите в виде |
|||
7 |
Даны действительные числа и . Получите: a2 +b2 g(1.2, )s +g a + виде подпрограммы) |
|||
8 |
ch x( 2 Найти значения функции z ch 2 подпрограммы. |
|||
9 |
Даны действительные числа a и b. Получите: x |
|||
10 |
Даны действительные числа a, b и с. Получите: max( . Вычисление максимального 5+ |
|||
11 |
Вычислите z вычисления модуля: x =x,если −x,если |
|||
12 |
Вычислить S=1k |
|||
13 |
Дан одномерный массив целых чисел M(10). Вычислите |
|||
14 |
Сформировать |
|||
15 |
Заменить отрицательные элементы одномерного массива их модулями, не |
|||
16 |
Составить программу для вычисления суммы факториалов всех чётных |
|||
3.
Последовательные и параллельные процессы
До этого момента мы рассматривали случаи, когда один спрайт
выполняет один скрипт т.е. один спрайт – один скрипт. Однако в Scratch в
отличии от многих языков программирования возможны случаи, когда один спрайт может
выполнить несколько скриптов последовательно или одновременно (параллельно)
т.е. один спрайт – несколько скриптов, а также когда несколько спрайтов выполняют
несколько скриптов принадлежащих им, последовательно или одновременно
(параллельно) т.е. несколько спрайтов – несколько скриптов.
3.1. Последовательное выполнение скриптов
Упражнение 1
Последовательно нарисовать треугольник, квадрат и
пятиугольник (POSLEDOVAT1).
Пояснение к программе: При щелчке на зеленый флажок
спрайт выполнит свой первый скрипт, который нарисует треугольник и с помощью
сообщения Рисовать 1
запустит второй скрипт, который нарисует квадрат и передает сообщение Рисовать 2 для запуска
третьего скрипта, который нарисует пятиугольник. В данном случае один спрайт
будет выполнять три скрипта, принадлежащие ему, последовательно (Рис. 1).
Рис. 1. Схема выполнения скриптов и результат для примера 1.
Упражнение 2
Создаем произвольным образом три спрайта и используем для них
скрипты, изображенные ниже (POSLEDOVAT2).
Пояснение к программе: При щелчке на зеленый флажок
первый спрайт выполнит свой скрипт, который нарисует пятиугольник и передаст
сообщение Рисовать 1
второму спрайту, который также выполнить свой скрипт в результате чего будет
нарисована звезда и затем он передает сообщение Рисовать 2 третьему спрайту, который нарисует
шестиугольник. В данном случае три спрайта будут выполнять свои скрипты
последовательно (Рис. 2).
Рис. 2. Схема выполнения скриптов и результат для примера 2.
3.2. Параллельное выполнение скриптов
Два или несколько скриптов (процессов) можно выполнять
одновременно, т.е. параллельно. Параллельное выполнение можно задавать
несколькими способами. Например, все скрипты, первый блок в которых это блок с
зеленым флажком, запускаются одновременно и выполняются параллельно, если
щелкнуть по зеленому флажку. К одному спрайту могут относится один и более
скриптов, а к одному скрипту только один спрайт. Параллельно выполняются также
скрипты, начинающиеся блоком, когда я получу сообщение, в которых принимается
одинаковое сообщение. Любой спрайт может передать сообщение (вы можете называть
его как хотите), используя блоки передать или передать и ждать (из раздела
События). Сообщение получают все спрайты, но реагируют на него только те, у
которых есть соответствующий блок, когда я получу.
Упражнение 1
Создадим три нижеприведенных скрипта для одного спрайта
(PARALLEL1):
Пояснение к программе: При щелчке на зеленый флажок начнут
выполнятся все три скрипта одновременно. Первый скрипт будет заставлять спрайта
говорить РИСУЮ КВАДРАТ.
Второй будет заставлять спрайт рисовать квадрат. Третий – изменяет его цвет в
момент рисования и по окончании восстанавливает первоначальный цвет спрайта. В
данном случае один спрайт одновременно будет выполнять три скрипта (Рис. 3).
Рис. 3. Схема выполнения скриптов и результат для примера 1.
Упражнение 2
Создаем произвольным образом два спрайта и используем для них
скрипты, изображенные ниже (PARALLEL2).
Пояснение к программе: При щелчке на зеленый флажок первый
спрайт передаст сообщение «1»
второму спрайту и оба скрипта начнут работать параллельно. В результате будут
начерчены две разноцветные фигуры (Рис. 4). В данном случае два спрайта
одновременно будут выполнять два скрипта, при этом каждый спрайт выполняет свой
скрипт (Рис. 4).
Рис. 4. Схема выполнения скриптов и результат для примера 2.
Упражнение 3
Создаем произвольным образом два спрайта и используем для них
по два скрипта изображенные ниже (PARALLEL3):
Пояснение к программе: При щелчке на зеленый флажок первый
спрайт передаст сообщение «1»
второму спрайту и их скрипты начнут работать параллельно. В результате будут
начерчены два разноцветных квадрата при этом спрайты будут менять свой цвет. В
данном случае два спрайта одновременно будут выполнять по два скрипта, при этом
каждый спрайт выполняет свои два скрипта т.е. происходит параллельное
выполнение 4х скриптов (Рис. 5).
Рис. 5. Схема выполнения скриптов и результат для примера 3.
Упражнение 4
Создаем произвольным образом 5 спрайтов и используем для них
скрипты, изображенные ниже (PARALLEL4):
Скрипты для спрайтов:
Скрипт 1 |
Скрипт 2 |
|
|
Скрипт 3 |
Скрипт 4 |
Скрипт 5 |
|
|
|
Scratch появился в 2007 году, хотя этому
предшествовала более чем четырехлетняя работа
по его созданию. Данный программный продукт
сразу привлек к себе всеобщее внимание, причем
большинство отзывов носили и продолжают носить
восторженный характер. Энтузиасты Scratch, которые
появились по всему миру, видят в нем ни много ни
мало новую парадигму обучения программированию,
по крайней мере в школьном возрасте. Хочется
подчеркнуть, что продукт еще очень молод и пока
оценки носят главным образом эмоциональный
характер; должно пройти время, прежде чем
выяснится истинная роль Scratch в преподавании. Но
уже сейчас очевидно одно: хорошему учителю
информатики стоит познакомиться со Scratch поближе.
Предлагаемая вашему вниманию статья
преследует цель продемонстрировать широкой
аудитории наиболее яркие возможности Scratch. В ней
во многом описаны собственные впечатления
автора от знакомства со средой, которые не могут
не быть субъективными. В то же время, делается
попытка как-то систематизировать эти
впечатления, “проектируя” их на уже имеющийся
опыт преподавания программирования. Хотелось бы
обратить внимание читателей и на этот аспект
статьи.
Материал разбит на несколько
небольших разделов. По моим представлениям,
такой вариант — четкое описание наиболее
характерных моментов — является для введения в
предмет наиболее подходящим. Хотя у такой манеры
описания неизбежна некоторая фрагментарность,
но, если не претендовать на роль
систематического изложения, этот недостаток не
так страшен.
Помимо описательной части, статья
содержит небольшой набор оригинальных проектов
для Scratch: по мнению автора, осваивавшего на этих
примерах новую среду, они довольно многогранно
отражают ее возможности. Каждый проект объясняет
какую-либо одну выделенную технологию работы,
хотя в реальных проектах они вполне могут
потребоваться все вместе.
Примечание (филологическое). В
статье везде используется английское название среды
— Scratch. Такой подход мотивирован тем, что данный
термин, как и множество других английских слов,
пишется и читается по-разному (есть даже такая
шутка, что англичане пишут Манчестер, а читают
Ливерпуль). Хотя при “русификации” терминов
наиболее дальновидно, по-видимому, пользоваться
вариантом, который максимально близок по
произношению (в данном случае это нечто вроде скрэч,
поскольку используется весьма специфический
гласный звук, а буква t при чтении не выделяется),
но едва ли такой вариант у нас “приживется”.
Именно поэтому, не желая бежать “впереди
паровоза”, автору хочется подождать, пока
сформируется общепринятый русский эквивалент, а
пока воспользоваться английским написанием. К
тому же и при поисках в Интернете полезнее знать
именно английский вариант.
Общие сведения о Scratch
Scratch создан под руководством
профессора Митчелла Резника (Mitchel Resnick) в
исследовательской группе под названием Lifelong
Kindergarten research group, которая существует при
Массачусетсском технологическом институте (MIT).
Предыдущей весьма известной разработкой этой
группы являлась популярная серия LEGO Mindstorms,
которая представляет собой комплект деталей для
сборки программируемых роботов.
Работа велась в содружестве с
исследователями Университета Лос-Анджелеса (UCLA
— University of California, Los Angeles) при
финансовой поддержке Национального научного
фонда и Фонда корпорации Intel.
По поводу целей проекта Митчелл Резник
сказал [1]: “Это следующий шаг в генерации
контента (материалов) пользователем. Нашей целью
было расширить диапазон того, что дети могут
создавать, совместно использовать и изучать.
Работая над проектом в Scratch, дети учатся думать
креативно (созидательно) и решать проблемы
систематично — а это умения, которые являются
критическими для достижения успеха в XXI веке”.
Scratch базируется на вершине языка Squeak,
черпая вдохновение в Squeak E-toys и Лого. Это
объектно-ориентированная среда, в которой блоки
программ собираются из разноцветных кирпичиков
команд точно так же, как машины или другие
объекты собираются из разноцветных кирпичиков в
конструкторах Лего. Кроме того, в нем можно найти
современные идеи из сред визуального
программирования типа Delphi и даже из
презентационных систем. Именно поэтому кратко
определить “жанр” Scratch весьма сложно — мы
посвятим этому отдельный раздел.
Scratch разрабатывался как новая учебная
среда для обучения школьников программированию
и позиционировался авторами как альтернатива
культуре PhotoShop. В нем можно легко создавать
фильмы, игры, анимированные открытки и
презентации; придумывать и реализовывать
различные объекты, определять, как они выглядят в
разных условиях, перемещать по экрану,
устанавливать способы взаимодействия между
объектами. Дети могут сочинять истории, рисовать
и оживлять на экране придуманных ими персонажей,
учиться работать с графикой и звуком. Важно и то,
что ребенок имеет возможность поделиться
результатами своего творчества с друзьями или
другими пользователями: кнопка для размещения
созданного проекта в Сети находится
непосредственно в программе. Разумеется, на
сайте можно также познакомиться с
произведениями других пользователей и найти
новые идеи для своих работ. Таким образом, ребята
могут поделиться своими интерактивными
разработками в Scratch аналогично тому, как это
делается при “публикации” видео на популярном
сайте YouTube.
Scratch как программный продукт имеет
несколько нестандартный статус: с открытым кодом
(open-source), но закрытый для разработки (closed-development),
т.е. он разрабатывается небольшой группой
исследователей MIT Media Lab. Программное обеспечение
полностью бесплатно, и любой желающий
может закачать с сайта его версии для Windows и Mac OS;
версия для Linux обещана в ближайшем будущем.
Интерфейсная часть программы и
операторы Scratch переведены на большое количество
языков, но, к сожалению, русского в этом списке
пока нет (в одной из статей вскользь упомянуто о
каких-то трудностях с русификацией).
Scratch создавался для учеников начиная
от 8 и до 16 лет, но и дети более раннего возраста
могут работать в этой среде над проектами вместе
с родителями или старшими братьями и сестрами. С
другой стороны, даже студенты многих вузов могут
использовать Scratch на занятиях в компьютерных
классах.
В рекламных материалах сайта Scratch [2]
образно сказано, что система предлагает низкий
пол (легко начать работу), высокий потолок (возможность
создать сложные проекты) и широкие стены (поддержка
широкого разнообразия проектов).
Те, кто захочет почитать материалы
по Scratch на русском языке, могут обратиться к
хорошо известному в России сайту [3].
Что значит название “Scratch”?
Термин “Scratch” пришел из технологий,
используемых диск-жокеями стиля хип-хоп, которые
мастерски крутили виниловые пластинки, смешивая
музыкальные фрагменты некоторыми творческими
способами [1]. Аналогично Scratch позволяет детям
смешивать графику, фотографии, музыку и звуки.
Такое смешение порождает целый калейдоскоп
проектов: от школы полярных медведей до звездных
войн и исполнения брейк-данса [2].
В переводе с английского scratch имеет
множество разнообразных значений: “каракули,
скрип, царапанье, насечка, метка, стартовая
черта” — и целый ряд других. Глагол to scratch, помимо
ожидаемого “царапать” и “скрести”,
дополнительно имеет варианты перевода “рыть
когтями” и “нацарапать письмо или рисунок”.
Являясь частью выражений, это слово часто
переводится как “случайно, наспех, на скорую
руку, используемый для черновиков или
набросков”. Все это — scratch. Очень хорошо подходит
к этому ряду выражение “start from scratch” — начать с
нуля. Вероятно, поскольку царапанье кошек тоже
scratch, символом программы служит веселый кот.
Что такое Scratch?
Как уже отмечалось выше, трудно
одной-двумя фразами определить, что есть ПО под
названием “Scratch”. Попробуем выяснить это
подробнее.
Прежде всего Scratch называют языком
программирования, и это, без сомнения, так.
Традиционные базовые конструкции
программирования типа IF / ELSE и несколько версий
цикла REPEAT (и даже весьма странная с точки зрения
теории программирования конструкция FOREVER —
повторять навсегда) в нем представлены, также
можно создавать числовые переменные и
программировать простейшие выражения. Остальная
часть языка направлена на реализацию
манипуляций с мультимедиа. Имеются практически
все возможности языка Лого, за исключением одной,
но очень важной: нет механизма организации
процедур. С моей точки зрения, это серьезный
“минус”, когда в результате чрезмерной
оптимизации “выплеснули с водой ребенка”.
Вообще Scratch все-таки следует назвать упрощенным и
не очень строгим по построению языком
программирования, специализированным на
обработке простых видов мультимедийной
информации.
Кроме того, Scratch часто называют
объектно-ориентированным языком, мотивируя
это тем, что он оперирует с мультимедийными
объектами, главным образом визуальными. Данный
тезис не вполне справедлив в строгом смысле ООП:
сомнительно, что не имеющий механизмов
наследования (нет описаний объектов) и
полиморфизма (нет процедур с именем) можно
назвать по-настоящему объектным.
Примечание. Во многом похожая
ситуация, кстати, имеет место при изучении сред
визуального программирования, например, Delphi.
Разговор о “настоящем” ООП при обучении во
многих случаях подменяется обсуждением
библиотеки визуальных компонентов: кнопок,
флажков и т.п.
А вот что почему-то не было отмечено в
качестве достоинств языка (по крайней мере ни в
одной из статей, прочитанных мною при подготовке
данной публикации), так это глубокое внедрение в
Scratch идей обработки событий и обмена
сообщениями. В самом деле, переход от единой
программы, заключенной между BEGIN / END или их
аналогами в классических языках
программирования, к совокупности обработчиков в
современных визуальных средах есть одно из
существенных революционных изменений в стиле
написания программ. В Scratch все законченные
программные блоки есть обработчики событий
(реакция на нажатия клавиш, щелчок по спрайту и
некоторые другие). Даже пуск проекта оформляется
именно как процедура, запускаемая по щелчку
кнопки со стартовым зеленым флажком. Говоря о
второй особенности, отметим, что спрайты
способны обмениваться сообщениями и реагировать
на них. Указанные особенности языка Scratch,
безусловно, заслуживают, чтобы их выделили в
качестве существенного достоинства.
Но Scratch — это не просто язык
программирования. Это еще и интерактивная
среда, построенная на интуитивно понятных
ребенку принципах. Принципиальной новизной
системы является идея о сборке программы мышкой
из готовых блоков (их еще называют
“кирпичиками”) подобно тому, как дети строят
домики и машинки из деталей “Лего” (см. рисунки к
разбираемым в статье примерам). Подобный способ
набора (сборки?) программ исключает проблемы
синтаксиса, что для младших школьников
существенно.
Scratch — это мультимедийная система.
Большая часть операторов языка направлена на
работу с графикой и звуком, создание
анимационных и видеоэффектов. Манипуляции с
медиаинформацией — главная цель создания Scratch.
Особо подчеркивают коммуникативную
сторону Scratch. Среда предполагает коллективную
работу над проектами, а также обмен результатами
через сайт Scratch-сообщества [2]. Сообщество носит
открытый характер, любой желающий может
посмотреть и скачать все его материалы. Не
пожалейте времени и посетите указанный сайт —
посмотрите результаты детских работ; почти
уверен, что каждый сумеет найти среди 78793
проектов и 1485243 скриптов от 14 926 авторов (данные на
февраль 2008 г.) что-нибудь интересное именно вам.
Кстати говоря, чтобы отослать законченный проект
на сайт, достаточно нажать кнопку Share (разделить,
поделиться, совместно использовать) и заполнить
небольшую форму, которая нужна для правильной
классификации проекта. В одной из статей
подчеркивалось, что проект можно поместить не
только на официальный Scratch-сайт. С помощью
специализированного Java-аплета можно проигрывать
любой файл без системы Scratch, а значит, включать
его в состав любой web-странички.
Наконец, можно рассматривать Scratch как
систему подготовки интерактивных динамических
презентаций: предусмотрен специальный режим, при
котором отображается только результат работы
программы, а ее текст и все вспомогательные
органы управления с экрана убираются. Если
только не приглашать профессиональных
программистов на VBA, то Scratch оставит Power Point далеко
позади.
Познакомимся с командами Scratch
Как и в любом другом языке, программа
(в Scratch ее часто называют скрипт или, точнее
говоря, скрипты, поскольку программа может
содержать их несколько) состоит из отдельных
команд. Каждая команда изображается в виде
графического блока (“кирпичика”).
Поскольку, как уже отмечалось выше,
набор текста скрипта фактически состоит в
перетаскивании “кирпичиков”-образцов в поле
программы, понятно, что образцы эти удобно
разделить на группы и отображать на экране
только ту из них, с которой пользователь в данный
момент работает.
Примечание. Хорошо
просматривается аналогия с палитрой компонентов
в визуальных средах, когда компоненты
группируются по страницам.
Каждая группа блоков имеет
собственный цвет, что, разумеется, нравится
детям.
Всего на данный момент выделено 8
страниц с командами. Их краткие характеристики
сведены в таблицу, приведенную ниже. Полный
список команд можно найти в документации к Scratch [4]
(на английском языке) или на сайте [3] уже
по-русски.
Примечание. Файл документации
называется ScratchReference.pdf, он находится в
каталоге Help. Он может вызываться непосредственно
из самой программы (cм. таблицу).
Приведем несколько примеров.
Команда move (10) steps
смещает спрайт на 10 пикселей в том направлении,
“куда он смотрит”, а turn (15) degrees
поворачивает его на указанный угол в указанном
на “кирпичике” направлении. Next costume
переключает изображение (вид) спрайта:
отображается следующее или первое, если
заготовленные образы закончились. Для
проигрывания звукового файла с именем meow
предусмотрена команда play sound [meow].
Несколько необычная команда forever организует
бесконечный цикл. Команда mouse x возвращает
значение указателя мыши по оси x и т.д.
Блоки могут содержать внутри себя
параметры, как, например, в команде move (10) steps.
Входящие в команду значения вписываются с
клавиатуры или выбираются из выпадающего списка
(см. рис. 1.2 на с. 22).
В Scratch существует 3 вида блоков (см. рис.
1).
а) Основная масса блоков может
“ставиться друг на друга”, образуя “столбик”
(“стопку”). Их называют Stack blocks.
Некоторые управляющие блоки (например, циклы)
имеют вид буквы “С” — они охватывают входящие в
них блоки, расширяясь на требуемую величину.
b) Некоторые управляющие блоки
(например, when Sprite1 clicked) могут быть
только сверху стопки: по смыслу это заголовки
обработчиков событий (Hats).
c) Наконец, последняя группа блоков
служит индикатором тех или иных величин
(например, x position): в них
отображаются текущие значения величин, что
удобно для контроля и отладки. Последний вид
блоков называют Reporters.
Рис. 1. Виды блоков
Нужные команды перетаскиваются в поле
программы. Близко располагающиеся команды
сочленяются в блоки (см. рис. 1.3 и 1.5 на с. 23).
Блок перемещается за самую верхнюю команду.
Двойной щелчок по оператору или блоку вызывает
его немедленное исполнение.
Интерфейс программы
Интерфейс программы спроектирован и
сделан в расчете на детей, поэтому он максимально
хорошо понимается интуитивно. Рассмотрим, как
устроена среда.
После запуска программы экран имеет
вид, показанный на рис. 2 (зоны экрана выделены
и подписаны после снятия копии экрана в
графическом редакторе).
Главная область — это конечно же сцена
(располагается в правой части экрана), на ней мы
будем наблюдать результаты работы нашего
проекта.
Чтобы на сцене что-нибудь происходило,
необходимо создать спрайты, т.е. визуальные
динамические объекты; кнопки создания новых
спрайтов обозначены на рисунке цифрой 8. Все, что
мы создали, отображается на листе спрайтов (ниже
сцены), где можно выбрать один из спрайтов для
настройки. При этом информация о текущем спрайте
отображается в средней части экрана. Там мы видим
поле для скриптов, описывающих поведение данного
спрайта. Верхняя часть поля содержит закладки
(обозначены цифрой 3), с помощью которых можно от
просмотра скриптов перейти к просмотру
возможных видов (рисунков) спрайта (Costumes) и
связанных с данным спрайтом звуков (Sounds). Краткая
информация о выбранном спрайте: имя, текущий
образ, координаты и т.д. — отображается выше (см.
цифру 2). В этой же области находится кнопка Export, позволяющая сохранить спрайт в
виде отдельного файла.
Стоит подчеркнуть, что скрипты
являются составной частью каждого спрайта,
подобно визуальным образам и звукам. Общие
атрибуты, относящиеся ко всему проекту в целом,
можно присоединить к сцене: у нее также могут
быть свои скрипты, образы и звуки.
При создании скриптов используется
палитра блоков, которая занимает левую часть
экрана. В ее верхней части располагается 8
разноцветных кнопок, которые выбирают нужную
группу команд (см. приведенную выше таблицу).
Команды выбранной группы отображаются в нижней
части обсуждаемого окна.
Когда все готово, можно нажать кнопку 7
и перейти в полноэкранный режим, в котором сцена
займет весь экран, а все остальные области
убираются. Полученный режим очень напоминает
просмотр готовой презентации в Power Point.
Практически все управление системой
сосредоточено в верхней части экрана. Главное
меню выполнено в виде горизонтального ряда
кнопок. Кроме них отдельно выделены кнопки
переключения режима поворота спрайтов (на
рисунке обозначены цифрой 1; подробнее об их
назначении можно прочесть в описании проекта 1),
панель инструментов 4, а также кнопки запуска и
остановки скриптов 6.
В правом верхнем углу (5) индицируется
информация о прочитанном проекте. Подчеркнем,
что до тех пор, пока вы не сохранили свой новый
проект первый раз, система “проявляет к нему
непростительное равнодушие”: например, при
выходе не предлагает выполнить сохранение.
Итак, что надо сделать, чтобы создать
собственный проект? Во-первых, конечно, продумать
его и выяснить, что потребуется, подобрать файлы
с картинками и, возможно, звуками. Затем, удалив
“рекламного” кота (автоматически генерируемый
спрайт под номером 1), нужно создать требуемое
число спрайтов и присоединить к ним подобранные
рисунки и звуки. Наконец, пользуясь палитрой
блоков и мышью, собрать необходимые скрипты и
отладить их.
Разумеется, приведенная
последовательность является лишь примерной; она
описана с целью показать основные компоненты
проекта. При работе над реальным проектом вы
можете поступать, как диктует ваше творческое
воображение. Вполне реальной схемой является
сначала создать и отладить скрипты для двух-трех
главных спрайтов, обеспечив их требуемое
поведение, а затем заняться деталями
графического и музыкального оформления. В то же
время, если вам удобнее “гонять” спрайты на фоне
определенного рисунка, система сумеет нормально
обеспечить и такую последовательность действий.
В общем, как и положено настоящему творчеству, у
него нет четкого алгоритма.
Цитируемые источники
1. Schorow S. Interactive ‘Scratch’ program empowers
young media artists. MIT Tech Talk, vol. 51, № 27 (May 16, 2007), p. 7.
2. Официальная страница Scratch. http://scratch.mit.edu.
3. Летописи.Ру. http://letopisi.ru/index.php/Скретч.
4. Scratch Reference Guide (входит в комплект
программы).
Примеры проектов
Вот, кажется, и все, что желательно
знать о системе, прежде чем начать с ней работать.
Все остальное можно осваивать в ходе разработки
собственных проектов, так сказать, на
собственном опыте.
Далее приводятся примеры нескольких
характерных проектов, разработанных автором в
ходе освоения системы. Примеры носят технический
характер, т.е. в основном ставят целью показать
технику работы, а не создать какой-либо нетленный
шедевр.
Проекты разделены на две группы.
Группа A — это простейшие проекты, позволяющие
освоить основные приемы работы в среде. Сами по
себе они не имеют практического применения.
Напротив, проекты группы B могут быть
использованы на практике, зато их реализация
потребует гораздо больших усилий.
ДЕМОНСТРАЦИОННЫЕ ПРОЕКТЫ
(ГРУППА А)
Проект 1. “Гоняем кота”
В качестве первого шага обычно
делают что-то простое и эффектное. Мне захотелось
начать с перемещения спрайта (визуального
объекта) с помощью клавиш управления курсором.
Проект действительно удалось осуществить “за
пять минут”, причем на чисто интуитивном уровне
без чтения помощи или документации.
Справедливости ради следует сказать, что
понимание сути обработки событий в визуальных
средах вроде Delphi, вероятно, помогало.
По умолчанию Scratch автоматически
создает первый спрайт, имеющий вид забавного
кота. Мы пока не будем его изменять, а займемся
управлением — “погоняем” по экрану.
На странице операторов Control (цвет
желтый) найдем событие when (space) key
pressed (реакция на нажатие клавиши, по умолчанию
это пробел). Перетащим этот заголовок
обработчика событий мышкой в нашу программу
(скрипт) — см. рис. 1.1 на с. 22.
По умолчанию обработчик настроен на
клавишу пробел, а нам требуются клавиши
управления курсором, например, для начала
“стрелка влево”. Нажав на общепринятый значок
выпадающего списка — перевернутый треугольник,
выберем из длинного перечня клавиш нужную,
которая, “как нетрудно догадаться”, называется
left arrow (рис. 1.2).
Итак, заголовок обработчика
сформирован, перейдем к построению его
содержимого. Обдумаем, что он должен делать.
Во-первых, двигающийся влево кот должен смотреть
в направлении, в котором шагает, поэтому начнем с
того, что повернем кота налево. Для этого на
странице операторов Motion (цвет голубой)
отыщем и добавим к скрипту команду point in direction (90), что означает по смыслу
смотреть в направлении 90 градусов, т.е. по
умолчанию вправо (рис. 1.3).
Аналогично предыдущему, выбираем из
списка вариант –90 (минус 90!) градусов, т.е.
смотреть влево.
Примечание. Список позволяет не
только выбрать из имеющихся в нем четырех
значений угла, но и при необходимости вписать
любое произвольное значение (так называемый комбинированный
список, который объединяет в себе выпадающий
список и поле ввода). Нам такая возможность пока
не требуется.
Наконец, попросим кота сместиться в
том направлении, куда он смотрит. Для этого
подтащим и пристыкуем с этой же страницы команду move (10) steps, что означает сдвинуться на
10 шагов, или, правильнее выражаясь, пикселей.
Надеюсь, вам удалось выполнить это действие так
же легко, как и предыдущее.
Примечание. При желании, щелкнув
мышкой по числу 10, можно его отредактировать, но
мы оставим значение без изменения.
Вы, возможно, не поверите, но наш первый
скрипт уже готов! Более того, он даже работает!
Нажмите клавишу со стрелкой влево и убедитесь,
что кот ее слушается. Пусть вас не пугает, что он
идет вниз головой, немного позднее мы легко
исправим эту “странность”.
Если вы, воодушевленные первым
успехом, тут же начали перетаскивать “кубики”
операторов для трех оставшихся клавиш со
стрелками, то пока повремените, так как все можно
сделать значительно проще; собранный обработчик
можно просто размножить. Для этого щелкнем
правой кнопкой мыши на самом верхнем операторе
(обязательно там!) и во всплывающем меню выберем
пункт duplicate — рис. 1.4.
Появившийся дубликат программы
немедленно перетащим на свободное место и
расположим так, чтобы наши эстетические чувства
были удовлетворены. Остается перенастроить
направление стрелки в заголовке и направление в
операторе point. Например, для стрелки вправо (right
arrow) следует установить значение 90 градусов.
Убежден, что все у вас получилось, и
спрайт с котом беспрекословно подчиняется вашим
указаниям.
На этом можно было бы и закончить наш
первый проект, но добавим маленький завершающий
штрих. Дело в том, что если сильно увлечься, то кот
может выйти за границы поля, и у вас, вероятнее
всего, возникнет желание сделать так, чтобы при
каждом запуске скрипта кот появлялся в одном и
том же месте.
Рис. 1.1. Помещаем в программу первый
оператор
Рис. 1.2. Выбираем нужную клавишу
Рис. 1.3. “Пристыковываем” еще один
оператор
Рис. 1.4. Копируем скрипт
Рис. 1.5. Итоговый проект из пяти
скриптов
Рис. 1.6. Проект стартует
Рис. 1.7. Кот идет влево
Рис. 1.8. Встроенный графический
редактор
Примечание. Видимый на экране
спрайт в процессе работы над проектом можно
просто переместить мышкой!
Для инициализации состояния спрайта
подключимся к обработчику стартовой кнопки с
рисунком зеленого флажка. Соответствующий
заголовок найдем на странице операторов Control (цвет
желтый). В обработчик включим две команды со
страницы Motion (цвет голубой): go to x:
(0) y: (0), что означает вернуть спрайт в точку с
координатами (0,0), т.е. в центре экрана, и уже
знакомую нам point in direction (90). В
качестве красивого и бесполезного “бантика” со
страницы операторов Looks (цвет фиолетовый)
добавим еще инструкцию say [Hello] for (2) secs;
знатоки английского поняли, что кот будет нам
говорить “Hello” (или любой другой текст, который
вы наберете, — лишь бы в нем не было русских
букв!) в течение двух секунд. Итоговая
программа проекта изображена на рис. 1.5. Ее,
наверное, стоит сохранить на диске.
Момент инициализации спрайта
изображен на рис. 1.6, а рабочий момент
движения кота влево — на рис. 1.7. Добавим
только, что Scratch-система обводит исполняемый
фрагмент программы белой толстой линией, что
весьма удобно для наблюдения работы скриптов.
Что еще можно попробовать? Могу
посоветовать произвести следующие действия.
1. Просмотрим полученный проект на
чистом экране (без программного окружения). Для
этого в правой нижней части найдем кнопку (кнопка 7 на рис.
2) и нажмем.
2. “Запретим” коту гулять вверх
ногами. За это отвечают 3 кнопки, расположенные
над программой (для поиска удобно
воспользоваться рис. 1.4). При нажатии на спрайт перестанет
переворачиваться. Опробуйте и запомните
действие остальных кнопок (вращать, только
лево-право, не менять).
Примечание. С теоретической точки
зрения лучше было бы сделать две кнопки (вместо
трех!): включить зеркальное отображение верх-низ
и лево-право. Их комбинации, помимо трех уже
указанных вариантов, дополнительно дали бы еще
возможность отображения спрайта только
вверх-вниз.
3. Воспользуемся тем фактом, что у
спрайта есть 2 вида (в Scratch они называются Costumes —
см. соответствующую вкладку под скриптами).
Видно, что у нашего кота есть 2 рисунка,
изображающие фазы движения. Если добавить к
каждому из 4 обработчиков оператор next costume из страницы операторов Looks (цвет
фиолетовый), то кот начнет при движении смешно
передвигать лапками. Более подробно
организацией анимации мы займемся в следующем
проекте.
4. Добавьте проигрывание
присоединенного к спрайту звука “мяу” (см.
следующую вкладку Sounds) с помощью оператора play sound [meow], который вы найдете на
странице операторов Sound (цвет розовый).
5. Попробуйте изменить смещение в
операторах move (10) steps.
Подберите оптимальное с вашей точки зрения
значение.
6. Попробуйте самостоятельно
доработать проект так, чтобы при нажатии клавиши
кот делал, например, по 5 шагов с задержкой 0,5 с.
Указание. Воспользуйтесь циклом repeat и задержкой wait (0.5) secs
на странице Control (цвет желтый, задержка по
умолчанию 1 с заменяется на нужную).
7. Испытайте оператор if
on edge bounce (страница Motion, цвет синий),
который автоматически реализует отражение
спрайта при достижении границы экрана.
8. Замените изображение кота каким-либо
другим. Для этого откройте вкладку Costumes,
возле изображения Costume1 найдите кнопку edit и
нажмите ее. В появившемся окне графического
редактора (рис. 1.8) нажмите кнопку очистки Clear
(справа вверху), а затем импортируйте новую
картинку клавишей Import (слева вверху). Можете
подрисовать что-нибудь сами.
9. Найдите в прилагающихся рисунках
похожий проект — бегающего муравья. Для этого
запустите Scratch, удалите спрайт кота, а затем
кнопкой (см.
цифру 8 на рис. 2) откройте библиотеку
изображений. В разделе Animals найдите и
загрузите спрайт муравья (Running Ant с подписью
“5 скриптов”). Разберитесь, как он устроен и чем
отличается от нашего проекта.
Примечание. Абсолютно честно
заявляю, что проект с муравьем был найден уже
после завершения проекта 1 и поэтому не оказал на
разработку последнего никакого влияния.
Окончание читайте в следующем номере