Смекни!
smekni.com

Методические указания к курсовой работе санкт-петербург (стр. 2 из 7)

ЗАМЕЧАНИЕ: Массив отсчетов выходного сигнала должен быть в дальнейшем получен из значений выходного сигнала в тех же самых дискретных точках того же самого временного интервала.

Полный текст программы, реализующий решение курсовой работы для варианта А=00, Б=00, В=00, приведен на рис. 3.

Описание идентификаторов, использованных при решении поставленной задачи, приведено в табл. 1.

Описание пользовательских подпрограмм приведено в табл. 2.

program kurs_1;

(Программа расчета характеристик выходного сигнала электрической цепи)

uses Crt; {подключение модуля Crt}

const

maxind=160;

type

ArrayType=array [1..maxind] of real; {описание глобальных параметров}

{-----------------------------------------------------------------------------------------------------------}

{Процедура ввода исходной информации}

procedure DATA (var n : integer;

var kl : byte;

var tn, tm, tk, Um, Uin2: real);

begin

writeln (`Введите нужное количество отсчетов сигнала`);

write (`n=`);

readln (n);

writeln (`Введите признак kl = 1, если хотите вывести результат на монитор`)

writeln (`или признак kl = 0, если хотите записать результаты в файлы f1 и f2`);

write (`kl =`);

readln (kl);

writeln (`Введите ваши исходные данные`);

writeln (`Начальный момент наблюдения входного сигнала`);

write (`tn=`);

readln (tn);

write (`Момент времени, разделяющий две ветви алгоритма`);

writeln (`расчета входного сигнала`);

write (`tm =`);

readln (tm);

writeln (`Конечный момент времени наблюдения входного сигнала`);

write (`tk =`);

readln (tk);

writeln (Значение входного напряж. соответствующего моменту времени tm`);

write (`Um =`);

readln (Um);

writeln (Заданный параметр передаточной характеристики`);

write (`Uin2=`);

readln (Uin2);

end; {of procedure DATA}

{-----------------------------------------------------------------------------------------------------------------------}

{Описание процедуры формирования массива входных отсчетов}

procedure UIN (n : integer;

kl : byte;

tn, tm, tk, Um : real;

var uin : Arraytype); {список формальных параметров}

var

t, a, b, del: real;

i: integer;

begin

t:=tn;

del:=(tk-tn)/(n-1);

a:=um/(tm-tn);

b:=um/(tk-tm);

for i:=1 to n do

begin

if t>tm

then uin[i]:=b*(tk-t)

else uin[i]:=a*(t-tn);

t:=t+del;

end;

end; {of procedure UIN1}

{----------------------------------------------------------------------------------------------------------------------}

{Описание процедуры формирования массва выходных отсчетов}

procedure UOUT1(n : integer;

kl : byte;

Uin2 : real;

uin : Arraytype;

var uout : Array Type);

var {описание локальных переменных}

i: integer;

begin

for i:=1 to n do

if uin[i]<Uin2

then uout[i]:=4

else uout[i]:=(uin[i]-1)*(uin[i]-1);

end; {of procedure UOUT1}

{--------------------------------------------------------------------------------------------------------------------}

{Описание функции нахождения максимальнго значения выходного сигнала}

function MAXI(n : integer;

uout : Array Type):real:

var

max: real;

i: integer;

begin

max:=uout[i];

for i:=2 to n do

if uout[i]>max

then max:=uout[i];

maxi:=max;

end; {of function MAXI}

{--------------------------------------------------------------------------------------------------------------------}

{Описание процедуры записи массивов входного и выходного сигналов}

{на диск в файлы с именами f1.prn и f2.prn}

procedure WRITEINFO(n : integer;

uin, uout: Array Type);

var

f1, f2 : text;

I : integer;

begin

assign(f1, `f1.prn`); {связывание и открытие файлов}

assign(f2, `f2.prn`);

rewrite(f1);

rewrite(f2);

for i:=1 to n do

begin

writeln(f1,uin[i]:7:3); {запись в файлах}

writeln(f2,uout[i]:7:3);

end;

close(f1); {закрытие файлов}

close(f2);

end; {of procedure WRITEINFO}

{---------------------------------------------------------------------------------------------------------------------}

{процедура вывода на экран результатов работы программы}

procedure REZULT(n : integer;

kl : byte;

uin, uout : Array Type);

var

i: integer;

begin

if kl=1 {признак вывода результатов на экран монитора}

then

begin

writeln(`Отсчеты входного сигнала`):

for i:=1 to n do

writeln(`uin[`.i.`]=`uin[i]:7:3; {вывод входных отсчетов}

writeln(`Отсчеты выходного сигнала`);

for i:=1 to n do

writeln(`uout[`.i.`]=`,uout[i]:7:3); {вывод вых. Отсчетов}

writeln(`Макс. Значение вых. Сигнала=`,MAXI(n,uout):7:3);

end

else

begin

writeln;

writeln;

writeln(`Программа закончила свою работу. Массивы`);

writeln(`входных и выходных отсчетов сформированы`);

writeln(`и записаны в файлы f1.prn и f2.prn соответственно`);

end

end; {of procedure REZULT}

{---------------------------------------------------------------------------------------------------------------------}

var

n : integer;

kl : byte; {глобальные параметры, напрямую недоступные}

tn, tm, tk, Um : real; {ни одной из выше описанных процедур}

uin, uout : Array Type;

{----------------------------------------------------------------------------------------------------------------------}

BEGIN {of main}

Circr;

Data(n, kl, tn, tm, tk, Um, Uin2);

Uin1 (n, kl, tn, tm, tk, Um, uin);

Uout1(n, kl, Uin2, uin, uout);

Writeinfo(n, uin, uout);

Rezult(n, uin, uout);

Readln

END. {of main}

Рис 3. Текст программы

Таблица идентификаторов

Таблица 1

Обозначение

в задаче

Индентификатор

Назначение

n

Текущее значение количества отсчетов входного сигнала

kl

Признак-ключ, определяющие режим работы kl=1, если вывод на монитор, kl – любое другое число, например 0, если вывод в файл на диск

Uвх(t)

uin

Массив для хранения отсчетов входного сигнала

Uвых(t)

uout

Массив для хранения отсчетов выходного сигнала

tнач

tn

Начальный момент наблюдения входного сигнала

tкон

tk

Конечный момент наблюдения входного сигнала

tm

Параметр входного напряжения Uвх(t). Граничная точка, отделяющая две ветви Uвх(t)

Um

Параметр входного напряжения Uвх(t). Входное напряжение, соответствующее моменту времени tм

t

t

Текущий момент времени

a

a

Коэффициент, появляющийся при переходе от графического изображения сигнала к его аналитическому виду

b

b

del

Временной интервал между двумя соседними отсчетами входного сигнала

i

Счетчик цикла

Uвх1

Uin2

Параметр передаточной характеристики

max

Переменная для хранения максимального значения выходного сигнала

f1, f2

Логические имена файлов

Таблица описания пользовательских подпрограмм

Таблица 2

Подпрограмма

Входные и выходные параметры

Назначение

procedure DATA (var n: integer; var kl: byte; var tn, tm, tk, Um, Uin2: real);

Все формальные параметры процедуры являются выходными (var – параметры)

Позволяет ввести с клавиатуры необходимые для решения задачи исходные данные и передать эти данные в другие подпрограммы

procedure UIN1 (n: integer; kl: byte; tn, tm, tk, Um: real; var uin:Arraytype);

n, kl, tn, tm, tk, Um – входные параметры. Используются процедурой при формировании массива входных отсчетов сигнала. uin – выходной var – параметр хранит значения отсчетов входного сигнала

Процедура формирует массив отсчетов входного сигнала, который в дальнейшем может быть использован в других подпрограммах

procedure UOUT1 n integer; kl: byte; Uin2: real; uin: Arraytype; var uout: Array Type);

n, kl, Uin2, uin – входные параметры процедуры, используемые при формировании массива выходных отсчетов сигнала. uout – выходной var –параметр, хранит значения отсчетов выходного сигнала

Процедура формирует массив отсчетов выходного сигнала, который в дальнейшем может быть использован другими подпрограммами

function MAXI(n: integer; uout: Array Type): real;

n и uout – входные параметры значения, с их помощью функция рассчитывает свое единственное значение – максимальное значение выходного сигнала

Функция находит максимальное значение выходного сигнала и возвращает его в точку вызова

procedure WRITEINFO (n: integer; uin, uout: Array Type);

n, uin, uout – входные параметры, которые процедура использует для проведения операции записи массивов входных и выходных сигналов в файлы на диск

Процедура записывает отсчеты входного и выходного сигналов в нужном формате в файлы f1.prn и f2.prn соответственно

procedure REZULT (n integer; kl: byte; uin, uout: Array Type);

n, kl, uin, uout – входные параметры, используемые процедурой для вывода результатов на экран монитора

Выводит результат работы программы на экран монитора, если пользователь ввел с помощью процедуры Data нужное значение признака kl=1

Пояснения к тексту программы

Предложенная для решения задача разбита на четыре основные части (подзадачи). Каждая из этих частей реализована в виде подпрограммы (процедуры или функции).

Ввод исходных данных, необходимых для решения задачи, выделен также в самостоятельную процедуру под именем DATA. В программе предусмотрен вывод результатов решения задачи на экран монитора по желанию пользователя (процедура REZULT).