Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
15.12.2020
Размер:
161.24 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

Национальный исследовательский университет «МЭИ»

Институт ИнЭИ

Кафедра БИТ

ПРАКТИЧЕСКАЯ РАБОТА

по дисциплине

«Объектно-ориентированный анализ и программирование»

Тема

« МОДУЛИ »

Студент

Газизова Ю.М

Группа

ИЭс-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.

Соседние файлы в папке лабы вариант 4