Смекни!
smekni.com

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

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

Цель работы: познакомиться с работой условного оператора и оператора перехо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&bsol;n");

break;

case ‘2’:

case ‘3’:

printf("Ветвь 2 или 3&bsol;n");

break;

default:

printf("Ветви 1,2,3 не работают&bsol;n");

}

}


Оператор scanf вводит переменную y. Ее значение в операторе switch сравнивается со всеми константами операторов case. Если ввести символ ‘1’, то на экране появится строка:

Ветвь 1

по оператору break произойдет выход из переключателя switch, и программа завершит свою работу. Если ввести символы ‘2’ или ‘3’, то на экран будет выведена строка:

Ветвь 2 или 3

При вводе любого другого символа управление перейдет к ключевому слову default и на экране появится строка:

Ветви 1,2,3 не работают.

2. Задание

Из таблицы 3 взять задание по варианту и написать программу, используя оператор условного перехода.

Из таблицы 4 взять задание по варианту и написать программу, используя оператор выбора. Для выбора четвертой ветви использовать вариант с ключевым словом default.

Таблица 3
№ варианта Содержание Исходные данные
1.
a=2b=1,5c=1d=3e=0,5
2.
c=-2a=1,5d=2x=3
3.
a=5b=1,2y= 0,6
4.
d=2a=3,5x=3i=2,3
5.
w=1x=2,5a=4b=0,4
6.
a=0,5b=2h=4R=1,4
7.
p=0,6l=2h=5R=4
8.
x=0,63c=1,5d=2a=0,37
9.
y=2,6x=1,6a=0,4
10.
a=1,5b=2x=0,5
11.
x=0,5a=4,3y=2,6d=0,3
12.
a=3y=2,7i=2x=1
13.
x=0,73y=0,4t=2,6
14.
a=2x=0,54c=2,3b=1,8R=3
15.
x=0,4a=0,88c=3,6
16.
a= -1b=0,8x=1c= -0,7
17.
x=2y=3,5a=0,1b=4
18.
x=0,8y=0,2a=4b=5t=1
19.
y=2a=0,5x=1,8b=0,6
20.
x=1,8y=2t=4a=1,5R=4,6b=0,3

Таблица 4
№ варианта Содержание Исходные данные
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Литература