Лабораторная работа"Условные и безусловные операторы в языке программирования Си++"
Цель работы: познакомиться с работой условного оператора и оператора перехоlа. Изучить оператор выбора варианта. Научиться применять их при составлении программ.
1. Теоретические сведения
Условный оператор if
Рассматриваемая группа операторов позволяет организовать ветвление в программе. Часто, например, необходимо в зависимости от того или иного результата реализовать одну либо другую группу операторов (инструкций). В языке СИ для этих целей используются операторы if (если) – else (иначе), switch (переключатель) и goto (идти к).
Оператор if имеет вид:
if (проверка условия) инструкция1; else инструкция2;
Если условие в скобках принимает истинное значение, выполняется инструкция1, а если ложное – инструкция2 (см. рис. 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.
№ варианта | Содержание | Исходные данные |
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 |
№ варианта | Содержание | Исходные данные |
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | ||
14 | ||
15 | ||
16 | ||
17 | ||
18 | ||
19 | ||
20 |
Литература