Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab3(основы программирования).doc
Скачиваний:
31
Добавлен:
20.11.2019
Размер:
137.73 Кб
Скачать

Лабораторная работа №3

Программирование циклических процессов на языке С++

Цель: Изучение алгоритмов работы циклов и принципы их программирования на языке С++.

  1. Основные сведения

Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Основная цель циклов – сократить размер текста программы, когда в ходе вычислений требуется многократное выполнение некоторых инструкций, например обработка нескольких результатов опыта по одному и тому же алгоритму или перебор записей в базе данных для поиска по заданному условию. Циклический процесс можно реализовать без использования специализированных операторов, применяя условный оператор if и оператор безусловного перехода goto. Однако такой подход является неэффективным, поскольку использование оператора goto нарушает иерархическую структуру программы и затрудняет понимание написанного кода. В языке С++ для реализации циклических вычислительных процессов используются операторы while, do while и for.

Оператор цикла while называется циклом с предусловием и имеет следующий формат:

while (выражение) оператор

В качестве выражения допускается использовать любое выражение языка Си, а в качестве тела любой оператор, в том числе пустой или составной. Схема выполнения оператора while следующая (рис.1):

1. Вычисляется выражение.

2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.

3. Процесс повторяется с пункта 1.

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

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

int Sum=0, x; //в Sum будем накапливать сумму, в x хранить

//очередное введенное число

cin>>x; //вводим первое число

while (x!=0) //пока x не равно нулю, можно короче: while(x)

{

Sum+=x; //складываем очередное введенное число с суммой

cin>>x; //ввод следующего числа

}

cout<<Sum; //вывод посчитанной суммы

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

Оператор do while

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

do тело while (выражение);

Схема выполнения оператора do while (рис.2):

1. Выполняется тело цикла (которое может быть составным оператором).

2. Вычисляется выражение.

3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.

Рассмотрим вариант решения предыдущей задачи с суммированием вводимых с клавиатуры чисел с использованием цикла do while.

int Sum=0, x; //в Sum будем накапливать сумму, в x хранить

//очередное введенное число

do

{

cin>>x; //ввод числа

Sum+=x; //складываем очередное введенное число с суммой

}

while (x!=0) //пока x не равно нулю, можно короче: while(x)

cout<<Sum; //вывод посчитанной суммы

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

Операторы while и do while могут быть вложенными.

Пример:

int i,j,k;

...

i=0; j=0; k=0;

do { i++;

j--;

while (a[k] < i) k++;

}

while (i<30 && j<-30);

Оператор for представляет самые мощные средства организации цикла в языке Си++. Он имеет следующий формат:

for ( выражение 1 ; выражение 2 ; выражение 3 ) оператор

Выражение 1 предназначено для выполнения предвычислений, вычисляется однократно до начала цикла. Обычно используется для установления начальных значений переменных, управляющих циклом. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 – итерационное, вычисляется после выполнения каждого шага цикла. Обычно определяет изменение переменных, управляющих циклом.

Схема выполнения оператора for (рис.3):

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]