Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
4
Добавлен:
14.11.2017
Размер:
352.59 Кб
Скачать

Управляющие операторы

(продолжение)

Текст программы деления. Цикл с предусловием. Вариант 1

#include <stdio.h> int main(void)

{

int a=1,b=0; // инициализировали нулем, чтобы войти в цикл! double c;

while(b == 0)

{

printf("Enter two integer numbers: "); scanf("%d%d", &a, &b);

if (b==0)printf("\nError: division by zero. Try again\n\n");

}

c = (float) a/b;

printf("\nThe result = %10.3f\n\n", c); return 0;

}

21

Технология и языки программрования

Управляющие операторы

(продолжение)

Текст программы деления. Цикл с предусловием. Вариант 2

#include <stdio.h> int main(void)

{

int a,b; // инициализация не является необходимой double c;

printf("Enter two integer numbers: "); scanf("%d%d", &a, &b);

while(b == 0)

{

printf("\nError: division by zero. Try again\n\n"); printf("Enter two integer numbers: "); scanf("%d%d", &a, &b);

}

c = (float) a/b;

printf("\nThe result = %10.3f\n\n", c); return 0;

}

22

Технология и языки программрования

Управляющие операторы

(продолжение)

Оператор цикла с параметром

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

В самом общем виде синтаксис следующий:

for (выражение1; выражение2; выражение3) оператор;

Чаще всего применяется в такой форме:

for (инициализация параметра; проверка условия; изменение параметра) оператор;

23

Технология и языки программрования

Управляющие операторы

(продолжение)

Обычно инициализация используется для присвоения начального значения параметру цикла. Проверка условия это условное выражение, которое определяет, когда цикл должен быть завершен. Проверка выполняется в начале, т.е. это цикл с предусловием. Вхождение в цикл происходит только при выполнении условия. Если результат проверки оказывается истинным, т.е. условие выполняется, то осуществляется вход в цикл, переход к его началу. После завершения всех действий в теле цикла осуществляется переход назад к проверке условия. Если условие не выполняется, то осуществляется переход вперед – к оператору, следующему за циклом, как в цикле while. Изменение параметра это выражение, которое показывает, с каким приращением или убавлением изменяется параметр цикла после завершения каждой итерации,

т.е.каждого прохода цикла. Простейший пример:

for (int i=0; i<10; i++) printf("%d",i);putchar('\n'); for (int i=9; i>=0; i--) printf("%d",i);putchar('\n');

Печать чисел от 0 до 9 и от 9 до 0 в двух строках.

24

Технология и языки программрования

Управляющие операторы

(продолжение)

Переменная цикла может быть не только числом, но также, например, символом:

for (ch='A'; ch<='Z'; ch++) printf("%c\n",ch);

/* вывод в столбик заглавных латинских букв в алфавитном порядке */

Цикл может быть бесконечным – из-за ошибки в алгоритме или если это специально предусмотрено. Например, именно таким образом часто реализуется главная функция в программе. Примеры:

for (k=1; k>0; k++) printf(”Infinite loop!”); for (j=1; 1; j++) printf(”Infinite loop!”);

for (; ;) printf(”Infinite loop!”);

Для прекращения выполнения цикла используется оператор break

25

Технология и языки программрования

Управляющие операторы

(продолжение)

Когда в теле цикла встречается оператор break, то его выполнение прекращается, а управление передается на оператор, следующий за концом цикла.

Оператор continue также вызывает изменение штатной последовательности выполнения цикла. Когда он встречается в теле цикла, управление передается на начало следующей итерации цикла – в ту точку программы, где происходит изменение параметра цикла.

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

for (;;)

{

ch=getchar();

if ((ch=='z') || (ch=='Z')) break; printf("%c", ch);

}//эхо-печать введенных символов до ввода ’z’ или ’Z’

26

Технология и языки программрования

Управляющие операторы

(продолжение)

Есть также оператор передачи управления goto. Управление передается в точку программы, где установлена метка (label). Метка это идентификатор, после которого стоит двоеточие.

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

Это делается для получения понятного для чтения и удобного для отладки кода программы, в котором каждый блок имеет только один вход и один выход, оператор цикла с параметром управляется только счетчиком.

Категорически запрещается, хотя это и допускается синтаксисом языка Си, менять значение параметра цикла внутри тела цикла, поскольку это ведет к совершенно непредсказуемым результатам при работе программы. Параметр цикла должен изменяться только так, как указано в заголовке оператора цикла.

27

Технология и языки программрования

Управляющие операторы

(продолжение)

Оператор множественного выбора служит эквивалентом сложного условного оператора:

if <…> else if <…> else if <…> else if <…> и т.д.

Его синтаксис следующий: switch (выражение)

{

case константа1: операторы;

break; // break не является обязательным case константа1: операторы;

break; // break не является обязательным case константа1: операторы;

break; // break не является обязательным и т.д.

default: операторы; // default не является обязательным

}

28

Технология и языки программрования

Управляющие операторы

(продолжение)

Пример: при вводе строчных букв a, b, c выводятся соответствующие им прописные буквы. При вводе других символов выдается сообщение об ошибке.

char ch; ch=getchar();

switch (ch)

{

case 'a': printf("A\n"); break;

case 'b': printf("B\n"); break;

case 'c': printf("C\n"); break;

default: printf("You must enter only a, b or c!\n");

}

29

Технология и языки программрования

Соседние файлы в папке Бочаров презентации 1 семестр