Условные конструкции в Penjee

Задания

  1. Во-первых: Не прикасайтесь к коду, который мы вам дали, Просто запустите код и попробуйте выяснить: ПОЧЕМУ Пэм не в состоянии полностью обойти вокруг озера?
    Вы увидите, что это не работает!
    Когда вы запускаете код, вы, вероятно, думаете, что очень далеки от выполнения этого задания и что вам нужно внести некоторые существенные изменения, чтобы заставить его работать, но – верите или нет, – вам нужно добавить только 1 команду, 1 строку, чтобы эта программа работала!
    Вам надо добавить pam.waddle() на строке 7 (не забудьте удвоить отступ). Пожалуйста, попробуйте сделать это сами, используя следующий псевдокод.

    Псевдокод:

    begin  loop
    while penjee is not at Fish 
        if is water on right
            waddle
         else
           turn right 
           waddle ** the new command** 
    end loop
    
    grab fish


    Видео, объясняющее, что вы только что сделали:

  2. Итак, вам надо начать в строке 2, в колонке 1 и использовать один цикл while.
    Внимательно посмотрите на псевдокод: внутри проверки условия if блок кода (группа строчек), который вам надо написать, чтобы обойти каменную скалу.

    Псевдокод:

    instantiate pam at 2,0
    
    BEGIN loop 
      while pam is not at fish
          BEGIN if test
              if pam is rock ahead
              then    
                  pam turn left
                  pam waddle
                  pam turn right
                  pam waddle
                  pam waddle
                  pam turn right
                  pam waddle
                  pam turn left
              else
                  pam waddle
    
          END if
    END loop
    pam grab fish

  3. Перед Пэм целая куча рыбы! Есть только одна проблема: отражающий куб, который находится прямо в середине всех этих вкусных, сочных рыб.
    Используйте проверку условия if для работы с кубом льда и метод .isSafe(), чтобы убедиться, что ваш цикл завершается в нужном месте.
    Примечание: псевдокод в этот раз сделан более общим и не описывает каждую строчку кода, которую вам надо будет написать.

    Псевдокод:

    instantiate pam at 0,9, south
    
    BEGIN loop 
      while pam is safe 
          BEGIN if test
              if pam is cube ahead
              then    
            pam go around cube
            pam get fish on way
              else
                  pam waddle
          END if
    END loop

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

    Псевдокод

    begin loop
     while not water is ahead  
         if is fish here
             grab fish
             waddle  one
         else
            waddle
    end loop
    
    grab last fish

  5. if isLogicError(ahead)… Если впереди логическая ошибка…

    Если вы запустите код, который мы вам дали, то увидите, что Пэм скучает по рыбе (она на самом деле скучает по рыбе дважды).
    Первая часть программы работает отлично. Однако блок программы, который выполняется, если условие в ветке if истинно, нуждается в исправлении.

    Дело в том, что большая часть нашего кода работает хорошо, и пока программа не будет запущена, мы не сталкиваемся с логической ошибкой.
    Поскольку ваши программы становятся длиннее и сложнее, то и отладка вашего кода может, в конечном итоге, занимать много времени.
    Однако, к счастью, у нас есть некоторые стратегии, которые помогут сократить время, необходимое для исправления логической ошибки (стратегии, которые мы объяснили в предыдущем видео).
    В этом задании вы можете видеть, что проблема связана с кодом после проверки условия if. Однако Пэм требуется некоторое время, чтобы прийти от ее стартовой позиции 6,0 к той части карты, где возникают проблемы. Мы должны использовать кнопку Run Stepwise “пошагового исполнения”, чтобы отладить эту проблему, но для того, чтобы попасть в ту часть кода, которая является проблемой, потребуется очень много времени.
    В предыдущем видео мы предложили вам стратегию улучшения процесса отладки, временно меняя место, откуда Пэм начинает своё движение.
    Итак, используйте стратегию, которую мы объяснили в этом предыдущем видео, и (временно) измените позицию, с которой Пэм начинает движение, так, чтобы она начинала в позиции непосредственно перед кубом!
    Шаг 1. Измените начальную позицию Пэм. Примечание: это временное изменение, чтобы помочь нам быстрее добраться до той части, где есть логическая ошибка.
    pam = Penguin(6,15)
    Шаг 2. Используйте кнопку Single Step «Один шаг», чтобы запустить код строку за строкой и определить, какие изменения вы должны внести, чтобы исправить логическую ошибку.
    Шаг 3. Исправьте логическую ошибку и повторите шаг 2, чтобы убедиться, что всё отлично работает.
    Шаг 4. После исправления логической ошибки восстановите исходную позицию Пэм, используя следующий код.
    pam = Penguin(6,0)
    Большая идея: когда это возможно: делайте вашу жизнь проще. Когда определенная часть вашей программы вызывает проблемы, полезно использовать функцию Single Step «Один шаг», а также вы можете сделать временное изменение начальной позиции Пэм, – чтобы тут же протестировать / отладить проблемную часть вашей программы.
  6. Карта этого задания должна выглядеть так же, как и второе задание, которое вы сделали в этом уроке!
    Вопрос в том, на сколько нам нужно изменить код второго задания, чтобы решить задачу этой карты? Вернувшись ко второму заданию, скопировав там код и вставив его в это задание, вы можете ответить для себя на вопрос: “На сколько нам нужно изменить код второго задания, чтобы решить задачу этой карты?”
  7. Карта этого задания должна выглядеть так же, как и третье задание задание, которое вы сделали в этом уроке!
    Как в прошлый раз, когда вы сделали это, давайте посмотрим, на сколько вы должны изменить свой старый код? Вернитесь в третье задание и скопируйте код, вставьте его в это задание и посмотрите, на сколько его нужно изменить.
  8. Узор из каменных скал и рыб. Странная вещь случилась с камнями и рыбой. Оказывается, каждая рыба находится ровно на 2 позиции вдали от каждой скалы.
    Пэм должна начать с позиции 1,0, и каждый раз, когда есть камень, она должна сделать один конкретный набор действий, чтобы получить рыбу.
    Мы дадим вам подсказку: это займёт у вас ровно 15 строк кода. Большая часть кода находится внутри блока if (мы называем группу инструкции “блок”).
  9. Маленькие препятствия. Начните вместе со своим пингвином с позиции (20, 0) и заметьте повторяющийся узор в препятствиях из камней!