Добавить в корзинуПозвонить
Найти в Дзене

1. Первая базовая конструкция – следование и моя первая программа. Линейные алгоритмы

Приступим к составлению нашей первой программы. Для этого откройте в новом окне ссылку или введите адрес https://snap.berkeley.edu/snap/snap.html#present:Username=kivan2020&ProjectName=1.Tema1.Zadanie_3. Любая работа начинается с того, что чётко формулируется задача – «Что надо сделать?». Программисты называют этот этап – постановка задачи. Когда мы знакомились со средой программирования, наверное, очень многие заметили ошибку. В слове бочка стоит мягкий знак! На уроках русского языка мы узнали, что звуки [ч'], [щ'] – непарные мягкие. При письме их мягкость показывать не надо. Вот почему сочетания чк, чн, чт, щн пишутся всегда без ь. Например: собачка Жучка, ручная белочка, ночной, строчка, что, помощник. Составляя текст, кто-то допустил ошибку. Что ж. Бывает. Предназначение метранпажа исправлять их. А наша задача составить программу для робота, чтобы он исправил эту ошибку – убрал мягкий знак и набор букв «бочька» преобразовал в слово «бочка». Кода нам становится ясно что надо сделать
Оглавление

Приступим к составлению нашей первой программы. Для этого откройте в новом окне ссылку или введите адрес https://snap.berkeley.edu/snap/snap.html#present:Username=kivan2020&ProjectName=1.Tema1.Zadanie_3.

Любая работа начинается с того, что чётко формулируется задача – «Что надо сделать?». Программисты называют этот этап – постановка задачи.

1.1. Постановка задачи

Когда мы знакомились со средой программирования, наверное, очень многие заметили ошибку. В слове бочка стоит мягкий знак!

На уроках русского языка мы узнали, что звуки [ч'], [щ'] – непарные мягкие. При письме их мягкость показывать не надо. Вот почему сочетания чк, чн, чт, щн пишутся всегда без ь.

Например: собачка Жучка, ручная белочка, ночной, строчка, что, помощник.

Составляя текст, кто-то допустил ошибку. Что ж. Бывает. Предназначение метранпажа исправлять их. А наша задача составить программу для робота, чтобы он исправил эту ошибку – убрал мягкий знак и набор букв «бочька» преобразовал в слово «бочка».

1.2. Построение алгоритма. Составление словесного плана

Кода нам становится ясно что надо сделать перед нами возникает следующий вопрос – «Как это сделать?». Необходим чёткий план что и в какой последовательности необходимо выполнять. Поставь себя на место робота и представь, что бы ты делал. Обсуди этот план с другом или подругой. Распиши его на листочке бумаги в виде последовательности действий. Действия запиши столбиком (колонкой). Каждому действию присвой порядковый номер, а затем проанализируй каждое действие:

1. Всё ли готово для выполнения данного действия или перед этим действием необходимо ещё что-то сделать

2. Существует ли арсенале исполнителя команда, с помощью которой можно осуществить данное действие. Если есть хоть одно неосуществимое действие, то и весь план является неосуществимым.

3. Каковы последствия выполненного действия и что потом предстоит сделать.

В рассуждениях очень помогут маленькие рисунки на клетчатой бумаге с разметкой сцены, положением карточек и траекторией (линией) движения робота. Все намечаемые действия следует соотносить с возможностями робота, а именно – какие команды он может выполнить.

Попробуем эти советы реализовать. Изучаем исходные условия задачи (см. рис. 5) и задаём себе вопрос: что необходимо сделать в первую очередь?

Рисунок 5. Исходные условия задачи
Рисунок 5. Исходные условия задачи

Ответ очевиден – перевести робота в клетку над мягким знаком, а затем вытолкнуть карточку с мягким знаком за пределы сцены

В этом предложении два действия. Записываем их одно под другим, нумеруем и мы получаем первую редакцию плана.

1. Перевести робота в клетку над мягким знаком.

2. Вытолкнуть мягкий знак из слова за пределы сцены.

Перевести как? Заглядываем в арсенал блоков. Робот может только двигаться вверх, вниз, вправо или влево на любое заданное количество клеток. Намечаем траекторию (линию) движения робота и конкретизируем первый пункт плана. Получается следующее:

1. Сделать 4 шага вверх

2. Сделать 10 шагов вправо

3. Вытолкнуть мягкий знак из слова за пределы сцены

Рисунок 6. Робот выполнил 1 и 2 пункты плана
Рисунок 6. Робот выполнил 1 и 2 пункты плана

Вот теперь роботу предоставляется возможность вытолкнуть карточку с мягким знаком за пределы сцены. Да, но команды «вытолкнуть» в арсенале команд робота нет. Зато он обладает свойством толкать перед собой карточки. Достаточно сделать 4 шага вниз и задача будет выполнена.

А можно ли сделать 5 или 6 шагов? Когда мы приступим к сборке скрипта обязательно попробуй. Ты увидишь реакцию программы на попытку выполнить недопустимое действие и аварийную остановку программы. Не волнуйся. Всё будет в порядке. Найдёшь на клавиатуре клавишу «пробел», нажмёшь на неё и на сцене восстановится исходная позиция задачи.

А мы сейчас уточним пункт три предыдущего плана.

1. Сделать 4 шага вверх

2. Сделать 10 шагов вправо

3. Сделать 4 шага вниз

В результате выполнения 3 пункта плана мягкий знак наконец-то будет вытолкнут за пределы сцены, но в слове «бочка» появится дырка. Слово «бочка» окажется разбитым на отдельные слоги. (см. рис. 7).

Рисунок 7 Робот выполнил 3 пункт плана
Рисунок 7 Робот выполнил 3 пункт плана

Теперь перед нами встанет следующая задача – сомкнуть слоги. Для этого необходимо перевести робота в клетку перед словом, а затем подтолкнуть слоги друг к другу. Нарисуем как должен двигаться робот (см. рис. 8) и нарастим наш план.

Добавляем 4 и 5 действие и переводим робота в клетку перед словом

1. Сделать 4 шага вверх

2. Сделать 10 шагов вправо

3. Сделать 4 шага вниз

4. Сделать 4 шага влево

5. Сделать 3 шага вверх

Рисунок 8 Выполнен 4 и 5 пункты плана
Рисунок 8 Выполнен 4 и 5 пункты плана

Ну а теперь настало время добавить последнее шестое действие

1. Сделать 4 шага вверх

2. Сделать 10 шагов вправо

3. Сделать 4 шага вниз

4. Сделать 4 влево

5. Сделать 3 шага вверх

6. Сделать 1 шаг вправо

Рисунок 9 Выполнен 6 пункт плана
Рисунок 9 Выполнен 6 пункт плана

Робот, совершив множество шагов по сцене выполнил поставленную перед ним задачу, а мы сделали первый шаг в разработке программы – составили словесный алгоритм.

Алгоритм — это организованная последовательность допустимых для некоторого исполнителя действий, приводящая к определённому результату, а программа – это запись алгоритма на языке конкретного формального исполнителя.

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

1.3. Составление программы (скрипта)

Прежде чем приступать к составлению компьютерной программы внесу небольшое уточнение. Робот и карточки — это не какие-то осязаемые физические объекты. Это лишь картинки на экране монитора, но они могут свободно перемещаться, изменяться под управлением программ. Такие картинки называют спрайтами, а программы для них скриптами. Скрипт и программа – слова-синонимы. В переводе с английского языка «sсript» — это сценарий.

А теперь сделаем второй шаг. Каждую фразу нашего словесного алгоритма переформулируем, выразим их словами, входящими в систему команд исполнителя – СКИ (см. рис. 4), то есть составим программу на языке программирования.

В результате этих, надеюсь не очень сложных для Вас действий, мы получим текст компьютерной программы.

Листинг[1]

  1. 4 шага вверх
  2. 10 шагов вправо
  3. 4 шага вниз
  4. 4 шага влево
  5. 3 шага вверх
  6. 1 шаг вправо

Имея в своём распоряжении текст компьютерной программы, мы можем приступить к сборке скрипта.

1.4. Сборка и отладка скрипта (программы)

Приступаем к сборке скрипта. Переместите из арсенала блоков на поле скриптов командный блок «(1) шаг вверх».

Для этого:

  • наведите курсор мыши на блок, и нажмите левую кнопку мыши,
  • удерживая кнопку в нажатом состоянии, переместите курсор, а вместе с ним и блок (точнее дубликат блока) в нужную вам позицию, и отпустите кнопку мыши.
-7

В овальное окно впечатайте цифру 4.

-8

Затем, переместите на поле скриптов следующий командный блок «(1) шаг вправо», впечатайте в овальное окно число 10 и соедините его с предыдущим блоком.

Чтобы соединить один блок с другим, подтащите второй блок ближе к нижней части первого. Когда появится белая полоса, отпустите блок.

-9

Нижний блок как будто магнитом подтянется к верхнему блоку и объединится с ним в скрипт.

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

А теперь сделай щелчок левой кнопкой мыши по скрипту. Наш робот тут же начал выполнять эту небольшую программу, перешёл в клетку над мягким знаком и замер.

Для нас это очень удобно. Мы можем проверять правильность отдельных шагов программы по мере её создания. А как вернуть робота в исходное положение? Мы же ещё не закончили работу. Обрати внимание на другой скрипт заготовленный заранее.

-10

Щёлкни по этому скрипту или нажми на клавишу «пробел» и робот займёт исходную позицию.

Продолжим сборку скрипта. Добавим команду «4 шага вниз».

-11

Запусти этот скрипт. Щёлкни мышкой по скрипту. И что же мы видим?! Наш робот, как мы и запрограммировали перешёл в клетку над мягким знаком, но затем поднырнул под мягкий знак, проскочил мимо, а карточка с мягким знаком даже не шелохнулась.

Что случилось? Программа не работает. Она неправильная?!

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

Давай разбираться в чём тут дело.

А дело всё в том, что карточки тоже управляются составленной для них программой. Посмотреть эту программу можно если открыть поле скриптов мягкого знака. Обрати своё внимание на табло спрайтов и сцены. Наведи курсор мыши на картинку с изображением мягкого знака и щёлкните по изображению левой кнопкой мыши.

Рисунок 10. Табло спрайтов и сцены
Рисунок 10. Табло спрайтов и сцены

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

Рисунок 11 Поле скриптов мягкого знака
Рисунок 11 Поле скриптов мягкого знака

О том, что это поле скриптов спрайта «мягкий знак», свидетельствует его изображение в левом верхнем углу. «Попутешествуй» по полям скриптов других спрайтов. Обрати внимание, что у всех спрайтов два весьма схожих скрипта. Предназначение второго понятно. Оно следует из названия блока: «Занять исходную позицию». А вот первый как раз и осуществляет взаимодействие карточки с роботом и другими карточками.

Все скрипты начинаются блоком в форме шапочки. У одних написана фраза: «при нажатии клавиши [пробел]», а у других изображение зелёного флажка. Таким же флажком даётся команда старта на многих соревнованиям. И такой же стартовый флажок изображён правой части «Панели меню».

-14

Добавим в скрипт стартовый блок управления «при нажатии на зелёный флажок» и запустим программу щелчком по зелёному флажку на «Панели меню».

-15

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

Внесём необходимые коррективы в листинг нашей программы и завершим сборку скрипта.

Листинг 2

  1. при нажатии на зелёный флажок
  2. 4 шага вверх
  3. 10 шагов вправо
  4. 4 шага вниз
  5. 4 шага влево
  6. 3 шага вверх
  7. 1 шаг вправо

Последний раз проверим наш скрипт. Запустим программу щелчком по зелёному флажку на «Панели меню». Вокруг скрипта возник светящийся ореол (см. рис.), робот пробежался по сцене, исправил ошибку в слове, а мы убедились, что задача решена правильно.

-16

1.5. Как это работает

Запустите программу в режиме отображения шагов выполнения. Для этого кликните мышкой по кнопке на панели меню (см. рис.).

-17

После «клика» кнопка окрасилась в светло-зелёный цвет. В этом режиме блоки, «работающие» в данный момент времени, окрашиваются в такой же светло-зелёный цвет.

-18

После пуска программы начинает «работать» первый сверху блок – «4 шага вверх». Все остальные блоки, располагающиеся ниже, терпеливо ждут своей очереди.

-19

Робот, подчиняясь команде «работающего» блока начинает передвигаться вверх.

Только после того, как робот сделает 4 шага вверх право «поработать» предоставится блоку «10 шагов вправо». Все остальные блоки, подчиняясь строгой дисциплине будут ждать своей очереди.

-20

Подчиняясь команде «10 шагов вправо» робот начинает «подкрадываться» к мягкому знаку. И как только робот сделает эти десять шагов, и окажется над мягким знаком заработает следующая команда – «4 шага вниз».

-21

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

Решив свою первую задачу – совершив четыре шага вниз и вытолкнув карточку с мягким знаком, робот готовится решить свою вторую – сомкнуть слоги в слове. Он начинает путешествие к началу слова.

-22

Вначале он делает 4 шага влево и, оказавшись в колонке 7 начинает двигаться вверх в направлении строки 4.

-23

Перейдя в строку 4 и оказавшись перед буквой «б», робот исполняет заключительный аккорд своей программы – делает последний шаг вправо.

-24

Слоги сомкнулись, программа выполнена полностью. Фраза «Пустая бочка гремит громче» составлена без грамматических ошибок. Но вот у меня возникли к тебе несколько вопросов. Вопрос первый – о бочке ли говорится в этой поговорке? Вопрос второй – какого человека сравнивают с пустой бочкой? В каких случаях у нас возникают ассоциации человека и пустой бочки? Какие для себя выводы необходимо сделать? И последний вопрос можешь ли ты составить программу, для данного задания, в которой будет использовано не шесть команд, а только пять.

Мы немного отвлеклись (надеюсь не без пользы), а сейчас вернёмся к нашей основной теме. Мы рассмотрели работу первой, самой простой конструкции. В ней все команды выполняются один раз, причем в том порядке, в котором они записаны. Такая конструкция алгоритма называется – линейный алгоритм, а в теории структурного программирования – следование.

А всего типов конструкций, которые в теории программирования считаются базовыми, то есть основными только три. Это: следование, цикл и ветвление. Следование мы уже рассмотрели. А остальные изучим позднее.

1.6. Резюме

Прежде, чем приступить к самостоятельному решению задач нам следует сделать краткие выводы из, изученного, сжато изложить основные положения, то есть составить резюме.

  • Компьютер– это вычислительное устройство с огромной и хорошо организованной памятью. Работает только по программе, разработанной до мельчайших подробностей. Но работает быстро и безукоризненно.
  • Программа – это набор последовательных команд для исполнителя, которые он должен выполнить для достижения определенной цели.
  • Разработка программы начинается с выработки цели задачи. Этот этап программисты называют постановка задачи.
  • Когда цели ясны начинается построение алгоритма. Вначале составляется общий план на обычном для нас разговорном языке. Затем этот план детализируется, разбивается на отдельные действия. Действия сопоставляются с арсеналом команд исполнителя. На данном и последующих этапах хорошо помогают маленькие рисунки на клетчатой бумаге с разметкой сцены, положением карточек и траекторией (линией) движения робота.
  • Алгоритм составляется в виде последовательности отдельных действий. Действия записываются столбиком (колонкой). Действиям присваивается порядковый номер.
  • Далее осуществляется «перевод» алгоритма с разговорного языка на язык робота, то есть используются только команды из системы команд исполнителя.
  • Следующий этап – сборка скрипта и его отладка.