Операторы передачи управления

Оператор безусловной передачи управления позволяет изменить обычный последовательный порядок выполнения операторов и перейти к заданному оператору, помеченному меткой. Структура оператора:

goto <идентификатор-метка>;

Метка – это идентификатор, за которым следует двоеточие. Метка должна находиться в той же функции, что и оператор goto. Одно из полезных применений оператора goto – это выход из вложенных циклов.

Условный оператор позволяет проверить некоторое условие и в зависимости от результата проверки выполнить то или иное действие, т.е. сделать ветвление в программе.

Оператор ветвлениязаписывается следующим способом:

if (<выражение>) <оператор 1;>

else (<оператор 2>);

Существует два варианта оператора if: так называемые полная и краткая формы. Полная форма этого оператора приведена выше. Если значение условия «истинно», то выполняется оператор 1 (им может быть составной оператор – блок, который в программе выделяется операторными скобками {…}), следующий за условием. Если же условие принимает значение "ложно", то выполняется оператор 2, следующий за ключевым словом else.

В записи оператора if вторая часть (т. е. оператор else) может отсутствовать (краткая форма):

if (<выражение>) <оператор;>

Тогда, если условие принимает значение «ложно», выполняется сразу следующий оператор программы. В языке С++ нет логического типа, поэтому в качестве условия может стоять произвольное выражение. В операторе if лишь проверяется, является ли значение этого выражения ненулевым (истинным) или нулевым (ложным).

Пример: a) if (k != 0) k = k+1; b) if (k) k++;

else k = k-1; else k--;

Часто встречается необходимость использовать конструкцию if-else-if:

if (<выражение>) <оператор 1;>

else if (<оператор 2>);

else if (<оператор n>);

else (<оператор n+1>);

В этой форме условия операторов ifпроверяются сверху вниз. Как только ка­кое-либо из условий принимает значение «истинно», выполнится оператор, следующий за этим условием, а вся остальная часть конструкции будет проигнорирована.

Выражение, стоящее после оператора if может содержать операторы сравнения (==, <, >, <=, >=, !=) и логические функции (&& - “И”, || - “ИЛИ”, !-“НЕ”).

Оператор множественного выбораимеет следующий синтаксис:

switch ( <выражение> ) {

case <консатнта1> : <группа операторов1>;

case <консатнта2> : <группа операторов2>;

...

case <консатнтаN> : <группа операторовN>;

default : <операторы>;

};

Метки определяют точки входа в тело оператора. Чтобы выполнить только одно действие, необходимо предусмотреть выход (оператор break) из данного оператора в нужном месте.

Сначала вычисляется выражение в скобках за ключевым словом switch. Затем просматривается список меток (case <константа1> и т. д.) до тех пор, пока не находится метка, соответствующая значению вычисленного выражения. Далее происходит выполнение соответствующей последовательности операторов, следующих за двоеточием. Если же значение выражения не соответствует ни одной из меток оператора switch, то выполняется последовательность операторов, следующая за ключевым словом default.

Допускается конструкция оператора switch, когда слово default и соответствующая последовательность операторов могут отсутствовать.

Пример.Составить программу для начисления зарплаты согласно следующему правилу: если стаж работы сотрудника менее пяти лет, то зарплата равна 50$, при стаже работы от пяти до 15 лет - 100$, свыше 15 лет зарплата повышается с каждым годом на 10$, причем при стаже превышающем 30 лет она составляет 300$.

Для программирования решения этой задачи определим математическую формулировку задачи:

операторы передачи управления - student2.ru

где ZP – зарплата, ST – стаж работы. Далее, построим алгоритм решения, показанный на (рис.1), ей соответствует следующая программа

операторы передачи управления - student2.ru Рис. 1.   операторы передачи управления - student2.ru Рис. 2.

#include <stdio.h> // библиотека, содержащая описание

// операторов ввода/вывода

# include <conio.h> // библиотека, содержащая описание

// операторов для работы с экраном

void main() // заголовок главной функции программы

{ float st, zp; // описание вещественных идентификаторов

clrscr (); // процедура очистки экрана

printf(“Vvedite stag st \n”); // вывод информационного сообщения

scanf (“%f”, &st); // ввод значения st

if (st<5) zp=50; // вычисление значения переменной zp

else if (st>=5 && st<=15) zp=100;

else if (st>15 && st<=30) zp=100+(st-15)*10;

else zp=300;

printf (“Zarplata Zp=%4.2f\n”, zp); // вывод результата

getch(); // процедура задержки экрана, пока не

// нажата любая клавиша

}

Пример. Выведите название дня недели, соответствующее введенному числу.

Алгоритм решения данной задачи приведен на рис. 2.

#include <stdio.h> // библиотека, содержащая описание

// операторов ввода/вывода

# include <conio.h> // библиотека, содержащая описание

// операторов для работы с экраном

void main() // заголовок главной функции программы

{ int day; // описание целого идентификатора

clrscr (); // процедура очистки экрана

printf(“Input day of week \n”); // вывод информационного сообщения

scanf (“%d”, &day); // ввод значения day

switch (day)

{

case 1 : printf(“Monday \n”); break;

case 2 : printf(“Tuesday \n”); break;

case 3 : printf(“Wednesday \n”); break;

case 4 : printf(“Thursday \n”); break;

case 5 : printf(“Friday \n”); break;

case 6 : printf(“Saturday \n”); break;

case 7 : printf(“Sunday \n”); break;

default : printf(“This day not existed \n”);

}

getch(); // процедура задержки экрана, пока не

// нажата любая клавиша

}

Лабораторная работа 3

Наши рекомендации