Смекни!
smekni.com

Графическое программирование на Ms Fortran (стр. 1 из 4)

Графическое программирование на Ms Fortran

Курс лекций по дисциплине по специальности «ПГС» после техникума

Факультет – строительный; кафедры – «Металлические и деревянные конструкции» и «Железобетонные и каменные конструкции»

Задачи курса

Усвоение основных принципов разработки инженерных алгоритмов и графических программ, реализуемых в дальнейшем на различных языках программирования. Язык Fortran рассматривается не как самоцель, а как инструмент обучения программированию.

Литература

1) Уорд Т., Бромхед Э. Фортран и искусство программирования персональных ЭВМ. - М.: Радио и связь, 1993.-352с.

2) Программирование на Фортране 77/ Дж. Ашкрофт, Р. Элдридж и др. - М.: Радио и связь, 1990.-272с.

3) Бартеньев О.В. Фортран для студентов. - М.: "Диалог-МИФИ", 1999.-400с.

4) Рыжиков Ю.И. Программирование на Фортране Pоwer Statiоn для инженеров. Практич. рук-во. - СПб.: КОРОНАпринт, 1999.-160с.

5) Н.А Рак, В.И Смех, С.Б. Щербак Программирование инженерных задач на FORTRANе: Уч. методич. пособие по дисц. "Выч. техн. и программир." - Мн.: БГПА, 1998.-45с.

6) Соловьев П.В. FORTRAN для персонального компьютера: Справ. пособие. - М.: Арист, 1991.-224с.

7) Н.А Рак, В.И Смех, С.Б. Щербак Графическое программирование: Уч. методич. пособие по дисц. "Выч. техн. и программир." - Мн.: БГПА, 1997.-40с.

8) Бартеньев О.В. Графика OрenGL: программирование на Фортране. М.: ДИАЛОГ-МИФИ, 2000.-368с.

Этапы разработки графических программ

Для разработки графических программ на Fortran необходимо иметь в наличии библиотеки графических процедур, содержащиеся в файле Graphics.lib.

Разработка графических программ состоит из следующих этапов:

Подключение графической библиотеки

Установка видео режима

Установка среды изображения

Создание и управление графическими объектами

Восстановление первоначальной конфигурации перед выходом из программы

Графические процедуры представляют собой функции и подпрограммы. Каждая программа, использующая графическую библиотеку должна ЯВНО объявить процедуры. Отдельную используемую графическую процедуру можно объявить, написав ее интерфейс (смотри справку NORTON GUIDE). Сразу все графические процедуры можно описать, включив в программу файлы FGRAPH.FI и FGRAPH.FD. FGRAPH.FI – содержит объявление процедур в операторах INTERFACE (см. далее).

Оператор INTERFACE объявляет имя процедуры (функции), ее атрибуты и типы формальных параметров. Оператор используется для обеспечения корректности вызовов п/п. Компилятор выполняет проверку числа и типов параметров в вызове п/п с параметрами, указанными в интерфейсе.

Пример:

INTERFACE TO INTEGER FUNCTION Func (p, d, q)

Integer*2 p

Real d типы параметров

Real*8q

END

где: INTEGER – тип функции; FUNCTION – функция; Func – имя функции; p, d, q – формальные параметры.

Здесь объявлена целая функция (возвращающая целое значение) Func с тремя входными параметрами p, d, q. Вызов данной функции обычен:

K = Func (p,d,q)

INTERFACE TO ________________ SUBROUTINE Mix (a,b,c) – объявляет п/п (находится в библиотечном файле с расширением .LIB), находящейся в другом файле.

Вызов п/п обычен CALL MIX (a,b,c)

Файл FGRAPH.FD содержит объявления структурных и символических констант и объявлений операторов EXTERNAL для графических процедур.

Пример, кода файл FGRAPH.FD:

имя структуры

STRUCTURE /videoconfig/

Integer*2 numxpixels элементы структуры

а) Integer*2 numypixels

………………………. операторы объявления типов и/или RECORD.

END STRUCTURE

б) INTEGER*2 setvideomode [extern] PARAMETER ($YELLOW = #153f3f)

в) EXTERNAL getvideoconfig PARAMETER ($BRIGHTWHITE = #3f3f3f)

г) INTEGER*4$YELLOW,$BRIGHTWHITE

а) Определение составного типа переменной (структуры).

Обратиться к элементу структуры (для присвоения или получения значения) можно следующим способом:

X = videoconfig.numxpixels


имя структуры элемент структуры

Структуры могут вкладываться друг в друга с использованием оператора RECORD – объявляет структуру для имен, определяемых пользователем.

Пример:

STRUCTURE /full_adress/ !объявление структуры

RECORD /full_name/ personsname !вложение структуры full_name под именем personsname.

INTEGER*1 age

INTEGER*4 phone

END STRUCTURE

Структура full_name может иметь следующий вид:

STRUCTURE /full_name/

Character*15 first_name

Character*20 last_name

END STRUCTURE

Обращение к элементам структуры может быть осуществлено следующим образом:

WRITE (5,*) ‘имя:’, full_adress.personsname.first_name

WRITE (5,*) ‘возраст:’ full_adress.age

б) Объявление целой функции setvideomode.

Атрибут EXTERN указывает, что переменная (в данном случае являющаяся именем функции) размещается в другом исходном файле. Вообще атрибут позволяет определить для переменной, типа переменной, п/п или формальных параметров п/п некоторую дополнительную информацию. Атрибут заключается в квадратные скобки [ ].

Ранее рассматривался пример с атрибутом ALLOCATABLE, указывающим, что массив является динамическим (“размещаемым”).

в) Объявление пользовательского имени как внешней п/п getvideoconfig.

г) Объявление символических констант. В данном случае, задаются значения цветов (в шестнадцатиричном виде) двум целым константам.

Указанные файлы содержат объявления, необходимые для использования графических процедур.

Файл FGRAPH.FI включается в начало каждого исходного файла программы, а FGRAPH.FD в каждую п/п, содержащую графическую процедуру. Включение производится оператором include – вставка содержимого указанного файла в позиции оператора include.

Пример:

include ‘fgraph.fi’ ! вставка текста файла fgraph.fi

………………….

program LINE

………………….

include ‘fgraph.fd’

…………………. символическая константа

I2 = setvideomode ($MAXRESMODE) ! графическая функция установки видеорежима

………………….

end

2. Установка видеорежима

Установка видеорежима необходима для выполнения графических процедур. Под видеорежимом подразумевается:

тип используемого монитора и видеокарты;

разрешение экрана;

использование цветного или монохромного изображения;

количество отображаемых цветов, определяемое количеством памяти выделяемой под цвет. Так “четырех битный цвет” соответствует шестнадцати цветам, восьми битный – 256 (т.е. два в восьмой степени) и т.д.

В настоящее время обычно используется 16 и 24 битные цвета.

Иногда до установки видеорежима для предотвращения возможных проблем несовместимости необходимо получить информацию о текущей видеосистеме.

Получение такой информации:

Record /videoconfig/ Myvideoconf ! включение структуры videoconfig под именем Myvideoconf

……………………..

call getvideoconfig (Myvideoconf) ! вызов п/п определения видеоконфигурации

Элементы структуры videoconfig описаны в файле fgraph.fd. Данной п/п можно узнать разрешение экрана, возможное количество цветов и т.д. Значения возвращаются через элементы структуры.

Установить графический видеорежим можно функцией setvideomode.

Пример:

dum = setvideomode ($MAXRESMODE)

В функцию передается идентификатор (номер) видеорежима. В данном случае передается символическая константа целого типа $MAXRESMODE (= - 3), определенная в файле FGRAPH.FD и определяющая, что выбирается и устанавливается видеорежим с максимальным разрешением.

В случае возникновения ошибки функция возвращает значение 0.

3. Установка среды изображения.

Перед непосредственным выводом изображения необходимо произвести некоторые предварительные настройки.

Установка курсора.

Функция displaycursor позволяет включить или выключить изображение курсора.

Пример:

I2 = displaycursor (1) ! включение курсора, 0 – выключение. Можно использовать символические константы $GCURSOROFF и $GCURSORON.

3.2 Установка палитры.

Каждому цвету на экране ставится в соответствие индекс цвета, по которому он вызывается. Обычно имеется 16 индексов, которым соответствуют 16 стандартных цветов, хотя самих цветов может быть больше.

Для ассоциирования цвета конкретному индексу используются процедуры: remappallpalette, remappalette и selctpalette.

Значение цвета определяется целым числом, состоящим из четырех байт (32 битов). Цвет задается указанием уровня интенсивности для каждого значения красного, зеленого и голубого цветов (RGB модель).

Значение цвета в двоичном виде:

zzzzzzzz zzBBBBBB zzGGGGGG zzRRRRRR, где z это 0, а B, G и R – значения битов для соответствующих цветов различной интенсивности. 1 (двоичные 00000001) соответствует минимальной интенсивности, а 63 (двоичное 00111111) максимальной. Чисто желтому цвету (100% зеленого и 100% красного) соответствуют значение:

(00000000 00000000 00111111 00111111)2 = (1392447)10 = (153f3f)16

белому (всего по 100%): (4144959)10 = (3f3f3f)16

Пример:

i2 = remapalette (1#153f3f) !присвоение индексу 1 желтого цвета

аналогично

i2 = remapalette (1,1392447)

аналогично

i2 = remapalette (1,$YELOW) !где $YELOW – константа, соответствующая желтому цвету (определена в файле Fgraph.fd)

Функция remappallpalette выполняет одновременное переназначение всех индексов цвета. В функцию передается массив значений цветов.

Установка координатных систем

Текстовые координаты.

Текстовые координаты служат для отображения текста шрифтом фиксированного размера. Координаты текста задаются в строках и столбцах. В обычном текстовом режиме: 25 строк и 80 столбцов. Установка текстовых координат осуществляется графической п/п settextposition.

Пример:

call settextposition (10, 50, rc)