Задания
- Введение в оператор
and
В этом простом задании мы даём вам весь код, кроме одного слова.
Нужно заменить ??? операторомand
. Внимательно изучи код, чтобы понять, как он работает!
- Задумывались ли вы о том, что у оператора
and
есть брат? 😉
Цель этой задачи: Пэм начинает в (4, 2) и, используя один цикл, двигается к (4, 13), как показано на анимации ниже.
В этой задаче нужно просто заменить ?? операторомor
.
- Двойное
not
Можете ли вы сказатьnot
двум вещам? Прочитайте весь абзац ниже, потому что там есть важная информация. И, собственно, весь ответ мы вам даём ниже, но читайте внимательно, чтобы понять, что вам нужно сделать.
Вам надо написать цикл, который остановится, когда Пэм окажется в столбце 5. Вот анимация, показывающая, что должен сделать ваш цикл.
Дело в том, что единственный способ закончить в этом месте (в столбце 5), это отрицать истинность двух условий:isFish(here)
иisFish(ahead)
. Другими словами, наш код должен выразить: что Пэм будет продолжать двигаться до тех пор, пока не истинны 2 вещи. Мы никогда не делали этого раньше.Псевдокод:
instantiate Pam BEGIN LOOP while Pam is not on fish and Pam is not fish ahead Pam waddle END LOOP grab the fish waddle grab fish
Мы даём вам неверный код, и вы должны это исправить! (Не волнуйтесь, мы вам поможем!)
Вы спросите, почему мы вам даём неправильный код? Зачем?
Однако мы предоставили вам код, который пишут многие начинающие программисты и ошибаются.
Чтобы этот код работал правильно надо:- Добавить скобки.
- Проверить, что оператор
not
находится перед скобками. - Убедиться, что условия
pam.isFish(here)
иpam.isFish(ahead)
находятся внутри скобок.
and
… сноваnot
?
Используй свои новые знания, чтобы написать один циклwhile
.
Вам необходимо завершить цикл в строке 0, столбце 8, поэтому необходимо написать условие цикла так, как в последнем задании.
Вот анимация того, как должна выглядеть законченная программа.
Постарайтесь сделать это самостоятельно, но если вы зайдёте в тупик, не расстраивайтесь. Мы знаем, что этот раздел, в частности, является настолько трудным, что в этом задании вы можете, по крайней мере, потерять одно очко опыта, нажав на кнопку с решением 🙂 …Все-таки постарайтесь не потерять ни одного очка, если сможете!
Удачи!
- Половина пути
Пэм начинает в верхнем правом углу и хочет спуститься в нижний левый угол так, как показано в этой анимации.
Дело в том, что мы собираемся сделать это с помощью одного и только одного цикла while. Для этого нужно задать себе вопрос : чем отличается нижний левый угол?
…И ответ связан с тем, что это единственная клетка, где выполняются условия pam.isLooking(south) и pam.isWall(ahead).Псевдокод:
instantiate pam at (0, 9, west) begin loop while pam is not looking south and not wall ahead if pam isWall ahead pam turns left else pam waddles end loop
- Три четверти вокруг
Как и в предыдущем задании, Пэм начинает в правом верхнем углу, но на этот раз она хочет закончить в правом нижнем углу, как показано в следующей анимации:
Единственное изменение, которое вам нужно сделать, это условие цикла while.Псевдокод:
instantiate pam begin loop while pam is not looking east and is not wall ahead if pam isWall ahead pam turn left else pam waddle end loop
- Кругом марш!
Подумайте о том, как вы измените этот цикл. Вот анимация.
Попробуйте сделать это без псевдокода. Просто подумайте о том, как нужно изменить условие циклаwhile
.
- Рок-музыка под скалой
Пэм находится в верхнем левом углу и слышала действительно крутую рок-музыку под нижней скалой (в строке 8, столбец 4, если быть точным).
Напишите один цикл while используя «not» и «and» для того, чтобы привести Пэм туда, где играет крутой рок!