Приступим к составлению нашей первой программы. Для этого откройте в новом окне ссылку или введите адрес https://snap.berkeley.edu/snap/snap.html#present:Username=kivan2020&ProjectName=1.Tema1.Zadanie_3.
Любая работа начинается с того, что чётко формулируется задача – «Что надо сделать?». Программисты называют этот этап – постановка задачи.
1.1. Постановка задачи
Когда мы знакомились со средой программирования, наверное, очень многие заметили ошибку. В слове бочка стоит мягкий знак!
На уроках русского языка мы узнали, что звуки [ч'], [щ'] – непарные мягкие. При письме их мягкость показывать не надо. Вот почему сочетания чк, чн, чт, щн пишутся всегда без ь.
Например: собачка Жучка, ручная белочка, ночной, строчка, что, помощник.
Составляя текст, кто-то допустил ошибку. Что ж. Бывает. Предназначение метранпажа исправлять их. А наша задача составить программу для робота, чтобы он исправил эту ошибку – убрал мягкий знак и набор букв «бочька» преобразовал в слово «бочка».
1.2. Построение алгоритма. Составление словесного плана
Кода нам становится ясно что надо сделать перед нами возникает следующий вопрос – «Как это сделать?». Необходим чёткий план что и в какой последовательности необходимо выполнять. Поставь себя на место робота и представь, что бы ты делал. Обсуди этот план с другом или подругой. Распиши его на листочке бумаги в виде последовательности действий. Действия запиши столбиком (колонкой). Каждому действию присвой порядковый номер, а затем проанализируй каждое действие:
1. Всё ли готово для выполнения данного действия или перед этим действием необходимо ещё что-то сделать
2. Существует ли арсенале исполнителя команда, с помощью которой можно осуществить данное действие. Если есть хоть одно неосуществимое действие, то и весь план является неосуществимым.
3. Каковы последствия выполненного действия и что потом предстоит сделать.
В рассуждениях очень помогут маленькие рисунки на клетчатой бумаге с разметкой сцены, положением карточек и траекторией (линией) движения робота. Все намечаемые действия следует соотносить с возможностями робота, а именно – какие команды он может выполнить.
Попробуем эти советы реализовать. Изучаем исходные условия задачи (см. рис. 5) и задаём себе вопрос: что необходимо сделать в первую очередь?
Ответ очевиден – перевести робота в клетку над мягким знаком, а затем вытолкнуть карточку с мягким знаком за пределы сцены
В этом предложении два действия. Записываем их одно под другим, нумеруем и мы получаем первую редакцию плана.
1. Перевести робота в клетку над мягким знаком.
2. Вытолкнуть мягкий знак из слова за пределы сцены.
Перевести как? Заглядываем в арсенал блоков. Робот может только двигаться вверх, вниз, вправо или влево на любое заданное количество клеток. Намечаем траекторию (линию) движения робота и конкретизируем первый пункт плана. Получается следующее:
1. Сделать 4 шага вверх
2. Сделать 10 шагов вправо
3. Вытолкнуть мягкий знак из слова за пределы сцены
Вот теперь роботу предоставляется возможность вытолкнуть карточку с мягким знаком за пределы сцены. Да, но команды «вытолкнуть» в арсенале команд робота нет. Зато он обладает свойством толкать перед собой карточки. Достаточно сделать 4 шага вниз и задача будет выполнена.
А можно ли сделать 5 или 6 шагов? Когда мы приступим к сборке скрипта обязательно попробуй. Ты увидишь реакцию программы на попытку выполнить недопустимое действие и аварийную остановку программы. Не волнуйся. Всё будет в порядке. Найдёшь на клавиатуре клавишу «пробел», нажмёшь на неё и на сцене восстановится исходная позиция задачи.
А мы сейчас уточним пункт три предыдущего плана.
1. Сделать 4 шага вверх
2. Сделать 10 шагов вправо
3. Сделать 4 шага вниз
В результате выполнения 3 пункта плана мягкий знак наконец-то будет вытолкнут за пределы сцены, но в слове «бочка» появится дырка. Слово «бочка» окажется разбитым на отдельные слоги. (см. рис. 7).
Теперь перед нами встанет следующая задача – сомкнуть слоги. Для этого необходимо перевести робота в клетку перед словом, а затем подтолкнуть слоги друг к другу. Нарисуем как должен двигаться робот (см. рис. 8) и нарастим наш план.
Добавляем 4 и 5 действие и переводим робота в клетку перед словом
1. Сделать 4 шага вверх
2. Сделать 10 шагов вправо
3. Сделать 4 шага вниз
4. Сделать 4 шага влево
5. Сделать 3 шага вверх
Ну а теперь настало время добавить последнее шестое действие
1. Сделать 4 шага вверх
2. Сделать 10 шагов вправо
3. Сделать 4 шага вниз
4. Сделать 4 влево
5. Сделать 3 шага вверх
6. Сделать 1 шаг вправо
Робот, совершив множество шагов по сцене выполнил поставленную перед ним задачу, а мы сделали первый шаг в разработке программы – составили словесный алгоритм.
Алгоритм — это организованная последовательность допустимых для некоторого исполнителя действий, приводящая к определённому результату, а программа – это запись алгоритма на языке конкретного формального исполнителя.
Алгоритм, записанный на языке, понятном компьютеру, называется программой. Это обозначает только то, что весь наш словесный алгоритм мы должны преобразовать в цепочки команд только из слов входящих в систему команд исполнителя. «Перевод» словесного алгоритма с простого человеческого языка на язык робота-метранпажа это и есть второй шаг в составлении компьютерной программы.
1.3. Составление программы (скрипта)
Прежде чем приступать к составлению компьютерной программы внесу небольшое уточнение. Робот и карточки — это не какие-то осязаемые физические объекты. Это лишь картинки на экране монитора, но они могут свободно перемещаться, изменяться под управлением программ. Такие картинки называют спрайтами, а программы для них скриптами. Скрипт и программа – слова-синонимы. В переводе с английского языка «sсript» — это сценарий.
А теперь сделаем второй шаг. Каждую фразу нашего словесного алгоритма переформулируем, выразим их словами, входящими в систему команд исполнителя – СКИ (см. рис. 4), то есть составим программу на языке программирования.
В результате этих, надеюсь не очень сложных для Вас действий, мы получим текст компьютерной программы.
Листинг[1]
- 4 шага вверх
- 10 шагов вправо
- 4 шага вниз
- 4 шага влево
- 3 шага вверх
- 1 шаг вправо
Имея в своём распоряжении текст компьютерной программы, мы можем приступить к сборке скрипта.
1.4. Сборка и отладка скрипта (программы)
Приступаем к сборке скрипта. Переместите из арсенала блоков на поле скриптов командный блок «(1) шаг вверх».
Для этого:
- наведите курсор мыши на блок, и нажмите левую кнопку мыши,
- удерживая кнопку в нажатом состоянии, переместите курсор, а вместе с ним и блок (точнее дубликат блока) в нужную вам позицию, и отпустите кнопку мыши.
В овальное окно впечатайте цифру 4.
Затем, переместите на поле скриптов следующий командный блок «(1) шаг вправо», впечатайте в овальное окно число 10 и соедините его с предыдущим блоком.
Чтобы соединить один блок с другим, подтащите второй блок ближе к нижней части первого. Когда появится белая полоса, отпустите блок.
Нижний блок как будто магнитом подтянется к верхнему блоку и объединится с ним в скрипт.
Скрипт, или сценарий, — это небольшая программа, которая выполняет конкретную задачу.
А теперь сделай щелчок левой кнопкой мыши по скрипту. Наш робот тут же начал выполнять эту небольшую программу, перешёл в клетку над мягким знаком и замер.
Для нас это очень удобно. Мы можем проверять правильность отдельных шагов программы по мере её создания. А как вернуть робота в исходное положение? Мы же ещё не закончили работу. Обрати внимание на другой скрипт заготовленный заранее.
Щёлкни по этому скрипту или нажми на клавишу «пробел» и робот займёт исходную позицию.
Продолжим сборку скрипта. Добавим команду «4 шага вниз».
Запусти этот скрипт. Щёлкни мышкой по скрипту. И что же мы видим?! Наш робот, как мы и запрограммировали перешёл в клетку над мягким знаком, но затем поднырнул под мягкий знак, проскочил мимо, а карточка с мягким знаком даже не шелохнулась.
Что случилось? Программа не работает. Она неправильная?!
Не расстраивайся. В практике программирования это хоть и неприятная, но всё же очень частая ситуация. После пуска программы обычно выясняется, что где-то допущена ошибка, где-то недоработан алгоритм, где-то не хватает исходных данных и т. д. Поэтому следующим шагом после составления программы является отладка программы, иными словами, поиск и устранение ошибок.
Давай разбираться в чём тут дело.
А дело всё в том, что карточки тоже управляются составленной для них программой. Посмотреть эту программу можно если открыть поле скриптов мягкого знака. Обрати своё внимание на табло спрайтов и сцены. Наведи курсор мыши на картинку с изображением мягкого знака и щёлкните по изображению левой кнопкой мыши.
Как только ты сделал щелчок, тут же на поле скриптов возникли скрипты мягкого знака.
О том, что это поле скриптов спрайта «мягкий знак», свидетельствует его изображение в левом верхнем углу. «Попутешествуй» по полям скриптов других спрайтов. Обрати внимание, что у всех спрайтов два весьма схожих скрипта. Предназначение второго понятно. Оно следует из названия блока: «Занять исходную позицию». А вот первый как раз и осуществляет взаимодействие карточки с роботом и другими карточками.
Все скрипты начинаются блоком в форме шапочки. У одних написана фраза: «при нажатии клавиши [пробел]», а у других изображение зелёного флажка. Таким же флажком даётся команда старта на многих соревнованиям. И такой же стартовый флажок изображён правой части «Панели меню».
Добавим в скрипт стартовый блок управления «при нажатии на зелёный флажок» и запустим программу щелчком по зелёному флажку на «Панели меню».
Теперь заработали все скрипты нашей программы, и робота, и карточек. Наш робот выполнил первую часть нашей задачи – вытолкнул карточку с мягким знаком за пределы сцены.
Внесём необходимые коррективы в листинг нашей программы и завершим сборку скрипта.
Листинг 2
- при нажатии на зелёный флажок
- 4 шага вверх
- 10 шагов вправо
- 4 шага вниз
- 4 шага влево
- 3 шага вверх
- 1 шаг вправо
Последний раз проверим наш скрипт. Запустим программу щелчком по зелёному флажку на «Панели меню». Вокруг скрипта возник светящийся ореол (см. рис.), робот пробежался по сцене, исправил ошибку в слове, а мы убедились, что задача решена правильно.
1.5. Как это работает
Запустите программу в режиме отображения шагов выполнения. Для этого кликните мышкой по кнопке на панели меню (см. рис.).
После «клика» кнопка окрасилась в светло-зелёный цвет. В этом режиме блоки, «работающие» в данный момент времени, окрашиваются в такой же светло-зелёный цвет.
После пуска программы начинает «работать» первый сверху блок – «4 шага вверх». Все остальные блоки, располагающиеся ниже, терпеливо ждут своей очереди.
Робот, подчиняясь команде «работающего» блока начинает передвигаться вверх.
Только после того, как робот сделает 4 шага вверх право «поработать» предоставится блоку «10 шагов вправо». Все остальные блоки, подчиняясь строгой дисциплине будут ждать своей очереди.
Подчиняясь команде «10 шагов вправо» робот начинает «подкрадываться» к мягкому знаку. И как только робот сделает эти десять шагов, и окажется над мягким знаком заработает следующая команда – «4 шага вниз».
Подчиняясь этой команде, робот начинает двигаться вниз и одновременно выталкивать карточку с мягким знаком за пределы сцены. Здесь главное сам робот не должен соскочить со сцены, так как это ему делать строжайше запрещено, произойдёт аварийная остановка всей программы.
Решив свою первую задачу – совершив четыре шага вниз и вытолкнув карточку с мягким знаком, робот готовится решить свою вторую – сомкнуть слоги в слове. Он начинает путешествие к началу слова.
Вначале он делает 4 шага влево и, оказавшись в колонке 7 начинает двигаться вверх в направлении строки 4.
Перейдя в строку 4 и оказавшись перед буквой «б», робот исполняет заключительный аккорд своей программы – делает последний шаг вправо.
Слоги сомкнулись, программа выполнена полностью. Фраза «Пустая бочка гремит громче» составлена без грамматических ошибок. Но вот у меня возникли к тебе несколько вопросов. Вопрос первый – о бочке ли говорится в этой поговорке? Вопрос второй – какого человека сравнивают с пустой бочкой? В каких случаях у нас возникают ассоциации человека и пустой бочки? Какие для себя выводы необходимо сделать? И последний вопрос можешь ли ты составить программу, для данного задания, в которой будет использовано не шесть команд, а только пять.
Мы немного отвлеклись (надеюсь не без пользы), а сейчас вернёмся к нашей основной теме. Мы рассмотрели работу первой, самой простой конструкции. В ней все команды выполняются один раз, причем в том порядке, в котором они записаны. Такая конструкция алгоритма называется – линейный алгоритм, а в теории структурного программирования – следование.
А всего типов конструкций, которые в теории программирования считаются базовыми, то есть основными только три. Это: следование, цикл и ветвление. Следование мы уже рассмотрели. А остальные изучим позднее.
1.6. Резюме
Прежде, чем приступить к самостоятельному решению задач нам следует сделать краткие выводы из, изученного, сжато изложить основные положения, то есть составить резюме.
- Компьютер– это вычислительное устройство с огромной и хорошо организованной памятью. Работает только по программе, разработанной до мельчайших подробностей. Но работает быстро и безукоризненно.
- Программа – это набор последовательных команд для исполнителя, которые он должен выполнить для достижения определенной цели.
- Разработка программы начинается с выработки цели задачи. Этот этап программисты называют постановка задачи.
- Когда цели ясны начинается построение алгоритма. Вначале составляется общий план на обычном для нас разговорном языке. Затем этот план детализируется, разбивается на отдельные действия. Действия сопоставляются с арсеналом команд исполнителя. На данном и последующих этапах хорошо помогают маленькие рисунки на клетчатой бумаге с разметкой сцены, положением карточек и траекторией (линией) движения робота.
- Алгоритм составляется в виде последовательности отдельных действий. Действия записываются столбиком (колонкой). Действиям присваивается порядковый номер.
- Далее осуществляется «перевод» алгоритма с разговорного языка на язык робота, то есть используются только команды из системы команд исполнителя.
- Следующий этап – сборка скрипта и его отладка.