русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Понятие о массиве


Дата добавления: 2013-12-23; просмотров: 947; Нарушение авторских прав


Входить внутрь оператора варианта по какому-либо оператору перехода GOTO, находящемуся вне оператора варианта, нельзя. Выполнение оператора варианта сводится к выполнению только одного из входящих в его состав операторов, поэтому переходить с одного из них на другой с помощью оператора перехода GOTO запрещается.

.............

...........

REPEAT

.............

End;

Begin

K1:=1;

UNTIL условие;

Оператор1, оператор2, ... , операторN

REPEAT

Оператор цикла с постусловием

Оператор цикла с предусловием

Если число повторений, выполняемых в цикле, заранее не известно или шаг приращения счетчика (параметра) цикла отличен от единицы, то необходимо использовать оператор цикла с предусловием. Оператор цикла этого вида имеет вид:

WHILE условие DO оператор ;

где условие - это логическое выражение, от значения которого зависит- продолжать повторы или завершить цикл;

оператор - любой простой или составной оператор.

Выполнение оператора начинается с вычисления значения логического выражения. Если оно имеет значение "True" (истина), то выполняется оператор (операторы), входящий в цикл. Выполнение цикла продолжается до тех пор, пока логическое выражение в его заголовке не примет значение "False" (ложно). Если выражение равно "False" при первом же витке цикла, то работа цикла завершится, а входящие в него операторы не выполнятся ни разу. Поскольку в цикле типа WHILE...DO условие завершения его работы проверяется до выполнения входящего в него оператора, такой цикл называется "оператор цикла с предусловием".



Пример использования оператора цикла с предусловием:

Program Primer; Var K:integer; Begin K:=0; WHILE K<=10 DO begin K:=K+2; Write('K= ',K:3) end; Readln End.

Цикл этой разновидности применяется в случаях, когда число повторений оператора, входящего в тело цикла, заранее не известно. Такой цикл похож на цикл с предусловием, но в данном случае условие завершения повторов проверяется после выполнения операторов, составляющих тело цикла. Общий вид оператора цикла с постусловием таков:

где оператор1, оператор2, ... , операторN - операторы тела цикла;

условие - логическое выражение, диктующее завершение повторов.

Оператор цикла с постусловием начинается с выполнения операторов внутри цикла. Затем проверяется истинность логического условия, стоящего после слова UNTIL. Если это условие справедливо (True), то осуществляется выход из цикла. Если же значение логического выражения ложно (False), то выполнение операторов тела цикла повторяется, после чего снова проверяется истинность логического условия.

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

Program Primer; Var K:Integer; Begin K:=0; REPEAT K:=K+2; Write('K= ',K:3) UNTIL K>10; Readln End.

4.2.7.5. Правила использования операторов цикла

При использовании операторов цикла следует учитывать следующие особенности:

1. Операторы, входящие в цикл Repeat...Until, всегда выполняются хотя бы один раз, поскольку истинность логического выражения в цикле этого типа проверяется после операторов, входящих в тело цикла. При использовании цикла типа WHILE...DO могут быть ситуации, когда операторы, входящие в цикл, не будут выполнены ни разу, если логическое выражение изначально имеет значение "FALSE".

2. Цикл Repeat...Until выполняется, пока логическое выражение имеет значение "FALSE". Цикл While...Do выполняется, пока логическое выражение имеет значение "TRUE". Этот нюанс следует учитывать при замене цикла одного типа другим.

Program Whl; Var i:integer; Begin i:=1; WHILE i<=10 DO begin Writeln('Привет'); i:=i+1 end; Readln End. Program Rep; Var i:integer; Begin i:=1; REPEAT Writeln('Привет'); i:=i+1 UNTIL i>10; Readln End.

3. Если тело цикла "WHILE...DO" состоит из нескольких операторов, их следует обрамлять операторными скобками "begin...end", образующими составной оператор. В цикле типа "REPEAT...UNTIL" операторные скобки не нужны.

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

k1:=1; WHILE k1<5 DO Writeln('Бесконечный цикл');

Если в программе встретится такой фрагмент, то экран заполнится строками с фразой "Бесконечный цикл", выдача которой в режиме прокрутки (Scrolling) будет длиться до тех пор, пока программистом не будут приняты действия по принудительному завершению работы программы. Вывести программу из бесконечного цикла можно, дважды нажав сочетание клавиш “Ctrl” и “Break”, после чего надо нажать клавишу “ESC”.

Зацикливания не произойдет, если операторы, входящие в тело цикла, будут влиять на условие, определяющее завершение цикла:

WHILE k1<5 DO

Writeln('Цикл');

k1:=k1+1

В этом фрагменте цикл выполнится ровно 4 раза и компьютер перейдет к следующим командам.

5. При использовании операторов цикла с предусловием и постусловием необходимо быть осторожным в тех случаях, когда в логическом выражении (условии окончания цикла) фигурируют вещественные переменные. Следует помнить, что в компьютере значения выражений вещественного типа вычисляются приближенно, т.е. с небольшой погрешностью. Например, вещественное число 1.0 в компьютере может быть представлено как 0.99999999 или как 1.00000001 . Поэтому фрагмент

UNTIL X=B;

где X, B : Real, будет неправильным, хотя с математической точки зрения он верен. Условие "X=B" скорее всего никогда не выполнится, в результате произойдет "зацикливание" программы. Не следует управлять циклом с помощью логического выражения, в котором вещественные переменные проверяются на строгое равенство.

 

 

4.2.8. Оператор варианта "CASE"

Характерной чертой некоторых алгоритмов является широкая разветвленность задаваемого ими вычислительного процесса. Использование в таких случаях условного оператора IF...THEN может оказаться громоздким и недостаточно наглядным, поэтому лучше применять оператор варианта. Общий вид оператора варианта таков:

CASE селектор OF
метка1: оператор1;
метка2: оператор2;
................
меткаN: операторN
ELSE альтернативный оператор
END;

Оператор CASE состоит из селектора (переменной целого, символьного или логического типа) и списка операторов, каждому из которых предшествует метка варианта, представляющая собой значение того же типа, что и селектор. При работе оператора CASE будет выполнен тот входящий в него оператор, чья метка равна текущему значению селектора. Если ни одна из меток не содержит значения селектора, то не выполняется ни один оператор. Следует оговориться, что Турбо-Паскаль, в отличие от стандартного Паскаля, допускает использование в операторе CASE ключевого слова ELSE. В случае отсутствия меток, равных значению селектора, выполняется оператор, стоящий за словом ELSE (альтернативный оператор). Подчеркнем, что "метку варианта" не следует путать с "меткой оператора", используемой в операторе перехода GOTO. Метки варианта не описываются в блоке LABEL раздела описаний программы и не используются в операторе перехода GOTO.

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

.......... ........... Label Final;
Var Var Var Operator:Char;
i,m:integer; Symbol:Char; Rez:integer;k:integer;
Begin Begin Begin
CASE i OF CASE Symbol OF CASE Operator OF
0: m:= 0; '=': k:=1; '+': Rez:=Rez+1;
1: m:= -1; '!': k:=2; '-': Rez:=Rez-1;
2: m:= 1 '.': k:=3 ELSE GOTO Final
End; End; End;
............ .............. ...............
............ .............. Final: ...............
End. End. End.

В операторе варианта предусмотрен случай, когда некоторый оператор должен выполняться при любом из нескольких возможных значений селектора. В этом случае оператору предшествует не одна метка, а список меток этого варианта:

...................
Var i,m:integer;
Begin
...................
CASE i OF
0: m:=0;
1,2,3: m:=4;
4: m:=-1
End;
...................
End.

Войти в оператор варианта можно только через его начало: CASE селектор OF;

4.2.9. Массивы

4.2.9.1. Одномерные массивы



<== предыдущая лекция | следующая лекция ==>
Оператор цикла с параметром | К имени массива предъявляются те же требования, что и к имени переменной.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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