Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
17
Добавлен:
01.04.2025
Размер:
5.06 Mб
Скачать

Лабораторная работа №4. Разветвляющиеся вычислительные процессы. Условный оператор if.

Цель: Научиться применять оператор ветвления IF при составлении программ.

Ход работы.

Формат оператора:

If выражение then оператор_1 [else оператор_2 ]

Сначала вычисляется выражение, которое должно иметь логический тип. Как правило, в выражении используются знаки операций отношения (<, >, =,<>, <=, >=). Если требуется проверить несколько условий, их объединяют знаками логических операций and (и), or(или), xor (исключающее ИЛИ) и not (отрицание).

Если выражение имеет значение true, выполняется первый оператор, иначе – второй. Ветвь else может отсутствовать. После выполнения операторов из соответствующей ветви управление передается оператору, следующему за условным.

Задача 1. Вычисление значения функции

Пример программы, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика на интервале [-3;3].

Начинать решение задачи необходимо с четкого описания ее исходных данных и результатов. В данном случае это очевидно: исходными данными является вещественное значение аргумента х, который определен на интервале [-3;3], а результатом – вещественное значение функции у. Поэтому для представления этих величин в программе следует выбрать тип real.

Перед написанием программы следует составить алгоритм ее решения – сначала в общем виде, а затем постепенно детализируя каждый шаг. Такой способ, называется нисходящей разработкой, позволяет создавать простые по структуре программы. Сначала запишем функцию в виде формул:

program calc_fun;

var x,y:real;

begin

writeln('Введите значение аргумента:');

readln(x);

if (x<-3) or (x>3) then begin

writeln('Значение должно принадлежать интервалу [-3;3]');

exit

end;

if x<-2 then y:=-2*x-5

else if x<0 then y:=-sqrt(1-sqr(x+1))-1

else if x<1 then y:=x-1

else y:=sqrt(1-sqr(x-2));

writeln('Для x=',x:6:2, ' значение функции y=',y:6:2);

readln;

end.

Задача 2.2. Выстрел по мишени

…………………………………………………………………………………………………

Дана заштрихованная область и точка с координатами (х,у). Написать программу, определяющую, попадает ли точка в область. Результат вывести в виде текстового сообщения.

Запишем условия попадания точки в область в виде формул. Область можно описать как круг, пересекающийся с треугольником. Точка может попадать либо в круг, либо в треугольник, либо в их общую часть:

;

Первое условие задает попадание точки в круг, второе – в треугольник. Переменные х,у – вещественного типа. Программа для решения задачи выглядит следующим образом:

program shot;

var x,y:real;

begin

writeln ('Введите значения x,y:');

readln(x,y);

if (sqr(x)+sqr(y)<=1) or (x<=0) and (x<=0) and(y<=0) and(y>=-x-2)

then

writeln ('Точка попадает в область')

else

writeln('Точка не попадает в область');

readln;

end.

Контрольные вопросы

1. Какой алгоритм называется разветвляющимся?

2. Что такое ветвь алгоритма?

3. Какое условие называется составным?

4. Верно ли, что в качестве метки можно использовать любое положительное целое число?

5. Обязательно ли описывать все метки, которыми помечены операторы программы?

6. Верно ли, что в разделе меток все описываемые метки должны быть перечислены по возрастанию?

7. Допустимы ли в Паскале следующие составные операторы?

а) begin end;

б) begin x:=0 end;

в) begin; end

8. Какое выражение называется булевым? Почему?

9. Какая форма условного оператора называется полной? Краткой?

10. Какие условные операторы называются вложенными? Как они применяются?

11. Как применяется оператор выбора? Когда он особенно необходим?

12. Для чего нужен оператор безусловного перехода? Почему он так называется?