Лабораторная работа №2 Подготовка и решение на пк задач с разветвлением
Цель лабораторной работы – приобретение практических навыков по подготовке, отладке и выполнению разветвляющихся программ.
Перед выполненим лабораторной работы студент должен знать:
- методику разработки программы с общей линейной частью и несколькими ветвями;
- алгоритмы выполнения и синтаксис опраторов if, if/else, switch/case и условной операции ?:.
После выполнения лабораторной работы студент должен уметь разрабатывать и отлаживать программы с разветвлениями.
3.1. Краткие теоретические сведения
Во многих случаях дальнейшее выполнение программы от некоторой точки должно идти по разным путям в зависимости от определенных условий. Например, при щелчке мышью по одной кнопке программа должна приступить к выполнению ветви 1, а при щелчке по другой кнопке - к выполнению ветви 2. Такие условные переходы совсем не обязательно связаны с командами пользователя; программа может сама выбрать дальнейший путь, например по результатам некоторой математической операции: при нулевом результате выполнить один фрагмент, при отрицательном - другой, при положительном - третий. В C++ существует три базовых опратора выбора: if, if/else, switch/case и условной операции ?:.
3.2. Оператор if
Оператор if предназначена для выполнения команды или блока команд в зависимости от того, истинно заданное условие или нет. Формат оператора if:
If (условие) выражение;
Если в результате проверки условия возвращается значение true, выполняется выражение, после чего управление передается следующей строке программы. Если же результатом проверки условия является значение false, выражение пропускается.
Оператор if/else позволяет выборочно выполнять одно из двух действий в зависимости от условия. Формат данной инструкции имеет вид:
If (условие) выражение1; else выражение2;
Если в результате проверки условия возвращается значение true, выполняется выражение1, в противном случае — выражение2.
Если операторная часть ветви If или else содержит не одно выражение, а несколько, необходимо заключить их в фигурные скобки. После закрывающей фигурной скобки точка с запятой не ставится.
Оператор if первой и второй формы реализуют алгоритмы представленные на рис. 19.
Рис.19. Алгоритмы работы операторов if
В качестве анализируемого выражения в операторе if чаще всего используется одина из операций отношения.
Наряду с операциями отношения в инструкции if широко используются логические операции. Объединяя их с операциями отношения, можно создавать комбинированные конструкции проверки данных.
3.3. Оператор switch/case
Оператор switch/case позволяет в зависимости от значения некоторого выражения выбрать один из многих вариантов продолжения программы. Оператор имеет следующий формат:
switch(выражение) {
case значение1: оператор1;break;
case значение2: оператор2;break;
...
case значениеN: операторN;break;
default: операторN+1;
}
Оператор switch/case реализует алгоритм представленный на рис. 20.
Рис.20. Алгоритмы работы оператора switch/case
Оператор switch/case может быть использован в варианте без опрератораN+1.
В качестве выражения при операторе switch обычно используется переменная типа int или char, хотя можно использовать и более сложные выражения, в которые входят, например, арифметические или логические операции над несколькими переменными и константами.
В качестве значений при операторе case обычно используются просто константы (в числовой форме или в символьной, если они были заранее определены с помощью оператора препроцессора #define), однако могут использоваться и выражения над константами.
Выполнение оператора switch начинается с вычисления выражения в скобках, которое должно давать целочисленный результат. Этот результат последовательно сравнивается с значениями при операторах case, и, если будет обнаружено равенство результатов, то выполняется оператор соответствующего case. Если совпадения результатов не обнаружено, выполняется оператор при операторе default , если оператор default отсутствует, то начинают выполняться операторы, следующие за всей конструкцией switch/case.