Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программировапние циклических вычислительных процессовСодержание книги
Поиск на нашем сайте
Цель работы: Изучить циклические операторы for, while, do – while, научиться составлять и программировать циклические алгоритмы.
Краткие теоретические сведения Операторы циклов применяют, когда надо повторить некоторые действия (операторы и операции) несколько раз, и такие участки алгоритмов называют циклы.
Оператор цикла for Основная форма оператора цикла for имеет вид: 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
|
||||
Последнее изменение этой страницы: 2016-04-23; просмотров: 390; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.193.193 (0.011 с.) |