Скачиваний:
71
Добавлен:
04.05.2017
Размер:
1.87 Mб
Скачать

Методические указаниия

        1. К п.1. Операторы цикла.

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

for (выражение1; выражение2; выражение3) {тело_цикла}

Тело цикла составляет либо один оператор, либо несколько операторов, заключенных в фигурные скобки { ... }. В выражениях 1, 2, 3 фигурирует специальная переменная, называемая управляющей. По ее значению устанавливается необходимость повторения цикла или выхода из него.

Выражение1 присваивает начальное значение управляющей переменной, выражениеЗ изменяет его на каждом шаге, а выражение2 проверяет, не достигло ли оно граничного значения, устанавливающего необходимость выхода из цикла.

Например, простейший оператор цикла имеет вид:

for(i=0; i<10; i++)

printf("%d\n",i);

При выполнении этого оператора будут распечатаны в столбик цифры: от 0 до 9.

Задание1:напишите программу на языке Си для вывода на экран цифр в обратном порядке (от 9 до 0).

Любое из трех выражений в цикле for может отсутствовать, однако точка с запятой должна оставаться. Таким образом, for ( ; ; ) {...} - это бесконечный цикл.

Оператор while формально записывается в таком виде:

while (выражение) тело_цикла

Выражение в скобках может принимать ненулевое (истинное) или нулевое (ложное) значение. Если оно истинно, то выполняется тело цикла и выражение вычисляется снова. Если выражение ложно, то цикл while заканчивается.

Пример программы с циклом while:

...

int n=0;

while(n!=20) // пока n не равно 20

{

printf(" %d \n", 2*n); //вывести произведение n*2

n++; // увеличить n на 1

}

...

Рисунок 6. Результаты выполнения программы с циклом while

На первом этапе задается n=0. Затем программа осуществляет сравнение числа n c числом 20. Т.к. выражение (n!=20) истинно (т.е. n≠20) – программа начинает выполнение тела цикла - вывод произведения n*2 (произведение=0) и увеличение значения n на единицу. Далее программа снова возвращается к проверке условия цикла, т.е. сравнивает уже новое (увеличенное на единицу) значение n с числом 20 и т.к. условие остается истинным (n≠20) - снова производит вывод произведения n*2 (теперь произведение=2) и увеличение числа n на единицу. Так будет продолжаться до тех пор, пока значение n не станет равным числу 20 – в этом случае программа осуществит выход из цикла.

Оператор do-while формально записывается следующим образом:

do {тело_цикла} while (выражение);

Основным отличием между циклами while и do - while является то, что тело в цикле do - while выполняется по крайней мере один раз. Тело цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется ровно один раз.

Приведем пример программы с циклом do – while, результат выполнения которой аналогичен программе с циклом while (см. рисунок 6.)

...

int n=0;

do

{

printf(" %d \n", 2*n);

n++;

}

while(n!=20);

...

Допускается вложенность одних циклов в другие, т.е. в теле любого цикла могут появляться операторы for, while и do - while.

 

Задание2:Используяоператор whileнапишите текст программы, которая предлагает пользователю ввести число от 0 до 10. Пока пользователь вводит числа меньше 10 предложение должно повторяться. Как только пользователь введет число больше 10 – программа должна завершить свое выполнение (примерный результат работы программы представлен на рисунке 7.).

Рисунок 7. Примерный результат работы программы с использованием цикла (задание)

К п.2. Операторы break и continue.

В теле цикла могут использоваться специальные операторы break и continue. Оператор break обеспечивает немедленный выход из цикла, оператор continue вызывает прекращение очередной и начало следующей итерации. Рассмотрим эти операторы на примере следующей программы:

Пример: нужно вводить числа с клавиатуры, если число больше нуля, то выводим на экран сообщение «number>0», если меньше, то - «number<0». Если, вдруг, оказывается, что мы ввели 0, то продолжаем дальше вводить значения. Условием выхода из цикла будет значение -100.

Решение:

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

int number;

for ( ; ; )

{

printf("Enter number \n");

scanf ("%d", &number);

if (number == -100)

{break;}

if (number == 0)

{continue;}

if ( number > 0 )

{printf ("number>0 \n");}

if (number < 0)

{printf ("number<0 \n");}

}

system("PAUSE");

return 0;

}

Результат работы данной программы необходимо представить в отчете.