6. Block_6: блок описания подпрограмм. Все подпрограммы являются встроенными и содержатся в разделе contains. Все подпрограммы предназначены для обработки команд. Почти все из них (кроме Animat и Paus) не содержат локальных переменных, для упрощения взаимодействия, структуры, сокращения количества требуемых ресурсов.
Графически структуру программы можно изобразить как это сделано на рис 4 (оговоримся сразу - это не блок-схема программы, это только схематичное изображение структуры).
Как легко можно заметить, для модификации программы, добавления в нее новых команд и возможностей достаточно изменять только блоки 4 и 6, т. е. добавлять новые условия и подпрограммы. Так же желательно включать новые команды в подпрограмму Help. Это позволит пользователям в любой момент получить список команд программы.
Почти все подпрограммы, реализующие команды используют глобальные массивы TDMas, VMas, PXMas, PYMas, XAxis, YAxis - это позволяет не передавать их, а также оперировать ими, в случае необходимости в основной программе. Так же подпрограммы используют глобальные переменные plx, ply, pld и vis.
Рис 4.
Каждая из них равна единице если соответствующий режим включен и равна нулю в противоположном случае. Эти переменные используются для того чтобы не переключаться каждый раз в новый режим. Также они используются подпрограммой Animat() для определения, какой массив ей заполнять.
Полный список всех подпрограмм и команд, им соответствующих:
Подпрограмма
Команда
Помощь
Stat()
status
Help()
help
Анимация
Animat()
anim
Виды отображения
PlainX()
plainx
PlainY()
plainy
Plain()
plain3d
Visu()
visual
Служебные
Paus()
pause
ChangeDelay()
delay
ChangeK()
k
-
newfile
exit
Команды newfile и exit не имеют своих подпрограмм - они выполняются оператором goto n.
Разберем подпрограммы по видам:
1. Подпрограммы помощи: Help() и Stat(): в реализации этих подпрограмм нет ничего сложного - они просто выводят информацию с помощью оператора write.
2. Подпрограмма анимации: Animat() : эта подпрограмма реализована следующим образом - вначале спрашивается шаг моделирования, с которого необходимо начать анимацию, затем конечный шаг. После этого, если выбран один из одномерных случаев запрашивается соответствующая координата. После этого, в зависимости от текущего вида отображения меняется какой-либо массив, после чего происходит вызов подпрограммы
API AV favUpdate, потом с помощью пустого цикла идет задержка. Пустой цикл просто перебирает числа от 1 до значения переменной delay*106. Это повторяется циклически для всех необходимых значений k.
3. Подпрограммы вида отображения: Visu(), Plain(), PlainX, PlainY(): в них сначала происходит проверка на текущий тип отображения. Если он не совпадает с тем, который выбран сейчас, то производится подготовка оболочки AV (масштабы шкал, их названия, тип отображения). Потом заполняется необходимый массив и вызывается favUpdate.
4. Служебные подпрограммы: ChangeK(): изменяет текущий шаг моделирования (переменная k), затем заполняет все массивы новой информацией, после чего вызывает favUpdate. ChangeDelay(): изменяет значение переменной delay, которая влияет на время задержки при анимации, а также на время задержки при исполнении команды pause. Paus(): подпрограмма сделана специально для скриптового режима. Она обеспечивает задержку. Состоит из пустого вложенного цикла.
Таким образом мы разобрали структуру и принципы работы программы console.exe. Приступим теперь к ее описанию.
1.5 Описание работы программы визуализации
В этом подразделе будут рассмотрены следующие вопросы:
· Терминология программы
· Формат файла со служебной информацией (pre-файла).
· Команды программы
· Скриптовый режим программы
· Запуска программы.
Терминология программы.
Прежде чем приступить к описанию работы с программой, необходимо пояснить несколько терминов, которые будут использоваться.
· k - шаг моделирования. Т.е. если у вас прибор промоделирован в нескольких режимах (например, при разных потенциалах на контактах полупроводника), то число k отражает номер этого режима.
· pre-файл - файл со служебной информацией (например, размерности массива)
· скрипт - последовательность команд (сценарий), записанных в текстовый файл, которые программа может интерпретировать.
· i - переменная в трехмерном массиве TDMas. Ее аналог - координата y
· j - переменная в трехмерном массиве TDMas. Ее аналог - координата x.
· Формат данных - формат по которому записываются данные в файл.
Формат pre-файла.
Pre-файл (от preset - предварительные установки)- это файл с установками, необходимыми для работы программы, а также с оформлением шкал.
Минимальная длина этого файла в строках - три, максимальная не ограничена, но читаться будут только первые восемь. Итак построчно:
1. Максимальное значение k. Формат: I2 (integer, две цифры)
2. Максимальное значение i. Формат: I2
3. Максимальное значение j. Формат: I2
Очень важно! Эти три строки обязательно должны быть в файле, иначе работа программы завершится с ошибкой. К тому же их нужно обязательно правильно и точно указать. Согласно этим параметрам формируются внутренние массивы программы и потом заполняются данными. Ошибка может повлечь за собой потерю данных или их искажение.
4. Коэффициент по оси X (j). Это позволяет отобразить данные не с теми координатами, которые предлагает AV, а с необходимыми вам. Т.е. индексы массива будут переведены, например, в микроны. По умолчанию равен 1 (т.е. на шкале отображаются индексы массива). Формат: E4.2 (т.е. вещественный, две цифры после запятой. Например, 0.50)
5. Коэффициент по оси Y (i). По умолчанию равен 1. Формат: E4.2
6. Имя оси X. Это имя отображается как имя заданной оси. Длина - не более 20 символов. По умолчанию : `X'.
7. Имя оси Y. Не более 20 символов. По умолчанию: `Y'.
8. Имя оси Z. (ось результатов). Не более 20 символов. По умолчанию: `Z'
Далее можно вставлять свои комментарии и пояснения. Программой они не учитываются.
Команды программы.
К сожалению язык Fortran не предоставляет достаточно мощных подпрограмм обработки строк. Поэтому все команды имеют вид не команда операнды, а просто команда. Далее, при необходимости, программа требует ввод дополнительных данных, обычно - координат, но помимо этого и различных значений. Внимание: все команды должны быть набраны в нижнем регистре.
Команды можно разделить на четыре группы:
1. Команды помощи
2. Виды отображения
3. Анимация
4. Служебные
Рассмотрим все команды (включая их дополнительный ввод) по их видам:
Команды помощи:
· help - эта команда выводит информацию о программе, ее версии и список всех доступных команд. Упоминание о ней есть в строке приглашения к вводу (Enter comand (help for comand list)>).
· status - эта команда выводит сообщение о текущих установках: максимальное и минимальное i, максимальное и минимальное j, максимальное k, текущее k, значение delay.
Виды отображения:
· visual - эта команда включает 3D-вид отображения. При запуске программы включается именно он. Она не требует дополнительного ввода.
· plain3d - эта команда включает отображение в виде растровой карты (контрастной заливки). В этом виде нельзя проводить анимацию. Не имеет дополнительного ввода.
· plainx - эта команда переключает в режим отображения одномерных массивов. Она позволяет отобразить сечение по Y. (Т.е. будет отображаться массив с изменяющейся координатой X и постоянной координатой Y). Требует ввод i.
· plainy - эта команда также переключает в режим отображения одномерных массивов. Она позволяет отобразить сечение по X. (Т.е. будет отображаться массив с изменяющейся координатой Y и постоянной координатой X). Требует ввод j.
Анимация.
· anim - эта команда позволяет провести анимацию при выбранном типе отображения (кроме контрастной заливки). При 3D -виде (команда visual) она требует только ввода начального значения k (k1) и конечного значения k (k2). При сечении по Y (команда plainx) она требует ввода координаты i, при каком значении этой переменной будет происходить анимация. При сечении по X (команда plainy) она требует ввода координаты j, при каком значении этой переменной будет происходить анимация. По окончании анимации текущее k принимает значение k2.
Служебные команды.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12