Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
For (выражение_1; выражение_2; выражение_3 )
оператор; где выражение_1 – инициализация начального значения параметра цикла; выражение_2 – проверка условия на продолжение цикла; выражение_3 – изменение параметра цикла (коррекция параметра); оператор – простой или составной оператор языка С. Схема работы оператора следующая: только один раз вначале вычисляется выражение_1, затем проверяется выражение_2, и если оно - «истина», то выполняется циклический участок программы, затем производится коррекция параметра, и так до тех пор, пока выражение_2 не примет значение «ложь». Например: for (k=1; k<5; k++) printf(“\n %d”, k); В результате выполнения этого оператора печатаются в столбик цифры от 1 до 4. В качестве параметра цикла можно использовать переменную любого базового типа. Например: for(ch=’a’; ch<=’z’; ch++) /* вывод на экран БУКВ */ printf(“ %c”,ch); /* латинского алфавита */ Необходимо тщательно контролировать структуру циклов for в программе, чтобы не получился бесконечный цикл (из которого нет выхода). Например: for(k=10; k>6;k++) printf(“бесконечный цикл\n”); Выйти из цикла досрочно можно следующими способами: - по дополнительному условию; - используя операторы: × break; - завершения работы цикла, в котором находится break, управление передается на первый после цикла выполняемый оператор; × exit(int Kod);- происходит выход из программы; × return; - осуществляется выход из функции; - с помощью оператора безусловного перехода goto <метка>; Досрочное завершение текущего циклического шага возможно при помощи дополнительного условия или оператора continue, который прерывает выполнение текущего шага цикла, т.е. пропускает операторы оставшейся части цикла и передает управление в головной оператор цикла для коррекции параметра и проверки условия. Передавать управление извне вовнутрь цикла запрещается. Любое из выражений цикла for в круглых скобках может отсутствовать, но символ «;» опускать нельзя. Например: int i=0; for(; i<3; i++) puts(“Hello!”);
Циклы типа while и do–while Основная форма циклического оператора while: While (условие) оператор; где оператор – это простой, составной или пустой оператор. Цикл выполняется до тех пор, пока условие принимает значение «истина», т.е. выражение в скобках возвращает ненулевой результат. Это цикл с предусловием – сначала проверяется условие, затем выполняется оператор. Поэтому цикл while не выполнится ни разу, если изначально результат вычисления условия будет равен 0. Основная форма оператора do – while: do оператор; while (условие); где оператор – это простой, составной или пустой оператор. Оператор do–while – оператор цикла с постусловием, т.е. сначала выполняется оператор, а затем проверяется условие на истинность. Так как в цикле do–while условие проверяется в конце цикла, то цикл будет выполнен хотя бы один раз. В циклах типа while и do–while допустимы те же способы досрочного выхода из цикла и досрочное завершение текущего шага цикла, как и в операторе for, но в последнем случае в отличие от цикла for управление передается на проверку условия. Для предотвращения бесконечного цикла, внутри циклов while и do–while нужно предусмотреть изменение переменных, входящих в условие. Например: int i; for (i=1;i<=300;i++) /* печать целых чисел, кратных 5 */ { if (i%5!=0) continue; printf(“%5d”,i); }
Вложенные циклы В случае вложенных циклов один цикл находится внутри другого, например: for(i=nn;i<nk;i++) for(j=mn;j<mk;j++) оператор; где оператор – это простой, составной или пустой оператор. Внутренний цикл будет выполняться для каждого значения параметра i, удовлетворяющего условию внешнего цикла. Пример: int i,j; for(i=1;i<10;i++) /* печать таблицы умножения */ { /* целых чисел */ for(j=1;j<4;j++) printf(“\n %d*%d=%2d”, i, j, i*j); printf(“\n”); }
Пример 1: Вычислить . На печать программа должна выводить промежуточные и окончательный результаты. Текст программы может иметь вид: #include <stdio.h> #include <conio.h> void main(void) { float s; int k,N; clrscr( ); puts(“Введите N”); scanf(“%d”,&N); for (s=0, k=1; k<=N; k++) { s+=1.0/k; printf(" \n k=%d s=%f ", k, s); } printf("\n ОТВЕТ: s=%f, Press any key...",s); getch( ); }
Пример 2: Вывести таблицу значений функции при x изменяющемся от a до b с шагом h. Значения a, b, h вводятся с клавиатуры. Таблица должна содержать следующие столбцы: порядковый номер, значение x, значение у, сообщение о возрастании или убывании функции, разность двух соседних значений функции. Определить максимальное и минимальное значения функции. #include <conio.h> #include <stdio.h> #include <math.h> #define PI 3.14159265358 void main() { double x,y,a,b,h,dy,ypred,ymax,ymin; int i,inc; char *vs; clrscr(); puts("Введите значения a,b и h"); scanf("%lf %lf %lf",&a,&b,&h); /* ВЫВОД ШАПКИ ТАБЛИЦЫ */ printf("Номер| x | Y(x) |Возрастает/убывает|Разность \n"); printf("------------------------------------------------------\n"); x=a; /* ВЫЧИСЛЕНИЕ НАЧАЛЬНОГО ЗНАЧЕНИЯ ФУНКЦИИ */ ymax=ymin=ypred=y=exp(x*cos(PI/4))*cos(x*sin(PI/4)); printf("%5d|%9.4lf|%9.4lf| |\n",1,x,y); for(x=a+h,i=2; x<=b+h/2; x+=h,i++) { y=exp(x*cos(PI/4))*cos(x*sin(PI/4)); if (y>ymax) ymax=y; /* ПОИСК МАКСИМАЛЬНОГО ЗНАЧЕНИЯ */ if (y<ymin) ymin=y; /* ПОИСК МИНИМАЛЬНОГО ЗНАЧЕНИЯ */ dy=y-ypred; /* ВЫЧИСЛЕНИЕ РАЗНОСТИ МЕЖДУ СОСЕДНИМИ ЗНАЧЕНИЯМИ ФУКНЦИИ */ ypred=y; if (dy>0) vs="Возрастает"; else vs="Убывает"; printf("%5d|%9.4lf|%9.4lf|%18s|%9.4lf\n",i,x,y,vs,dy); } printf("\nymax=%lf ymin=%lf \nPress any key...",ymax,ymin); getch(); }
Варианты индивидуальных заданий Составить программу для определения таблицы значений функции у в произвольном диапазоне [a,b] изменения аргумента хс произвольным шагом h. Значения a, b, hвводятся с клавиатуры. Таблица должна содержать следующие столбцы: порядковый номер, значение аргумента x, значение функции, сообщение о возрастании или убывании функции, разность двух соседних значений функции. Определить максимальное и минимальное значения функции. 1. a=-1,5; b=1,5; h=0,2. 2. a=0,7; b=1,8; h=0,1. 3. a=-0,5; b=2,5; h=0,2. 4. a=-0,9; b=2,7; h=0,3. 5. a=-2; b=0,8; h=0,2. 6. a=-1,9; b=2,7; h=0,3. 7. a=-0,4π; b=0,4π; h=0,5. 8. a=-0,3π; b=1,3π; h= π/10. 9. a=-π/2; b= π/2; h=π/10. 10. a=-3; b=3; h=0,5. 11. a=-π; b=π; h= π/6 12. a=-π/2; b=π/2; h=π/10. 13. a=-0,9; b=2,7; h=0,3. 14. a=-0,1; b=2; h=0,1. 15. a=π; b=2π; h= π/15. 16. a=-π; b=π; h=0,4. 17. a=-0,9; b=1, h=0,3. 18.Дано действительное число а. Найти среди чисел 1, 1+1/2, 1+1/2+1/3+… первое, большее а. 19.Дана последовательность . Среди первых ста членов последовательности найти минимальный номер и значение того члена последовательности, который является целым числом. 20.Определить количество слагаемых в сумме вида S=2+4+6+… при условии, что S≤2m, где m – целое число, вводимое с клавиатуры. Даны действительные числа х и eps. Вычислить приближенно значение бесконечной суммы S. Приближение считается полученным, если найдена сумма нескольких сланаемых, и очередное слагаемое оказалось по модулю меньше eps. 21.S= 22.S= 23.S= 24.S= 25.S= 26.Ввести натуральное число m. Получить наибольшую цифру числа m, которая является нечетной, и номер ее позиции в числе m. 27.Ввести натуральное число m. Найти и вывести наименьшее значение суммы двух цифр этого числа. 28.Ввести натуральное число m. Определить сколько раз среди соседних разрядов числа встречается 2 одинаковые цифры. Например, в числе 1122234 встречается 3 соседние цифры. 29.Ввести натуральное число m. Выбросить из записи числа цифры 5 и 3, оставив прежний порядок цифр. 30.Определить количество трехзначных натуральных чисел, делящихся на каждую из своих цифр. 31.Ввести натуральные числа а и b. Определить, можно ли получить запись числа а путем вычеркивания одной или более цифр числа b.
Контрольные вопросы 1.Какой процесс называется “циклическим”? 2.Чем отличаются операторы while и do…while? 3.Поясните понятие “вложенный цикл”?
Лабораторная работа № 3
|
||
Последнее изменение этой страницы: 2018-05-10; просмотров: 213. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |