Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
P_LAB_02_Программирование разветвляющихся алгор...doc
Скачиваний:
1
Добавлен:
11.08.2019
Размер:
104.96 Кб
Скачать

2. Оператор перехода goto.

Исполняемая часть программы является некоторым составным оператором, в котором составляющие его операторы выполняются в той последовательности, в которой они записаны. Если нужно изменить такую последовательность пользуются оператором перехода. Указанная в операторе перехода метка (label) стоит перед оператором, который нужно выполнить следующим, и отделяется от него двоеточием.

Метки, на которые ссылаются операторы GOTO, должны быть описаны в описательной части программы и они должны обязательно встретится где-нибудь в теле программы.

Метки, описанные в процедуре (функции) локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.

Любую алгоритмическую структуру можно оформить на языке Pascal без использования меток, например, приведенную ниже задачу можно решить используя операторы циклов (см. лабораторную работу №3).

Пример 3. Рассмотрим задачу, в которой необходимо вывести квадрат целого числа a <=100.

Label M1;

Var a : byte;

Begin

M1: write('a=’);

readln(a);

if a>100 then

begin

writeln('Ошибка, повторите ввод!’);

goto M1;

end;

writeln(sqr(a));

End.

Пример 4. Рассмотрим задачу вычисления выражения вида

ln((a*b)2), если a*b < 0

d = ln(a*b), если a*b > 0

0, если a*b = 0

Один из вариантов программы:

Uses Crt; {подключение модуля для работы с текстовым экраном (для версии Turbo Pascal)}

Var A,B,D: Real;

Begin

ClrScr; {процедура очистки экрана из модуля Crt}

Writeln('Введите исходные данные');

Write('A=');

ReadLn(A);

Write('B=');

Readln(B);

If A*B<0

Then D:=ln(sqr(A*B))

Else If A*B>0

Then D:=ln(A*B)

Else D:=0;

Writeln('D=',D);

ReadKey; {модуль Crt: функция ввода одного символа, производит задержку выполнения программы, ожидая нажатие любой клавиши}

End.

Порядок выполнения работы

1. Изучить описание лабораторной работы и ответить на контрольные вопросы.

2. Выполнить демонстрационные примеры 1 и 2 на ЭВМ.

3. В соответствии с полученным вариантом задания разработать алгоритм в виде блок-схемы, составить и проверить программу на ЭВМ.

4. Продемонстрировать результаты выполнения преподавателю.

5. Оформить отчет по лабораторной работе, защитить и сдать его преподавателю.

Варианты заданий

I

Разработать программу для вычисления арифметического выражения и вывода полученного результата. Ввод соответствующих исходных данных организовать с клавиатуры

1. .

2.

3. , xy>0

a= , xy<0

, xy=0

4. ln(x/y)+(x2+y)3, x/y>0

b= ln(|x/y|)+(x2+y)3, x/y<0

(x2+y)3, x=0

0, y=0

5. , i-нечетное, a>0

e= , i-четное, a<0

, иначе

6. m=max(x,y,z)/min(x,y)+5

7. n=min(x+y,y-z)/max(x,y)

8. k=max(min(x-y,y-x),0)

II

1. Даны два отрезка [a, b], [c, d] на прямой. Установить, имеют ли они общие точки или нет.

2. Напечатать координаты той из точек М1(a, b) и М2(c, d), которая расположена ближе к началу координат.

3. В какой четверти координатной плоскости находится точка с координатами x, y (xy0).

4. Если сумма двух различных чисел меньше единицы, то наименьшее заменить полусуммой, в противном случае меньшее заменить суммой.

5. Определить существует или нет треугольник со сторонами a, b, c, и если существует, то является ли он равносторонним, равнобедренным или разносторонним.

6. Даны три действительных числа. Определить, что больше сумма или произведение этих чисел. Если сумма больше произведения на число меньшее единицы, то вывести 0, и противном случае вывести 1.