Алгоритмы, реализуемые с помощью циклов типа ПОКА (Введение)

С помощью циклов типа пока можно запрограммировать любые повторяющиеся фрагменты алгоритмов. Но на практике цикл типа пока чаще всего используют в двух следующих случаях:

  •  
    • Число повторений заранее не известно (например, цикл до достижения требуемой точности результата, цикл до первого отрицательного элемента массива и т.п.). Такой цикл называется циклом типа пока с прерыванием.
    • Число повторений заранее известно, но шаг параметра цикла не равен 1 (в школьном АЯ) или 1, -1 (в Pascal). Такой цикл называется циклом типа пока без прерывания.

Цикл типа пока с прерыванием

Язык Пример Пояснения
  Школьный АЯ i:=1; Flag:="Нет"
нц пока (i<=N) и (Flag="Нет")
    если A[i]<0
        то Flag:="Да"; k:=i
        иначе i:=i+1
    все
кц
Решается задача:  
определить номер первого отрицательного элемента массива A(N).
Здесь Flag - "управляющая" переменная литерного типа (можно с успехом использовать также логический или целый типы)
  Pascal i:=1; Flag:=FALSE;
While (i<=N) and not Flag do
  If A[i]<0 
    then begin
           Flag:=TRUE; k:=i
         end
    else i:=i+1;
Здесь Flag - переменная логического типа, принимающая значение ТRUE (истина) или FALSE (ложь),  
and
- операция 'и', not - операция 'не'
  QВasic i=1 : Flag=0
WHILE i<=N AND Flag=0
  IF A(i)<0 THEN
      Flag=1 : k=i
    ELSE i=i+1
  END IF
WEND
Здесь Flag - переменная целого типа (в некоторых версиях QBasic можно использовать и логический тип, что предпочтительнее)

Цикл типа пока без прерывания

Язык Пример Пояснения
  Школьный АЯ         i:=1; S:=0
        нц пока i<=N
          
S:=S+A[i]
           i:=i+2
        кц
 

Вычисляется сумма элементов массива A(N)  
с нечетными индексами
. Число таких элементов заранее известно. Шаг параметра цикла равен двум

  Pascal         i:=1; S:=0;
        While i<=N do
         
begin S:=S+A[i];
                i:=i+2
          end;
QВasic  Лучше использовать цикл FOR:         S=0
        FOR I=1 TO N STEP 2
          S=S+A(I) 
        NEXT I


Для организации циклов типа пока можно также использовать:

  •  
    • в языке Pascal оператор цикла с постусловием Repeat...until:
       
      Repeat 
       
      тело цикла 
      until
      <условие завершения>
      Повторять тело цикла до тех пор, пока не выполнится условие завершения цикла.

 в языке QBasic операторы цикла DO WHILE ... LOOP и  DO UNTIL ...  LOOP (англ. LOOP - виток, петля):

 
DO WHILE <условие продолжения> 
 
тело цикла 
LOOP
Пока выполняется условие продолжения цикла, повторять тело цикла.
DO UNTIL <условие завершения>  
 
тело цикла 
LOOP
Повторять тело цикла до тех пор, пока не выполнится условие завершения цикла.

Другие записи

10.06.2016. Пример 4.1. Определить, является ли заданная последовательность чисел a1 , a2 , ... , aN монотонно убывающей.
Система тестов Номер теста Проверяемый случай Данные Результат N Вектор А Otvet 1 Является 3 (3, 2, 1) 'Да' 2 Не является 3 (2, 3, 1) 'Нет' Школьный АЯ …
10.06.2016. Пример 4.2. Задано множество точек на плоскости. Oпределить, принадлежит ли хотя бы одна точка множества внутренней области круга с центром в точке (a, b) и радиусом R.
 Система тестов Номер теста Проверяемый случай Данные Результат a b R Кол. точек Координаты точек Otvet  1 Принадлежит 1 0 2 3 X=(-1, 2, 3)  Y=(2, 1, 2) "Да" 2 Не…
10.06.2016. Пример 4.3. Определить, имеется ли среди элементов главной диагонали заданной целочисленной матрицы A(N, N) хотя бы один положительный нечётный элемент.
  Система тестов Номер теста Проверяемый случай Данные Результат N Матрица А Текст 1 Имеется 3 "Есть такие" 2 Не имеется 2 "Нет таких" Демонстрация Школьный…