лабы вариант 4 / 2
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
Национальный исследовательский университет «МЭИ»
|
Институт ИнЭИ
Кафедра БИТ |
ПРАКТИЧЕСКАЯ РАБОТА
по дисциплине
«Объектно-ориентированный анализ и программирование»
Тема
« МОДУЛИ »
|
Студент
|
Газизова Ю.М |
|
Группа
|
ИЭс-161-19
|
|
Лектор Овсянникова М.Р
|
|
|
|
|
Москва
|
2020 |
Условие задачи.
Вариант №4
Задача 1.
Использовать модуль проекта (см. файл «1 Модули»). В модуль проекта добавить функцию MIN, вычисляющую минимальный элемент вектора.
Использовать модуль проекта (см. файл «1 Модули») для решения задачи вычисления функции (см. таблицу вариантов).
Обозначения:
Max_a, Max_b, Max_c, Min_a, Min_b, Min_c, Sa, Sb, Sc, ka, kb, kc - максимальный элемент, минимальный элемент, сумма и количество положительных элементов массивов a, b, и c соответственно.
Задача 2.
Разработать программу для построения таблицы значений для двух функций на интервале [a, b] с заданным количеством точек разбиения интервала (n).
Границы интервала и количество точек разбиения интервала выбрать самостоятельно.
Задачу решить с использованием параметров процедурного типа.
Использовать модуль проекта.
Результаты вычислений представить в виде трех таблиц.
Каждая таблица имеет:
- заголовок
- шапку таблицы
- строки таблицы в формате:
<значение аргумента> <значение функции>
Состав данных.
Задача 1
Имя переменной |
Тип |
Назначение |
Примечание |
i |
Простая переменная int |
Длина вектора |
Переменная для организации цикла |
Sum |
Простая переменная int |
Вычисление функции |
|
a |
Массив vec |
Вектор а |
Значение вектора вводится с клавиатуры |
b |
Массив vec |
Вектор б |
Значение вектора вводится с клавиатуры |
c |
Массив vec |
Вектор с |
Значение вектора вводится с клавиатуры |
Задача 2
Имя переменной |
Тип |
Назначение |
Примечание |
a |
Простая переменная int |
Интервал а |
Вводится с клавиатуры |
b |
Простая переменная int |
Интервал b |
Вводится с клавиатуры |
c |
Простая переменная int |
Разбиение интервала |
Вводится с клавиатуры |
f1 |
Простая переменная real |
Вычисление функции -3+2.5*x^2 |
Результат |
f2 |
Простая переменная real |
Вычисление функции Cos(4+x) |
Результат |
Набор тестовых данных. Ожидаемые результаты.
Задача 1
Размер вектора а = 1
а[1] = 1
Размер вектора b = 4
b[1] = 3
b[2] = 4
b[3] = 5
b[4] = 6
Размер вектора c = 3
c[1] = 1
c[2] = 2
c[3] = 3
Результат = 8
Задача 2
Интервал а = 1
Интервал б = 10
Разбиение интервала = 1
Результат функции -3+2.5*x^2
x1 = -0,50
x2 = 7,00
x3 = 19,50
x4 = 37,00
x5 = 59,50
x6 = 87
x7 = 119,50
x8 = 157
x9 = 199.50
Результат функции Cos(4+x)
x1 = 0,28
x2 = 0,96
x3 = 0,75
x4 = -0,15
x5 = -0,91
x6 = -0,84
x7 = 0,00
x8 = 0,84
x9 = 0,91
Метод решения задачи, основные формулы.
Задача 1
Sum = Min_a+ Max_b + Min_c
Задача 2.
f1 = (-3+2.5*x^2)
f2 =(cos(4+x))
Текст программы.
Задача 1.
(модуль)
unit Module;
interface
Const n=10;
Type vec=array[1..n] of real;
Var z :vec;
i :integer;
f1,f2 :text;
Procedure Vv(s:char; num:byte;Var z:vec);
Function MAX(z:vec; num:byte):real;
Function MIN(z:vec;num:byte):real;
implementation
Procedure Vv(s:char; num:byte;Var z:vec);
var i :integer;
Begin
Writeln('Mассив ',s);
For i:=1 to num do
Begin
Read(f1,z[i]);
Write(z[i]:4:1,' ':3);
End;
Readln(f1); Writeln;
End;
Function MAX(z:vec;num:byte):real;
Var m :real;
var i :integer;
begin
m:=z[1];
for i:=1 to num do if z[i]>m then m:=z[i];
MAX:=m
end;
Function MIN(z:vec;num:byte):real;
Var m :real;
var i :integer;
begin
m:=z[1];
for i:=1 to num do if z[i]<m then m:=z[i];
MIN:=m
end;
begin
Assign(f1,'C:\inp.txt');
Reset(f1);
Assign(f2,'C:\out.txt');
Rewrite(f2)
end.
(код программы)
Program lr7_16;
Uses CRT,Module;
Var
a,b,c :vec;
y :real;
Begin
clrscr;
Vv('a',8,a);
Vv('b',9,b);
Vv('c',n,c);
y:=(MIN(a,8)+MAX(b,9)+MIN(c,n));
Writeln('Результат:');
Write ('Массив а : ');
Writeln('',a);
Write ('Массив b: ',b);
Writeln('');
Write ('Массив c: ',c);
Writeln('');
Writeln('y=',y);
Readln;
Writeln(f2,'Результат в файле:');
Writeln(f2,'y=',y);
Close(f1);
Close(f2)
End.
Задача 2.
(модуль)
unit Module2;
interface
type Func=function(x: real) : real;
function F1(x: real) : real;
function F2(x: real) : real;
procedure Type_Tabl(w,h: real; n: integer;
Operation : Func);
procedure Type_Tab2(w,h: real; n: integer;
Operation,Operation2 : Func);
implementation
function F1(x: real) : real;
begin
F1:=3+2.5*x**2;
end;
function F2(x: real) : real;
begin
F2:=cos(4+x);
end;
procedure Type_Tabl(w,h: real; n: integer; Operation : Func);
var x : real;i: integer;
begin
x:= w;
for i:=1 to n do
begin
Write (x:6:2,Operation(x):6:2);
Writeln;
x:=x+h;
end;
end;
procedure Type_Tab2(w,h: real; n: integer; Operation,Operation2 : Func);
var x : real;i: integer;
begin
x:= w;
for i:=1 to n do
begin
Write (x:6:2,Operation(x):6:2,Operation2(x):6:2);
Writeln;
x:=x+h;
end;
end;
end.
(код)
Program ex;
uses CRT, Module2;
begin
writeln('Таблица значений функции F1');
writeln('X':5 ,'F1':6);
writeln('----------------');
Type_Tabl(0.1,0.1,10,F1);
writeln('Таблица значений функции F2');
writeln('X':5 ,'F2':6);
writeln('----------------');
Type_Tabl(0.1,0.1,10,F2);
writeln('Таблица значений функций F1 и F2');
writeln('X':5 ,'F1':6, 'F2':7);
writeln('---------------------');
Type_Tab2(0.1,0.1,10,F1,F2);
end.
Результаты выполнения программы на наборе тестовых данных.
Задание 1.
Задание 2.