Операторы цикла с пред и пост условием. Различие. Пример использования.
Цикл с предусловием -цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while, отсюда его второе название — while-цикл. На языке Pascal цикл с предусловием имеет следующий вид:
while <условие> do
begin
<тело цикла>
end;
На языке Си:
while(<условие>)
{
<тело цикла>
}
Оператор цикла WHILE с предпроверкой условия
Общий вид:
WHILE условие DO тело цикла
где - WHILE, DO - зарезервированные слова (пока, выполнять)
условие - выражение логического типа
тело цикла - операторы яз. Паскаль
Выполнение оператора:
Если выражение “условие” имеет значение ИСТИНА, то выполняется “тело цикла”, следующее за словом DO. В качестве “оператора” может использоваться простой или сложный оператор.
Если выражение “условие” имеет значение ЛОЖЬ, то оператор WHILE прекращает свою работу, т.е. не выполняется ни одного раза.
Цикл с постусловием -цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until; в Си — do…while.
На языке Pascal цикл с постусловием имеет следующий вид::
repeat
<тело цикла>
until <условие выхода>
На языке Си:
do
{
<тело цикла>
}
while(<условие продолжения цикла>)
Оператор цикла REPEAT с постпроверкой условия
Общий вид:
REPEAT тело цикла UNTIL условие
где - REPEAT, UNTIL - зарезервированные слова (повторять, до)
“тело цикла” - последовательность операторов
“условие” - выражение логического типа
Выполнение оператора:
Операторы “тело цикла” выполняется хотя бы один раз, после чего проверяется выражение “условие”. Если его значение ЛОЖЬ, то операторы “тело цикла ” повторяются, в противном случае оператор REPEAT завершает свою работу.
В трактовке условия цикла с постусловием в разных языках есть различия. В Паскале и языках, произошедших от него, условие такого цикла трактуется как условие выхода (цикл завершается, когда условие истинно, в русской терминологии такие циклы называют ещё «цикл до»), а в Си и его потомках — как условие продолжения (цикл завершается, когда условие ложно, такие циклы иногда называют «цикл пока»).
Сложные типы данных.
- такой тип данных, в описании которого используется несколько простых (базовых) типов данных.
Сложные типы данных во первых позволяют создавать собственные типы данных со сложной иерархической структурой.
Студент – ФИО, адрес, дата рождения. Дата рождения – день, месяц, год
TYPE <имя>
<базовый тип>
- - - - - - - - -
END TYPE
TYPE BD
Day as integer
Month
Year
END TYPE
TYPE Stud
FIO as string
BD as BD
END TYPE
DIM student as stud
Student BDay/Day = 12
FIO = “ “
Сложный (составной) тип — тип данных, объекты (переменные или постоянные) которого имеют внутреннюю структуру, доступную программисту.
В разных языках программирования набор базовых сложных типов может несколько отличаться (чаще по названию и деталям реализации). Есть, однако, объективные критерии — однотипность элементов и способ доступа, позволяющие выделить главные представители сложных типов (названия приводятся на примере Pascal, в котором Н.Вирт наиболее чётко сформулировал эти идеи).
массив (array) — элементы только однотипные, доступ произвольный;
запись (record)— элементы возможно разных типов, доступ произвольный;
файл (file) — элементы однотипные, доступ последовательный (примечание: не путать с дисковым файлом!).
Разумеется, этот список не включает даже всех предопределённых в языках типов, но он отражает большинство моделируемых программистами структур данных.
Очень важной идеей, также родившейся на границе 60-70-х годов XX века, является возможность произвольного конструирования нужных структур из небольшого набора предопределённых типов. Чем адекватнее программист смоделировал обрабатываемые данные в рамках такого "конструктора", тем безошибочнее и долговечнее будет разработанная программа.