Робот должен посадить цветы на все грядки и дойти до базы

Добавил пользователь Morpheus
Обновлено: 19.09.2024

Слайды и текст этой презентации

Основные алгоритмическиеконструкцииПрезентация к уроку информатики7 классАвтор: Юдин Андрей БорисовичМКОУ Плесская СОШИсполнитель РОБОТ

Презентация к уроку информатики
7 класс
Автор: Юдин Андрей Борисович
МКОУ Плесская СОШ

Окно редактора программы

Задача для робота
(обстановка)

Основное меню программы

Окно для организации ввода и вывода

4Загрузить лабиринтЗапустить программу на выполнениеОстановить выполнение программыШаблоны команд Режим роботаВосстановить лабиринт

Запустить программу на выполнение

Остановить выполнение программы

Основные команды:
направо; - повернуться на 90 градусов
вправо
налево; - повернуться на 90 градусов влево
кругом; - развернуться кругом (на 180
градусов)
вперед ( n ); - перейти на n клеток вперед
назад ( n ); - перейти на n клеток назад
посади; - посадить цветы на грядке, где
стоит Робот

6Программа < вперед ( 1 ); налево; вперед ( 1 );

Программа
вперед ( 1 );
налево;
вперед ( 1 );
посади;
вперед ( 1 );
посади;
направо;
вперед ( 1 );
посади;
вперед ( 4 );
>

Задача 1. Робот должен посадить цветы на все грядки и дойти до Базы.

7Задача решена успешноЗадача не решена

Задача решена успешно

Задача не решена

8Упорядочить программу

9Редактировать лабиринт

10Создать новый лабиринтВставить элементы лабиринтаДобавить столбцы и строкиУдалить столбцы и строкиВыйти из режима редактирования с сохранением лабиринта

Создать новый лабиринт

Вставить элементы лабиринта

Добавить столбцы и строки

Удалить столбцы и строки

Выйти из режима редактирования с сохранением лабиринта

11Задачи для самостоятельного решения1234

Задачи для самостоятельного решения

повтори (количество повторений)
повторяемые действия;
>

repeat (количество повторений)
повторяемые действия;
>

Занятие 2. Цикл ПОВТОРИ n РАЗ

1316 клетоквперед ( 1 );посади;Задача 2_1. Робот должен посадить цветы на все грядки и дойти до Базы.

Задача 2_1. Робот должен посадить цветы на все грядки и дойти до Базы.

14Программа < повтори ( 16 ) <

Программа
повтори ( 16 )
вперед ( 1 );
посади;
>
вперед ( 1 );
>

1511 клеток6 клетокЗадача 2_2. Робот должен посадить цветы на все грядки и дойти до Базы.

Задача 2_2. Робот должен посадить цветы на все грядки и дойти до Базы.

16Программа < повтори ( 11 ) <

Программа
повтори ( 11 )
вперед ( 1 );
посади;
>
вперед ( 1 );
направо;
посади;
повтори ( 6 )
вперед ( 1 );
посади;
>
вперед ( 1 );
>

Движемся по горизонтали

Поворот на право

Движемся по вертикали

Заходим на базу

1711

18Задачи для самостоятельного решения1234

Задачи для самостоятельного решения

пока ( условие )
повторяемые действия;
>

while ( условие )
повторяемые действия;
>

Занятие 3. Цикл ПОКА

20

21Составные условия образуются из простых условий добавлением логических операций И, ИЛИ, НЕ.Если А, В – простые условия,

Составные условия образуются из простых условий добавлением логических операций
И, ИЛИ, НЕ.

Если А, В – простые условия, то:

1. Составное условие ( А и В ) будет выполняться только тогда, когда выполняются каждое из простых условий.

2. Составное условие ( А или В ) будет выполняться тогда, когда выполняется хотя бы одно из простых условий.

3.Составное условие ( не А ) будет выполняться, когда не выполняется простое условие А.

пока ( условие )
Действие 1;
Действие 2;
>

пока ( условие )
Действие 1;
>
Действие 2;

23Задача 3. Робот должен посадить цветы на все грядки и дойти до Базы. Размеры лабиринта считать произвольными.

Задача 3. Робот должен посадить цветы на все грядки и дойти до Базы. Размеры лабиринта считать произвольными.

Программа
пока ( впереди_свободно )
вперед ( 1 );
посади;
>
направо;
вперед ( 1 );
>

Цикл выполняется пока робот не упрется в стену

24Задача 4. Робот должен посадить цветы на все грядки и дойти до Базы. Размеры лабиринта считать произвольными.

Задача 4. Робот должен посадить цветы на все грядки и дойти до Базы. Размеры лабиринта считать произвольными.

Программа
вперед ( 1 );
пока ( грядка )
посади;
вперед ( 1 );
>
направо;
вперед ( 1 );
направо;
вперед ( 1 );
>

Цикл выполняется пока под роботом не закончатся грядки

25Задачи для самостоятельного решения1234

Задачи для самостоятельного решения

Занятие 4. Ветвления

27Если условие выполняетсяИначе, т.е. когда условие не выполняется

Если условие выполняется

Иначе, т.е. когда условие не выполняется

если ( условие )
действие 1;
действие 2;
>

если ( условие )
действие 1;
>
действие 2;

Задача 5. Робот должен посадить цветы на все грядки и дойти до Базы. Размеры лабиринта считать произвольными.

Задача 5. Робот должен посадить цветы на все грядки и дойти до Базы. Размеры лабиринта считать произвольными.

Программа
пока ( впереди_свободно )
вперед ( 1 );
если ( слева_свободно )
налево;
вперед ( 1 );
посади;
назад ( 1 );
направо;
>
>
>

Цикл обеспечивающий движение по коридору

Делаем шаг вперед

Проверяем есть ли проход в стене слева

Заходим в проем в стене и засаживаем там грядку

31Задачи для самостоятельного решения12

Задачи для самостоятельного решения

32Занятие 5. Вложенные циклыЗадача 6. Робот должен посадить цветы на все грядки и дойти до Базы. (Лабиринт

Занятие 5. Вложенные циклы

Задача 6. Робот должен посадить цветы на все грядки и дойти до Базы. (Лабиринт имеет размеры 8х7).

33Программа < повтори (8) <

Программа
повтори (8)
повтори ( 7 )
вперед ( 1 );
посади;
>
направо;
вперед ( 1 );
налево;
назад ( 7 );
>
>

Засаживаем 7 грядок в одной строке

Возвращаем робота в начало следующей строки

Повторяем эти действия для 8 строк

34

35Задачи для самостоятельного решения1234

Задачи для самостоятельного решения

36Занятие 6. ПроцедурыЗадача 7. Робот должен посадить цветы на все грядки и дойти до Базы.

Занятие 6. Процедуры

Задача 7. Робот должен посадить цветы на все грядки и дойти до Базы.

Процедура
вперед ( 1 ); налево;
вперед ( 2 ); налево;
посади; вперед ( 1 );
посади; налево;
вперед ( 1 ); посади;
вперед ( 1 ); посади;
налево; вперед ( 1 );
посади; вперед ( 1 );
посади; вперед ( 1 );
>

1. Исполнитель Робот

У чебный исполнитель Робот предназначен для того, чтобы без участия человека сажать цветы в подготовленные для них грядки. В программе, с которой вы будете работать, Робот изображен в виде машинки, которая ездит по полю. Поле размечено на квадраты, каждый из которых может быть: 1) свободным местом ; 2) грядкой или 3) стенкой . Робот может переходить из клетки в клетку по грядкам или по свободным клеткам, ходить по клумбам с цветами запрещается. Он должен посадить цветы на всех грядках и вернуться на Базу, обозначенную значком , для пополнения запасов.

Робот может двигаться вперед и назад, а также разворачиваться на 90 и 180 градусов влево или вправо.

http://aleksej19770109.ucoz.ru/7777/1/snimok.jpg

2 Основные команды Робота .Как и любой исполнитель, Робот понимает только ограниченный набор команд, которые входят в его СКИ (список команд исполнителя). Пока нам хватит нескольких команд, перечисленных ниже:

направо; повернуться на 90 градусов вправо

налево; повернуться на 90 градусов влево

кругом; развернуться кругом (на 180 градусов)

вперед ( n ); перейти на n клеток вперед

назад ( n ); перейти на n клеток назад

посади; посадить цветы на грядке в том месте, где стоит Робот

Позже мы немного расширим СКИ и добавим в него новые команды. Робот не может ходить по диагонали, проходить сквозь стенки и топтать цветы на клумбах.

http://aleksej19770109.ucoz.ru/7777/1/snimok2.jpg

Какие ошибки могут быть у Робота?

1. Синтаксические (“НЕ ПОНИМАЮ”) – появляются при ошибках в написании команд, например

влево;

вперет ( 3 );

  1. Отказы (“НЕ МОГУ”) – появляются, например, если Роботу приказывают идти прямо на стенку или сажать цветы там, где нет грядки.
  2. Логические – возникают тогда, когда Робот понимает команды и делает все, что ему сказали, но результат совсем не тот, какой мы ожидали.

ЗАДАНИЕ: Напишите программу для следующей ситуации в текстовом редакторе и пришлите мне.

1. Условный оператор состоит из двух частей; первая часть начинается ключевым словом если или if (от английского “если”), после которого в скобках записывается условие.

2. Если это условие верно (или истинно), то выполняется группа команд, стоящая ниже в фигурных скобках (блок-если).

3. Вторая часть (блок-иначе) начинается со слова иначе или else (от английского “иначе”) и выполняется в том случае, когда условие в скобках ложно.

6. Блок-иначе может отсутствовать, если он не нужен; в этом случае мы говорим, что условный оператор записан в сокращенной форме.

Чтобы было удобнее разбираться в программе, используют отступы так же, как и в циклах: тело блока-если и блока-иначе сдвигается вправо на 2-3 символа


Рассмотрим на примере следующей задачи.
Где-то правее робота находится база. При движении многократно вправо мы видим, что возможны две ситуации. Они отмечены красной и синей точками. Если при движении вправо мы обнаружим слева стену, то выполняем последовательность команд, отмеченную на рисунке красными линиями. Иначе мы выполняем последовательность команд отмеченную синими линиями.
Хочу отметить следующую деталь.
Робот всегда возвращается в туже клетку откуда он пришел. Почему?
Так как команда вправо(1); будет написана в теле цикла, которая будет перемещать Робота по нашему коридору ВПРАВО до БАЗЫ.
Итак наш алгоритм будет выглядеть следующим образом:


15 чел. помогло.

^ Вложенные циклы (задача z3-3.maz)

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


Как бы такая задача решалась в реальных условиях? Можно предложить такой вариант: Робот сначала сажает цветы в первом (верхнем) ряду, затем во втором и т.д.


  • ^ Вложенный цикл – это такой цикл, который находится внутри другого цикла.

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

^ 4.Алгоритмы с обратной связью

Что такое обратная связь и зачем она нужна?

До сих пор мы приказывали Роботу выполнить какую-то задачу, предполагая, что обстановка полностью известна: мы точно знаем сколько шагов до стенок, какую они имеют форму и где расположены. Мы не анализировали результаты действий Робота и обстановку на поле. Такой подход напоминает действия начальника, который отдает приказания, но не проверяет их выполнение, или шофера, который ведет машину с закрытыми глазами, полагаясь на свое знание дороги.


  • Обратная связь – это информация об окружающей обстановке, которую исполнитель использует для выбора нужного варианта выполнения алгоритма..

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

^ Как Робот использует обратную связь?


  • ^ Логическая команда – это условие, которое может быть верным (истинным) или неверным (ложным).

справа_стена справа_клумба справа_свободно

слева_стена слева_клумба слева_свободно

впереди_стена впереди_клумба впереди_свободно

сзади_стена сзади_клумба сзади_свободно

Команды грядка и база определяют, есть ли грядка (или база) в клетке, где сейчас находится Робот.

Пример 1 (задача z4-3.maz). Роботу надо придти на Базу, которая расположена на краю стенки. Расстояние от Робота до стенки и длина стенки неизвестны.


  1. выдать запрос впереди_свободно;

  2. если Робот получил от датчиков ответ “нет”, то он выполнил задание и находится у стены;

  3. если получен ответ “да”, то сделать шаг вперед и повторить весь процесс.

^ Цикл с условием

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

Тем не менее, есть четкое условие, по которому Робот должен закончить работу: если перед ним оказывается стена. Таким образом, Робот должен выполнять цикл пока впереди свободно. Для этой цели служит специальный вид цикла – цикл пока (или while, от английского while – пока). Такой вид цикла называется циклом с условием, поскольку он заканчивается, когда нарушается условие в заголовке цикла.

Для того, чтобы придти на Базу, в программе используется цикл пока не база. Это условие истинно (верно), если Робот еще на пришел на Базу и надо двигаться дальше. Если Робот вступил в клетку, где находится База, условие база стало истинным, а условие не база – ложным, поэтому цикл закончится.


  1. Цикл пока используется тогда, когда число повторений цикла заранее неизвестно, но ограничено каким-то условием.

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

  3. Если условие перестает быть верным (истинным), выполнение цикла заканчивается и исполнитель переходит к следующей команде.

  4. Условие проверяется в начале цикла, то есть если перед выполнением цикла условие ложно, то цикл не выполнится ни разу.

  5. В цикле выполняются все операторы, заключенные в фигурные скобки;

    Если тело цикла включает всего один оператор, скобки можно не ставить.

  1. Для того, чтобы легче разбираться в программе, все команды, входящие в цикл, смещают вправо на 2-3 символа – это позволяет сразу видеть, где начинается и где заканчивается цикл.

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

Читайте также: