Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 3
Разветвленные алгоритмы.
Все алгоритмы в программировании разделяются на линейные и разветвленные. Линейные алгоритмы не допускают изменения порядка выполнения операторов, то есть операторы будут выполнены в той последовательности, в которой они были написаны в программе, и никак иначе. Разветвленные алгоритмы предусматривают выбор маршрута выполнения программы в зависимости от истинности или ложности некоторых условий.
Таким образом, разветвленные алгоритмы предполагают наличие операторов, относящихся к конструкциям принятия решений.
1. Условный оператор
Одним из операторов, реализующих конструкции принятия решений является условный оператор. Его формат:
if (выражение) оператор;
если оператор, выполняемый при истинности условия (или выражения) единственный, или:
if (выражение) {оператор1;
оператор2;
………….
операторN;
} //end if
если таких операторов несколько.
В данном случае выражение является любым выражением, значение которого приводимо к целочисленному значению. Если его значение отлично от нуля (истинно), то оператор будет выполняться.
При необходимости сравнить выражение с некоторым значением следует использовать операторы отношения = = или != в виде
if (выражение = = значение) оператор;
или
if (выражение != значение) оператор;
оператор; может быть как простым, так и составным.
Оператор
if (выражение != 0) оператор;
эквивалентен оператору
if (выражение) оператор;
Нельзя писать
if (выражение = значение) оператор;
Это одна из наиболее распространенных и трудно обнаруживаемых ошибок. Результатом такого использования операции присваивания = будет сравнение выражение со значением с последующим присваиванием выражению значения, с которым оно сравнивалось. Однако не следует этого делать даже целенаправленно.
Пример. Использование оператора if:
#include <stdio.h>
main ()
{ char sym;
int ok;
printf(“Введите символ от a доm:”);
scanf(“%c”,&sym);
ok=(a<=sym)&&(sym<=m);
if(!ok)
printf(“Некорректный ввод!\n”);
return ok; }
Выражение, служащее условием, заключается в кругдые скобки.
Оператор if может иметь две ветви, одна из которых является альтернативной. Такая схема называется «развилка». Для организации структуры «развилка» служит оператор else, являющийся расширением оператор if или его альтернативной частью. Развилка работает следующим образом: проверяется на истинность выражение, если оно истинно, выполняется оператор1, если ложно оператор2:
if (выражение) оператор1;
else оператор2;
если после if и else следуют простые (одиночные) операторы, или
if (выражение) {оператор1;
оператор 2;}
else {оператор3;
оператор4;}
если операторы составные.
Точка с запятой после закрывающей скобки } не ставится.
В качестве внутренних операторов оператора if могут использоваться любые операторы, в том числе и условные. Другими словами, в операторе if допустимо использование вложенных кончтрукций:
if (выражение1)
оператор1;
else if (выражение2)
оператор2;
else if (выражение3)
оператор3;
else if (выражениеN)
операторN;
else //необязательная часть, выполняется, если первое выражение не истинно
оператор_по_умолчанию;
Оператор if-else можно записать более компактно, не нарушив его функционального назначения. В этом случае он будет называться условным выражением:
выражение1? выражение2 : выражение3;
Программа вычисляет выражение1, если оно истинно, выполняется выражение2, если ложно, выполняется выражение3.
2. Оператор множественного выбора
Если в программе необходимо выбрать один из многочисленных выриантов, то вместо вложенной конструкции if более целесообразно примениять оператор-переключатель switch, иначе называемый оператором множественного выбора.
Его синтаксис:
switch (выражение)
{case значение1: оператор01;
оператор02;
оператор0N;
break;
case значение2: оператор11;
оператор12;
оператор1N;
break;
case значениеN: оператор21;
оператор22;
оператор2N;
break;
default: // необязательный компонент
оператор_по_несравнению; // если не было ни одного совпадения.
}
Здесь для выполнения выбирается тот вариант (группа операторов), значение которого совпадет со значением выражения. Выражение и значения должны быть символьного или целого типов.
Использованная литература:
Ашарина, И.В. Основы программирования на языках С и С++ / И.В. Ашарина М.: Горячая линия-Телеком, 2002. 207 с.