Основным средством разработки разветвленных структур алгоритмов в Turbo Pascal являются условные операторы if и case. С их помощью можно влиять на последовательность выполнения операторов программы.
Оператор if предназначен для выполнения одного из двух возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, то есть отсутствовать).
В качестве условия выбора должно быть логическое выражение; Например, A>B; (A+X)<>N; (A>B) and (B>C).
Оператор if может принимать одну из следующих форм:
1. if <условие> then <оператор 1> else <оператор 2>;
{если <условие> то <оператор 1> иначе <оператор 2>;}
2. if <условие> then <оператор 1>;
{если <условие> то <оператор 1>;}
Оператор if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение есть true (истина), то выполняется <оператор 1>, указанный после ключевого слова then, иначе выполняется <оператор 2>, указанный после ключевого слова else. Во втором случае, если результат вычисления выражения есть false (ложь), то выполняется оператор, следующий за оператором if.
Например:
·····························
if x>y then max:=x else max:=y;
·····························
При x>y выполняется оператор max:=x, при x£y выполняется оператор max:=y
Пример оператора if без else:
·····························
if x>y then writeln(x);
·····························
При x>y выполняется оператор writeln(x), иначе выполняется оператор, следующий за оператором if.
Часто возникает необходимость выполнять в одной из ветвей (или в обеих ветвях) условного оператора несколько команд. В этом случае используется составной оператор.
Составной оператор – группа операторов, помещенных между ключевыми словами begin и end.
Например:
if x>y then
begin { начало составного оператора }
max:=x;
writeln(‘max=’, max);
end { конец составного оператора }
else
x:=x+1;
В качестве оператора в одной ветви или в обеих ветвях могут быть использованы условные операторы. Такие операторы называются вложенными.
Например:
if x< -3 then y:=x+1 else
if x>3 then y:=x*x else y:=y*y;
Примечание. Служебное слово else всегда ассоциируется с ближайшим по тексту if.
2.6.2. Оператор выбора CASE
Оператор case позволяет сделать выбор из произвольного числа имеющихся вариантов. С его помощью можно сопоставить различным значениям некоторого выражения, называемого селектором (от selection – выбор), соответствующие им операторы.
Оператор case имеет следующий формат:
case <выражение-селектор> of
константа или список констант №1 : <оператор 1>;
константа или список констант №2 : <оператор 2>;
·····························
константа №N : <оператор N>
else <альтернативный оператор>
end;
Оператор case работает следующим образом. Сначала вычисляется значение выражения селектора, затем выполняется тот оператор, константа выбора которого равна текущему значению селектора. Если ни одна константа не равна значению селектора, то выполняется альтернативный оператор, стоящий за словом else. Альтернативный оператор можно не писать.
Например:
write(‘Введите значение n =’);
readln(n);
case n of
1 : y:=x;
2 : y:=x*x;
3 : y:=x*x*x
else y:=0
end;
writeln(‘y=’, y);
При n=1 выполняется оператор y:=x.
При n=2 выполняется оператор y:=x*x.
При n=3 выполняется оператор y:=x*x*x.
При любых других значениях n выполняется оператор y:=0.
После завершения оператора case выполняется оператор writeln(‘y=’, y). Кроме одиночных констант могут быть заданы списки и/или диапазоны значений.
Например:
case n of
0,1..4 : y:=x;
2,5 : y:=x*x;
3 : y:=x*x*x
end;
При использовании оператора case должны выполняться следующие правила:
– значение селектора должно принадлежать дискретному типу; для целого типа integer оно должно лежать в диапазоне -32768..32767;
– все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом селектора;
– все константы в альтернативах должны быть уникальны в пределах оператора case;
– диапазоны не должны пересекаться и не должны содержать констант, указанных в данной альтернативе или в других альтернативах.
2.6.3. Оператор GOTO
Оператор безусловного перехода goto означает «перейти к» и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий оператор, а какой-нибудь другой. Метка объявляется в разделе описания меток и может содержать как цифровые, так и буквенные символы. Метка отделяется от помеченного оператора двоеточием.
Writeln (‘Данные не введены, выполните пункт N1’);
else
begin
{ Операторы вычисления и вывода значения функции }
if x>0 then y:=1/x else y:=x*x;
writeln(‘при х=’, x:7:2, ‘ y=’, y:7:2)
end
end;
3: Exit { Выход из программы }
end; { end case }
goto M1;
end. { Конец программы}
Варианты заданий
1. Вычислить объем тела со сторонами A, B, C и определить, является ли данное геометрическое тело кубом.
2. Вычислить площадь треугольника со сторонами А, В, С. Перед вычислением площади проверить условие существования треугольника с заданными сторонами.
3. Вычислить площадь треугольника со сторонами A, B, C. Определить, является ли треугольник равнобедренным.
4. Вычислить площадь прямоугольника со сторонами A и B и определить, является ли данная фигура квадратом.
5. Составить программу нахождения корней квадратного уравнения у=ах2+bх+с.
6. Определить, можно ли сделать круглую заготовку с заданным радиусом R из квадратного листа фанеры с заданной стороной A.
7. Определить, хватит ли имеющейся суммы S на покупку N-го количества товара (при известной цене товара).
8. Определить, можно ли сделать две квадратных заготовки со стороной А из листа железа прямоугольной формы со сторонами В и С.
9. Определить, достаточно ли имеющейся ткани для изготовления изделий двух видов, если известны: расход ткани на каждое изделие, количество изделий каждого вида, количество имеющейся ткани.
10. Рассчитать сумму оплаты за потребленную энергию, если известны: стоимость 1 квт\час, расход энергии, коэффициент льгот (льготы могут отсутствовать).
11. Определить, достаточно ли бензина для поездки, если известны: длина пути, количество бензина в баке и расход бензина на 1 км.
12. Определить, будет ли начислена студенту стипендия по результатам экзаменов (стипендия начисляется, если все экзамены сданы на «хорошо» и «отлично»).
13. Определить, будет ли зачислен абитуриент в студенты по результатам вступительных экзаменов, если известны: проходной балл; количество баллов, набранных абитуриентом по каждому экзамену.
14. Определить, изделия какой из двух групп товаров выгоднее сшить из одного рулона ткани, если известны: расход ткани на каждое изделие и цена готового изделия, количество метров в рулоне.
15. Определить выполнен ли план по продаже товара за день, если известны: план продажи (в рублях), количество проданного товара и цена товара.
16. Определить, продажа какой из двух валют составила большую прибыль, если известны: курс покупки, курс продажи, количество продаж по каждой валюте.
17. Определить наибольшую выручку от продажи трех видов товаров, если известны: цена товара; количество проданных товаров каждого вида.
18. Определить сколько корней имеет уравнение y=ах2+вх+с.
19. Определить, является ли число А четным или нечетным.
20. Вычислить площадь треугольника со сторонами A, B, C и определить, является ли данный треугольник равносторонним.