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

10. Оператор выбора

Для разветвления в программе более чем в 2-х направлениях, можно использовать оператор выбора:

Case <Выражение - ключ выбора> OF <Список выбора> End

Или

Case <Выражение - ключ выбора> OF <Список выбора>

Else <Операторы> End

Ключ выбора - выражение любого порядкового типа;

<Список выбора> - одна или более конструкций вида:

<Константа выбора> : <Оператор>;

<Константа выбора> - выражение того же типа, что и ключ выбора;

Оператор выбора работает следующим образом: вычисляется значение выражения <ключ выбора>, а затем в последовательности операторов <список выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает работу. Если в списке выбора нет такой константы, то управление передается оператору, стоящему за ключеваым словом Else. Часть Else может отсутствовать и в этом случае оператор выбора завершает свою работу.

11. Операторы циклов

В языке ТР имеются три различных оператора, с помощью которых организуются циклические (повторяющиеся) фрагменты программ.

11.1 Оператор цикла с предусловием

Оператор цикла с предусловием имеет вид:

While <условие> Do <оператор>;

где <условие> - логическое выражение.

Если логическое выражение принимает значение TRUE (истина), то выполняется оператор, стоящий после ключевого слова Do, в противном случае оператор While прекращает свою работу. На месте одного оператора может располагаться группа операторов, заключённых в операторные скобки (Begin ... end).

    1. Оператор цикла с постусловием

Оператор цикла с постусловием имеет вид:

Repeat <Тело_цикла> Until <условие>

где <Тело цикла> - последовательность операторов ТР;

<условие> - логическое выражение.

Операторы "тела цикла" выполняются хотя бы один раз, после чего

вычисляется значение логического выражения и если это значение FALSE,

то операторы "тела цикла" повторяются, в противном случае оператор

цикла завершает свою работу.

    1. Оператор цикла с параметром

Оператор цикла с параметром имеет вид:

For <параметр_цикла> := <нач.знач.> To < конеч.знач.> Do <оператор>;

где <параметр_цикла> - переменная любого порядкового типа;

<нач.знач.> - начальное значение - выражение того же типа;

<конеч.знач.> - конечное значение - выражение того же типа;

На месте одного оператора может располагаться группа операторов, заключённых в операторные скобки (Begin ... end).

Для более гибкого управления операторами циклов For, While, Repeat в ТР введены две процедуры:

BREAK - реализует немедленный выход из цикла; действие процедуры заключается в передаче управления оператору, стоящему сразу за после последнего оператора цикла.

CONTINUE - обеспечивает досрочное завершение очередного прохода цикла, что эквивалентно передаче управления в самый конец циклического оператора.

Лабораторная работа №3

Циклические алгоритмы и программы

Цель работы:

1. Построение схем циклических алгоритмов;

2. Использование операторов циклов (повторений):

Типовой пример

Составить схему алгоритма и программу для вычисления значений

функции Y для значений переменной х, изменяющейся в интервале от a до b

с заданным шагом h.

Решение

Так как в языке Pascal нет стандартной функции извлечения корня любой степени кроме квадратного, для вычисления функции Y воспользуемся переходом к функциям Exp и Ln.

При программировании необходимо учесть, что выражение, стоящее под знаком Ln, может быть только положительным: (6x2-x3) > 0.

Исходными данными в этой задаче являются значения a,b и h.

Начальное значение х принимаем равным а (х:=а). Каждое следующее значение х вычисляется по формуле х:=х+h. Вычисления функции Y для новых значений х заканчиваются, когда значение х становится больше, чем заданное значение b.

Схема алгоритма и программа вычислений зависит от того, какой оператор цикла используется в программе. Рассмотрим три различных варианта решения поставленной задачи.

Вариант 1

Схема алгоритма с использованием цикла While ... Do

нет

да

Текст программы

{Лабораторная работа 3}

{Программирование циклов с использованием оператора WHILE}

{Студенты гр. ..... Фамилии …}

Uses crt; {Подключение стандартного модуля TP}

Var x,y,H,A,B: real;

BEGIN Clrscr; { Очистка экрана}

Writeln(' Введите A B H'); read(A,B,H);

x:=A;

While x<=B Do

Begin

if (6*x*x-x*x*x)<=0 then

Writeln('При x= ',x:5:3,' под знаком логарифма недопустимое значение')

Else begin

y:= Exp (1.0/3.0* Ln(Abs(6*x*x-x*x*x)));

Writeln('x=',x:8:3,' y=',y:8:3);

end; {Конец else}

x:=x+H;

Еnd; {Конец while} Readkey; { Ожидание нажатия любой клавиши}

END.

Вариант 2

Схема алгоритма с использованием цикла Repeat ... Until

нет

да

нет

да

Текст программы

{Лабораторная работа 3}

{Программирование циклов с использованием конструкции REPEAT…UNTIL}

{Студенты гр. ... Фамилии ...}

Uses crt; {Подключение стандартного модуля TP}

Var x,y,A,B,H: real;

BEGIN Clrscr; { Очистка экрана}

Writeln(' Введите A B H'); readln(A,B,H);

x:=A;

Repeat

if (6*x*x-x*x*x)=<0 then

Writeln('При x= ',x:5:3, ' под знаком логарифма недопустимое значение')

Else begin

y:= Exp(1.0/3.0* Ln(Abs(6*x*x-x*x*x)));

Writeln(' x= ',x:8:3,' y= ',y:8:3);

end;

x:=x+H;

Until x>B; Readkey;{Ожидание нажатия любой клавиши}

END.

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