Pascal: Занятие №3. Часть 1: Цикл с постусловием в Паскаль

На занятии рассматривается цикл с постусловием в Паскаль Repeat и происходит знакомство со строковым типом данных

Основной задачей портала labs-org.ru является предоставление возможности получения навыков решения практических задач с использованием языка программирования Pascal. На основе решенных примеров и заданий по Паскалю, изложенных по мере увеличения их сложности, даже новичкам будет достаточно просто усвоить предоставленный материал.

Цикл с постусловием в Паскаль (repeat)

Пример: Ввести целое положительное число (n) и определить четное ли оно.

Проблема 1: Как избежать ввода отрицательного числа или нуля?
Решение 1: Если вводится неверное число, то нужно вернуться назад к вводу данных (цикл).

Проблема 2: Неизвестно, сколько шагов надо сделать.
Решение 2: Надо остановиться, когда n > 0, т.е. надо делать «до тех пор пока n не станет больше0».

  • Один раз тело цикла надо сделать в любом случае => проверку условия цикла надо делать в конце цикла (цикл с постусловием)!.
    • Цикл Repeat в Паскале используется для организации повторений (итераций) с заранее неизвестным их числом.
    • Цикл повторяется до тех пор, пока не станет истинным некоторое условие.
    repeat
      оператор1;
      оператор2;
      . . .;
      операторN
    until условие {до тех пор, пока условие не станет истинным}

    Блок-схема решения примера:

    Блок-схема решения примера
    Блок-схема решения примера

    Решение на Паскале:
    Цикл repeat пример на паскале

    • Операторы образуют тело цикла и будут выполняться до тех пор, пока значение "условие" не станет равно true, т.е. не станет истинным.
    • Условием может быть переменная или логическое выражение.
    • Проверка условия осуществляется уже после первого прохождения операторов тела структуры, т.е. после первой итерации, т.о. цикл с постусловием в Паскаль обязательно выполнится хотя бы один раз, независимо от истинности условия.

    Еще одно использование цикла Repeat рассмотрим на примере с решением.

    Пример: Печатать «ноль» указанное количество раз
    Показать решение:

    Pascal PascalABC.NET
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var i,n:integer;
    begin
    write ('количество раз');
    readln(n);
    i:=1;
    repeat
      write(0);
      i:=i+1
    until i>n
    end.
    1
    2
    3
    4
    5
    6
    7
    8
    
    begin
    var n:=readInteger('количество знаков');
    var i:=1;
    repeat
      write(0);
      i:=i+1
    until i>n
    end.

    В решенной задаче оператор 8-й строки — это счетчик (i:=i+1), который просчитывает количество раз и одновременно является условием для выхода из цикла.


    PascalABC.NET:

    Для того, чтобы реализовать цикл с конкретным числом итераций, не используя счетчик цикла, возможен упрощенный вариант с использованием цикла Loop:

    Пример:

    // Выводить 5 раз слово "Привет!"
    loop 5 do 
      begin
        println('Привет!');
      end;
    // ...

    Задача 1. Написать программу решения задачи о печати чисел 3 5 7 9 11 13. Решите задачу дважды в одном файле: используя цикл Repeat и цикл loop (если вы его рассмотрели).
      
    [Название файла: L3task1.pas]

    Узнать о работе оператора с постусловием в Паскале можно также из видеоурока:
    youTube

    Строковый тип данных в Паскаль

    Для решения следующей задачи нам пригодится работа со строковым типом данных.
    Рассмотрим как объявляются строки в Паскале:

    Объявление строковой переменной:

    var str:string;

    Присваивание значения строковой переменной:

    str:='вот такая вот строка';
    Пример использования строковых переменных в Паскале
    Pascal PascalABC.NET
    1
    2
    3
    4
    5
    6
    7
    
    var str1,str2: string;
    begin
         str1:='Привет, ';
         writeln('Ваше имя?');
         readln(str2);
         writeln(str1,str2)
    end.
    1
    2
    3
    4
    5
    6
    7
    
    begin
         var str1:='Привет,';
         var str2: string;
         writeln('Ваше имя?');
         readln(str2);
         print(str1,str2)
    end.

    Теперь снова возвращаемся к нашему циклу repeat.

    Задача 2. Компьютер предлагает человеку ввести слово, после чего распечатывает это слово, снабдив его восклицательным знаком. Затем снова предлагает ввести слово и так до тех пор, пока человек не введет слово «Хватит». Распечатав его с восклицательным знаком, компьютер отвечает: «Хватит так хватит» и заканчивает работу.
    Решите задачу дважды в одном файле: для решения использовать цикл с постусловием в Паскаль и цикл loop (если вы его рассмотрели).
      
    [Название файла: L3task2.pas]
    Дополнительно: Перед выводом каждого слова необходимо выводить его порядковый номер.
    Задача 3. Составьте блок-схему решенного задания.
      
    [Название файла: L3task3.pas]