- •Лекция 2. Переменные
- •Типы переменных
- •Комментарии
- •Лекция 3. Операции и операнды. Выражения. Стандартные функции и процедуры Операции и операнды. Выражения
- •Стандартные функции и процедуры
- •Лекция 4.Операторы.Ввод-вывод информации. Операторы
- •Ввод-вывод информации
- •Лекция 5.Создание консольного приложения
- •Лекция 6. Управляющие конструкции. Управляющая конструкция if
- •Самостоятельная работа.
- •Цикл for
- •Самостоятельная работа.
- •Инструкция (цикл) while
- •Самостоятельная работа.
- •Оператор цикла с постусловием repeat
- •Самостоятельная работа.
- •Оператор выбора case
- •Оператор перехода goto
- •Лекция 7.Строки Строковые типы
- •Стандартные подпрограммы для строк
- •Строковые выражения
- •Лекция 8. Преобразования типов Преобразования типов
- •Другие преобразования
- •Подстановка значений
- •Глобальная переменная DecimalSeparator
Самостоятельная работа.
Найти сумму ряда:
с погрешностью e=0.001.
Оператор выбора case
В отличие от оператора if, оператор ease позволяет выбрать и выполнить один оператор не из двух, а от нескольких операторов. В общем случае оператор case может быть записан следующим образом:
case < выражение > of
< список _меток_1 > : < оператор 1 >;
< список _меток_2 > : < оператор2 >;
.....................................
< список _меток_N> : < операторN >;
else
< оператор >
end;
В приведенном формате оператора < выражение > - это выражение порядкового типа ,определяющее дальнейший ход выполнения программы. Использова¬ние порядкового типа означает, что нельзя использовать выражения, возвращающие действительные числа или строки. Список меток представляет собой список констант, разделенных запятыми. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константы диапазона, разделенные двумя точками. Например, список 1.2,3,4 можно записать как 1..4.
Выполняется оператор case следующим образом.
В начале вычисляется значение выражения, следующего за словом case. Далее полученное значение последовательно сравнивается с константами из списков меток, стоящих перед двоеточиями.
Если значение выражения совпадает с константой из какого-либо списка меток, то выполняется соответствующий этому списку меток оператор. На этом выполнение оператора case завершается. Заметим, что в качестве оператора может быть использован составной оператор.
Если значение выражения не совпадает ни с одной константой из всех списков меток,то выполняется оператор, стоящий за зарезервированным словом else.
Раздел else не обязательно должен присутствовать в операторе case. Если он отсутствует и значение выражения не совпало ни с одной константой из списков меток, то ни один оператор не будет выполнен.
Пример 5.
Составить программу выводящую на экран дисплея название времени года, в зависимости от введенного номера месяца.
Решение
При решении данной задачи оператор case может быть записан различными способами. В начале рассмотрим простейший случай, когда списки меток представляю собой непосредственное перечисление номеров месяцев.
Программа
program 5;
{$APPTYPE CONSOLE}
Uses
SynUtils;
Var
n:integer;
s:string;
Begin
writeln('Enter n');
readln(n);
case n of
1,2,12 :s:='Winter';
3,4,5 :s:='Spring';
6,7,8:s:='Summer';
9,10,11:s:='Autumn'
End;
writeln(s);
readln
End.
Результат работы программы
Enter n
3
Spring.
Для данной задачи в операторе case могут быть использованы диапазоны:
case n of
1,2,12 :s:='Winter';
3..5 :s:='Spring';
6..8:s:='Summer';
9..11:s:='Autumn'
End;
При использовании раздела else оператор case примет следующий вид:
case n of
3..5 :s:='Spring';
6..8:s:='Summer';
9..11:s:='Autumn'
else :s:='Winter';
End;
Оператор перехода goto
Оператор перехода goto — это простой оператор, передающий управление в программе на другой оператор, перед которым стоит метка, указанная в операторе goto.
В общем виде оператор записывается следующим образом:
goto < метка >;
Метка в Object Pascal - это произвольный идентификатор либо целое число без знака. Любая метка должна появиться в разделе описания меток, прежде чем она встретится в теле программы. В разделе операторов метка может стоять только перед одним оператором и отделяется от него двоеточием. Нельзя передавать управление внутрь сложных операторов (if, case, операторы циклов), а также из вызывающей программы в подпрограмму.
Пример 6.
Составить программу для вычисления суммы с точностью до 0.001.
Решение
В программе используется алгоритм накопления суммы. Процесс является цикличес¬ким и прекращается, как только очередное слагаемое станет меньше 0.001 .
Программа.
Program 6;
{$APPTYPE CONSOLE}
uses
SysUtils;
Label lb1, 1b2;
var L:integer;s:real;
begin
s:= 0;
i := 1;
lb1:s:= s+l/sqr(i);
i := i+1;
if l/sqr(i) < 0.001 then goto lb2 else goto lb1;
1b2:writeln('s=' ,s);
readln
end.
Результаты работы программы
s= 1.61319070032792Е+0000
Оператор перехода следует использовать в исключительных ситуациях, поскольку он затрудняет понимание программы, делает ее запутанной и сложной в отладке. Использование операторов if, case и операторов цикла позволяет реализовать любой тип вычислительного процесса.
