СОДЕРЖАНИЕ
1. ЛАБОРАТОРНАЯ работа 1. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
1.1. Исходное условие и уточнение постановки задачи
1.2. Алгоритм
1.3. Программа
1.4. Результаты тестирования и выполнения программы
2. ЛАБОРАТОРНАЯ работа 2. Программирование линейных алгоритмов
2.1. Исходное условие и уточнение постановки задачи
2.2. Алгоритм
2.3. Программа
2.4. Результаты тестирования и выполнения программы
3.ЛАБОРАТОРНАЯ РАБОТА 3. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ. ТАБУЛИРОВАНИЕ ФУНКЦИИ
3.1. Исходное условие и уточнение постановки задачи
3.2. Алгоритм
3.3. Программа
3.4. Результаты тестирования и выполнения программы
4. ЛАБОРАТОРНАЯ РАБОТА 4. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ. ВЛОЖЕННЫЕ ЦИКЛЫ
4.1. Исходное условие и уточнение постановки задачи
4.2. Алгоритм
4.3. Программа
4.4. Результаты тестирования и выполнения программы
5. ЛАБОРАТОРНАЯ РАБОТА 5. ЦИКЛИЧЕСКАЯ ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
5.1. Исходное условие и уточнение постановки задачи
5.2. Алгоритм
5.3. Программа
5.4. Результаты тестирования и выполнения программы
1. ЛАБОРАТОРНАЯ РАБОТА 1. Программирование линейных алгоритмов
1.1. Исходное условие и уточнение постановки задачи
Заданы аргументы x, y, z.
Вычислить значения функций a, b.
Уточнение постановки задачи
Исходные данные: вещественные значения x,y,z,a,b,l,m,i.
Результаты: вывод двух чисел в символах a, b.
1.2. Алгоритм
Алгоритм решения задачи включает одну алгоритмическую единицу (назовем ее R1) и может быть представлен в следующем виде.
Алгоритм R1
переменные
x,y,z,a,b,l,m,i: вещ; {входные параметры}
a, b: вещ; {выходные данные}
начало алг
ввести (x, y, u, v);
вычислить
вывести результат a и b на экран;
конец алг.
1.3. Программа
1.3.1. Интерфейс
1.3.2. Программа на языке Delphi
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,a,b,l,m,i:real;
begin
x:=StrToFloat(edit1.text); // берем значение для x
y:=StrToFloat(edit2.Text); // берем значение для y
z:=StrToFloat(edit3.Text); // берем значение для z
l:=ABS(sqr(cos(x))+cos(y*y)); // производим вычисление для l
m:=1+2*(exp(3*ln(sin(y)))); // производим вычисление для m
a:=exp(m*ln(l)); // производим вычисление для a
edit4.text:=FloatToStr(a); // выводим ответ для функции a на экран
i:=1+z+(exp(1/2*ln(z))/2)+(exp(1/3*ln(z))/3)+(exp(1/4*ln(z))/4); // производим вычисление для i
b:=i*i; // производим вычисление для b
edit5.text:=FloatToStr(b); // выводим ответ для функции a на экран
end;
1.4. Результаты тестирования и выполнения программы
Для анализа правильности программы необходимо проверить ее работу при различных вариантах исходных данных. Тестовые примеры, выбранные для данной задачи, предусматривают проверку работы обеих ветвей программы. Результаты тестирования представлена ниже.
1)Исходные данные: x=1,y=1,z=1
Результаты: a= 0,66865, b= 9,50694
2)Исходные данные: x=2,y=2,z=2
Результаты: a= 0,15959,b= 19,57519
3) Исходные данные: x=1,y=2,z=3
Результаты: а= 0,07839, b= 32,21463
1.5. Заключение
Программа проверена. Решение задачи закончено.
2. ЛАБОРАТОРНАЯ РАБОТА 2. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
Исходное условие и уточнение постановки задачи
Заданы аргументы a,b.
Вычислить значения функций p,r,k.
Уточнение постановки задачи
Исходные данные: вещественные значения a,b.
Результаты: вывод трех чисел в символах p,r,k.
2.2. Алгоритм
Алгоритм решения задачи включает одну алгоритмическую единицу (назовем ее R2) и может быть представлен в следующем виде.
Алгоритм R2
переменные
a,b: вещ; {входные параметры}
p,r,k: вещ; {выходные данные}
начало алг
ввести (a,b);
вычислить: p:= 1.6*1.6*a*sin(3)+exp(1/4*ln(0.09*b))*cos(3);
r:= exp(2)*sin(3*arctan(exp(1/2*ln(3)))+b*arctan(sqrt(1-sqr(0.5))/0.5));
если P*p+r*r<=1 тогда k:= ln(ABS(p)+5*ABS(r));
если p*p+r*r>2 тогда k:=p-ABS(r) иначе k:=ABS(p-r);
Вывести результат p,r,k на экран;
Конец алг.
2.3. Программа
2.3.1. Интерфейс
2.3.2. Программа на языке Delphi
procedure TForm1.Button1Click(Sender: TObject);
var a,b,p,r,k:real;
begin
a:=StrToFloat(edit1.text); // берем значение а
b:=StrToFloat(edit2.Text);// берем значение b
p:=1.6*1.6*a*sin(3)+exp(1/4*ln(0.09*b))*cos(3); // производим вычисление для p
r:=exp(2)*sin(3*arctan(exp(1/2*ln(3)))+b*arctan(sqrt(1-sqr(0.5))/0.5)); /производим вычисление для p
If P*p+r*r<=1 then k:=ln(ABS(p)+5*ABS(r)); // производим вычисление для k
if p*p+r*r>2 then k:=p-ABS(r) else k:=ABS(p-r); // производим вычисление для k
edit3.Text:=FloatToStr(p); // выводим ответ для функции a на экран
edit4.Text:=FloatToStr(r); // выводим ответ для функции a на экран
Edit5.Text:=FloatToStr(k); // выводим ответ для функции a на экран
end;
2.4. Результаты тестирования и выполнения программы
Для анализа правильности программы необходимо проверить ее работу при различных вариантах исходных данных. Тестовые примеры, выбранные для данной задачи, предусматривают проверку работы обеих ветвей программы. Результаты тестирования представлена ниже.
Исходные данные: a=1, b=1
Результаты: p= -0,18, r= -6,4, k= -6,58
Исходные данные: a=2, b=2
Результаты: p= 0,08, r= -6,4, k= -6,3
Исходные данные: a=5, b=5
Результаты: p= 1, r= 6,4, k= -5,4
Исходные данные: a=8, b=7
Результаты: p= 2, r= - 6,4, k= -4,4
2. 5. Заключение
Программа проверена. Решение задачи закончено