Краткие теоретические сведения

ЛАБОРАТОРНАЯ РАБОТА № 2

Общие сведения

 

Цель данной лабораторной работы – научиться составлять, отлаживать на компьютере и тестировать программы, использующие ветвления и циклы. Для проверки правильности работы программы студент должен заранее подготовить и представить необходимые тесты. В программу должна быть включена проверка корректности вводимых данных.

 

Краткие теоретические сведения

Операторы повторения (цикла).Различают циклы с предусловием и циклы с постусловием. Тело цикла с постусловием непременно выполнится хотя бы один раз. В то же время тело цикла с предусловием может ни разу не выполняться, поскольку проверка условия продолжения цикла предшествует телу цикла.

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

 

· до начала циклического участка установить начальные значения параметров цикла;

· проверить условие продолжения работы цикла;

· реализовать тело цикла;

· изменить параметры цикла по некоторому закону.

 

Оператор цикла с предусловием (while).В языке С/С++ основной конструкцией, управляющей повторением, служит оператор цикла с предусловием while (пока). Он имеет следующий формат:

 

while (выражение)

оператор

(тело цикла);

 

Выражение обязательно должно быть заключено в круглые скобки. Оно понимается в широком смысле и в общем случае может быть как выражением логического типа (чаще всего), так и произвольным выражением . Тело цикла представляет простой или составной оператор.

Выполнение оператора начинается с вычисления выражения в скобках. Если оно изначально ложно, то тело оператора вообще не выполняется и управление сразу передаётся на следующий за телом цикла оператор программы. Если выражение истинно, то выполняется тело цикла. После каждого очередного выполнения тела цикла значение выражения вычисляется заново. Процесс повторяется до тех пор, пока выражение не станет ложным (равным нулю). (Ясно, что в теле цикла должны быть предписания, влияющие на значения этого выражения).

Оператор цикла while может также завершиться "досрочно", при выполнении операторов break, goto, return, встретившихся в теле цикла.

 

Оператор цикла с постусловием (do_while).Синтаксис оператора:

 

do

оператор

(тело цикла)

while( выражение );

 

Вначале выполняется тело цикла ( а это простой или составной оператор), затем вычисляется выражение, трактуемое как логическое. Если значение выражения ложно (равно нулю), то оператор do_while завершается и управление передаётся оператору, следующему за while. Если же значение выражения истино (не равно нулю), то тело цикла выполняется снова, а затем снова вычисляется выражение.

Выполнение тела цикла оператора do_while повторяется до тех пор, пока выражение не станет ложным (равным нулю).

Оператор do-while может также завершиться "досрочно", при достижении одного из операторов break, goto или return в теле цикла.

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

 

Оператор цикла for.Оператора for является, пожалуй, самой популярной конструкцией для организации циклов. В общем случае его можно представить так:

 

for (выражение_1; выражение_2; выражение_3)

оператор (тело цикла);

 

Традиционно выражение_1 выполняет начальную инициализацию параметров цикла; выражение_2 трактуется всегда как логическое и служит для проверки условия завершения цикла; выражение_3 обеспечивает модификацию параметров цикла.

Перед вхождением в цикл вычисляется выражение_1 (один–единственный раз за время работы цикла). Затем оценивается значение выражения_2. Если оно истинно (не ноль), то выполняется оператор (тело цикла), после чего сразу вычисляется выражение_3 и снова оценивается выражение_2. Многократное повторение тела цикла происходит до тех пор, пока выражение_2 не станет ложным (равным нулю); на этом цикл завершается и управление передаётся оператору программы, следующему за оператором цикла.

 

Формально оператор for эквивалентен такой последовательности операторов:

 

выражение_1;

while (выражение_2)

{

Оператор(тело цикла);

выражение_3;

}

 

Циклически повторяемый участок, таким образом, включает не только оператор (простой или составной), заданный после заголовка for, но и выражение_3, которое вычисляется всякий раз перед проверкой выражения_2.

 

Как выражение_3, так и выражение_1 могут быть любой (в том числе и пустой) последовательностью простых операторов, разделяемых оператором "запятая". Любое из трёх или все три выражения в операторе for могут отсутствовать, однако, разделяющие их точки с запятыми (;) опускать нельзя.

Если опущено выражение_2, то считается, что оно постоянно истинно. Допускается даже такой вырожденный случай: for( ; ; ) ; Он представляет собой бесконечный цикл, эквивалентный оператору while(1) ; .

 

Оператор break. Оператор break может встречаться в теле цикла любого из операторов while, do-while или for и в операторе switch. При достижении этого оператора управление немедленно передаётся на оператор, следующий за оператором, в теле которого оператор break встретился.