
- •10. Архитектура персонального компьютера.
- •11. Описание языка Turbo Pascal
- •Среда разработчика Turbo Pascal 7.
- •Запуск программы
- •Окно среды разработчика
- •Основные команды и горячие клавиши
- •Шестнадцатиричные и восмеричные константы
- •Строковые константы
- •Специальные символьные константы
- •18. Функция
- •Разветвляющийся вычислительный процесс
- •23. Вложенные циклы
- •26. Организация циклов с помощью оператора do - while
- •28. Оператор безусловного перехода goto
- •29. Операторы break и continue
- •32. Оператор выбора case
- •2.2 Блок-схема.
- •2.3 Структуры алгоритмов.
- •36. Ввод массива в Паскале
- •Вывод массива в Паскале
- •37. Простой и составной операторы
26. Организация циклов с помощью оператора do - while
В общем виде этот оператор можно записать следующим образом: do оператор; while( выражение ); Выполняется "оператор", а затем вычисляется "выражение2". Если оно истинно, то снова выполняется "оператор" и.т.д. Если "выражение" становится ложным, циклический процесс заканчивается. Это так называемый цикл с постусловием: условие завершения цикла проверяется не в его начале. как это имеет место в операторахwhile и for, а в конце, уже после прохода по телу цика. Как следствие, тело цикла обязательно выполняется по крацней мере один раз. Этот тип цикла встречается нечасто, но иногда бывает полезен. Составим , например, функцию length(s), которая вычисляет длину строки s с учетом завершающегося нуля. Известно, что число символов в строке не меньше единицы, если учитывать этот нулеврй символ. Поэтому естественно предположить, что мы бедм проходить по телу цикла по крайней мере один раз. Значит, можно использовать цикл do - while(пример 4.8). Пример 4.8
|
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);