Главная Учебники - Разные Лекции (разные) - часть 34
|
Лабораторная работа"Условные и безусловные операторы в языке программирования Си++"
Цель работы:
познакомиться с работой условного оператора и оператора перехоlа. Изучить оператор выбора варианта. Научиться применять их при составлении программ. 1.
Теоретические сведения
Условный оператор if
Рассматриваемая группа операторов позволяет организовать ветвление в программе. Часто, например, необходимо в зависимости от того или иного результата реализовать одну либо другую группу операторов (инструкций). В языке СИ для этих целей используются операторы if (если) – else (иначе), switch (переключатель) и goto (идти к). Оператор if имеет вид: if (проверка условия) инструкция1; else инструкция2; Если условие в скобках принимает истинное значение, выполняется инструкция1, а если ложное – инструкция2 (см. рис. 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 представлена соответствующая иллюстрация. В операторе 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. a=2 b=1,5 c=1 d=3 e=0,5 c=-2 a=1,5 d=2 x=3 a=5 b=1,2 y= 0,6 d=2 a=3,5 x=3 i=2,3 w=1 x=2,5 a=4 b=0,4 a=0,5 b=2 h=4 R=1,4 p=0,6 l=2 h=5 R=4 x=0,63 c=1,5 d=2 a=0,37 y=2,6 x=1,6 a=0,4 a=1,5 b=2 x=0,5 x=0,5 a=4,3 y=2,6 d=0,3 a=3 y=2,7 i=2 x=1 x=0,73 y=0,4 t=2,6 a=2 x=0,54 c=2,3 b=1,8 R=3 x=0,4 a=0,88 c=3,6 a= -1 b=0,8 x=1 c= -0,7 x=2 y=3,5 a=0,1 b=4 x=0,8 y=0,2 a=4 b=5 t=1 y=2 a=0,5 x=1,8 b=0,6 x=1,8 y=2 t=4 a=1,5 R=4,6 b=0,3 Литература 1. Подбельский В.В. Язык Cu ++: Учебное пособие. - М.: Финансы и статистика,1995, -560 с. 2. Страуструп Б. Язык программирования Сг ++. - М.: Радио и связь, 1991. - 352 стр. 3. Собоцинский В.В. Практический курс TurboCu ++. Основы объктно- ориентированного программирования. - М.: Свет, 1993. - 236 с. 4. Романов В.Ю. Программирование на языке Cu ++. Практический подход. - М.: Компьтер, 1993. - 160 с. 5. Уинер Р. Язык турбо Cu . - М.: Мир, 1991. - 384 с. 6. Юлин В.А., Булатова И.Р. Приглашение к Cu. - Мн.: Высш. Шк., 1990,- 224 с. 7. Котлинская Г.П., Галиновский О.И. Программирование на языке Cu. -Мн.: Высш. Шк., 1991. - 156 с.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||