Введение, Правила и порядок выполнения курсовой работы - Программирование в среде Turbo Pascal
Настоящие методические указания предназначены для выполнения курсовой работы "Расчеты на ЭВМ характеристик выходных сигналов электрических цепей" по дисциплине "Информатика".
Правила и порядок выполнения курсовой работы
Курсовая работа выполняется в следующей последовательности:
Из приведенной в конце методических указаний табл. 7 (приложение 8) выбирается код варианта задания курсовой работы. Код определяется значениями трех двухразрядных величин А, Б и В.
Описание всех вариантов по курсовой работе, методические указания по их выполнению и необходимый теоретический материал приведены в настоящих методических указаниях. Каждый вариант содержит формулировку задания и необходимый для решения рабочий набор исходных данных.
В ходе работы все необходимые записи должны выполняться в рабочей тетради (ученическая тетрадь в клетку). Рабочая тетрадь сдается вместе с пояснительной запиской для проверки и дальнейшей защиты курсовой работы.
Пояснительная записка к курсовой работе оформляется на листах бумаги стандартного формата, скрепленных вместе с помощью скоросшивателя. Все записи и графики должны быть выполнены аккуратно.
Выполненная курсовая работа включает в себя следующие пункты:
Постановка задачи и описание рабочего набора исходных данных;
Таблица идентификаторов, использованных при решении поставленной задачи;
Таблица описаний входящих в программу пользовательских процедур и функций с указанием их назначения, входных и выходных параметров;
Текст программы, выполненный на языке Turbo Pascal;
Контрольный расчет, выполненный в виде таблицы вычислений и предварительное построение графиков входного и выходного сигналов (ожидаемые графики);
Список используемой литературы и содержание пояснительной записи.
Вышеперечисленные пункты присылаются на проверку преподавателю, после чего студент получает доступ к выходу на ЭВМ.
Программа вводится в компьютер, отлаживается и в пояснительную записку включаются результаты выполнения программы для контрольного и рабочего наборов исходных данных. Результатом работы студента в системе MathCAD является построение графиков входного и выходного сигналов. Эти графики также заносятся в пояснительную записку.
Для успешного выполнения курсовой работы студенту необходимо:
Повторить теоретический материал, изучавшийся ими при выполнении контрольных работ № 1 и № 2;
Освоить новый материал, данный в приложении к курсовой работе.
Новые изучаемые темы:
Процедуры и функции (приложение 1);
Работа с текстовыми файлами (приложение 2);
Работа с интегрированной математической системой MathCAD. Построение графиков (приложение 3).
Расчет на ЭВМ характеристик входных и выходных сигналов электрических цепей
Постановка задачи
Настоящая курсовая работа посвящена решению задачи машинного анализа электрических цепей.
В курсовой работе необходимо для заданной электрической цепи (см. рис. 1) по известному входному сигналу Uвх(t) построить выходной сигнал Uвых(t), а затем определить некоторые его характеристики W.
Вариант задания определяется индивидуальным кодом студента АБВ следующим образом:
Величина "А" определяет вид входного сигнала Uвх(t) согласно табл. 4;
Величина "Б" определяет вид электрической цепи (или ее передаточную характеристику Uвых(t) = f (Uвх) согласно табл. 5;
Величина "В" определяет рассчитываемую характеристику выходного сигнала согласно табл. 6.
Вычисления величин Uвх(t) и Uвых(t) выполнить для N-равноотстоящих моментов времени t, где t[tнач, tкон]. Организовать массивы для хранения Uвх(t) и Uвых(t). Произвести вычисление характеристики W выходного сигнала согласно заданию. Массивы входных и выходных отсчетов записать в текстовые файлы с расширением prn. Содержимое этих файлов использовать для построения графиков в интегрированной математической системе MathCAD.
Прежде чем приступить к выполнению своего варианта курсовой работы рекомендуется внимательно изучить пример выполнения курсовой работы.
Методические указания. Пример выполнения курсовой работы
Рассматривается вариант А=00; Б=00; В=00. Для этого кода согласно табл. 4-6 задание имеет следующий вид:
Дана нелинейная безынерционная цепь:
Рис. 1. Электрическая цепь
Передаточная характеристика цепи имеет вид (код Б):
На входе этой цепи действует сигнал, (код А), имеющий вид, показанный на рис. 2:
Рис. 2. Входной сигнал для кода А=00
Вычислить Umax - максимальное значение выходного сигнала Uвых(t) (код В=00).
Рабочий набор исходных данных имеет вид:
Tнач = 0,5 с; tм = 2,5 с; tкон = 6 с; Uм = 20,5 В; Uвх1 = 3 В.
Решение задачи состоит из пяти самостоятельных частей:
Формирование массива отсчетов входного сигнала;
Вычисление величины заданной характеристики W выходного сигнала (в данном случае такой характеристикой является максимальное значение выходного сигнала);
Организация текстовых файлов и запись в них массивов отсчетов входного и выходного сигналов;
Построение графиков входного и выходного сигналов.
Первые четыре части оформляются в виде подпрограмм (процедур или функций). Последняя подзадача - построение графиков - выполняется с помощью интегрированной системы MathCAD.
ЗАМЕЧАНИЕ: ввод исходных данных и вывод результатов решения задачи могут быть оформлены также в виде самостоятельных процедур.
Приведение входного сигнала к аналитическому виду
В рассматриваемом примере курсовой работы входной сигнал Uвх(t) задан в виде графика (рис. 2). В этом случае необходимо перейти от графика к аналитическому выражению. Из графика видно, что Uвх(t) имеет два линейных участка. Поэтому аналитическая запись Uвх(t) будет иметь вид
Для определения величин составим систему из двух уравнений для двух значений аргумента t.
Решая эти уравнения, получим для начального участка графика:
Составим аналогичную систему уравнений для второго участка графика, находим:
Подставляя значения соответствующее исходному графику, в выражение для Uвх(t) получим
В результате такого перехода окончательно имеем:
где
Временной интервал наблюдения сигнала ограничен [tнач, tкон]. Для организации массива входных отсчетов сигнала необходимо этот временной интервал разбить на некоторое определенное конечное число точек N, для каждой из которых будет вычислено значение отсчета входного сигнала.
ЗАМЕЧАНИЕ: Массив отсчетов выходного сигнала должен быть в дальнейшем получен из значений выходного сигнала в тех же самых дискретных точках того же самого временного интервала.
Полный текст программы, реализующий решение курсовой работы для варианта А=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;
Varuin: 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;
Varuout: 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}
Таблица 1 Таблица идентификаторов
Обозначение в задаче |
Индентификатор |
Назначение |
N |
Текущее значение количества отсчетов входного сигнала | |
Kl |
Признак-ключ, определяющие режим работы kl=1, если вывод на монитор, kl - любое другое число, например 0, если вывод в файл на диск | |
Uвх(t) |
Uin |
Массив для хранения отсчетов входного сигнала |
Uвых(t) |
Uout |
Массив для хранения отсчетов выходного сигнала |
Tнач |
Tn |
Начальный момент наблюдения входного сигнала |
Tкон |
Tk |
Конечный момент наблюдения входного сигнала |
Tм |
Tm |
Параметр входного напряжения Uвх(t). Граничная точка, отделяющая две ветви Uвх(t) |
Uм |
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).
Все подпрограммы разработаны в соответствии с принципом максимальной изоляции данных. Это значит, что любая из подпрограмм описана с использованием только формальных параметров и локальных переменных без ссылок на глобальные переменные, что позволяет сделать подпрограммы в некотором смысле универсальными, а также повысить их надежность за счет устранения их влияния друг на друга.
Процедура формирования массива входных отсчетов
Описание процедуры UIN1 смотри в тексте программы на рис.3.
Пояснения к тексту процедуры UIN1
После приведения входного сигнала Uвх(t) к аналитическому виду можно с помощью процедуры UIN1 сформировать массив входных отсчетов в заданных пользователем равноотстоящих точках диапазона наблюдения выходного сигнала.
Описание процедуры помещено в разделе деклараций основной программы. Это описание является "образцом действий", в соответствии с которым данная процедура будет выполняться каждый раз при вызове ее из основной программы. Имя процедуры - UIN1 задано в заголовке процедуры. В круглых скобках перечислен список формальных параметров. Шесть из них являются параметрами значениями, один - параметр - переменная, о чем свидетельствует стоящее перед ним зарезервированное слово var. Использование var-параметра в данном случае необходимо, так как в результате работы процедуры будет сформирован массив отсчетов входного сигнала, который в дальнейшем необходимо будет передать в процедуру формирования массива выходных отсчетов. Поэтому после выхода из процедуры UIN1 массив отсчетов входного сигнала должен быть сохранен, ибо без него невозможна дальнейшая работа других подпрограмм (см. прил. 1).
В разделе описаний локальных переменных var описаны текущее время t, два коэффициента "a" и "b", вычисляемые по выведенным выше формулам, шаг изменения временного интервала del, вычисляемый по формуле:
, i - счетчик цикла.
Раздел описания переменных внутри процедуры является описанием локальных параметров. Эти параметры доступны только внутри той процедуры, где они описаны (в данном случае внутри процедуры UIN1).
Результат работы переменных UIN1 - сформированный массив отсчетов входного сигнала.
Процедура формирования массива выходного отсчетов
Описание процедуры UOUT1 смотри в тексте программы на рис. 3.
Пояснения к тексту процедуры UOUT1
Список формальных параметров процедуры UOUT1 содержит входные параметры значения n, kl, Uin2, uin, необходимые для расчета и формирования массива выходных отсчетов. По сути эти параметры являются локальными и не сохраняют свои значения после выхода из процедуры; uout - является выходным var-параметром, следовательно, этот параметр сохранит все свои значения и после выхода из процедуры и может быть использован как главной программой, так и другими процедурами.
Связь подпрограмм с "внешним миром" осуществляется только с помощью var-параметров (или глобальных параметров) (см. прил. 1).
Результат работы процедуры UOUT1 - сформированный массив отсчетов выходного сигнала.
Функция для нахождения максимального значения выходного сигнала
Описание функции MAXI смотри в тесте программы на рис. 3.
Пояснения к тексту функции MAXI
Обратите внимание на заголовок функции и его отличия от заголовка процедуры. Имя функции MAXI. Результат работы функции - единственное значение, представляющее максимальное значение выходного сигнала. Этот результат передается в точку вызова функции из основной программы с помощью имени самой функции MAXI, поэтому в заголовке функции, задан тип этого результата (в данном случае MAXI:real).
Список формальных параметров состоит из входных параметров n и uout. Эти параметры заданы как параметры-значения (отсутствует служебное слово var). После выхода из функции нам понадобиться только одно единственное значение - max значение выходного сигнала, которые мы должны были найти в соответствии с заданием, поэтому последним оператором внутри функции стоит оператор присваивания, с помощью которого вычисленное значение максимума выходного сигнала присваивается переменной с именем функции MAXI, значение которого и будет передано затем в точку вызова функции.
Процедура записи массивов входного и выходного сигналов в файлы с именами f1.prn и f2.prn
Описание процедур WRITEINFO смотри в тексте программы на рис. 3.
Пояснения к тексту процедуры WRITEINFO
Имя процедуры - WRITEINFO. Список формальных параметров-значений состоит из входных параметров n, uin, uout.
В разделе локальных переменных введены описания двух файлов переменных f1 и f2 типа text. В разделе операторов этим файловым переменным f1 и f2 ставятся в соответствие физические файлы на диске с именами "f1.prn" и "f2.prn" соответственно. Это выполняется с помощью специальной процедуры assign. Имена файлов могут быть любыми, но они должны иметь расширение prn, так как в дальнейшем предполагается использование математической системы MathCD, которая для записи и чтения векторов и матриц использует файлы именно с этим расширением.
После окончания записи в файлы их необходимо закрыть с помощью процедуры close.
Процедура вывода на экран результатов работы программы
Описание процедуры REZULT смотри в тексте программы на рис. 3.
Пояснения к тексту REZULT
Список формальных параметров процедуры состоит из входных параметров-значений n, kl, uin, uout. Процедура выводит по определенному признаку результат работы программы на экран монитора. Это может быть контрольный расчет, выполненный студентом, или решение задачи при рабочем наборе исходных данных.
ЗАМЕЧАНИЕ: Для проверки контрольного расчета студент может воспользоваться окном наблюдения WATCH при проведении пошаговой отладки программы (функциональная клавиша F8).
Главная программа
Мы разбили задачу на ряд более простых самостоятельных подзадач, каждую из которых решали независимо друг от друга, реализовав их с помощью набора подпрограмм. Завершает работу над задачей написание главной программы, которая организует совместную работу всех подпрограмм, вызывая их в необходимой последовательности.
Контрольный расчет
Методические указания по выполнению контрольного расчета приведены в прил. 7.
В рассматриваемом варианте необходимо выбрать контрольный набор значений исходных данных для следующих величин: N, tнач, tм, tкон, Uм, Uвх1.
Величины tнач, tкон могут быть выбраны из соображений удобства вычислений. Выберем tнач = 1с, tкон = 7с. Количество расчетных точек N рекомендуется брать не менее 4. Выберем N = 4, при этом вычисления величин Uвх(t) и Uвых(t) выполняются для моментов времени t1 = tнач = 1с, t2 = 3c, t3 = 5c, t4 = tкон = 7с. Для контроля правильности реализации разветвления в подпрограмме формирования массива Uвх следует проверить, что при этом в вычислениях величины Uвх(t) использовались хотя бы по одному разу все приведенные при переходе от графика к аналитическому выражению формулы. Из формул видно, что при t = tнач и t = tкон не проверяется правильность формул, так как образуются нулевые сомножители. Поэтому необходимо выбрать значения величины tм таким образом, чтобы вычисления для t = t2 выполнялась формула Uвх(t) = b(tкон - t). С этой целью выбираем tм = 4с. (см. рис. 4).
Рис. 4. Вычисленные значения входного и выходного сигнала для контрольного расчета
Аналогично проверяется подпрограмма формирования массива Uвых. Значение величины Uм, влияющее на амплитуду входного напряжения Uвх(t), выбирается так, чтобы среди отсчетов величины Uвх(t) были значения, меньше Uвх1 и не меньше Uвх1, с тем чтобы проверить расчетные формулы обеих ветвей выходного сигнала. Выберем Uм = 6В, Uвх1 = 3В. Результаты вычислений элементов массива Uвх и Uвых приведены в табл. 1.
В подпрограмме-функции определения Umax для поверки ветвей алгоритма необходимо, чтобы максимум функции Uвых(t) не находился на границах интервала [tнач, tкон]. Как видно из рис. 4 b в рассматриваемом варианте это требование выполняется. Из таблицы вычислений видно, что для контрольного расчета максимальное значение Uвых(I) равно Umax = 9В.
Выполнение программы при рабочем наборе исходных данных
Для рабочего набора исходных данных tнач = 0,5с; tм = 2,5с; tкон = 6с; Uм = 20,5В; Uвх1 = 3В берутся из таблицы вычислений. Остается выбрать величину n. Рекомендуется выбрать начальное значение n, совпадающее со значением n, взятым при контрольном расчете. В нашем случае n = 4. Далее выполняя расчеты для реального необходимого количества точек.
ЗАМЕЧАНИЕ: После успешного завершения работы над программой отсчеты массивов входного и выходного сигналов помещены в файлы f1.prn и f2.prn. На этом работа в системе Turbo Pascal (Borland Pascal) считается оконченной. Студенты запускают систему MathCAD и работают в ней над построением графиков входного и выходного сигналов в полном соответствии с рекомендациями, помещенными в приложении 3. Результаты работы демонстрируются преподавателю и заносятся в пояснительную записку в виде двух графиков. На этом выполнение курсовой работы можно считать завершенным.
Приложение 1
Pascal машинный анализ электрическая цепь
Подпрограммы. Процедуры и функции
Подпрограмма - это программа, которая является частью другой программы и удовлетворяет всем требованиям, предъявляемым к структуре программы в используемом языке программирования.
В языке программирования Turbo Pascal имеется две разновидности подпрограмм - процедуры и функции. Любая пользовательская подпрограмма предполагает наличие в основной программе двух составляющих:
Описание подпрограммы в разделе деклараций основной программы. Описание состоит из заголовка подпрограммы и тела подпрограммы. Описание представляет собой некоторый "образец действий".
Вызов подпрограммы из основной программы. Вызов активизирует задекларированный "образец действий", после чего в программе выполняются входящие в описание подпрограммы операторы.
Подпрограмма должна быть описана до того, как она впервые будет использоваться в программе.
Глобальные и локальные параметры
Все параметры, которые использует подпрограмма, можно разбить на два вида:
Локальные параметры;
Глобальные параметры.
Локальные параметры объявляются внутри подпрограммы и доступны только самой подпрограмме. Для локальных параметров происходи динамическое выделение памяти в процессе решения задачи. Такой вид выделения памяти называется стеком. После выполнения подпрограммы память, выделенная под локальные параметры, освобождается.
Глобальные параметры объявляются вне подпрограммы в разделе деклараций основной программы и могут быть доступны как самой основной программе, так и всем ее подпрограммам. Для глобальных параметров происходит статическое выделение памяти на этапе компиляции. Глобальные параметры хранятся в сегменте данных. Глобальные параметры сохраняют свои значения в течение "всей жизни" программы.
ЗАМЕЧЕНИЯ:
Обмен информацией между основной программой и подпрограммой осуществляется только с помощью глобальных параметров. Для того чтобы подпрограмма могла использовать и изменять глобальные параметры, необходимо описать эти глобальные параметры до описания той подпрограммы, которая их будет использовать.
Все имена в пределах подпрограммы, в которой они объявлены, должны быть уникальными и не могут совпадать с именем самой подпрограммы.
Если внутри подпрограммы действуют локальные параметры, имена которых совпадают с именами глобальных параметров, то приоритет остается за локальными параметрами.
Глобальные временно приостанавливают свое действие, т. е. объект, описанный с помощью глобальных параметров, совпадающих с именами локальных параметров, становится недоступным из подпрограммы. Это возможно благодаря тому, что глобальные и локальные параметры хранятся в разных независимых областях памяти.
Процедура
Процедура предназначена для выполнения какой-либо законченной последовательности действий. Описание процедуры состоит из заголовка и тела. Заголовок процедуры обязателен.
Формат заголовка:
Procedure<имя процедуры>[(список формальных параметров)]
Procedure - служебное слово:
Список формальных параметров необязателен, о чем свидетельствуют квадратные скобки [].
Тело процедуры может включать такие же разделы, что и основная программа.
Процедура всегда заканчивается точкой с запятой в отличие от программы, которая всегда заканчивается точкой.
Операторы, образующие тело процедуры, компилируются только один раз и существуют в программе в единственном экземпляре, однако вызвать эту процедуру можно сколько угодно раз. Это позволяет сделать программу достаточно компактной. Но даже в случае, если процедура выполняется только один раз, использование ее позволяет расчленить задачу на ряд самостоятельных частей, т. е. процедура является средством структурирования программы.
Функция
Функция предназначена для вычисления какого-либо элементарного значения, поэтому функция может быть использована наравне с переменными в выражении соответствующего типа.
У функции с точки зрения синтаксиса есть два отличия от процедуры:
Разные заголовки.
В теле функции хотя бы один раз имени функции должно быть присвоено значение возвращаемого результата (имя функции должно стоять в левой части оператора присвоения).
Формат заголовка:
Function <имя функции> [(список формальных параметров)] : <тип возвращаемого результата>
Заголовок функции состоит из служебного слова function, за которым следует имя функции, далее в круглых скобках описывается список формальных параметров, если он есть. Затем через двоеточие указывается тип возвращаемого результата.
Функция может возвращать значения следующих типов: порядковый, вещественный, стандартный тип - string (строковый).
Пример:
Program ex_2;
Uses CRT;
Var
X: real:
Формальные и фактические параметры
При описании подпрограммы используются формальные параметры, которые по сути являются локальными переменными. Но они обеспечивают обмен значениями между основной программой и подпрограммами. При вызове подпрограммы из основной программы используются фактические параметры, которые подставляются на место формальных параметров. Именно эти фактические параметры при выполнении подпрограммы замещают все вхождения в подпрограмму необходим для настройки данной подпрограммы на конкретные фактические параметры.
Связь фактических и формальных параметров:
Число формальных и фактических параметров должно быть одинаково;
Соответствие параметров устанавливается слева направо;
Соответствующие формальные и фактические параметры должны совпадать по типу;
При задании фактических параметров необходимо учитывать, как были описаны формальные параметры - как параметры-значения или как параметры-переменные (var-параметры).
Параметры-значения
Передаются основной программой в подпрограмму в виде копии (через стек) и, следовательно, в случае каких-либо действий любые изменения в подпрограмме произойдут с копией параметров и никак не отразятся на собственных параметрах программы.
Параметры-значения указываются в заголовке программы своим именем и, через двоеточие - типом. Тип может быть любым.
Если параметров-значений одного типа несколько, то их можно перечислить через запятую, а затем через двоеточие указать общий тип. Отдельные группы параметров отделяются друг от друга точкой с запятой.
Параметры-переменные (var-параметры)
При передаче параметров-переменных в подпрограмме фактически через стек передаются не сами значения, а адреса, по которым эти значения хранятся. Следовательно, подпрограмма имеет прямой доступ к этим переменным и может их изменить (подпрограмма в этом случае работает непосредственно с сегментом данных).
Параметр-переменная указывается в заголовке программы аналогично параметру-значению, но перед именем параметра записывается служебное слова var. Действие слово var распространяется до ближайшей точки с запятой.
ЗАМЕЧАНИЕ: Особенности var-параметров: фактические параметры при вызове должны быть обязательно переменными. Нельзя использовать константы или выражения.
Пример:
------------------------------
BEGIN
Writeln('введите исходные числа');
Readln(x, y);
Writeln('исходные: ',x:5,y:5);
С клавиатуры вводится два целых числа 10 и 20. Далее эти числа передаются процедуре Dec1, где они уменьшаются на 5 единиц каждое. Один из параметров передается как параметр-переменная, другой - как параметр-значение. Результаты выводятся на экран.
Исходные:1020
Уменьшенные515
Результирующие520
Уменьшение параметра "у" внутри процедуры не вызвало изменения параметра "у" в основной программе, так как этот параметр описан в заголовке процедуры как параметр-значение. Изменение параметра "х" внутри процедуры привело к изменению параметра "х" в основной программе, так как этот параметр описан в заголовке процедуры как параметр-переменная.
ЗАМЕЧАНИЕ: Именно поэтому var-параметры используются для связи подпрограмм с внешним миром. Подпрограмма с помощью var-параметров передает результаты своей работы вызывающей ее основной программе. В распоряжении программиста есть еще один способ связи подпрограммы с основной программой - через глобальные переменные, однако такой способ может привести к многочисленным ошибкам. При использовании var параметров по вызову процедуры сразу видно, какую именно переменную изменяет процедура. Однако не следует злоупотреблять использованием как глобальными переменными, так и var параметрами, ибо это затрудняет понимание и отладку программы.
Вызов процедур и функций из основной программы
Процедуры вызываются с помощью оператора вызов, который состоит из имени процедуры и списка фактических параметров, если они есть.
Функция вызывается при вычислении выражения, которое содержит ее вызов. Функция возвращает вычисленное значение в это выражение. Вызов функции может быть использован только в качестве компонента этого выражения.
Приложение 2
Работа с файлами. Организация ввода-вывода информации
Похожие статьи
-
Конфигурация устройств ввода-вывода Турбо Паскаля - Программирование в среде Turbo Pascal
Результаты работы программы и исходные данные могут быть записаны в файлы на диске, с помощью специальных процедур работы с файлами прямо из программы. В...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
"РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MICROSOFT EXCEL" Цель работы Приобретение навыков решения задач линейного программирования...
-
Общие рекомендации по выполнению работ Перед выполнением первой работы создайте на диске свой каталог и в дальнейшем сохраняйте свои проекты в нем; При...
-
В данной курсовой осуществляется знакомство с инструментальными средствами создания программных продуктов и автоматизации работы пользователя...
-
СХЕМА АЛГОРИТМА РАБОТЫ ПРОГРАММЫ, ЗАКЛЮЧЕНИЕ - Основы программирования в операционной системе Unix
Блок-схема главной функции программы (main) изображена на рисунке 4. Рисунок 4 - блок-схема main. cpp Блок-схема модуля (Math. cpp) изображена на рисунке...
-
Введение - Основные свойства функциональных языков программирования
Созданная в 1998 году спецификация языка Haskell (названного так в честь ученого Хаскелла Карри, одного из основоположников функционального...
-
Turbo Pascal, О Turbo Pascal, История - Работа с языком Турбо Паскаль
Среда разработки Turbo Pascal 7.1 (Рис 1) О Turbo Pascal Turbo Pascal (произносится "турбо паскаль") -- Интегрированная среда разработки программного...
-
В нашей курсовой работе была поставлена задача создания обучающей программы по информатике, с помощью которой студенты смогут проверить свои знания в...
-
Цель Работы : приобрести начальные знания в области применения микроконтроллеров и основ цифровой техники. Теоретические сведения и выполнение работы...
-
В связи с увеличением числа сотрудников, работающих в компании, а также с расширением рабочего проекта, возникла проблема, связанная с версионностью...
-
При извлечении текста из Интернета, он не имеет никой разметки и представлен в виде сплошного набора предложений. Для дальнейшего использования...
-
Правила записи программы на языке Си - Основы программирования
Как указывалось выше, программа перед обработкой компьютером должна быть помещена в файл на диске. Обычно этот файл имеет расширение <.c>. Рассмотрим...
-
Введение - Обьекто-ориентированное программирование
Объектно-ориентированное программирование (ООП) позволяет разложить проблему на составные части, каждая из которых становится самостоятельным объектом....
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
Базовые компоненты Delphi. - Разработка Windows-приложений в среде Borland Delphi
Цель работы: Получить навыки использования в программе базовых компонентов Delphi. Пояснения к работе В форме практически любого приложения есть...
-
Введение, РЕКУРСИЯ - Рекурсивное программирование
Основой для разработки рекурсивных алгоритмов служат, так называемые, Рекуррентные соотношения (формулы), устанавливающие зависимость между результатами...
-
Кроме поддержки интерпретатора порождающих правил, описанного в главе 5, CLIPS обладает следующими функциональными возможностями: - для определения...
-
Введение - Программа анализа матриц типа "функции-данные" и интерпретации деревьев бизнес-процессов
В настоящее время трудно представить организацию, не использующую в своей деятельности информационные системы, начиная от простых электронных таблиц и...
-
В данном разделе была разработана функциональная схема работы программного комплекса, которая в общем виде описывает состав комплекса, характер и виды...
-
Среда объектно-ориентированного программирования Delphi Delphi - это комбинация нескольких важнейших технологий, высокопроизводительный компилятор в...
-
История функционального программирования - Основные свойства функциональных языков программирования
Широко известно, что теоретические основы императивного программирования были заложены еще в 30-х годах XX века учеными Аланом Тьюрингом и Джоном фон...
-
Подпрограммы - Язык программирования PERL. Сфера применения
Как и все структурированные языки программирования, Perl поддерживает подпрограммы. Подпрограмма может быть определена с помощью ключевого слова sub, как...
-
Введение - Автоматизация процесса работы руководства ООО "Сервис партнер"
Потоки информации в мире, который нас окружает, огромны. Во времени они имеют тенденцию к увеличению. Поэтому в любой организации, как большой, так и...
-
Целью данного курсового проекта является разработка и описание работы устройства управления, вырабатывающего заданную по варианту последовательность...
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
Языки и методы параллельного программирования - Администрирование параллельных процессов
Применение параллельных архитектур повышает производительность при решении задач, явно сводимых к обработке векторов. Автоматическое распараллеливание...
-
Литература - Программирование в среде Turbo Pascal
Бородич Ю. С., Вальвачев А. Н., Кузьмин А. И. Паскаль для персональных компьютеров - Минск: Высшая школа, 1991. Бузюков Л. Б., Дубков Е. В....
-
- рисуем графический примитив, например, эллипс у рыбки; - накладываем сверху на эллипс другой графический объект так, чтобы он закрывал часть эллипса; -...
-
Тема: "Основные устройства ЭВМ, их функции и взаимосвязь в процессе работы. Магистрально - модульный принцип построения ПЭВМ" Цель урока: Объяснить...
-
Примеры операторов вызова процедур - Структурирование программы
T; {нет списка фактических параметров Summa(x, y,z); {x, y,z - фактические параметры; x: integer; у, z; real} a(z); {z - фактический параметр, z:d} При...
-
- замечания, нужно запомнить. Знакомство со средой DELPHI Для загрузки Delphi нужно запустить файл Delphi32.exe из папки Bin каталога Delphi7. Можно...
-
Свойства алгоритмов - Алгоритм
Данное выше определение алгоритма нельзя считать строгим - не вполне ясно, что такое "точное предписание" или "последовательность действий,...
-
Задание на курсовую работу - Вычисление интегралов в Mathcad
1. Задание 1. 1.1. Постройте и отформатируйте график функции f(x) на заданном отрезке. 1.2 Найти (графически) точки, в которых достигаются наибольшее и...
-
Разработка сайта, Среда разработки web-сайта - Разработка сайта для компании
Среда разработки web-сайта При разработке web-сайта используются: - HTML - язык разметки web-страниц; - CSS - формальный язык описания внешнего...
-
В этом разделе описаны запросы, выполняемых всеми компонентами, а также типы данных, используемые при описании запросов. Стандарт типов данных При...
-
В настоящее время стала очень актуальна проблема разработки, проектирования и создания "умных" зданий. Умные здания помогают более эффективнее и...
-
Запросы к компоненту сеть - Функциональные модели универсального нейрокомпьютера
В данном разделе главы рассмотрены все запросы, исполняемые комп Онентом сеть. Прежде чем приступать к описанию стандарта запросов компонента сеть...
-
Бизнес - планирование, являясь нормой любой предпринимательской деятельности, необходимо для предвидения будущей ситуации, стратегических решений и для...
-
Правила остановки работы сети - Функциональные модели универсального нейрокомпьютера
При использовании сетей прямого распространения (сетей без циклов) вопроса об остановке сети не возникает. Действительно, сигналы поступают на элементы...
Введение, Правила и порядок выполнения курсовой работы - Программирование в среде Turbo Pascal