Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Тема 5. Алгоритмическая структура - циклы






Оператор цикла while предназначен для реализации циклических алгоритмов и имеет следующую форму записи

Пример:

while(a < 18) a = a+2;

При выполнении оператора цикла while вначале вычисляется выражение. Если оно не равно 0, то выполняется оператор. Далее снова вычисляется выражение и если оно не равно 0, то снова выполняется оператор. Такие циклические действия продолжаются до тех пор, пока выражение отлично от 0. Отсюда и название цикла while (пока). Как только выражение станет равным 0 цикл прекращает выполнятся и управление передается на следующий за циклом оператор.

Циклически выполняемый оператор обычно называют телом цикла. Если в теле цикла необходимо разместить не один, а несколько операторов, то в этом случае используют составной оператор.

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

Рассмотрим пример программы, которая выводит на экран таблицу функций sin(x) и cos(x):

#include < math.h>

#include < stdio.h>

void main(void)

{

double x = 0;

while(x < 3.0)

{

printf(" %6.3lf %9.6lf %9.6lf\n", x, sin(x), cos(x));

x += 0.2;

}

}

Если после while(x < 3.0) ошибочно поставить точку с запятой, то никаких сообщений об ошибках выдано не будет, но цикл станет бесконечным. Действительно, в этом случае тело цикла будет пустым оператором "; ", переменная x не будет меняться, следовательно, результат выражения x < 3.0 всегда будет отличен от нуля.

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

 

Цикл FOR

Оператор цикла for имеет следующую структуру команды:

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

или в более общем виде:

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

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

Цикл выполняется, если условие (условное выражение) истинно. Как только условие принимет значение " ложь" реализуется выход из цикла и начинает выполняться оператор, следующий за оператором цикла.

Например, простейший оператор цикла имеет вид:

for(i=0; i< 10; i++) printf(" %d\n", i);

При выполнении этого оператора будут распечатаны в столбик цифры: от 0 до 9. Чтобы напечатать цифры в обратном порядке, нужно использовать другой оператор:

for(i=9; i> =0; i--) printf(" %d\n", i);

Отметим, что рассмотренный нами оператор цикла FOR очень похож на аналогичный оператор в других языках программирования. Но в языке Си этот оператор очень гибкий и применим во многих ситуациях. Ниже показан пример программы на языке Си, которая выводит на экран монитора буквы латинского алфавита от " A" до " Z".

 

#include < stdio.h>

#include < windows.h>

#include < conio.h>

main()

{

char str[50];

unsigned char ch;

textbackground(4);

textcolor(15);

clrscr();

for(ch='A'; ch< ='Z'; ch++) printf(" %c", ch);

CharToOem(" \nДля выхода нажмите любую клавишу", str);

printf(str);

getch();

}

 

Следующая программа устанавливает факт наличия отрицательных значений sin(x) для x меняющегося от xn до xk c шагом h:

#include < math.h>

#include < stdio.h>

/* использование флагов */

void main(void)

{

double xn, xk, h, x;

int minus; /* флаг */

printf(" Введите xn, xk, h \n");

scanf(" %lf%lf%lf", & xn, & xk, & h);

x = xn;

minus = 0; /* предполагается, что нет не одного

отрицательного значения */

while(x < = xk)

{

if(sin(x) < 0) minus = 1;

x += h;

}

if(minus) printf(" Имеются отрицательные значения\n");

else printf(" Все синусы положительные\n");

}

В данной программе флаг устанавливается в 1, как только появляется отрицательный синус.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.