Практикум - Алгоритмы, реализуемые с помощью циклов типа ПОКА (WHILE)
Написано: вторник, 22 марта 2016 г. автор Dmitry Volk
0
С помощью циклов типа пока можно запрограммировать любые повторяющиеся фрагменты алгоритмов. Но на практике цикл типа пока чаще всего используют в двух следующих случаях:
- Число повторений заранее не известно (например, цикл до достижения требуемой точности результата, цикл до первого отрицательного элемента массива и т.п.). Такой цикл называется циклом типа пока с прерыванием.
- Число повторений заранее известно, но шаг параметра цикла не равен 1 (в школьном АЯ) или 1, -1 (в Pascal). Такой цикл называется циклом типа пока без прерывания.
Цикл типа пока с прерыванием
i:=1; Flag:="Нет" нц пока (i<=N) и (Flag="Нет") если A[i]<0 то Flag:="Да"; k:=i иначе i:=i+1 все кц | Решается задача: определить номер первого отрицательного элемента массива A(N). Здесь Flag — "управляющая" переменная литерного типа (можно с успехом использовать также логический или целый типы) | |
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 - операция 'не' | |
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)
с нечетными индексами. Число таких элементов заранее известно. Шаг параметра цикла равендвум | |
i:=1; S:=0; While i<=N do begin S:=S+A[i]; i:=i+2 end; | ||
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 тело цикла LOOP | Пока выполняется условие продолжения цикла, повторять тело цикла. |
DO UNTIL <условие завершения> тело цикла LOOP | Повторять тело цикла до тех пор, пока не выполнится условие завершения цикла. |