Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie.docx
Скачиваний:
58
Добавлен:
31.03.2015
Размер:
500.74 Кб
Скачать

26. Организация циклов с помощью оператора do - while

В общем виде этот оператор можно записать следующим образом:

         do                  оператор;           while( выражение );

        Выполняется "оператор", а затем вычисляется "выражение2". Если оно истинно, то снова выполняется "оператор" и.т.д. Если "выражение" становится ложным, циклический процесс заканчивается. Это так называемый цикл с постусловием: условие завершения цикла проверяется не в его начале. как это имеет место в операторахwhile и for, а в конце, уже после прохода по телу цика. Как следствие, тело цикла обязательно выполняется по крацней мере один раз. Этот тип цикла встречается нечасто, но иногда бывает полезен. Составим , например, функцию length(s), которая вычисляет длину строки s с учетом завершающегося нуля. Известно, что число символов в строке не меньше единицы, если учитывать этот нулеврй символ. Поэтому естественно предположить, что мы бедм проходить по телу цикла по крайней мере один раз. Значит, можно использовать цикл do - while(пример 4.8).

      Пример 4.8

/*длина строки*/ length(s) char s[] { int i,l; i=l=0; do  i++; while(s[l++]!='\0'); return(i); } #include stdio.h main() { printf("%d\n",length("")); printf("%d\n",length("мама")); }

27. Оператор досрочного завершения цикла break

Как я уже сказал, оператор break используется для досрочного выхода из ближайшего вложенного внешнего оператора цикла while или for. Также оператор break используется для выхода из оператора switch (я расскажу о нем в следующих выпусках).

Пример использования этого оператора:

int i;

for ( i = 0; i<10; i++ )

{

...

if ( i == 5 ) break;

}

В нашем примере цикл исполнится не 10 раз, а только 6, т.к. в тот момент, когда переменная i будет равна 5, в операторе if-else условие i=5 станет истинным и будет выполнен оператор break, т.к. произойдет досрочный выход из цикла.

28. Оператор безусловного перехода goto

Оператор безусловного перехода goto имеет следующую форму:

goto метка

Он переносит выполнение программы к оператору, помеченному меткой метка.

Метка представляет собой идентификатор или целое без знака. Чтобы пометить оператор меткой, необходимо перед оператором указать метку с последующим двоеточием:

label1: оператор

Метки должны быть описаны в разделе меток с использованием служебного слова label:

label 1,2,3;

Например, в результате выполнения программы

label 1,2; begin   var i := 5; 2: if i<0 then goto 1;   write(i);   Dec(i);   goto 2; 1: end.

будет выведено 543210.

Метка должна помечать оператор в том же блоке, в котором описана. Метка не может помечать несколько операторов.

Переход на метку может осуществляться либо на оператор в том же блоке, либо на оператор в объемлющей конструкции. Так, запрещается извне цикла переходить на метку внутри цикла.

Использование оператора безусловного перехода в программе считается признаком плохого стиля программирования. Для основных вариантов использования goto в язык Паскаль введены специальные процедуры: break - переход на оператор, следующий за циклом, exit - переход за последний оператор процедуры, continue - переход за последний оператор в теле цикла.

Единственный пример уместного использования оператора goto в программе  - выход из нескольких вложенных циклов одновременно. Например, при поиске элемента k в двумерном массиве:

var a: array [1..10,1..10] of integer; ...   var found := False;   for var i:=1 to 10 do   for var j:=1 to 10 do     if a[i,j]=k then      begin       found := True;       goto c1;     end; c1: writeln(found);

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]