Частина тексту файла (без зображень, графіків і формул):
Лабораторна робота №2
Тема: Програмування алгоритмів з розгалуженням
Мета роботи: Засвоїти методику програмування однієї з базових структур алгоритмів – розгалуженої; засвоїти запис констант. Змінних та операторів.
Завдання: Дано умову Р і дві функції від двох змінних Z(X;Y) та W(X;Y). Необхідно написати та перевірити блок-схему обчислення значення змінної Q за таким алгоритмом: Якщо умова Р виконується, то Q=Z(X;Y) інакше Q=W(X;Z). Вивести на екран відповідне повідомлення: «Умова Р (не) виконується» та значення змінної Q. За розробленою блок-схемою написати та виконати програму. Перед розробкою блок-схеми виконати спрощення заданих виразів та введення проміжних змінних для зменшення кількості математичних операцій. Спосіб введення даних - з клавіатури, потокове присвоєння змінним, опис констант – обирається студентом.
Умова Р: -2<=X<4, Y<>0; функції двох змінних:
Q=Z(X;Y) =((1-exp(2*x))*sqrt(exp(y)-exp(-y))/(2*((1-exp(y)+ sqrt(cos(y))))
Q=W(X;Y)= ((1-exp(x))*cos(y))/(1+exp(y)).
Аналіз даних:
Вхядні дані Х, У – дійсні.
Вихідні дані: змінні Z, W – дійсні, повідомлення «умова Р виконується», та «Умова Р не виконується».
Для спрощення виразів та зменшення математичних операцій, ввожу такі заміни:
t1:=1-exp(2*x);
t2:=1-exp(y);
t3:=sqrt(cos(y)); тоді
Z(X;Y):=(t1*sqrt(exp(y)-exp(-y))/(2*(t2+t3)));
W(X;Y) :=((1-exp(x))*cos(y))/(1+exp(y)).
Ескіз формату введення/виведення даних: «Введіть значення Х та У : Х,У: -2. 3 <Enter>. Умова Р не виконується.
Q=xxxxxxx
Розробка структури даних:
Ім’я змінної
в задачі
Ім’я змінної
в програмі
Тип
Призначення
X, Y
X,Y
дійсний
Вхідні дані, аргументи
ф-ції
Q
Q
дійсний
Вихідні дані
t1
t1
дійсний
1-exp(2*x)
t2
t2
дійсний
1-exp(y)
t3
t3
дійсний
sqrt(cos(y))
Р
__________
умова
Алгоритм програми:
Н
Текст програми:
Program lab2;
var x,y,q,t1,t2,t3,P:real;
BEGIN
repeat
Begin
t1:=1-exp(2*x);
t2:=1-exp(y);
t3:=sqrt(cos(y));
writeln('Vvesty znachenja x,y');
writeln('x='); readln(x);
writeln('y='); readln(y);
If ((-2<=x) and (x<4) and (y<>0))
then
if (y=0) then
writeln('umova vikonyetsja ale fynktsija ne isnye')
else
begin
q:=(t1*sqrt(exp(y)-exp(-y))/(2*(t2+t3)));
write('ymovy vukonano q=',q);
end
else
if (y=0) then
writeln('umova ne vikonane, funktsija ne isnue')
else
begin
q:=((1-exp(x))*cos(y))/(1+exp(y));
writeln('ymovy vukonano q=',q)
end;
write('vvedit 1 shob povtorutu rozrahonok, 0 shob zavershitu programy');
read(P);
end;
until (P=0)
end.
Тестування та налагодження програми:
Під час написання тексту програми були допущені помилки в написанні математичних виразів, зокрема з написанням замін. Були допущені типові пилки – пропуски крапки з комою та дужок.
Приклад роботи програми:
/
Висновок: під час розробки програми мною було введено в математичні вирази спрощення. Був розроблений алгоритм що містить в собі умову та має циклічну структуру. Під час компіляції програми були виявлені орфографічні помилки в написанні головних команд, пропущені розділові знаки. Під час тестуванні програми був виявлений наступний недолік: невиконання другорядної умови. Також був доданий оператор циклу. На даний момент програма функціонує нормально і є відлагодженою.