Цикл с пердусловием реализуется в языке программирования Pascal с помощью оператора WHILE … DO.
Синтаксис:

while условие выполнения цикла do
begin
{Операторы}
end;

  • Оператор while состоит из заголовка и тела цикла. Операторы, находящиеся в теле цикла, обязательно заключаются в операторные скобки begin и end.
  • “Условие выполнения цикла” – это выражение логического типа (булевское выражение) выражение отношения или логическое выражение, принимающее одно из двух значений: true или false.
  • Если проверяемое условие ложно изначально, то операторы входящие в тело цикла не выполняются, проход по телу цикла не осуществляется и выполняются инструкции, находящиеся после операторной скобки end.
  • Служебные слова while и do означают “пока” и “делай”.

Блок-схема

Оператор цикла с предусловием общий вид

Пример задачи на использование цикла с предусловием

Пример №1
Постановка задачи:

    Дано целое число N (> 0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K2 > N. Функцию извлечения квадратного корня не использовать.

  1. Блок-схема:
  2. Оператор цикла с предусловием общий вид

  3. Кодирование
  4. program while7;
    var
    n,k,p:longint;
    begin
    rite(‘Введите число N > 0, N = ‘); readln(n);
    k:=0;
    while p < n do
    begin
    p := k * k;
    k := k + 1;
    end;
    writeln(‘Наименьшее целое положительное число K, квадрат которого превосходит ‘,
    n, ‘ равен K = ‘,k)
    end.

  5. Тестирование
  6. Дано: | 6
    ——————————–
    Результат | 3

Пример №2
Постановка задачи:

    Дано натуральное число: верно ли утверждение, что в данном числе N нет такой цифры A (цифра A вводится с клавиатуры).

  1. Входные данные: a – искомая цифра, n – данное число, k, x – вспомогательные переменные (целочисленного типа); f – логическая переменная для проверки предположения.
  2. Выходные данные: вывод на экран сообщения о присутствии цифры в числе.
  3. Описание алгоритма
  4. Предположим, что цифра есть в числе. Тогда, используя цикл с предусловием, выполняющий последовательное целочисленное деление числа на 10 и выделяя остатки, мы проверяем условным оператором наличие цифры в числе. Если таковое найдется, мы немедленно выходим из цикла и выводим сообщение, что число найдено. Если цифра не будет обнаружена, то, по завершении цикла, выводится сообщение, что цифра в числе не обнаружена.

  5. Блок-схема
  6. Оператор цикла с предусловием общий вид

  7. Кодирование

(* Задача: Дано натуральное число: верно ли *)
(* утверждение, что в данном числе N нет *)
(* данной цифры A (цифра A вводится с *)
(* клавиатуры). *)
(* Выполнил ученик 10 класса Иванов Иван *)
(* 15.02.10 г. *)
program chislo;
var
a:byte;
n,k,x:longint;
b:boolean;
begin
write(‘Введите число N = ‘); readln(n);
write(‘Введите цифру A = ‘); readln(a);
f := true; {Предположим, что цифра A есть в числе N}
x := n; {Сохраним значение N}
while x > 0 do
begin
k := x mod 10;
if k = a then
begin
f := false;
break {если цифра обнаружена – нет необходимости просматривать
число полностью, выходим из цикла}
end;
x := x div 10
end;
if f then
writeln(‘Цифры ‘, а, ‘ в числе ‘, n, ‘ нет’)
else
writeln(‘Такая цифра есть в числе!’)
end.

Тестирование

Дано: | N = 1234567
| A = 9
——————————–
Результат | Цифры 9 в числе 1234567 нет

Пример №3
Постановка задачи:

    Найти наибольший общий делитель (НОД) двух натуральных чисел A и B

  1. Входные данные: a,b – два натуральных числа, переменные целочисленного типа
  2. Выходные данные: a – НОД.
  3. Описание алгоритма:
  4. Для решения поставленной задачи воспользуемся алгоритмом Евклида. Если M > N, то НОД(М,N)=НОД(M-N,N). Будем уменьшать каждый раз большее из чисел на величину меньшего до тех пор, пока оба значения не станут равными.

  5. Блок-схема
  6. Оператор цикла с предусловием общий вид

  7. Кодирование
  8. program evklid;
    var
    a,b:integer;
    begin
    write’Введите число A = ‘); readln(a);
    write(‘Введите число B = ‘); readln(b);
    while a<>b do
    begin
    if a>b then
    a:=a-b
    else
    b:=b-a
    end;
    write(‘НОД = ‘,a)
    end.

  9. Тестирование
  10. Дано: | А = 56
    | B = 32
    ——————————–
    Результат | НОД = 8

Домашнее задание

  1. (While1) Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.
  2. (While3) Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.
  3. Дополнительное задание: (While11) Поменять порядок цифр на обратный. Например, было 1234567, стало 7654321
  4. Дополнительное задание: Дано целое число N (> 1). Вывести наименьшее из целых чисел K, для которых сумма 1 + 2 + … + K будет больше или равна N, и саму эту сумму.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.