Учебное пособие: Методические указания к курсовой работе санкт-петербург
Название: Методические указания к курсовой работе санкт-петербург Раздел: Остальные рефераты Тип: учебное пособие | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Госкомсвязи России САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ им.проф. М.А. БОНЧ-БРУЕВИЧА
Факультет Вечернего и заочного обучения Губанова Т.В. ИНФОРМАТИКА МЕТОДИЧЕСКИЕ УКАЗАНИЯ К КУРСОВОЙ РАБОТЕ САНКТ-ПЕТЕРБУРГ 1998 УДК 681.142.2 Губанова Т.В. Информатика: методические указания к курсовой работе/ СПбГУТ.-СПб, 1998. План 1998, п.2. Рекомендовано к печати редакционно-издательской комиссией университета. Настоящие методические указания содержат задания к курсовой работе, методические пояснения и рекомендации по их выполнению, необходимый теоретический материал и требования к порядку оформления курсовой работы. Ответственный редактор С.В. Козин Рецензент П.С. Довгий © Издание Санкт-Петербургского государственного университета телекоммуникаций им. проф. М.А. Бонч-Бруевича, 1998 Редактор И.И. Щенсняк Подписано к печати 19.01.98. ЛР № 020475 от 29.04.97г. Объем 1,75 печ. л. Тир. 500 экз. Зак. 12 РИО СПбГУТ. 191186, СПб, наб. р. Мойки, 61 Тип. СПбЦЭ Правила и порядок выполнения курсовой работы.. 4 Расчет на ЭВМ характеристик входных и выходных сигналов электрических цепей. 4 Методические указания. Пример выполнения курсовой работы.. 5 Настоящие методические указания предназначены для выполнения курсовой работы «Расчеты на ЭВМ характеристик выходных сигналов электрических цепей» по дисциплине «Информатика». Правила и порядок выполнения курсовой работы Курсовая работа выполняется в следующей последовательности: Из приведенной в конце методических указаний табл. 7 (приложение 8) выбирается код варианта задания курсовой работы. Код определяется значениями трех двухразрядных величин А, Б и В. Описание всех вариантов по курсовой работе, методические указания по их выполнению и необходимый теоретический материал приведены в настоящих методических указаниях. Каждый вариант содержит формулировку задания и необходимый для решения рабочий набор исходных данных. В ходе работы все необходимые записи должны выполняться в рабочей тетради (ученическая тетрадь в клетку). Рабочая тетрадь сдается вместе с пояснительной запиской для проверки и дальнейшей защиты курсовой работы. Пояснительная записка к курсовой работе оформляется на листах бумаги стандартного формата, скрепленных вместе с помощью скоросшивателя. Все записи и графики должны быть выполнены аккуратно. Выполненная курсовая работа включает в себя следующие пункты:
Вышеперечисленные пункты присылаются на проверку преподавателю, после чего студент получает доступ к выходу на ЭВМ. Программа вводится в компьютер, отлаживается и в пояснительную записку включаются результаты выполнения программы для контрольного и рабочего наборов исходных данных. Результатом работы студента в системе MathCAD является построение графиков входного и выходного сигналов. Эти графики также заносятся в пояснительную записку. Для успешного выполнения курсовой работы студенту необходимо:
Новые изучаемые темы: · процедуры и функции (приложение 1); · работа с текстовыми файлами (приложение 2); · работа с интегрированной математической системой MathCAD. Построение графиков (приложение 3). Расчет на ЭВМ характеристик входных и выходных сигналов электрических цепей Постановка задачи Настоящая курсовая работа посвящена решению задачи машинного анализа электрических цепей. В курсовой работе необходимо для заданной электрической цепи (см. рис. 1) по известному входному сигналу Uвх(t) построить выходной сигнал Uвых(t), а затем определить некоторые его характеристики W. Вариант задания определяется индивидуальным кодом студента АБВ следующим образом:
Вычисления величин Uвх(t) и Uвых(t) выполнить для N-равноотстоящих моментов времени t, где t Прежде чем приступить к выполнению своего варианта курсовой работы рекомендуется внимательно изучить пример выполнения курсовой работы. Методические указания. Пример выполнения курсовой работы Рассматривается вариант А=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 В. Решение задачи состоит из пяти самостоятельных частей:
Первые четыре части оформляются в виде подпрограмм (процедур или функций). Последняя подзадача - построение графиков – выполняется с помощью интегрированной системы MathCAD. ЗАМЕЧАНИЕ: ввод исходных данных и вывод результатов решения задачи могут быть оформлены также в виде самостоятельных процедур. Приведение входного сигнала к аналитическому виду В рассматриваемом примере курсовой работы входной сигнал Uвх(t) задан в виде графика (рис. 2). В этом случае необходимо перейти от графика к аналитическому выражению. Из графика видно, что Uвх(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; 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
Таблица описания пользовательских подпрограмм Таблица 2
Пояснения к тексту программы Предложенная для решения задача разбита на четыре основные части (подзадачи). Каждая из этих частей реализована в виде подпрограммы (процедуры или функции). Ввод исходных данных, необходимых для решения задачи, выделен также в самостоятельную процедуру под именем DATA. В программе предусмотрен вывод результатов решения задачи на экран монитора по желанию пользователя (процедура REZULT). Все подпрограммы разработаны в соответствии с принципом максимальной изоляции данных. Это значит, что любая из подпрограмм описана с использованием только формальных параметров и локальных переменных без ссылок на глобальные переменные, что позволяет сделать подпрограммы в некотором смысле универсальными, а также повысить их надежность за счет устранения их влияния друг на друга. Процедура формирования массива входных отсчетов Описание процедуры UIN1 смотри в тексте программы на рис.3. Пояснения к тексту процедуры UIN1 После приведения входного сигнала Uвх(t) к аналитическому виду можно с помощью процедуры UIN1 сформировать массив входных отсчетов в заданных пользователем равноотстоящих точках диапазона наблюдения выходного сигнала. Описание процедуры помещено в разделе деклараций основной программы. Это описание является «образцом действий», в соответствии с которым данная процедура будет выполняться каждый раз при вызове ее из основной программы. Имя процедуры - UIN1 задано в заголовке процедуры. В круглых скобках перечислен список формальных параметров. Шесть из них являются параметрами значениями, один – параметр – переменная, о чем свидетельствует стоящее перед ним зарезервированное слово var. Использование var-параметра в данном случае необходимо, так как в результате работы процедуры будет сформирован массив отсчетов входного сигнала, который в дальнейшем необходимо будет передать в процедуру формирования массива выходных отсчетов. Поэтому после выхода из процедуры UIN1 массив отсчетов входного сигнала должен быть сохранен, ибо без него невозможна дальнейшая работа других подпрограмм (см. прил. 1). В разделе описаний локальных переменных var описаны текущее время t, два коэффициента «a» и «b», вычисляемые по выведенным выше формулам, шаг изменения временного интервала del, вычисляемый по формуле:
Раздел описания переменных внутри процедуры является описанием локальных параметров. Эти параметры доступны только внутри той процедуры, где они описаны (в данном случае внутри процедуры 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В. Таблица вычислений Таблица 3
Выполнение программы при рабочем наборе исходных данных Для рабочего набора исходных данных 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. Результаты работы демонстрируются преподавателю и заносятся в пояснительную записку в виде двух графиков. На этом выполнение курсовой работы можно считать завершенным. Подпрограммы. Процедуры и функции Подпрограмма – это программа, которая является частью другой программы и удовлетворяет всем требованиям, предъявляемым к структуре программы в используемом языке программирования. В языке программирования Turbo Pascal имеется две разновидности подпрограмм – процедуры и функции. Любая пользовательская подпрограмма предполагает наличие в основной программе двух составляющих:
Подпрограмма должна быть описана до того, как она впервые будет использоваться в программе. Глобальные и локальные параметры Все параметры, которые использует подпрограмма, можно разбить на два вида:
Локальные параметры объявляются внутри подпрограммы и доступны только самой подпрограмме. Для локальных параметров происходи динамическое выделение памяти в процессе решения задачи. Такой вид выделения памяти называется стеком . После выполнения подпрограммы память, выделенная под локальные параметры, освобождается. Глобальные параметры объявляются вне подпрограммы в разделе деклараций основной программы и могут быть доступны как самой основной программе, так и всем ее подпрограммам. Для глобальных параметров происходит статическое выделение памяти на этапе компиляции. Глобальные параметры хранятся в сегменте данных. Глобальные параметры сохраняют свои значения в течение «всей жизни» программы. ЗАМЕЧЕНИЯ:
Глобальные временно приостанавливают свое действие, т.е. объект, описанный с помощью глобальных параметров, совпадающих с именами локальных параметров, становится недоступным из подпрограммы. Это возможно благодаря тому, что глобальные и локальные параметры хранятся в разных независимых областях памяти. Процедура Процедура предназначена для выполнения какой-либо законченной последовательности действий. Описание процедуры состоит из заголовка и тела. Заголовок процедуры обязателен. Формат заголовка: procedure <имя процедуры> [(список формальных параметров)] procedure – служебное слово: Список формальных параметров необязателен, о чем свидетельствуют квадратные скобки []. Тело процедуры может включать такие же разделы, что и основная программа. Процедура всегда заканчивается точкой с запятой в отличие от программы, которая всегда заканчивается точкой. Операторы, образующие тело процедуры, компилируются только один раз и существуют в программе в единственном экземпляре, однако вызвать эту процедуру можно сколько угодно раз. Это позволяет сделать программу достаточно компактной. Но даже в случае, если процедура выполняется только один раз, использование ее позволяет расчленить задачу на ряд самостоятельных частей, т.е. процедура является средством структурирования программы. Функция Функция предназначена для вычисления какого-либо элементарного значения, поэтому функция может быть использована наравне с переменными в выражении соответствующего типа. У функции с точки зрения синтаксиса есть два отличия от процедуры:
Формат заголовка: function <имя функции> [(список формальных параметров)] : <тип возвращаемого результата> Заголовок функции состоит из служебного слова function, за которым следует имя функции, далее в круглых скобках описывается список формальных параметров, если он есть. Затем через двоеточие указывается тип возвращаемого результата. Функция может возвращать значения следующих типов: порядковый, вещественный, стандартный тип – string (строковый). Пример: program ex_2; uses CRT; var x: real: Формальные и фактические параметры При описании подпрограммы используются формальные параметры, которые по сути являются локальными переменными. Но они обеспечивают обмен значениями между основной программой и подпрограммами. При вызове подпрограммы из основной программы используются фактические параметры, которые подставляются на место формальных параметров. Именно эти фактические параметры при выполнении подпрограммы замещают все вхождения в подпрограмму необходим для настройки данной подпрограммы на конкретные фактические параметры. Связь фактических и формальных параметров:
Параметры-значения Передаются основной программой в подпрограмму в виде копии (через стек) и, следовательно, в случае каких-либо действий любые изменения в подпрограмме произойдут с копией параметров и никак не отразятся на собственных параметрах программы. Параметры-значения указываются в заголовке программы своим именем и, через двоеточие – типом. Тип может быть любым. Если параметров-значений одного типа несколько, то их можно перечислить через запятую, а затем через двоеточие указать общий тип. Отдельные группы параметров отделяются друг от друга точкой с запятой. Параметры-переменные (var-параметры) При передаче параметров-переменных в подпрограмме фактически через стек передаются не сами значения, а адреса, по которым эти значения хранятся. Следовательно, подпрограмма имеет прямой доступ к этим переменным и может их изменить (подпрограмма в этом случае работает непосредственно с сегментом данных). Параметр-переменная указывается в заголовке программы аналогично параметру-значению, но перед именем параметра записывается служебное слова var. Действие слово var распространяется до ближайшей точки с запятой. ЗАМЕЧАНИЕ: Особенности var-параметров: фактические параметры при вызове должны быть обязательно переменными. Нельзя использовать константы или выражения. Пример: {--------------------------------} BEGIN writeln(`введите исходные числа`); readln(x,y); writeln(`исходные: `,x:5,y:5); С клавиатуры вводится два целых числа 10 и 20. Далее эти числа передаются процедуре Dec1, где они уменьшаются на 5 единиц каждое. Один из параметров передается как параметр-переменная, другой – как параметр-значение. Результаты выводятся на экран. исходные: 10 20 уменьшенные 5 15 результирующие 5 20 Уменьшение параметра «у» внутри процедуры не вызвало изменения параметра «у» в основной программе, так как этот параметр описан в заголовке процедуры как параметр-значение. Изменение параметра «х» внутри процедуры привело к изменению параметра «х» в основной программе, так как этот параметр описан в заголовке процедуры как параметр-переменная. ЗАМЕЧАНИЕ: Именно поэтому var-параметры используются для связи подпрограмм с внешним миром. Подпрограмма с помощью var-параметров передает результаты своей работы вызывающей ее основной программе. В распоряжении программиста есть еще один способ связи подпрограммы с основной программой – через глобальные переменные, однако такой способ может привести к многочисленным ошибкам. При использовании var параметров по вызову процедуры сразу видно, какую именно переменную изменяет процедура. Однако не следует злоупотреблять использованием как глобальными переменными, так и var параметрами, ибо это затрудняет понимание и отладку программы. Вызов процедур и функций из основной программы
Работа с файлами. Организация ввода-вывода информации
Конфигурация устройств ввода-вывода Турбо Паскаля Результаты работы программы и исходные данные могут быть записаны в файлы на диске, с помощью специальных процедур работы с файлами прямо из программы. В Турбо Паскале ввод-вывод информации осуществляется через файловые переменные (ФП). ФП – это переменная, имеющая файловый тип (ФТ). ФТ состоит из последовательности компонентов определенного типа. Тип каждой компоненты произволен (за исключением файлового типа). При описании компонент файлового типа число компонент заранее не устанавливается. Файловые переменные служат для выполнения операций чтения, записи, удаления файла, но не могут быть использованы для операций присваивания, сравнения. Файловый тип – единственный в Турбо Паскале, посредством которого данные, обрабатываемые в программе, могут быть получены извне, а результаты работы программы помещены (переданы) во внешний мир. Файловый тип связывает программу с внешними устройствами персонального компьютера. До того как ФП будет использована, ей должен быть поставлен в соответствие внешний файл путем вызова специальной процедуры assign. Внешний файл – это или поименованный дисковый файл, или устройство ввода-вывода типа клавиатуры, дисплея и т.п. Для выполнения операции ввода-вывода ФП после установки соответствия с внешним файлом должна быть «открыта». Уже существующий файл может быть открыт с помощью процедуры Reset. Новый файл открывается с помощью процедуры Rewrite. Существуют три способа задания файлового типа и соответственно три вида файлов: типизированные, текстовые и нетипизированные. Мы будем работать с текстовыми файлами. В текстовых файлах:
При работе с текстовым файлом необходимо придерживаться следующей последовательности действий: 1. До работы с файлом его необходимо объявить. Объявление текстового файла всегда производится в разделе var. var f: text 2. Открытие файла для записи или чтения. Assign(f, FName); Rewrite(f); Reset(f) Процедура Assign ставит в соответствие файловой переменной f имя внешнего файла FName. Все последующие операции с переменной f будут производиться над внешним файлом с именем FName. Имя файла может содержать маршрут. Процедуру нельзя применять, если файл открыт. Если в качестве имени задать пустую строку, то это означает связывание ввода/вывода с консолью (клавиатура или дисплей). Процедура Rewrite(f) создает новый файл и открывает его. Если внешний файл с таким именем уже существует, то он будет уничтожен, и на его месте будет создан новый пустой файл с тем же именем. Указатель текущей позиции устанавливается в начало пустого файла. При создании нового файла будьте осторожны, чтобы не уничтожать нужную информацию. 3. Запись данных. Writeln(f, <список ввода>); f означает, что поток данных будет направляться на конкретные физические устройства компьютера, связанные в данный момент с логическими именем этого файла. Если f – отсутствует, то вывод осуществляется на экран дисплея. 4. Закрытие открытого файла. Close (f) После этого логическое имя может быть использовано повторно. Пример: program ex_4; var f: text; BEGIN Assign(f,`E:\STUDENT\|ab.pas`); Rewrite(f) writeln(f,`работаем с текстовым файлом`); Close (f); END. Работа с интегрированной программной средой MathCAD Данная математическая программная система предназначена для выполнения самых разнообразных математических вычислений. Интегрированная система (ИС) – это программа, в которую входя функционально различные компоненты, способные взаимодействовать между собой путем передачи информации и объединенные единым унифицированным пользовательским интерфейсом.
Загрузка системы в память компьютера происходит с помощью команды >mcad.exe. Выход из системы – Quit (^Q). После загрузки системы на экране дисплея появляется окно системы. При нажатии на клавишу F10 в верхней полоске экрана появляется главное меню системы, с помощью которого можно управлять работой всей системы MathCAD. Команда File/Load[F5] из главного меню позволяет загрузить нужный вам файл. Записать (сохранить) документ можно с помощью команды File/Save[F6]. Задание графического режима – нажатие на клавишу @, после чего на экран выводится шаблон графика: Для задания локального графического формата надо ввести курсор внутрь шаблона (он примет вид латинской буквы L), после чего нажать на клавишу F (команда FORMAT). В верхней полоске меню появляется параметры команды графического режима, которые можно отредактировать нужным вам образом. Параметры команды графического режима log y,x – указывает логарифмический или линейный масштаб графика ( 0 – линейный) subdivs y,x – задает число делений масштабной сетки по вертикали и горизонтали (1 – масштабная сетка не выводится) size y,x - определяет размер графика в знакоместах type – задает тип линии, с помощью которой строится кривая. Отредактируйте в командной строке параметры команды графического режима и нажмите клавишу Enter. Формат: logs = 0,0 subdivs = 1.1 size 10,20 type I Пример:
- определение функции, - границы интервала, - шаг изменения аргументов, - определение переменно х, изменяющейся на Интервале Вывести графический шаблон – вывести курсор на свободное место и нажать @. Происходит подключение графического блока. Для изменения внешнего вида графика можно работать с командой FORMAT, как это описано выше. Реализация разветвляющегося алгоритма (встроенная условная функция if) Формат: If (<усл>,<выр1>,<выр2>) – возвращает значение <выр1>, если условие выполняется, и значение <выр2>, в противном случае. Условие – это переменная, const или выражение, соединенные операциями отношения. Пример реализации разветвляющегося алгоритма Построим график функции, заданный двумя ветвями В окне текстового редактора системы MathCAD необходимо набрать График, реализованный тремя ветвями Построение графика функции Файлы данных в MathCAD MathCAD позволяет организовать обмен данными с другими системами или программами. Для организации такого обмена используются файлы – именованные совокупности данных, хранящиеся на диске. ИС MathCAD может обрабатывать файлы, содержащие наборы чисел в формате ASCII – кодов, доступ к которым осуществляется строго последовательно. Если есть на диске файл данных, то можно с помощью функции REDPRN (имя файла) прочитать этот файл в оперативную память для его дальнейшей обработки, в частности для построения графика. Необходимо, чтобы файл данных находился в текущем каталоге и имел расширение .prn. В редакторе MathCAD для этого должно быть набрано следующее: ORIGIN: = 1 x: = READPRN(f1) y: = READPRN(f2) n: = iength(x) n = i: = 1..n - значение первого индекса вектора - чтение данных из файла - число элементов вектора х - знак равенства означает подключение вычислителя, в результате работы которого будет выдана размерность считанного массива - пределы изменения индекса Документ обмена с файлами Pascal-программы и далее следует построение графика. Формирование массива отсчетов входного сигнала Решение этой задачи зависит от способа задания входного сигнала Uвх(t).
Замечание: При работе с вложенными циклами необходимо помнить несколько правил:
Формирование массива отсчетов выходного сигнала Uвых(t) При решении этой задачи необходимо организовать арифметический цикл. В этом цикле для каждого элемента массива входного сигнала Uвх(I) вычисляется значение соответствующего ему элемента массива выходного сигнала Uвх(I). Решение этой задачи зависит от способа задания передаточной характеристики электрической цепи.
Определение заданных характеристик W выходного сигнала Uвых(t) Рассмотрим ряд характеристик, которые наиболее часто используются при анализе радиотехнических цепей. Амплитудные характеристики
(для вариантов с кодами В=00 и 01).
(для вариантов с кодом В=02). Временные характеристики Длительность импульса tи=t2-t1 Рис. 5. График выходного сигнала для вычисления величины tи Как видно из рис. 5 при определении величин t2 и t1 значение величины a. определение величины Umax и определение величины b. определение величин t1 и t2; c. нахождение длительности импульса tи=t2-t1 (для варианта с кодом В=03). Методические указания по выполнению контрольного расчета Основные рекомендации по выполнению контрольного расчета заключаются в следующем:
Варианты задания входного сигнала Uвх(t), электрической цепи и вычисляемых характеристик. Приведены таблицы, с помощью которых определяется вариант задания к курсовой работе. Задания входного сигнала в виде графика Таблица 4
Задание входного сигнала в виде аналитических выражений
Задание передаточной характеристики в виде аналитических выражений
Задание передаточной характеристики в виде графика
Задание вариантов вычисляемых характеристик выходного сигнала Таблица 6
Определение варианта курсовой работы Таблица 7
Пояснение к таблице 7 Ваша курсовая работа определяется значениями кодов А, Б, В. Величины m, n, p определяются тремя последними цифрами вашего студенческого билета. Например, для студенческого билета, имеющего три последние цифры 094, вариант курсовой работы определяется следующим образом:
|