Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операторы цикла. Оператор множественного выбора Case

Оператор множественного выбора Case

Данный оператор позволяет выбирать одну из нескольких возможных альтернатив. Причем выбор определяется значением ключа, в качестве которого может использоваться выражение порядкового типа (обычно Integer или Char). Рассмотрим программу, осуществляющую перевод римской цифры в ее десятичный эквивалент.

Оператор Case работает следующим образом. Вначале вычисляется значение ключа R. Затем отыскивается такой оператор (простой или составной), которому предшествует константа, равная значению ключа выбора. Константа отделяется от выполняемого оператора двоеточием. После того, как выбранный оператор выполнится, Case завершает свою работу. Иногда используют Case с ключевым словом Else, после которого может стоять любой оператор. При отсутствии в списке выбора нужной константы осуществляется переход к оператору, следующему за Case, или управление передается оператору, стоящему за ключевым словом Else. Для каждой альтернативы предполагается один оператор (простой или составной). Ветвь Else допускает последовательность операторов, разделенных точкой с запятой. Любому оператору в списке выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми, например:

var I: integer; X: real;... case I of 2, 3: X:= X * X; 100: X:= Sin(X); end;

В этом фрагменте для I = 2 и I = 3 выполняется оператор X:= X * X.

For

Для кодирования базовых структур цикл "от до", цикл "пока" и цикл "до" в Турбо-Паскале используются соответственно три оператора цикла: For, While, Repeat.
Оператор For управляет повторением выполнения другого оператора с помощью переменной цикла. Например, ввод N элементов массива A:

for I:= 1 to N do read(A[I]);

В общем случае различают две синтаксические конструкции оператора For:

For ПеременнаяЦикла: = Нач.значение to Конеч.значение do < оператор >;

или

For ПеременнаяЦикла: = Конеч.значение downto Нач.значение do < оператор >;

Если в операторе For используется ключевое слово To, то переменная цикла в процессе выполнения цикла пробегает в порядке возрастания все следующие друг за другом значения от начального до конечного. Если используется ключевое слово Downto, то переменная цикла последовательно принимает все значения в порядке убывания от конечного до начального. Начальное и конечное значения переменной цикла задаются выражениями, которые вычисляются один раз перед выполнением цикла. В зависимости от соотношения значений выражений и типа цикла (To, Downto) цикл может не выполниться ни разу, выполниться один раз или выполниться несколько раз.
Оператор, следующий за ключевым словом To или Downto, является телом цикла и выполняется один раз для каждого значения переменной цикла в диапазоне от начального до конечного значения. Если оператор For управляет повторением группы операторов, то эти операторы заключаются в операторные скобки Begin End. Переменная цикла, начальное и конечное значения должны быть одного и того же скалярного типа (перечисляемого или интервального) и не должны меняться внутри цикла. Выполнение цикла начинается с присваивания переменной цикла начального значения и проверки условия: не превосходит ли она конечного значения (для To) или не является ли она меньше начального значения (для Downto). Если нет, то выполняется тело цикла, после чего переменная цикла принимает следующее значение и возобновляется проверка. В противном случае цикл завершается и управление передается следующему за For оператору. Последнее значение переменной цикла считается неопределенным, хотя экспериментальная проверка показывает, что она имеет конечное значение (для To) или начальное значение (для Downto).
Рассмотрим фрагмент программы, которая реализует один из алгоритмов сортировки элементов массива по возрастанию:

for I:= 1 to N - 1 do for J:= N downto I + 1 do if A[J] < A[J-1] then begin T:= A[J]; A[J]:= A[J-1]; A[J-1]:= T; end;

В этом примере элементы массива A сравниваются попарно, начиная с последнего, и если элемент A[J] оказывается меньше A[J-1], то они меняются местами. После завершения первого прохода можно гарантировать, что наименьший элемент будет находиться на месте первого элемента массива A[1]. Очевидно, что второй по значению элемент разместится в позиции A[2] и так далее (N - 1) раз. Количеством проходов управляет цикл for I:= 1 to N - 1 do, который называют внешним циклом.
Цикл for J:= N downto I + 1 do - является вложенным.

 

 

While

Оператор цикла While кодирует базовую структуру Цикл "пока" и управляет повторением операторов тела цикла с помощью логического выражения. Пока это выражение истинно, выполняется очередная итерация. Как только выражение становится ложным, выполнение цикла заканчивается, например:

while A[I] < 0 do I:= I + 1;

В общем случае оператор While имеет вид:

While < Условие > do < оператор >;

Проверка условия осуществляется в начале цикла (цикл с предусловием). Это означает, что операторы тела цикла могут не выполниться ни разу. Чтобы цикл While не был бесконечным, внутри цикла должны быть операторы, меняющие значение условия с истинного на ложное. После ключевого слова Do в теле цикла записывается один оператор - либо простой, либо составной.

 

Repeat

Оператор цикла Repeat кодирует базовую структуру Цикл "до" и оформляется следующим образом:

Repeat < оператор1 >; < оператор2 >;... < операторN>; until < условие >;

Он во многом аналогичен оператору While. Однако существует три различия:

- в операторе Repeat логическое условие, задаваемое выражением, проверяется в конце цикла, так что тело цикла выполнится по крайней мере один раз (цикл с постусловием);
- в Repeat условие выхода из цикла удовлетворяется, если выражение истинно, а в While - если ложно;
- между ключевыми словами Repeat и Until можно поместить несколько простых операторов, поэтому операторные скобки Begin End не используются.

Приведем пример с циклом Repeat для ввода целого нечетного числа, не превышающего 19. Ввод повторяется до тех пор, пока не будет введено правильное число:

repeat writeln('Введите нечетное число <= 19'); readln (N); until Odd (N) and (N <= 19);

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

<== предыдущая лекция | следующая лекция ==>
Условный оператор if | Оператор множественного выбора Case
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 295; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.063 сек.