Лабораторная работа № 4
Тема – программирование разветвляющихся вычислительных процессов с использованием операторов, реализующих базовые структуры ветвления.
Цель работы - освоить на практике программирование несложных разветвляющихся вычислительных процессов, используя для этого простейшие операторы управления, в частности условный оператор и оператор безусловного перехода.
Задание 1.
Выполните учебные примеры.
ПРИМЕР 1. Составить программу вычисления y по формуле
при заданном значении x. Напечатать значения x и y.
Указание. Программу составить двумя способами:
а) с помощью условного оператора;
б) с помощью оператора безусловного перехода.
Решение.
1. Расчётные формулы:
2. Тесты для проверки программы:
3. Исходные данные: x = 0,5==> 0.5¿;
x = 0,0 ==> 0.0¿;
x = - 0,5 ==> -0.5¿;
4. Блок - схема:
![]() |
5. Программа:
Program Prim1; { Разветвляющийся вычислительный процесс}
{ С помощью условного оператора }
Var x, y, d: real; { Описание переменных }
Begin {Начало основного блока}
WriteLn;
WriteLn(' Введите значение x');
ReadLn(x); { Ввод x }
d:= sin(x); { Вычисление d }
if x>0 then y:= d / x { Вычисление y для случая x>0 }
else y:= Sqrt(1.0 + d*d);{ Вычисление y для случая x<=0}
WriteLn;
WriteLn(' x=',x:5:2,' y=',y:8:4); { Вывод x, y }
End. { Конец программы}
6. Вид печати:
x= 0.50 y= 0.9589
x= 0.00 y= 1.0000
x=-0.50 y= 1.1090
Program Prim1; { Разветвляющийся вычислительный процесс}
{ С помощью оператора безусловного перехода }
Var x, y, d: real; { Описание переменных }
Label 1,2; {Раздел меток}
Begin {Начало основного блока}
WriteLn;
WriteLn(' Введите значение x');
ReadLn(x); { Ввод x }
d:= sin(x); { Вычисление d }
if x>0 then goto 1;
y:= Sqrt(1.0 + d*d);{ Вычисление y для случая x<=0}
goto 2;
1: y:= d / x { Вычисление y для случая x>0 }
2: WriteLn;
WriteLn(' x=',x:5:2,' y=',y:8:4); { Вывод x, y }
End. { Конец программы}
6. Вид печати:
x= 0.50 y= 0.9589
x= 0.00 y= 1.0000
x=-0.50 y= 1.1090
ПРИМЕР 2. Вычислить z по формуле
при заданном значении x. Напечатать значения x, z.
Решение.
1. Расчётные формулы:
2. Тесты для проверки программы:
3. Исходные данные: x =-0,5 ==> -0.5¿;
x =0,0==> 0.0¿;
x =1,0 ==> 1.0¿;
x =2,0==> 2.0¿;
x =3,0 ==> 3.0¿;
4. Блок - схема:
5. Программа:
Program Prim2; { Пример разветвляющейся программы }
Var x, t, z: real; { Описание переменных }
Begin {Начало основного блока}
WriteLn(' Введите значение x');
ReadLn(x); { Ввод x }
WriteLn(' Введено x=',x:5:2); { Вывод x }
if x<0.0 then t:= 10 + x { Вычисление t для случая x<0 }
else if x<=2.0 then
t:= 2.0 + x*x { Вычисление t для случая x>=0 и x<=2}
else t:= 2.0 * x; { Вычисление t для случая x > 2 }
z:= (1/4)* sin(x) + t; { Вычисление z }
WriteLn;
WriteLn(' Вычислено z=',z:7:3); { Вывод z }
End. { Конец программы}
6. Вид печати:
Введено x=-0.50
Вычислено z= 9.380
Введено x= 0.00
Вычислено z= 2.000
Введено x= 1.00
Вычислено z= 3.210
Введено x= 2.00
Вычислено z= 6.227
Введено x= 3.00
Вычислено z= 6.035
ПРИМЕР 3. Вычислить при заданных значениях a, b. Напечатать значения a, b,c.
Решение.
1. Расчётные формулы:
2. Тесты для проверки программы:
1. Исходные данные: a = 0, b = 0 ==> 0 0 ¿;
a = 0,2, b = 1,1 ==> 0.2 1.1 ¿;
a =2, b =2 ==> 2 2 ¿;
4. Блок - схема:
![]() |
5. Программа:
Program Prim3; { Пример вычисления минимального значения.
Дано: a,b. Промежуточные значения - x,y,z.
Результат - с. }
Var a, b, x, y, z, c: real; { Описание переменных }
Begin {Начало основного блока}
WriteLn(' Введите a,b:');
ReadLn(a,b); { Ввод a и b}
WriteLn;
WriteLn('a=',a:6:2,' b=',b:6:2);{ Вывод исходных данных}
x:= a*a + b*b; { Вычисление }
y:= x / exp(x); { промежуточных }
z:= Sqrt(x)/4; { величин }
if y<=z then c:= y { Вычисление c при выполнении условия y<=z }
else c:= z; {Вычисление c при выполнении условия y > z}
WriteLn;
WriteLn(' Вычислено c=',c:10:5); {Вывод результата}
End. { Конец программы}
6. Вид печати:
Введено a= 0.00 b= 0.00
Вычислено c= 0.00000
Введено a= 0.20 b= 1.10
Вычислено c= 0.27951
Введено a= 2.00 b= 2.00
Вычислено c= 0.00268
ПРИМЕР 4. Разработать программу, которая вычисляет для целых значений аргумента одну из заданных функций в указанной точке:
а) если x равен –5, -4, -3, -2, -1, 0, то ;
б) если x равен 1, 2 то ;
в) если x равен 3, 4, 5, 6, 7, 8, 9, 10, то ;
г) в остальных случаях .
Напечатать значения x, y.
Указание. Программу составить двумя способами:
а) с помощью условного оператора;
б) с помощью оператора выбора.
Решение.
1. Расчётные формулы:
2. Тесты для проверки программы:
;
.
;
.
;
.
;
.
;
.
3. Исходные данные: x = -16==> -16¿;
x = -3==> -3¿;
x =2 ==> 2¿;
x =7 ==> 7¿;
x =36 ==> 36¿;
4. Блок - схема:
![]() |
5. Программа:
Program Prim4; { Разветвляющийся вычислительный процесс}
{с помощью условного оператора}
Var x: Integer; { Описание переменных}
y: Real;
Begin
Write('Введите x');
ReadLn(x); { Ввод x }
if (-5<=x) and (x<=0) then y:= sin(x)
Else
if (x=1) or (x=2) then y:= x*x*x
Else
if (3<=x) and (x<=10) then y:= sqr(x)
Else
y:= sqrt(abs(x));
WriteLn;
WriteLn(' x=', x:3,' y=',y:8:5); {Печать значений x, y }
End. { Конец программы}
6. Вид печати:
x= -16 y= 4.00000
x= -3 y=-0.14112
x= 2 y= 8.00000
x= 7 y=49.00000
x= 36 y= 6.00000
Program Prim4; { Разветвляющийся вычислительный процесс}
{с помощью оператора выбора}
Var x: Integer; { Описание переменных }
y: Real;
Begin {Начало основного блока}
WriteLn(' Введите значение x');
ReadLn(x); { Ввод x }
Case x of
-5..0: y:= sin(x);
1, 2: y:= x*x*x;
3..10: y:= sqr(x);
else y:= sqrt(abs(x));
end;
WriteLn;
WriteLn(' x= ', x:3,' y=',y:8:5); {Печать значений x, y }
End. { Конец программы}
6. Вид печати:
x= -16 y= 4.00000
x= -3 y=-0.14112
x= 2 y= 8.00000
x= 7 y=49.00000
x= 36 y= 6.00000
Задание 2. Самостоятельно составьте программы для решения задач, отладбте их. Результаты проверьте в MS EXCEL.
Варианты задания
Задача 1. Составить программу вычисления и печати указанных величин при произвольных значениях исходных данных.
.
Задача 2. Составить программу вычисления и печати указанной величины при произвольных значениях исходных величин.
Задача 3. Составить программу для вычисления наибольшего или наименьшего значения из двух значений указанных выражений при произвольных значениях исходных величин, причем каждое выражение вычислять не более одного раза.