Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 - Лекция4_Циклы.docx
Скачиваний:
6
Добавлен:
16.11.2019
Размер:
59.55 Кб
Скачать

Тема 4. Циклы Зачем нужны циклы?

Рассмотрим задачу вывода на экран 10 чисел:

Для этого можно написать следующий код:

printf("0 1 2 3 4 5 6 7 8 9");

Можно также вызвать функцию printf() 10 раз:

printf("0 "); printf("1 ");

printf("2 "); printf("3 ");

printf("4 "); printf("5 ");

printf("6 "); printf("7 ");

printf("8 "); printf("9 ");

Но что делать, если понадобится вывести 1000 чисел? Вызывать функцию printf() 1000 раз? А что делать, если количество требуемых чисел вводит пользователь, и, значит, при написании программы это количество неизвестно? Обозначенные проблемы легко и эффективно решаются с использованием циклов.

Три типа циклов языка Си

В языке Си существуют три типа циклов: for, while и do-while. Каждый из них может быть переписан с помощью другого, но удобное и лаконичное решение, как правило, можно получить только с помощью одного из них. Цикл for предназначен главным образом для повторения некоторого действия заданное число раз, а циклы while и do-while удобно использовать, если точное количество повторений неизвестно, но известны условия, при которых цикл нужно продолжать и завершать. Одно повторение цикла называется итерацией.

Цикл for

Если нужно повторить какое-то действие заданное число раз, то идеальным вариантом является использование цикла for. Синтаксис этого цикла следующий:

for (<начальное значение счетчика>;

<условие работы>; <приращение счетчика>) {

<тело цикла>;

}

Конструкция цикла for состоит из трех частей, разделяемых знаком «точка с запятой». На каждой итерации цикла доступна переменная-счетчик, равная номеру итерации. Рассмотрим, как использовать цикл for для вывода на экран заданное количество чисел.

printf("Сколько чисел вывести?\n");

int n;

scanf("%d",&n);

for (int i=0;i<n;i++) {

printf("%d ",i);

}

В данном фрагменте кода i=0 задает начальное значение счетчика, указывая на то, что нумерация итераций начинается с нуля. Условие i<n является условием работы цикла, заставляя его законцить свою работу, когда переменная i становится равной n. Приращение счетчика i++ говорит о том, что номер очередной итерации получается из номера предыдущей прибавлением единицы. Результат работы программы такой:

Вариации цикла for

Начальное значение не обязательно должно быть равно нулю, а приращение счетчика – единице. Например, следующая программа выводит через одно числа, расположенные между числами a и b, которые вводит пользователь.

int a,b;

printf("a=");

scanf("%d",&a);

printf("b=");

scanf("%d",&b);

for (int i=a; i<b; i+=2) {

printf("%d ",i);

}

В этом примере номер первой итерации равен a, номер последней равен b, а приращение равно 2.

Нумерация итераций может осуществляться и в обратном порядке, если приращение счетчика сделать отрицательным:

printf("Сколько чисел вывести?\n");

int n;

scanf("%d", &n);

for (int i=n; i>0; i--) {

printf("%d ", i);

}

Обратите внимание на то, что здесь условие работы i>0.