Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика алгоритмизации и программирования.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
517.53 Кб
Скачать

Алгоритмы, реализуемые с помощью циклов типа пока

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

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

  • Число повторений заранее известно, но шаг параметра цикла не равен 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

Повторять тело цикла до тех пор, пока не выполнится условие завершения цикла.