Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
830.55 Кб
Скачать

Самостоятельная работа.

Найти сумму ряда:

с погрешностью 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 и операторов цикла позволяет реализовать любой тип вычислительного процесса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]