Скачать презентацию Организация циклов в С Лекция 2 Сокольская М Скачать презентацию Организация циклов в С Лекция 2 Сокольская М

YaiMP_Lektsia_2_S_Tsikly.ppt

  • Количество слайдов: 25

Организация циклов в С Лекция 2 Сокольская М. А. Организация циклов в С Лекция 2 Сокольская М. А.

План 1. Цикл с предусловием 2. Цикл с постусловием 3. Цикл с параметром План 1. Цикл с предусловием 2. Цикл с постусловием 3. Цикл с параметром

Цикл с предусловием (while) Цикл while имеет следующий формат (синтаксис) записи: while (expression) program Цикл с предусловием (while) Цикл while имеет следующий формат (синтаксис) записи: while (expression) program statement; Производится расчёт выражения expression. Если в результате расчета выражения expression получается истинный результат (TRUE), то выполняется утверждение program statement. После выполнения этого утверждения вновь рассчитывается выражение expression.

Цикл с предусловием Цикл повторяется до тех пор, пока в результате расчета выражения expression Цикл с предусловием Цикл повторяется до тех пор, пока в результате расчета выражения expression не будет получено значение FALSE (ложный). Когда требуется выполнить группу утверждений, то она (группа) располагается в фигурных скобках: while (expression) { program_statement; program_statement 2; program_statement 3; . . . }

Пример 1. Программа вывода на экран целых положительных чисел с помощью оператора while. Начальное Пример 1. Программа вывода на экран целых положительных чисел с помощью оператора while. Начальное и последнее число задаётся пользователем с клавиатуры. #include #include int main(void) { int i, n, j = 0; //i – начальное число; //n – конечное число; // j – счётчик чисел.

 printf ( printf ("nt Enter the primary natural number: "); scanf ("%d", &i); printf ("t Enter the last natural number: "); scanf ("%d", &n); printf ("nt The numbers are: "); while (i <= n) { printf ("nt %3 d", i); ++i; ++j; } printf ("nt Total numbers: %dn", j); printf ("n Press any key: "); _getch (); return 0; }

Цикл с постусловием (do - while) Оператор цикла do–while имеет следующий формат записи do Цикл с постусловием (do - while) Оператор цикла do–while имеет следующий формат записи do program statement; while (loop_expression); Сначала выполняется утверждение program statement, затем производится проверка условия выполнения цикла loop_expression с помощью оператора while. Если результатом проверки будет значение TRUE (истина), то выполнение цикла продолжится, и утверждение program statement всякий раз будет выполняться вновь. Повторение цикла будет продолжаться до тех пор, пока в результате проверки условия выполнения цикла loop_expression будет получаться значение TRUE.

Цикл с постусловием В случае выполнения нескольких утверждений используются фигурные скобки для выделения тела Цикл с постусловием В случае выполнения нескольких утверждений используются фигурные скобки для выделения тела цикла: do { program_statement 1; program_statement 2; program_statement 3; . . . } while (loop_expression); Цикл do–while гарантированно выполнится хотя бы один раз

Пример 2 Вычислите с точностью до Пример 2 Вычислите с точностью до "машинного нуля" значение суммы числового ряда: #include #include int main(void) { double denom; //значение знаменателя double sum 1 = 0. 0, sum 2 = 0. 0; int k = 1;

 denom = k * (k + 1) * (k + 2); // знаменатель denom = k * (k + 1) * (k + 2); // знаменатель ряда do { sum 1 = sum 2; sum 2 += 1. 0 / denom; ++k; denom = k * (k + 1) * (k + 2); } while (sum 1 < sum 2); printf("nt The amount of numerical series: %lgn", sum 2); printf("n Press any key: "); _getch(); return 0; }

В приведенной программе сумма вычисляется как значение переменной sum 2. Ее предыдущее значение сохраняется В приведенной программе сумма вычисляется как значение переменной sum 2. Ее предыдущее значение сохраняется в переменной sum 1. Так как приближенное значение с добавлением неотрицательных слагаемых не уменьшается, условием продолжения цикла служит отношение sum 1 < sum 2. Когда при добавлении очередного слагаемого значение суммы остается неизменным (за счет конечной разрядной сетки для представления вещественных чисел), нарушается условие sum 1 < sum 2 и цикл прекращается. Таким образом, конечность разрядной сетки представления вещественных чисел в компьютере определяет собой "машинный нуль".

Цикл с параметром Оператор цикла for имеет следующий формат записи: for (init_expression; loop_condition; loop_expression) Цикл с параметром Оператор цикла for имеет следующий формат записи: for (init_expression; loop_condition; loop_expression) program statement; Три выражения, заключенные в круглые скобки оператора цикла for, задают условия выполнения программного цикла. Первый параметр init_expression используется для задания начального значения цикла. Второй компонент loop_condition определяет условие или условия, в соответствии с которыми будет происходить выход из цикла.

Цикл с параметром Третий параметр loop_expression выполняется каждый раз, когда заканчивается обработка тела цикла, Цикл с параметром Третий параметр loop_expression выполняется каждый раз, когда заканчивается обработка тела цикла, т. е. program statement. Чаще всего выражения init_expression и loop_expression являются операторами присваивания или вызовами функций, а второе выражение loop_condition – выражением отношения или логическим выражением. Любую из трех частей можно опустить, но точки с запятыми должны остаться на своих местах. Если опустить init_expression или loop_expression, то соответствующие операции не будут выполняться. Если же опустить проверку условия loop_condition, то по умолчанию считается, что условие продолжения цикла всегда истинно, и тогда цикл станет бесконечным.

Цикл с параметром Когда требуется выполнения нескольких утверждений, то они должны заключаться в фигурные Цикл с параметром Когда требуется выполнения нескольких утверждений, то они должны заключаться в фигурные скобки: for (init_expression; loop_condition; loop_expression) { program 1 statement 1; program 2 statement 2; program 3 statement 3; . . . }

Цикл с параметром Конструкция цикла, реализованная оператором for, может быть выполнена также и оператором Цикл с параметром Конструкция цикла, реализованная оператором for, может быть выполнена также и оператором while следующим образом: init_expression; while (loop_condition) { program statement; loop_expression; } Исключением является применение операции continue.

Пример 3 Программа табличного вывода строчных букв латинского алфавита и их десятичных кодов. #include Пример 3 Программа табличного вывода строчных букв латинского алфавита и их десятичных кодов. #include #include int main(void) { int j = 1; char a = 'a'; printf("n Table code characters: n");

 for ( ; a <= 'z'; ++a) printf( for ( ; a <= 'z'; ++a) printf("n %4 d %2 c: code %4 d", j++, a, a); printf("nn Press any key: "); _getch(); return 0; }

Пример 4 Программа по выводу Пример 4 Программа по выводу "горки" заглавных букв, симметрично убывающих к букве, введенной пользователем. #include #include int main (void) { int p = 0; char ch = 'A'; char i, j, k, ch 2, kk, ch. A; ch. A = ch;

 printf( printf("n Enter a capital letter between "A" and "S": "); scanf_s("%c", &ch 2, sizeof(char)); for(ch. A -= 1; ch. A >= ch 2; ch. A-- ) { printf("n Error! Press any key: "); _getch(); return -1; } for (kk = 'S'+1; kk <= ch 2; kk++) { printf("n Error! Press any key: "); _getch(); return -1; }

 k = ch 2; for ( kk = ch; kk <= k; kk++) k = ch 2; for ( kk = ch; kk <= k; kk++) { printf("n"); for (ch 2 = ch; ch 2 <= k-p ; ch 2++) printf(" "); for (j = ch; j <= kk ; j++) printf(" %c", j); for (i = kk; i > ch; i-- ) printf(" %c", i-1); p++; } printf("nn Press any key: "); _getch(); return 0; }

Варианты цикла for Цикл for весьма гибкий и эффективный способ организации повторений. Один из Варианты цикла for Цикл for весьма гибкий и эффективный способ организации повторений. Один из вариантов применения цикла – организация в одном цикле нескольких счётчиков, т. е. цикл работает по нескольким параметрам. Другой вариант – размещение операторов тела цикла в третьем разделе заголовка. В этих случаях используется запятая, чтобы разделить операторы внутри одного раздела.

Пример 5. Программа поиска корня уравнения f(x) = 0 на отрезке [a; b] с Пример 5. Программа поиска корня уравнения f(x) = 0 на отрезке [a; b] с заданной точностью методом деления отрезка пополам #include #include #include void main() { double a, b, e, x, c, fa, fc; int n; printf("Введите границы отрезка и точность: "); scanf("%lf%lf%lf", &a, &b, &e);

for (n = 0; fabs(a - b) > e; c = (a + b) for (n = 0; fabs(a - b) > e; c = (a + b) / 2, fa = f(a), fc = f(c), fa * fc < 0 ? b = c : a = c, n++); x = (a + b) / 2; printf("Корень уравнения = %lfn. Число итераций = %dn", x, n); _getch(); return 0; }

В цикле for разделы заголовка можно пропускать. for (x=0; x!=123; ) scanf (“%d”, &x); В цикле for разделы заголовка можно пропускать. for (x=0; x!=123; ) scanf (“%d”, &x); В примере ввод x продолжается до тех пор, пока не будет введено число 123. При необходимости при помощи for можно организовать бесконечный цикл: for ( ; ; ) printf (“Это бесконечный циклn”); В этом случае для выхода из цикла используется оператор break;

Разделы заголовка цикла for могут содержать любые допустимые в языке выражения, в том числе Разделы заголовка цикла for могут содержать любые допустимые в языке выражения, в том числе и не связанные с параметром цикла. Например: for (int i = 0; i < 6; cout << i++ << endl); В третьем разделе заголовка используется оператор вывода, тело цикла отсутствует.