
- •Тема 3. Ветвящиеся алгоритмы (оператор выбора)
- •Пример 3.1п. Оператор выбора. Часть I.
- •Тема 4. Циклические алгоритмы (операторы цикла)
- •Пример 4.1.1п. Операторы цикла. Часть I.
- •Var n,f1,f2,fnew,I:integer; {раздел описания переменных,
- •Пример 4.1.2п. Операторы цикла. Часть I.
- •Var a,t,n:integer; {раздел описания переменных,
- •Часть II
- •Пример 4.2п. Операторы цикла. Часть II.
- •Пример 4
Тема 3. Ветвящиеся алгоритмы (оператор выбора)
В некоторых задачах формулируются условия, содержащие три и более исходов (альтернатив, вариантов действий). Использование условного оператора в подобных задачах, может приводить к созданию громоздких структур (ветвлений), поэтому желательно в таких случаях применять оператор выбора. Запись оператора выбора на ЯП Паскале выглядит следующим образом:
case <селектор> of
<список вариантов 1>: <оператор1>;
<список вариантов 2>: <оператор2>;
…
<список вариантов N>: <операторN>
else <альтернативный оператор>
end;
Оператор case состоит состоит из селектора (переменной целого, символьного или логического типа) и списка операторов, каждому из которых предшествует список вариантов, представляющий собой значение того же типа, что и селектор. Значения, входящие в список вариантов, разделяются запятыми, а диапазоны значений задаются с использованием "..". При работе оператора case будет выполнен тот входящий в него оператор, в чьём списке вариантов окажется текущее значение селектора. Если ни один из списков вариантов не содержит значения селектора, то выполняется оператор, стоящий за словом else (альтернативный оператор), если ветвь else отсутствует, то ничего не выполняется. После ":" допустимо выполнение только одного оператора, поэтому для выполнения нескольких операторов необходимо использовать составной оператор. Оператор выбора закрывается end. Входить внутрь оператора выбора по какому-либо оператору перехода goto, находящемуся вне оператора варианта, нельзя. Выполнение оператора варианта сводится к выполнению только одного из входящих в его состав операторов, поэтому переходить с одного из них на другой с помощью оператора перехода goto запрещается.
Пример 3.1п. Оператор выбора. Часть I.
В зависимости от остатка от деления N (целое число) на 8 выполнить следующее: если остаток равен 0, то значению N надо присвоить ноль; если остаток равен 1 или от 3 до 5, то N заменить противоположным значением; если остаток равен 2 или 6, то N - удвоить; если остаток равен 7, то значение оставить без изменений.
Сначала определимся, какие переменные понадобятся при написании программы. Понадобиться только одна переменная N, которая будет целого типа, а ее значение будет задаваться с клавиатуры. В качестве селектора в операторе выбора будет выражение, вычисляющее остаток от деления на 8. Для вычисления остатка от деления будет использоваться функция mod. В итоге получаем следующую программу.
Var N:integer; {раздел описания переменных, в котором регистрируется переменная N - типа integer}
begin {начало раздела операторов}
readln(N); {задание значения N через оператор ввода}
case N mod 8 of {начало оператора выбора, вычисление значение селектора}
0: N:=0; {присваивается N нулю в случае остатка равного 0}
1,3..5: N:=-N; {присваивается N противоположное значение, если остаток равен 1,3…5}
2,6: N:=2*N; {N удваивается, если остаток равен 2 или 6}
end; {закрытие оператора выбора}
writeln('New N=',N); {вывод на экран нового значения N}
readln; {ожидание нажатия клавиши Enter}
end. {конец программы}