Оператор множественного выбора

Оператор if...else осуществляет выбор между двумя (условиями) вариантами. Но иногда нужно сделать выбор из нескольких вариантов. Это можно сделать с помощью if-else if-else. Иногда удобнее применить оператор switch.

Switch (целое выражение)

{

case конст1:

Оператор;

case конст2:

Оператор;

default:

Оператор;

}

 

В начале вычисляется выражение в скобках за ключевым словом. Затем просматривается список меток case 'a': пока не будет найдена, соответствующая этому значению. Если нет такой метки, то будет выполнен default. Метка default может отсутствовать, тогда оператор switch ничего не выполнит и программа перейдет на следующий оператор. Оператор break служит для выхода из оператора switch и перехода к следующему оператору. Метки в операторе switch должны быть константами целого типа, включая chаr. Могут следовать несколько меток подряд.

 

//пример программы на множественный выбор

#include <stdio.h>

void main(void)

{

int x, y;

char c;

printf("Введите 2 целых числа и знак операции");

scanf(“ %d %d %c”, &x, &y, &c);

switch (c) {

case '+': printf("x + y = %3d\n”, x+y);

break;

case '-': printf("x - y = %3d\n”, x-y);

break;

case '*': printf("x * y = %3d\n”, x*y);

break;

case '/': printf("x / y = %3d\n”, x/y);

break;

default:

printf("Такой операции нет!\n);

}

}

Операторы цикла while

Цикл – это многократно повторяющиеся действия или группа действий.

Операторы цикла могут быть трех видов: с предусловием, с постусловием, со счетчиком.

а) с предусловием:

Оператор while состоит из трех частей: это ключевое слово while, затем в круглых скобках указывается проверяемое условие, и тело цикла - оператор, который выполняется, если условие истинно (таких операторов может быть несколько, тогда они заключаются в {} и получается составной оператор). Если оператор один, то действие оператора while распространяется от ключевого слова while до ‘;’.

while (условное выражение) или while (условное выражение){

Оператор; операторы;

}

 

Схема выполнения цикла

 
 

 


while Истина

 

 

Ложь (переход к следующей операции)

 

Тело цикла может состоять из нескольких операторов. В этом случае оно заключается

в фигурные скобки.

 

Пример 1: Пример 2:

index = 0; index = 0;

while (index++ < 10) while (index++ < 10) {

sum = 10*index + 2; sum = 10*index + 2;

printf ("sum = % d \n", sum); printf ("sum = % d \n", sum);

}

В примере 1 в цикл включен только один оператор присваивания. Печать данных будет производиться только 1 раз – после завершения цикла (будет выведено – sum=102). В примере 2 в цикл включено два оператора, поэтому печать результатов будет выводиться на каждом шаге работы цикла.

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

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

 

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

#include <stdio.h>

void main(void)

{

int guess=1;

char res;

printf("Задумайте число от 1 до 100. Я попробую его угадать");

printf("\n Отвечайте д, если моя догадка верна и”);

printf( «\n н, если я ошибаюсь.\n»);

printf("Итак ваше число %d?\n", guess);

while((res=getchar()) != 'д')

if(res!='\n')

printf("Тогда оно равно %d?\n", ++guess);

printf("Ура, я угадала!!!");

}

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

do или do {

Оператор; операторы;

while (условное выражение); } while (условное выражение);

 

Проверка истинности осуществляется после выполнения оператора или блока операторов. Хотя бы один раз этот цикл будет выполнен.

 

Схема выполнения цикла

 
 


Do while Истина

 

 

Ложь

 

Рассмотрим два примера:

Пример 1 Пример 2

do { while((ch = getchar()) ! = '\n')

ch = getchar(); putchar (ch);

putchar (ch);

} while(ch ! = '\n')

 

Функция getchar() получает один символ, поступающий с клавиатуры и передает его программе, аргументов она не имеет. Функция putchar получает один символ, поступающий из программы, и пересылает его для вывода на экран, эта функция имеет один аргумент, т.е. в скобках необходимо указывать символ, который будет выведен на печать. Можно использовать эту функцию в следующем виде: putchar(getchar()) – эта запись компактна и не требует введения вспомогательных переменных.)

Во втором примере на экран будут выводиться все символы до появления символа «новая строка». А в первом примере будут выводиться все символы, включительно и символ «новая строка» (только после печати этого символа, если он введен, в цикле производится проверка символа «новая строка» и действие цикла завершается).

Цикл выполняется хотя бы один раз, так как проверка осуществляется только после его завершения.