Условные и безусловные операторы в языке программирования Си

Лабораторная работа"Условные и безусловные операторы в языке программирования Си++"




Цель работы: познакомиться с работой условного оператора и оператора перехоlа. Изучить оператор выбора варианта. Научиться применять их при составлении программ.



Теоретические сведения



Условный оператор if

Рассматриваемая группа операторов позволяет организовать ветвление в программе. Часто, например, необходимо в зависимости от того или иного результата реализовать одну либо другую группу операторов (инструкций). В языке СИ для этих целей используются операторы if (если) – else (иначе), switch (переключатель) и goto (идти к).

Оператор if имеет вид:



if (проверка условия) инструкция1; else инструкция2;



Если условие в скобках принимает истинное значение, выполняется инструкция1, а если ложное – инструкция2 (см. рис. 1).





Вход

Выбор

Инструкция 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 представлена соответствующая иллюстрация.

		

		

вариант 1

break

Вход

Выражение = константа 1

case

Выражение = константа n

нет

. . .

нет

default:

да

вариант n

вариант n

да

да

break

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.



Таблица 3

№ варианта

Содержание

Исходные данные



 

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



 

=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




Таблица 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 с.

1