Рис.4.1. Схема взаимосвязей процедур и функций
Функции:
ReCalc (n: real; n1: real; alpha: real): real – возвращает угол преломления. n, n1 – показатели преломления, alpha – угол падения.
Menu(number: Integer): Integer – реализует работу с меню, возвращает выбранный пункт. number – предыдущий выбранный пункт меню.
ChangeN(flag: integer): real – возвращает новое значение показателя преломления. Если flag равен 1 – задается для первой среды, если 2 – для второй.
ChangeAl(n: real; n1: real; alpha: real): real – возвращает новое значение угла падения. n, n1 – показатели преломления, alpha – угол падения.
arcsin (x: real): real – возвращает арксинус аргумента x.
Процедуры:
MainCycle() – выполняет основной цикл программы.
GraphMode() – выполняет инициализацию графического режима.
Paint(n: real; n1: real; alpha: real) – отображает график, демонстрирующий преломление луча. n, n1 – показатели преломления, alpha – угол падения.
Recv() – выполняет вывод на экран реквизитов пользователя. Реквизиты хранятся в файле recv. txt.
SaveData(n: real; n1: real; alpha: real) – выполняет запись результатов в файл result. txt. n, n1 – показатели преломления, alpha – угол падения.
Info() – отображает на экран информацию о преломлении лучей.
LoadData(varn: real; varn1: real; varalpha: real) – выполняет загрузку данных из файла. n, n1 – показатели преломления, alpha – угол падения.
OutTextChangeAl() – выводит на экран вспомогательный текст при смене значения угла.
4.3. Описание функционирования
В основной программе выполняется единственная процедура MainCycle.
Перед основным циклом на экран выводятся реквизиты пользователя из файла "recv. txt". Затем выполняется установка входных данных по умолчанию, запись этих данных в файл, прорисовка графика и меню. Вызов меню выполняется в бесконечном цикле до тех пор, пока пользователь не выберет пункт "Выход". При выборе пункта "Информация" на экран будет выведена основная информация о преломлении света (процедура Info). При выборе пункта "Считать данные из файла" программа загрузит данные из файла "data. txt". При выборе пунктов "Изменить показатель преломления в 1-й среде", "Изменить показатель преломления во 2-й среде", "Изменить угол падения" можно менять соответствующие входные данные. При любом изменении данных результаты автоматически отображаются на графике и сохраняются в файл.
Рисунок 4.2. - Схема функционирования программы
4.4. Описание программных модулей
Я использовал в своей работе модули Graph и Crt (для работы с графическим и текстовым режимом соответственно).
Модуль Crtреализует работу в текстовом режиме. С помощью его процедур и функций можно проверять содержимое буфера клавиатуры и проверять код введенного символа.
Graphпозволяет работать с графическим режимом. С его помощью возможно отображение графических объектов. При помощи модуля Graph я выполнил прорисовку меню и графика.
5.1 Комплект поставки
В комплект поставки программного продукта входят следующие файлы:
kursach. exe– файл, запускающий программу.
info. txt - файл, содержащий справочную информацию.
recv. txt – файл, содержащий реквизиты пользователя.
ПЗ. doc - пояснительная записка в формате doc.
bold. chr, euro. chr, goth. chr, lcom. chr, litt. chr, sans. chr, scri. chr, simp. chr, smal. chr, trip. chr, tscr. chr– кириллические шрифты.
egavga. bgi – графический драйвер.
5.2. Порядок инсталляции
Для установки программы необходимо скопировать жесткий диск файлы kursach. exe, info. txt, recv. txt, *. chr и egavga. bgi. При необходимости можно создать файл data. txt, содержащий входные данные.
Во время тестовых испытаний я обнаружил несколько некорректных операций с плавающей точкой, ошибку переполнения стека, извлечение квадратного корня отрицательного аргумента, деление на ноль, некорректный вывод графика и некорректное сохранение результатов в файл. На данный момент все известные мне ошибки исправлены.
В результате выполнения работы я создал программный продукт, имитирующий модель преломления лучей на границе двух сред. Требования, изложенные в техническом задании, выполнены.
Я разработал удобный интерфейс, функцию вывода графика, отображающего преломление лучей на границе двух сред. Также имеется возможность работы с разными преломляющими средами, и смены угла падения.
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
А.1 Общие сведения
Полное название программного продукта: "Преломление света на границе раздела двух сред".
Плановый срок начала работы: 17.02.06
Плановый срок завершения работы: 5.06.06
А.2 Основание для разработки
Основанием для разработки является задание на курсовую работу по дисциплине "Программирование и алгоритмические языки", выданное кафедрой программного обеспечения интеллектуальных систем студенту группы СУА-О5 Паранчуку Станиславу.
А. З Цель работы
Цель разработки - создать программный продукт, который позволит демонстрировать преломление лучей на границе двух сред.