Программы циклической структуры
1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков в составлении алгоритмов и программ циклической структуры.
ОСНОВНЫЕ СВЕДЕНИЯ
Операторы циклов
В языке Си существует 3 вида циклов: 1) цикл с параметром или цикл типа for; 2) цикл с предусловием или цикл типа while, 3) цикл с постусловием или цикл типа do ... while. Во всех этих циклах условие продолжения цикла заключается в круглые скобки. В циклах типов for и while повторяющаяся часть состоит из одного оператора, если требуется выполнить в цикле несколько операторов, они заключаются в фигурные скобки, образуя составной оператор. В цикле с постусловием тело цикла помещается между словами do и while. В отличие от цикла с предусловием, цикл с постусловием выполнится хотя бы один раз. Циклы с пред- и постусловием продолжаются, если условие продолжения истинно.
Цикл с параметром
Цикл for используется тогда, когда количество повторений цикла заранее известно или может быть вычислено. Цикл for состоит из заголовка и тела цикла. В заголовке после слова for в круглых скобках записываются через точку с запятой три выражения:
А) начальные значения: операторы присваивания, которые выполняются один раз перед выполнением цикла;
В) условие, при котором выполняется следующий шаг цикла; если условие неверно, работа цикла заканчивается; если оно неверно в самом начале, цикл не выполняется ни одного раза (говорят, что это цикл с предусловием, то есть условие проверяется перед выполнением цикла);
|
|
С)действия в конце каждого шага цикла (в большинстве случаев это операторы присваивания).
В каждой части заголовка может быть несколько операторов, разделенных запятыми.
Примеры заголовков:
for ( i = 0; i < 10; i ++ ) { ... }
for ( i = 0, x = 1.; i < 10; i += 2, x *= 0.1 ){ ... }
• Тело цикла заключается в фигурные скобки; если в теле цикла стоит всего один оператор, скобки можно не ставить.
• В тело цикла могут входить любые другие операторы, в том числе и другие циклы (такой прием называется «вложенные циклы»).
• Для того, чтобы легче разобраться в программе, все тело цикла и ограничивающие его скобки сдвигаются вправо на 2-3 символа (запись «лесенкой»).
Пример вычисления суммы квадратов натурального ряда чисел от 1 до n.
S= = 12 + 2 2 + . . . + n 2.
//lab3_1 сумма квадратов натурального ряда
#include <stdio.h>
main()
{ int S,n,i;
printf(“Введите n ”); scanf(“%d”,&n);
for (S=0, i=1; i<=n; i++)
S+=i*i; // соответствует S=S+i*i
printf (“n=%d S=%d”,n,S);
}
В разделе инициализации присваиваются начальные значения переменным S и i. При i, не превышающем n, цикл повторяется, иначе выполняется выход из цикла. Оператор инкремента i++ (или декремента i--), эквивалентен i=i +1 (i=i-1). Для досрочного выхода из цикла и перехода на следующий оператор после цикла используется оператор break. Для пропуска всех операторов, оставшихся до конца тела цикла и перехода к следующему повторению цикла используется оператор continue.
|
|
Циклы с неизвестным количеством повторений
Циклы while или repeat используются тогда, когда количество повторений цикла заранее неизвестно и не может быть вычислено.
Цикл while состоит из заголовка и тела цикла.
В заголовке после слова while в круглых скобках записывается условие, при котором цикл продолжает выполняться. Когда это условие нарушается (становится ложно), цикл заканчивается.
В условии можно использовать знаки логических отношений и операций
> < больше, меньше
>= <= больше или равно, меньше или равно
== равно
!= не равно
Если условие неверно в самом начале, то цикл не выполняется ни разу (это цикл с предусловием). Если условие никогда не становится ложным (неверным), то цикл никогда не заканчивается; в таком случае говорят, что программа «зациклилась» — это серьезная логическая ошибка. В языке Си любое число, не равное нулю, обозначает истинное условие, а ноль - ложное
Условие
while ( 1 ){ ... } // бесконечный цикл
|
|
while ( 0 ){ ... } // цикл не выполнится ни разу
Тело цикла заключается в фигурные скобки; если в теле цикла стоит всего один оператор, скобки можно не ставить. В тело цикла могут входить любые другие операторы, в том числе и другие циклы (такой прием называется «вложенные циклы»). Для того, чтобы легче разобраться в программе, все тело цикла и ограничивающие его скобки сдвигаются вправо на 2-3 символа.
Цикл do-while также используется тогда, когда количество повторений цикла заранее неизвестно и не может быть вычислено.
Цикл do-while состоит из заголовка do, тела цикла и завершающего условия.
Условие записывается в круглых скобках после слова while, цикл продолжает выполняться, пока условие верно; когда условие становится ложным, цикл заканчивается. Условие проверяется только в конце очередного шага цикла (это цикл с постусловием),
таким образом, цикл всегда выполняется хотя бы один раз. Если условие никогда не становится ложным (неверным), то цикл никогда не заканчивается, т.е. программа зацикливается. Тело цикла также заключается в фигурные скобки; если в теле цикла стоит всего один оператор,
скобки можно не ставить. В тело цикла могут входить любые другие операторы, в том числе и другие циклы.
|
|
Рассмотрим пример из предыдущей работы - вычисление суммы квадратов натурального ряда чисел от 1 до n.
S= = 12 + 2 2 + . . . + n 2.
Изменим условие в этом примере: Определить число n, при котором сумма чисел S предыдущего ряда не превысит величину K, введенную с клавиатуры. Такую программу можно реализовать с помощью циклов предусловия или постусловия следующим образом:
//lab3_2 циклы while и do…while
#include<stdio.h>
#include<conio.h>
main()
{int K,S, i;
clrscr(); // очистка экрана перед выводом
printf (“Введите К ”); scanf (“%d”, &K);
Дата добавления: 2019-01-14; просмотров: 298; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!