2.1. Основные сведения

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

 

2.2. Условный оператор IF

Условный оператор в языке Си имеет формат:

if (условие) оператор1;

else оператор2; (полная форма)

if (условие) оператор1; (сокращенная форма).

Если оператор1 и оператор2 состоят из одного оператора, то в фигурные скобки они не заключаются. Если оператор1 и/или оператор2 являются составным оператором (несколько операторов), то он заключается в фигурные скобки. Условие всегда заключается в круглые скобки.

В качестве примера приведем программу вычисления наибольшего из значений функции y1=x²+1, y2=7-x² , y3=x+1 для любого х.

#include <stdio.h>

main()

{ float x,y1,y2,y3,max;

  printf("\n Введите x "); scanf("%f ",&x);

  y1=x*x+1; y2=7-x*x; y3=x+1;

  if (y1>y2)

     max=y1;

  else

     max=y2;

if (y3>max)

     max=y3;

printf ("x=%8.2f y1=%8.2f y2=%8.2f y3=%8.2f max=%8.2f\n",x,y1,y2,y3,max);

}

 

2.3. Множественный выбор

В программах с множественным выбором используется переключатель switch , который сравнивает значение выражения, указанного за ним, и выполняет оператор, метка которого совпадает с этим значением.

Общий вид:

Switch (выражение)

{ case метка_1: список_операторов_1;

  .............................

  case метка_n: список_операторов_n;

  default : операторы; 
}

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

#include <stdio.h>

#include <conio.h> // Заголовочный файл для работы с терминалом

int m;

main()

{

printf("\n Введите номер месяца :"); scanf("%d",&m);

printf("\n В %d месяце дней: ",m);

switch(m){

  case 1:case 3:case 5: case 7:case 8:case 10:case 12:

      printf("тридцать один \n"); break;

  case 2: printf ("двадцать восемь \n"); break;

  case 4: case 6: case 9: case 11: printf("тридцать \n"); break;

  default: printf("\n Номер месяца неверен \n");

}

getch ();

}

В примере программы, если номер месяца превышает 12, выводится сообщение о неверном вводе месяца, для чего используется default. Оператор break служит для прерывания цикла проверки и перехода в конец переключателя. В случае отсутствия break, происходит переход на следующую ветвь case. Функция getch, подключающаяся заголовочным файлом conio.h, ожидает нажатия любой клавиши. Это позволяет просмотреть результаты, не используя ALT+F5 для просмотра экрана пользователя.

 

2.4.Контрольные вопросы

1. Сравните виды условных операторов Си.

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

3. Зачем ставятся в переключателе операторы break и default?

4. Как будет работать программа из примера без break?

5. Приведите пример оператора if.

6. Приведите пример оператора switch.