Программирование
на языках высокого уровня. Язык программирования Си |
|
назад | оглавление | вперёд |
2. Программы разветвлённой структуры
Алгоритм разветвленной структуры - это алгоритм, в котором вычислительный процесс осуществляется по одной из ветвей. Если количество ветвей две – то используется условный блок, если больше – то множественный выбор. В программах используют соответственно условный оператор IF или оператор SWITCH для реализации разветвленного алгоритма.
Условный оператор в языке Си имеет формат: 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); } В программах с множественным выбором используется переключатель switch , который сравнивает значение выражения, указанного за ним, и выполняет оператор, метка которого совпадает с этим значением. Общий вид:
Значения выражения и меток должны быть целочисленными константами. Например, определим количество дней по введенному номеру месяца.
#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.4.2. Всегда ли ставятся скобки и какие в условном операторе? 2.4.3. Зачем ставятся в переключателе операторы break и default? 2.4.4. Как будет работать программа из примера без break? 2.4.5. Приведите пример оператора if. 2.4.6. Приведите пример оператора switch.
|