#12.2 For, While и Repeat/Until в Паскаль -- связь между циклами и их взаимозаменяемость

(урок находится в разработке)

Ранее в уроках мы уже рассматривали циклы в Паскаль, в частности обсуждали их отличия и сходства в теме о repeat/until.

В этом уроке мы с вами начнём впервые анализировать уже существующий код, изменяя его.

Цель урока: научиться заменять циклы For, While и Repeat/Until другом другом и, таким образом, усилить понимание особенностей их работы.

Видео

Как заменить один цикл на другой

  1. Пример повторения for-to с помощью while и repeat-until (все три цикла делают одно и то же, разберитесь почему):
    var i:integer;
    begin
       for i:=1 to 10 do
          write(i, ' ');
       writeln();
    
       i:=1;
       while i<=10 do
       begin
          write(i, ' ');
          i:=i+1;
       end;
       writeln();
    
       i:=1;
       repeat
          write(i, ' ');
          i:=i+1;
       until i>10;
    end. 
    
  2. Пример повторения for-downto с помощью while и repeat-until (все три цикла делают одно и то же, разберитесь почему):
    var i:integer;
    begin
       for i:=10 downto 1 do
          write(i, ' ');
       writeln();
    
       i:=10;
       while i>=1 do
       begin
          write(i, ' ');
          i:=i-1;
       end;
       writeln();
    
       i:=10;
       repeat
          write(i, ' ');
          i:=i-1;
       until i<1;
    end.   

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

  1. Имеется программа:

    var i: integer;
    begin
      for i:=5 to 34 do
        write(i, ' ');
    
      readln();
    end. 
    

    Ответьте на вопросы/выполните задания

    • Что в ней происходит?
    • Что будет на экране после её выполнения?
    • Перепишите её, используя цикл while.
    • Перепишите её, используя цикл repeat/until.
  2. У вас есть программа, использующая цикл while:
    var
       i: integer;
    begin
      i:=1;
      while i<=100 do
      begin
        write(i, ' ');
        i:=i+5;
      end;
    
      readln();
    end.
    
    • Объясните что делает эта программа (что будет выведно на экран и почему)
    • Перепешите её с помощью цикла repeat/until
    • Перепешите её с помощью цикла for