|
Условные и безусловные операторы в языке программирования Си++"
Условные и безусловные операторы в языке программирования Си++"
1 Лабораторная работа"Условные и безусловные операторы в языке программирования Си++" Цель работы: познакомиться с работой условного оператора и оператора перехоlа. Изучить оператор выбора варианта. Научиться применять их при составлении программ. Теоретические сведения Условный оператор if Рассматриваемая группа операторов позволяет организовать ветвление в программе. Часто, например, необходимо в зависимости от того или иного результата реализовать одну либо другую группу операторов (инструкций). В языке СИ для этих целей используются операторы if (если) - else (иначе), switch (переключатель) и goto (идти к). Оператор if имеет вид: if (проверка условия) инструкция1; else инструкция2; Если условие в скобках принимает истинное значение, выполняется инструкция1, а если ложное - инструкция2 (см. рис. 1). 1 Например: if (a>b) z=a; else z=b; Необходимо обратить внимание на точку с запятой после z=a. Здесь она обязательна, поскольку за if должна следовать инструкция, которая всегда заканчивается точкой с запятой. В операторе if слово else может отсутствовать. В этом случае, если условие в скобках принимает истинное значение, выполняется инструкция 1, а если ложное, то инструкция 1 пропускается и управление передается следующему оператору по тексту программы. Например: if (num>10) num=2*num; printf("%d\n",num); Оператор вывода будет выполняться всегда, а оператор присваивания только в том случае, если условие будет истинным. Операции отношения, используемые для сравнения, приведены в таблице 1. Таблица 1 |
Операция | Смысл | | < | меньше | | <= | меньше или равно | | = = | равно | | >= | больше или равно | | > | больше | | != | не равно | | |
Не следует путать операцию отношения "==" с операцией присваивания "=". Рассмотрим простейшую программу: #include <stdio.h> main( ) { int a,b; puts("Введите значения a и b"); scanf("%d %d", &a,&b); if (a>b) puts("a больше b"); else puts(""); /*демонстрация оператора if - else*/ if (a==b) puts(""); /*демонстрация оператора if без слова else*/ } Если для выполнения программы ввести числа 5 и 3, то на экране появится строка: а больше b При введении чисел 5 и 5, на экране появится две строки: a меньше или равно b a равно b Иногда в условном операторе после ключевых слов if или else следует инструкция if, ее называют вложенной. Слово else всегда относится к ближнему предшествующему ему if. Также после ключевых слов if и else вместо одной инструкции может быть записано несколько инструкций, которые должны заключаться в фигурные скобки. Например, в if (n>0) if (a>b) z=a; else z=b; else относится к внутреннему if, что и показано с помощью отступов. Если требуется иная интерпретация, необходимо должным образом расставить фигурные скобки: if (n>0) { if (a>b) z=a; } else z=b; В данном примере else относится к внешнему if. В сложных конструкциях, содержащих много if и else, уместно вложенные if обрамлять фигурными скобками. Вместо вложенных конструкций if-else часто целесообразно использовать сложные выражения для проверки условия. Сложные выражения получаются путем объединения нескольких простых отношений с помощью логических операций. В языке СИ имеются три логические операции, приведенные в таблице 2. Таблица 2 Операция ! имеет очень высокий приоритет, он выше, чем умножения, и только круглые скобки имеют более высокий приоритет. Приоритет операции && выше, чем операции ||, а обе они имеют более низкий приоритет, чем операции отношения. Поэтому выражение a>b&&b>c||b>d будет интерпретировано так: ((a>b)&&(b>c))||(b>d), т.е. b находится в промежутке между c и a или b больше d. Пример main ( ) { float x, y; scanf ("%f", & x); if (x > 0) y = x*x + 1; else y = x + 4; printf ("%f %f", x, y); } Оператор безусловного перехода Его можно представить в следующей форме: goto метка; Метка - это любой идентификатор. Например: goto a2; Оператор goto указывает, что выполнение программы необходимо продолжить, начиная с инструкции, перед которой записана метка. В программе обязательно должна быть строка, где указана метка, поставлено двоеточие и записана инструкция, к которой должен выполняться переход. Например: a2: k=5; Метки в программе описывать не нужно. Применение оператора безусловного перехода в языке СИ является нежелательным, так как он нарушает структурную наглядность программы. Оператор выбора switch Оператор switch позволяет выбрать одну из нескольких альтернатив. Он записывается в следующем виде: switch (выражение) {case константа1, вариант 1; break; . . . case константа n, вариант n; break; default: вариант n+1; break;} На рис.2 представлена соответствующая иллюстрация. 1 В операторе switch вычисляется целое выражение в скобках ( его называют селектором), и его значение сравнивается со всеми константами. При совпадении выполняется соответствующий вариант (одна или несколько инструкций). Все константы в записи оператора должны быть различными. Вариант с ключевым словом default (прочие) реализуется, если ни один другой не подошел (если слово default отсутствует, а все результаты сравнения отрицательны, то ни один вариант не выполняется. Для прекращения последующих проверок после успешного выбора некоторого варианта используется оператор break, обеспечивающий немедленный выход из оператора switch. Например: #include<stdio.h> main( ) { char y; scanf("%c",&y); switch(y) { case `1': printf("Ветвь 1\n"); break; case `2': case `3': printf("Ветвь 2 или 3\n"); break; default: printf("Ветви 1,2,3 не работают\n"); } } Оператор scanf вводит переменную y. Ее значение в операторе switch сравнивается со всеми константами операторов case. Если ввести символ `1', то на экране появится строка: Ветвь 1 по оператору break произойдет выход из переключателя switch, и программа завершит свою работу. Если ввести символы `2' или `3', то на экран будет выведена строка: Ветвь 2 или 3 При вводе любого другого символа управление перейдет к ключевому слову default и на экране появится строка: Ветви 1,2,3 не работают. 2. Задание Из таблицы 3 взять задание по варианту и написать программу, используя оператор условного перехода. Из таблицы 4 взять задание по варианту и написать программу, используя оператор выбора. Для выбора четвертой ветви использовать вариант с ключевым словом default. Таблица 3|
№ варианта | Содержание | Исходные данные | | | | a=2b=1,5c=1d=3 e=0,5 | | | | c=-2a=1,5d=2 x=3 | | | | a=5b=1,2 y= 0,6 | | | | d=2a=3,5x=3 i=2,3 | | | | =1x=2,5a=4 b=0,4 | | | | a=0,5b=2h=4 R=1,4 | | | | p=0,6l=2h=5 R=4 | | | | x=0,63c=1,5d=2 a=0,37 | | | | y=2,6x=1,6 a=0,4 | | | | a=1,5b=2 x=0,5 | | | | x=0,5a=4,3y=2,6 d=0,3 | | | | a=3y=2,7i=2 x=1 | | | | x=0,73y=0,4 t=2,6 | | | | a=2x=0,54c=2,3b=1,8 R=3 | | | | x=0,4a=0,88 c=3,6 | | | | a= -1b=0,8x=1 c= -0,7 | | | | x=2y=3,5a=0,1 b=4 | | | | x=0,8y=0,2a=4b=5 t=1 | | | | y=2a=0,5x=1,8 b=0,6 | | | | x=1,8y=2t=4a=1,5R=4,6 b=0,3 | | | Таблица 4|
№ варианта | Содержание | Исходные данные | | 1 | | | | 2 | | | | 3 | | | | 4 | | | | 5 | | | | 6 | | | | 7 | | | | 8 | | | | 9 | | | | 10 | | | | 11 | | | | 12 | | | | 13 | | | | 14 | | | | 15 | | | | 16 | | | | 17 | | | | 18 | | | | 19 | | | | 20 | | | | | ЛитератураПодбельский В.В. Язык Cu ++: Учебное пособие. - М.: Финансы и статистика,1995, -560 с.Страуструп Б. Язык программирования Сг ++. - М.: Радио и связь, 1991. - 352 стр.Собоцинский В.В. Практический курс Turbo Cu ++. Основы объктно- ориентированного программирования. - М.: Свет, 1993. - 236 с.Романов В.Ю. Программирование на языке Cu ++. Практический подход. - М.: Компьтер, 1993. - 160 с.Уинер Р. Язык турбо Cu . - М.: Мир, 1991. - 384 с.Юлин В.А., Булатова И.Р. Приглашение к Cu. - Мн.: Высш. Шк., 1990,- 224 с.Котлинская Г.П., Галиновский О.И. Программирование на языке Cu. -Мн.: Высш. Шк., 1991. - 156 с.
|
|