Таблица 7.19.
Инструменты сравнения
Обозначение | Форма записи | Значение операции сравнения |
> | x1 > х2 | да (истина), если значение xl больше значения х2. нет (ложь) — в противном случае |
< | xl < х2 | да (истина), если значение xl меньше значения х2, нет (ложь) — в противном случае |
= | х1 = х2 | да (истина), если значение xl равно значению х2, нет (ложь) — в противном случае |
Операция сравнения используется в качестве параметра в командах. Например, вывести значение операции сравнения в командный центр можно с помощью команды покажи:
покажи color > 8
покажи 100 / 3 < 50
Если для анализа состояния объекта требуется осуществить несколько проверок, составляется логическое выражение, включающее несколько операций сравнения. В логическом выражении операции связываются логическими действиями И, ИЛИ и НЕ. Например, чтобы проверить, совпадает ли цвет Черепашки с цветом пиксела под ее пером и одновременно с цветом фона, введите команду:
покажи и (цвет = цп) (цвет = фон)
Выбор действий по условию
Рассмотрим такую ситуацию. Черепашка гуляет по рабочему полю. На рабочем поле расположено озеро определенного цвета. Черепашка, попав на озеро, должна «спрятаться».
Для моделирования ситуации сначала нужно нарисовать объект «Озеро», изображенный на рис. 7.31 и описанный в табл. 7.20. Для этого потребуется специальный инструмент — процедура озеро.

Рис. 7.31 Озеро
Для создания объекта «Озеро» введите команду:
озеро 1 360 85
Инструмент-процедура фортуна заставляет Черепашку менять свое положение на рабочем поле случайным образом:
это фортуна
пп нов_х –300 + сл 600
нов_у –180 + сл 360
конец
Задание 7.83
Оставьте и запишите на листе программ процедуры озеро и фортуна. Проверьте работу этих процедур. Проверьте в разных точках рабочего поля значение выражения «цвет под пером равен 85». устанавливая Черепашку на озере и вне озера и — вводя команду покажи цп = 85.
Таблица 7.20.
Информационная модель объекта «Озеро»
Параметры объекта | Инструмент (процедура) | |
Название | Значение | |
Цвет | цв | это оэеро ст чв цв |
Форма | Правильный многоугольник | |
Длина стороны | ст | |
Число вершин | чв | |
Начальное положение исполнителя | Случайное в области: 0 < х <100 | |
Конечное положение исполнителя | Черепашке возвращается исходный цвет, и она располагается вне озера |
Как научить Черепашку самостоятельно менять свое состояние? В среде ЛОГО есть команды, с помощью которых можно выбрать нужные действия, проанализировав условие:
| команда если позволяет реализовать неполную форму разветвляющегося алгоритма; | |
| команда если__иначе позволяет реализовать полную форму разветвляющегося алгоритма. |
Варианты возможных действий задаются списком команд. Список команд — это последовательность команд, заключенная в квадратные скобки. Команды в списке отделяются друг от друга пробелом.
Формат команды для неполной формы разветвляющего алгоритма:
если условие [список команд]
Команда состоит из ключевого слова если и двух входных параметров: условия и одного списка команд. Условие представляет собой одну операцию сравнения или логическое выражение. Список команд содержит те команды, которые надо выполнить, если условие выполняется (значение выражения да, или «истина»). Если значение условия «ложь», то команды, записанные в квадратных скобках, не выполняются.
Формат команды для полной формы разветвляющего алгоритма:
если_иначе условие [список команд 1] [список команд 2]
Команда состоит из ключевого слова если_иначе и трех входных параметров: условия и двух списков команд. Первый список команд содержит те команды, которые надо выполнить, если условие выполняется (истинно). Второй список команд содержит команды, которые надо выполнить в случае, когда условие ложно. Теперь научим Черепашку «нырять под воду» — становиться невидимой. На русском языке мы объяснили бы объекту, что он должен делать, таким образом:
Если цвет под пером голубой (номер 85), то стань невидимой, подожди некоторое время и снова покажись.
В приведенном выше объяснении после слова «если» записано условие: цвет под пером голубой (номер 85).
На языке ЛОГО это условие будет выглядеть так: цп = 85.
Действия, которые должна выполнить Черепашка, записаны после слона «то»: стань невидимой, подожди некоторое время и снова покажись.
На языке ЛОГО эти действия выражаются командами: сч жди 10 пч.
Разветвляющийся алгоритм для Черепашки выглядит следующим образом:
если цп = 85 [сч жди 10 пч]
Задание 7.84
Нарисуйте на рабочем поле озеро командой озеро 1 360 85 и установите Черепашку вне озера.
а) Введите команду:
если цп = 85 [сч жди 10 пч]
Вы видите, что при цвете под пером, не равном 85, никаких Действий не выполняется.
б) Переместите Черепашку на озеро. Введите в командном центре команду:
если цп = 85 [сч жди 10 пч]
Черепашка исчезла на некоторое время, а потом появилась опить.
Теперь пусть Черепашка на берегу оставляет квадратный коврик. Ваш алгоритм должен предусматривать один список действий при выполнении условия и другой — в противном случае:
Если цвет под пером голубой (номер 85), то стань невидимой, подожди некоторое время и покажись, иначе нарисуй квадрат со стороной 10 шагов.
Запишем этот алгоритм на языке Лого:
если_иначе цп = 85 [сч жди 10 пч] [по нц 65 цв_кв 10 ]
Задание 7.85
Нарисуйте на рабочем поле озеро командой озеро 1 360 89 и установите Черепашку вне озера.
а) Введите команду:
если_иначе цп = 85 [сч жди 10 пч]
[по нц 65 плитка 10 45]
Вы видите, что при цвете под пером, не равном 85, Черепашка рисует коврик.
б) Переместите Черепашку на озеро. Введите в командном центре команду:
если_иначе цп = 85[сч жди 10 пч]
[по нц 65 плитка 10 45]
Черепашка исчезла на некоторое время, а потом появилась опять.
Создание процесса в среде программирования
В заданиях 7.84 и 7.85 Черепашка один раз выполняла действия, изменяющие ее состояние. Что получится, если эти действия повторять в течение некоторого времени t?
Процедура фортуна забрасывает Черепашку в случайную точку рабочего поля. Что мы будем наблюдать на экране, если запускать ее несколько (t) раз?
Задание 7.86
Нарисуйте на рабочем поле озеро командой озеро 1 360 85 и установите Черепашку вне озера.
а) Введите команду:
повтори 100 [фортуна]
Черепашка «летает» по рабочему полю.
б) Введите команду:
повтори 100 [фортуна если цп = 85 [сч жди 10 пч]]
Поведение Черепашки изменилось. Попадая на озеро, она исчезает на некоторое время, а потом снова появляется.
в) Введите в командном центре команду:
повтори 100 [фортуна
если_иначе цп = 85 [жди 10 сч жди 10 пч]
[плитка 10 45]]
Теперь Черепашка то исчезает в озере, то рисует коврик на берегу.
Последовательную смену состояний объекта в результате произведенных действий называют процессом. Процесс обязательно разворачивается во времени. В среде программирования за единицу времени можно принять один проход цикла. Циклический алгоритм является одним из способов моделирования процесса в среде программирования.
В среде ЛОГО можно создать повторяющийся процесс и другим способом. Известно, что в теле процедуры допускается вызов любой процедуры, в том числе и той же самой. Оформим алгоритм изменения состояния Черепашки как процедуру:
это изм_сост
фортуна
если_иначе цп = 85 [жди 10 сч жди 10 пч] [плитка 10 45]]
конец
Для моделирования процесса прогулки вокруг озера предложим следующую программу:
это прогулка
изм_сост
прогулка
конец
Выполнение алгоритма прогулка напоминает известную сказку про белого бычка: по команде изм_сост Черепашка изменяет свое состояние, затем снова вызывается программа прогулка и все начинается сначала. Указанный способ вызова процедуры, прогулка наливается рекурсией.
Рекурсивный алгоритм — это алгоритм повторения, в котором процедура по ходу ее выполнения обращается к самой себе.
Процесс, основанный на рекурсивном вызове. называется рекурсивным.
В природе существует множество рекурсивных процессов: курица несет яйцо, ил яйца появляется цыпленок, который вырастает в курицу, которая несет новые яйца; на дереве образуется семечко, семечко падает в землю и из него вырастает новое дерево, и т. д. Рекурсивный алгоритм применяется для моделирования подобных рекурсивных процессов.
Рассмотрим новый графический объект — «Спираль». Пусть Черепашка рисует некоторый отрезок и поворачивается на определенный угол. На каждом проходе рекурсии отрезок должен уменьшаться, а угол оставаться неизменным:
это спираль с угол
вп :с пр :угол спираль :с – 5 :угол
конец
Введя команду по спираль 58 90, вы будете наблюдать бесконечный процесс рисования прямоугольной спирали.
Вы можете ограничить спираль, задав, например, минимальный допустимый отрезок.
это спираль с угол
если :с < 5 [стоп]
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


