Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Итог_Пособие C++.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.03 Mб
Скачать

1.5 Ветвления и циклы

1.5.1 Организация ветвлений в программах на С++

Как и во многих других языках программирования, в С++ имеется два оператора для реализации ветвлений: условный оператор и оператор выбора.

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

if (выражение) оператор1 [else оператор2]

В зависимости от условия, которое задаётся выражением в скобках, будет выполняться или оператор1, или оператор2, причём else оператор2 можно и опустить – тогда получится сокращённая форма условного оператора, позволяющая выполнять какие-либо действия только при определённом условии. Безусловно, оператор1 и оператор2 могут быть составными (в С++ обычно используют термин блок – группа операторов, заключённая в фигурные скобки).

Отметим, что в качестве условия можно использовать любое выражение – мы уже обращали внимание, что если результат вычисления выражения равен нулю, то это трактуется, как false (ложь), все значения, отличные от нуля, означают true (истина). Например, оператор if (x=0) x=1; является синтаксически правильным, но, скорее всего, это ошибка программиста, который вместо сравнения на равенство (два знака равно) записал обнуление переменной x – результат такого выражения трактуется как false, и значение 1 переменная x никогда не получит. Рекомендуем в настройках проекта включать максимальный уровень предупреждений (warnings) – это может помочь в обнаружении подобных ошибок.

Пример 1.3. Программа выполняет преобразование дюймов в сантиметры или сантиметров в дюймы в зависимости от введённых данных; предполагается, что вы укажете единицы измерения, добавляя i для дюймов и c для сантиметров (допустим, 5i или 4.3с). В программе как раз и проверяется введённая единица измерения. Если единица измерения указана некорректно, программа должна вывести нули.

// Пример 1.3 – использование оператора if

#include <iostream>

using namespace std;

int main() {

setlocale(LC_ALL, "Russian");

const float fac = 2.54; // коэффициент пересчёта

float x, in, cm; char ch = 0;

cout << "введите длину: "; cin >> x >> ch;

if (ch == 'i') { // inch - дюймы

in = x; cm = x*fac;

}

else if (ch == 'c') { // cm - сантиметры

in = x/fac; cm = x;

}

else

in = cm = 0; // неправильный ввод

cout << in << " in = " << cm << " cm\n";

system("pause"); return 0;

}

Оператор выбора (Оператор switch)

Предназначен для организации выбора из нескольких вариантов в зависимости от значения выражения в скобках. Синтаксис:

switch(выражение)

{

[case константное-выражение1:список-операторов1]

[case константное-выражение2:список-операторов2]

[default:[список-операторов]]

}

Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default. Программисту не обязательно предусматривать default, но его наличие иногда сможет устранить неожиданные ошибки, а иногда необходимо и по логике программы.

Для иллюстрации приведём фрагмент программы из предыдущего примера (перевод см в дюймы или наоборот) с использованием оператора switch вместо оператора if:

// альтернативный вариант реализации ветвления для примера 1.3

switch (ch) {

case 'i':

in = x; cm = x*fac; break;

case 'c':

in = x/fac; cm=x; break;

default:

in = cm = 0;

}

Здесь операторы break применяются для выхода из оператора switch, без них будут выполнены все операторы, следующие за выбранным вариантом, т.е. программа будет работать неверно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]