Delphi-Help

Главная Статьи Циклы Цикл с предусловием (WHILE-DO)

Цикл с предусловием (WHILE-DO)

Оцените материал
(7 голосов)


Цикл с предусловием (WHILE-DO)

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

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

Блок-схема

while

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

Пример №1

  1. Постановка задачи:

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

  1. Блок-схема:

pr_w_1

  1. Кодирование
program while7;
var
      n,k,p:longint;
begin
write('Введите число 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.
  1. Тестирование

Дано: | 6

--------------------------------

Результат | 3

Пример №2

  1. Постановка задачи:

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

  1. Входные данные: a - искомая цифра, n - данное число, k, x - вспомогательные переменные (целочисленного типа); f - логическая переменная для проверки предположения.
  2. Выходные данные

Вывод на экран сообщения о присутствии цифры в числе.

  1. Описание алгоритма

Предположим, что цифра есть в числе. Тогда, используя цикл с предусловием, выполняющий последовательное целочисленное деление числа на 10 и выделяя остатки, мы проверяем условным оператором наличие цифры в числе. Если таковое найдется, мы немедленно выходим из цикла и выводим сообщение, что число найдено. Если цифра не будет обнаружена, то, по завершении цикла, выводится сообщение, что цифра в числе не обнаружена.

  1. Блок-схема

pr_w_2

  1. Кодирование
(*  Задача: Дано натуральное число: верно ли   *)
(*  утверждение, что в данном числе 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.
  1. Тестирование

Дано: | N = 1234567

| A = 9

--------------------------------

Результат | Цифры 9 в числе 1234567 нет

Пример №3

  1. Постановка задачи:

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

  1. Входные данные:

a,b - два натуральных числа, переменные целочисленного типа

  1. Выходные данные:

a - НОД.

  1. Описание алгоритма

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

  1. Блок-схема

pr_w_3

  1. Кодирование
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.
  1. Тестирование

Дано: | А = 56

| B = 32

--------------------------------

Результат | НОД = 8

Прочитано 32804 раз

Авторизация



Счетчики