Условный оператор. Оператор выбора
Автор: b1ngo.ъуъ • Сентябрь 28, 2021 • Практическая работа • 1,128 Слов (5 Страниц) • 509 Просмотры
Практическая работа № 2.
Условный оператор. Оператор выбора.
Для программирования ветвящихся алгоритмов в языке Си имеется несколько различных средств. К ним относятся рассмотренная выше операция условия ?:, условный оператор if и оператор выбора switch. Условный оператор. Формат условного оператора, следующий: if (выражение) оператор1; else оператор2; Это полная форма оператора, программирующая структуру полного ветвления. Обычно выражение — это некоторое условие, содержащее операции отношения и логические операции. Значение выражения приводится к целому и интерпретируется в соответствии с правилом: равно нулю — ложь, не равно нулю — истина. Если выражение истинно, выполняется оператор 1, если ложно — оператор 2. Необходимо обратить внимание на следующие особенности синтаксиса условного оператора: • выражение записывается в круглых скобках; • точка с запятой после оператора 1 ставится обязательно. Возможно использование неполной формы условного оператора if (выражение) оператор; Вот пример использования полной формы условного оператора для нахождения большего значения из двух переменных а и b: if(a>b) max=a; else max=b; Та же самая задача может быть решена с использованием неполного ветвления следующим образом: max=a; if(b>a) max=b; Теперь рассмотрим примеры программирования вложенных ветвящихся структур. Требуется вычислить функцию sign(x) — знак x, которая определена следующим образом: [pic 1] Пример 1. Алгоритм с полными вложенными ветвлениями: if(х<=0) if(x==0) y=0; else у=-1; else y=l;
[pic 2] Пример 2. Алгоритм с неполным ветвлением:
if(x<=0) if(x==0) y=0; else y=-l; [pic 3] Пример 3. Упорядочить по возрастанию значения в двух переменных а, b: if(a>b) {с=а; а=b; b=с; } cout<<"a="<<a<<"b="<<b; [pic 4] В данном примере использован составной оператор — последовательность операторов, заключенная в фигурные скобки. В С фигурные скобки выполняют роль операторных скобок по аналгии с Begin, End в Паскале. Обратите внимание на то, что перед закрывающей фигурные скобкой точку с запятой надо ставить обязательно, а после скобки точка с запятой не ставится. В следующем примере вернемся к задаче вычисления площади треугольника по длинам трех сторон. Добавим в программу проверку условия правильности исходных данных: а, b, с должны быть положительными, а сумма длин каждой пары сторон треугольника должна быть больше длины третьей Пример 4. // Площадь треугольника #include <iostream.h> #include <math.h> void main() {float a,b,c,p,s; cout<<"\na="; cin>>a; cout<<"\nb="; cin>>b; cout<<"\nc="; cin>>c; if (a>0 && b>0 && c>0 && a+b>c && a+с>b && b+c>a) { p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); cout<<"\nrПлощадь треугольника="<<s; } else cout("\n Неверные исходные данные."); } Оператор выбора (переключатель). Формат оператора выбора: switch (целочисленное_выражение) { case константа1: список___операторов; case константа2: слисок_операторов; ………………………………………….. default: список_операторов; } Последняя строка (default) может отсутствовать. Выполнение оператора происходит в следующем порядке: 1. Вычисляется выражение. 2. Полученное значение последовательно сравнивается с константами, помещенными после служебного слова case; при первом совпадении значений выполняются операторы, стоящие после двоеточия. 3. Если ни с одной из констант совпадения не произошло, то выполнятся операторы после слова default. Для того чтобы «обойти» выполнение операторов на последующих ветвях, нужно принять специальные меры, используя операторы выхода или перехода. Рассмотрим фрагмент программы, который переводит числовую оценку знаний ученика в ее словесный эквивалент. Согласно вузовской системе: 5 — «отлично», 4 — «хорошо», 3 — «удовлетворительно», 2 — «неудовлетворительно». Пример 5. #include <iostream.h> void main() { int ball; cout<<"\nВведите оценку: "; cin>>ball; switch (ball) { case 2: cout<<"\tЭто неудовлетворительно!\n"; break; case 3: cout<<"\tЭто удовлетворительно!\n"; break; case 4: cout<<"\t Это хорошо !\n"; break; case 5: cout<<"\tЭто отлично!\n"; break; default: cout<<"\tHeT такой оценки!\n"; } } Здесь используется еще один новый для нас оператор break — оператор выхода. Его исполнение завершает работу оператора выбора, т.е. происходит «обход» других ветвей. Вот два варианта результатов выполнения этой программы: Введите оценку: 3 Это удовлетворительно! Введите оценку: 7 Нет такой оценки! Если на всех ветвях убрать оператор break, то результат может выглядеть следующим образом: Введите оценку: 3 Это удовлетворительно! Это хорошо! Это отлично! Нет такой оценки! В этом случае выполнились операторы на всех ветвях, начиная с той, которая помечена константой 3. Возможны задачи, в которых такой порядок выполнения ветвей оператора выбора может оказаться полезным. В следующем фрагменте программы происходит возведение вещественного числа х в целую степень п, где п изменяется в диапазоне от 1 до 5. у=1.0; switch(n) { case 5:у=у*х; case 4: у=у*х; case 3: у=у*х; case 2: у=у*х; case 1: у=у*х; cout<<"y="<<y; break; default: соut<<"Степень больше 5"; } |
...