Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Archive / Метод_указ.doc
Скачиваний:
98
Добавлен:
30.03.2015
Размер:
700.42 Кб
Скачать

Лабораторная работа 3 програмирование циклических алгоритмов с заданым числом повторений

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

В языке С/С++ известно три вида оператора цикла:

1) итерационный цикл (оператор цикла со счетчиком) (for (инициализация; выражение_условие; список_выражений;) тело_цикла;

  1. цикл с предусловием (while (выражение_условие) тело_цикла;)

  2. цикл с постусловием (do тело_цикла while(выражение_условие;).

Тело_цикла – это либо отдельный оператор (в том числе и пустой), либо составной оператор, либо блок.

Оператор цикла со счетчиком (итерационный цикл):

for (<выражение инициализации>;<выражение проверки условия>;<выражение коррекции>) <тело цикла>;

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

Примеры записи оператора for():

  1. for (n=10;n<0;n--) // переменная n в цикле на каждом шаге уменьшается на 1 до тех пор пока не станет равной 0

  2. for (x=1; y<=75; y=5*x+++15) // выражение коррекции представляет собой сложное алгебраическое выражение, в котором одновременно х увеличивается с шагом 1, а у рассчитывается по формуле

  3. for (x=1,y=1.5;y<=5.5;x++,y+=x*0.3) // выражения инициализации и коррекции могут состоять более чем из одной операции

  4. for(; ;) // бесконечный цикл

При работе с операторами цикла самыми распространенными являются ошибки:

  1. организация «бесконечного» цикла, в случае если выражение проверки условия записано некорректно;

  2. «лишний шаг» возникает при работе с массивами, когда программа должна обратиться к несуществующему элементу. Компилятор не выдает сообщений об ошибках такого рода.

Оператор цикла с предусловием:

while ( <выражение условие> ) <оператор>;

Оператор может быть простым, составным или пустым оператором. Цикл выпол­няется до тех пор, пока условие принимает значение «истинно» (т.е. отлично от ну­ля). Когда же условие примет значение «ложно», программа передаст управление следующему оператору программы. Так же, как и в цикле for, в цикле while сначала проверяется условие, а затем выполняется оператор – это, так называемый, цикл с предусловием. Тип «условия» должен быть арифметическим или приводимым к нему.

Пример: while (i<100) p++;

Оператор цикла с постусловием

В отличие от предыдущих циклов в цикле do - while условие проверяется в конце оператора цикла.

do {<операторы>} while ( <условие выполнения> );

Пример: do {

n *= i;

i++;

}

while (i <= 100);

Пример 2. Вычислить сумму элементов s=1+1/2+1/3+…+1/n. Для любого целого значения n.

Данная задача является классическим примером использования операторов цикла. На рис. 3. показан алгоритм ее решения.

#include <stdio.h> // библиотека, содержащая описание

// операторов ввода/вывода

# include <conio.h> // библиотека, содержащая описание

// операторов для работы с экраном

void main() // заголовок главной функции программы

{int i, n; // описание целых переменных

float s=0, r; // описание вещественных переменных

clrscr(); // очистка экрана

printf (“Vvedite n”); // вывод информационного сообщения

scanf (“%d”,&n); // ввод с клавиатуры значения n

for(i=1;i<=n;i++) // итерационный цикл i от 0 до n

{r=1/(i*i); // вычисление текущего элемента ряда

s+=r; // расчет суммы ряда

}

printf (“Summa S=%3.1 f\n”); // вывод результата

getch(); // процедура задержки экрана, пока не

// нажата любая клавиша

}

Рис. 3.

Рис. 4.

Пример. Вычислить значение двух функций F1(x)=tg(x) и F2(x)=sin(x) в точка, равномерно распределенных на интервале , где ,

Алгоритм решения задачи показан на рис. 4.

#include <stdio.h> // библиотека, содержащая описание

// операторов ввода/вывода

# include <conio.h> // библиотека, содержащая описание

// операторов для работы с экраном

# include <math.h> // библиотека, содержащая описание

//математических операторов

void main() // заголовок главной функции программы

{const float a=M_PI_4, b=M_PI;

int i=1, n; // описание целых переменных

float f1, f2, x=a, dx; // описание вещественных переменных

clrscr(); // очистка экрана

printf (“Vvedite n”); // вывод информационного сообщения

scanf (“%d”,&n); // ввод с клавиатуры значения n

printf(“-------------------------------------------------”);

printf(“| i | X | F1 | F2 |”);

printf (“|--------|-----------|--------------|-------------|”)

dx=(b-a)/(n-1); // вычисление шага изменения аргумента х

while (x<=b) // оператор цикла с предусловием, пока х<=b

{f1=tan(x); // вычисление функции f1

f2=sin(x); // вычисление функции f2

x+=dx; // шаг изменения х

i++; // номер точки

printf (“%3d %3.2f %3.2f %3.2f\n”, i,x,f1,f2); // вывод результата

}

printf (“________________________________”); // вывод результата

getch(); // процедура задержки экрана, пока не

// нажата любая клавиша

}