Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
###Cpp_лкц1_1.09_11_#дляБАК#29_01_12.doc
Скачиваний:
40
Добавлен:
29.04.2019
Размер:
6.42 Mб
Скачать

Часть I. Структурное программирование

разу. Тип выражения должен быть арифметическим или приводимым к нему. Выражение вычисляется перед каждой итерацией цикла.

Пример (программа печатает таблицу значений функции у*=х2+1 во введенном диапазоне):

#include <stdio.h> int main(){

float Xn. Xk. Dx;

printf("Введите диапазон и шаг изменения аргумента: "); scanf("тШ", &Xn, &Xk, &Dx):

printf("I X I Y |\n"); // шапка таблицы

float X = Xn: // установка параметра цикла

while (X <= Xk){ // проверка условия продолжения

printf("I X5.2f | X5.2f |\n". X, X*X +1): // тело цикла X += Dx: // модификация параметра

} return 0:

}

Пример (программа находит все делители целого положительного числа):

#include <iostream.h> int main(){ int num;

cout « "ХпВведите число : ": cin » num: int half = num / 2: // половина числа

int div = 2: // кандидат на делитель

while (div <= half){

if (Knurn % div))cout « div «"Xn": div++:

} return 0:

} Распространенный прием программирования — организация бесконечного цикла с заголовком while (true) либо while (1) и принудительным выходом из тела цикла по выполнению какого-либо условия.

В круглых скобках после ключевого слова while можно вводить описание переменной1. Областью ее действия является цикл:

while (int x = 0){ ... /* область действия х */ }

Цикл с постусловием (do while)

Цикл с постусловием реализует структурную схему, приведенную на рис. 1.8, б, и имеет вид:

do оператор while выражение:

1 В старых версиях компиляторов это требование стандарта может не поддерживаться.

Глава 1. Базовые средства языка C++

47

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

Пример (программа осуществляет проверку ввода):

#include <iostream.h> int main(){

char answer;

do{

cout « "ХпКупи слоника! "; cin » answer;

}while (answer != 'y');

return 0;

}

Пример. Программа вычисляет квадратный корень вещественного аргумента X с заданной точностью Eps по итерационной формуле:

Уп = т (yn-1 + X/yn-l),

где уп_! — предыдущее приближение к корню (в начале вычислений выбирается произвольно), уп — последующее приближение. Процесс вычислений прекращается, когда приближения станут отличаться друг от друга по абсолютной величине менее, чем на величину заданной точности. Для вычисления абсолютной величины используется стандартная функция fabsO, объявление которой находится в заголовочном файле <math.h>.

#include <stdio.h> #include <math.h> int main(){

double X, Eps; // аргумент и точность

double Yp, Y = 1; // предыдущее и последующее приближение

printf("Введите аргумент и точность: ");

scanf("*mif\ &X. &Eps);

do{

Yp = Y;

Y = (Yp + X/Yp)/2;

}while (fabs(Y - Yp) >= Eps);

printfCXnKopeHb из *lf равен XIГ. X. Y);

return 0; }

Цикл с параметром (for)

Цикл с параметром имеет следующий формат:

for (инициализация; выражение; модификации) оператор;

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой (операцией «последовательное выполнение»), например, так:

48