Операторы цикла с пред и пост условием. Различие. Пример использования.

Цикл с предусловием -цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором 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 века, является возможность произвольного конструирования нужных структур из небольшого набора предопределённых типов. Чем адекватнее программист смоделировал обрабатываемые данные в рамках такого "конструктора", тем безошибочнее и долговечнее будет разработанная программа.