- •Оглавление
- •1. Введение
- •Постановка задачи
- •2.1 Условия
- •2.2 Анализ графиков
- •3. Разработка алгоритма на языке Си
- •3.1 Проектирование
- •Реализация программы
- •3.3.1 Main.C
- •3.3.2 Library.C
- •Void times(float*, parametrs);
- •Void uins(float*, float*, parametrs);
- •Void uouts(float*, float*, parametrs);
- •Int save_full_file(char*, float*, float*, float*, parametrs);
- •Int save_maxima_file(char*, char*, char*, float*, float*, float*, parametrs);
- •Void load_file(char*, parametrs*);
- •3.3.3 Таблица констант
- •3.3.4 Таблица идентификаторов
- •4.1 Тест 1
- •5. Заключение
- •7. Приложение
- •7.11 Main.C
- •7.12 Library.C
- •7.13 Include.H
Реализация программы
Программа состоит из следующих модулей:
3.3.1 Main.C
Main.c - модуль содержит меню (функция choice()) с вызовами функций реализации. Главным элементом модуля является цикл while, с помощью которого реализуется цикличность выбора пунктов меню пользователем. До тех пор пока переменная choice не примет значение EXIT_CODE, программа будет предлагать пользователю выбрать какой-либо пункт меню. Выбор реализуется конструкцией switch:
Case 1: формирует массивы отсчетов времени, входного и выходного сигналов. Выводит на экран таблицу, содержащую значения этих массивов. Начальные параметры для формирования массивов заданы в программе. В этом пункте пользователь не может их изменить
Case 2: формирует массивы отсчетов времени, входного и выходного сигналов. Выводит на экран таблицу, содержащую значения этих массивов. Начальные параметры для формирования массивов берутся из файла, имя которого описано в константе F_INPUT. Если файла с таким именем не существует, то выведется ошибка. Параметры в файле записываются последовательно, на каждой строке по одному параметру. В файле указаны следующие параметры: n – количество точек, tn – начальное время, tk – конечное время, t1, t2, ui1, ui2, uimax, uimin, uomax, uomin – координаты точек.
Case 3: формирует массивы отсчетов времени, входного и выходного сигналов. Выводит на экран таблицу, содержащую значения этих массивов. Начальные параметры для формирования массивов пользователь вводит с клавиатуры. Последовательно, один за другим пользователю предлагается ввести следующие параметры: n – количество точек, tn – начальное время, tk – конечное время, t1, t2, ui1, ui2, uimax, uimin, uomax, uomin – координаты точек
Case 4: рассчитывает длительность заднего фронта выходного сигнала. После выбора этого пункта пользователю предлагается ввести значение точности, с которой необходимо вычислить фронт.
Case 5: сохраняет сформированные массивы в .txt файл (в виде таблицы)
Пример фрагмента файла full.txt:
SAVE TIME Fri Jun 08 20:56:38 2012
n = 200
tn = -5.000
tk = 15.000
t1 = 2.000
ui1 = 0.000
ui2 = 10.000
uimax = 100.000
uimin = 0.000
uomax = 50.000
uomin = 0.000
step | time | u_in | u_out
1 | -5.000 | 0.0000 | 0.0000
2 | -4.899 | 1.4357 | 7.1787
3 | -4.799 | 2.8715 | 14.3575
4 | -4.698 | 4.3072 | 21.5362
5 | -4.598 | 5.7430 | 28.7150
6 | -4.497 | 7.1787 | 35.8937
7 | -4.397 | 8.6145 | 43.0725
8 | -4.296 | 10.0502 | 50.0000
9 | -4.196 | 11.4860 | 50.0000
10 | -4.095 | 12.9217 | 50.0000
…
Case 6: сохраняет сформированные массивы по отдельности в три .txt файла (это делается для последующего чтения этих файлов программой wxMaxima)
Case 7: выводит краткую информацию о программе
Default: срабатывает при условии, если введено неверное значение
3.3.2 Library.C
library.c – модуль содержит все функции реализации.
Функции интерфейса:
int menu(void);
Назначение: функция вызывает меню и ожидает пользовательского ввода. Как только значение введено функция его возвращает
Интерфейс: функция не имеет принимаемых значений. Функция возвращает значение типа int (это значение далее используется в конструкции switch – case)
Результат: Результатом выполнения функции является меню на экране и введенное пользователем значение в точке вызова функции.
void display(float*, float*, float*, parametrs);
Назначение: функция выводит на экран значения трех массивов в виде таблицы с заголовком.
Интерфейс: функция принимает последовательно три указателя на тип float, и структуру parameters. Возвращаемых значений функция не имеет
Результат: Результатом выполнения данной функции является таблица со значениями трех массивов.
void info(void);
Назначение: функция выводит на экран информацию о программе
Интерфейс: функция не имеет входных параметров и ничего не возвращает
Результат: Результатом выполнения этой функции является краткая информация на экране
Функции для работы с массивами
void create(float*, float*, float*, parametrs);
Назначение: На основе параметров цепи функция формирует три массива: массив отсчетов времени, массив входного сигнала и массив выходного сигнала
Интерфейс: функция принимает три указателя на тип float, и структуру parameters. Возвращаемых значений функция не имеет.
Эта функция описана для удобства. Эта функция вызывает функции times(), uins() и uouts() (описаны ниже). Но гораздо удобнее вызвать одну функцию, чем три.
float step(float, float, int);
Назначение:
функция определяет значение шага на
основе принимаемых параметров.
Используется формула
Интерфейс: функция принимает 2 значения типа float (это начальное и конечное значения времени) и одно значение типа int (количество точек). Возвращает функция значение типа float
Результат: В результате работы этой функции в точке вызова окажется значение шага при заданных параметрах
Эта функция также описана для удобства
