Условный
оператор реализует разветвляющийся тип алгоритма (см. п. 5.2 Виды алгоритмов).
Напомним, как производится проверка условий в среде «Логомиры»:
а)
если условие [команды]
б) если_иначе условие [команды1][команды2]
Рассмотрим простейшие
задачи, с использованием условия.
«Аквариум с рыбками»
Нарисуйте незакрашенный прямоугольник с
толщиной границ равной 2 точки аквариум. Создайте две черепашки-рыбки.
Напишите программу, при выполнении которой рыбки плавали бы в аквариуме по
горизонтали на разных уровнях, отталкивались от стенок аквариума и меняли
направление и форму. Добавьте в аквариум водоросли, ракушки, камни и раковины.
Решение
Проблем с
рисованием незакрашенного прямоугольника быть не должно. Создаём черепаху и
перетаскиваем на неё любую форму рыбки из имеющегося набора. Но по условию нам
потребуются две зеркальные формы. Для этого в рюкзаке у черепашки на закладке
«Формы» копируем добавленную нами форму и вставляем её на вторую позицию. Открываем
скопированную форму в редакторе форм, дважды щёлкнув по ней. При помощи
инструмента
Мы уже знаем, как проверить, какой цвет
находится под черепашкой. Задумаемся, какого результата мы хотим достичь.
Во-первых, черепашка должна двигаться, во-вторых, встретив стенку, изменить
форму и направление движения. Осталось перевести всё это на алгоритмический
язык.
это рыба
нов_курс 270
повтори 43
[нов_форма 1 вп 2 жди 2
нов_форма 2 вп 2 жди 2
нов_форма 3 вп 2 жди 2]
нов_курс 90
повтори 43
[нов_форма 4 вп 2 жди 2
нов_форма 5 вп 2 жди 2
нов_форма 6 вп 2 жди 2]
конец
нов_курс 270
повтори 43
[нов_форма 1 вп 2 жди 2
нов_форма 2 вп 2 жди 2
нов_форма 3 вп 2 жди 2]
нов_курс 90
повтори 43
[нов_форма 4 вп 2 жди 2
нов_форма 5 вп 2 жди 2
нов_форма 6 вп 2 жди 2]
конец
Команда вп 1 внутри условия нужна для того, чтобы после проверки условия и
изменения направления движения при следующем повторении черепашка сместилась бы
с границы.
Помещаем имя процедуры в правила и
ставим «Много раз». В поле ввода команд зададим рыбке начальный курс нк 90. Теперь оживим черепашку, чтобы
проверить, что всё работает правильно.
Вторую рыбку совершенно не обязательно
создавать с самого начала, так как процедура у неё будет в точности такая же.
Поэтому просто копируем первую. В её копии удаляем формы и на их место из
готовых форм перетаскиваем любую другую рыбку. Как и у первой черепашки делаем
зеркально отражённую форму. Изменим имя процедуры с «рыба1» на «рыба2» как на
закладке «Процедуры» так и на закладке «Правила».
Добавим кнопки «Пуск» и «Стоп» как это
рассказано в проекте «Автомобили на дороге». Дополним наш аквариум различными
подходящими к теме объектами. Например, можно добавить анимированную
раскрывающуюся раковину, растения и т.п.
В принципе, проект готов. Смущает
только, что рыбы перед тем как изменить направление движения выходят на
половину за границу аквариума. Это связано с тем, что черепашка отслеживает
цвет поля под ней точкой находящейся в точности на середине формы. Чтобы обойти
подобный эффект, надо применить совершенно иной подход к решению данной задачи
– координатный. То есть наша черепашка-рыба должна будет следить за изменением
координат, а не цвета под ней.
Скопируем ещё раз любую из двух наших
рыб и сместим её к правой или левой стенке аквариума (в зависимости от того
куда она развёрнута) так, чтобы форма рыбки не вылезала за край. В рюкзаке
черепашки на закладке «Состояние» смотрим её текущие координаты.
Рис.
37
Процедура котика
это котик
нм [-133 -45]
повтори 30 [ нов_форма 1 вп 0 жди 2 нов_форма 2 вп 0 жди 2 нов_форма 3 вп 0 жди 2 нов_форма 3 вп 0 жди 2 нов_форма 4 вп 0 жди 2 нов_форма 5 вп 0 жди 2 нов_форма 6 вп 0 жди 2 нов_форма 7 вп 0 жди 2 нов_форма 8 вп 0 жди 2 нов_форма 9 вп 0 жди 2 нов_форма 10 вп 0 жди 2 ]
повтори 2
конец
Проект готов, что бы посмотреть скачать.
0 коммент.:
Отправить комментарий