Усвоение основных принципов разработки инженерных алгоритмов и графических программ, реализуемых в дальнейшем на различных языках программирования. Язык 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) 10, 50–координаты начала текста; rc – локальное имя структуры rccoord (см. fgraph.fd) с помощью которой возвращается и передается в п/п предыдущая текстовая координата для ее переразмещения в новую. Координата (1,1) находится в левом верхнем углу. Физические координаты. Физические координаты являются фиксированными и определяются техническими средствами (видеокартой и монитором).Начало координат находится в левом верхнем углу, если не используется п/п setvieworg. Разрешения 640*480; 800*600. Физические координаты являются целочисленными. Пример: перенос начала координат в точку (50, 100) CALL setvieworg (50, 100, xy) Теперь координата x изменяется от 50, до .numxpixels-50, а y, от 100 до .numypixels-100, где numxpixels и numypixels – элементы структуры videoconfig, содержащие максимальное число пиксел по осям OX и OY. Переустановка начала координат повлияет на все графические процедуры. Используя физические координаты можно установить невидимую координатную область ‑ “область клипа”. Рисование в этом случае производится только в этой области, попытка рисования вне области игнорируется. Пример: call setcliprgn (10,10,100,100) – установка квадратной “области клипа”. Процедура setcliprgn не изменяет систему координат. 3.3.3 Координаты порта просмотра “Порт просмотра” (“viewport”) – прямоугольная область экрана в которой осуществляется рисование. “Порт просмотра” устанавливается процедурой setviewport. Действие этой процедуры аналогично процедуре setcliprgn, но с переносом начала координат в левый верхний угол области. При использовании “оконных” координат необходимо создать "порт просмотра”. Пример: Call SetViewPort(20,20,200,200) Аналогично: Call SetClipRgn(20,20,200,200) Call SetViewOrg(20,20) Оконные координаты. Оконные координаты используются для масштабирования изображения. Они устанавливаются для текущего порта просмотра. Все функции работы с окнами оканчиваются символом “-w”. Значение оконных координат имеют не целочисленный тип Integer (как обычно), а вещественный тип Real*8. Пример: dum = SetWindow (.TRUE.,-200.,-56,3.,500.,400.) – установка оконных координат в текущем “порту просмотра” .TRUE. – увеличение по оси ординат снизу вверх .FALSE. – увеличение по оси ординат сверху вниз На рисунке в круглых скобках ( ) показаны физические координаты, в квадратных [ ] оконные координаты. На каждый физический пиксель по ОХ приходится оконных пикселя и по OY 1.91. При нулевых размерах окна функция не выполняется. При успешном выполнении функция setwindow возвращает ненулевое значение. Пример работы с координатными системами. Приведены стандартная головная программа и п/п. $DEBUG ! Производит дополнительные проверки при компиляции include 'fgraph.fi' ! Включение интерфейсов графических interface to function getch() integer getch[C,alias:’_getch’] end program graph_examples implicit NONE ! Запретить неявное объявление типов integer *2 dum ! Фиктивная переменная integer getch[EXTERN] include 'fgraph.fd' ! Объявление типов графических функций dum=setvideomode($MAXRESMODE) ! Установить видеорежим с максимальным разрешением call graph_win() dum=getch() ! Задержка до нажатия любой клавиши dum=setvideomode($DEFAULTMODE) ! Установить предыдущий видеорежим end subroutine graph_win() include 'fgraph.fd' integer*2 dum ! DOUBLE PRECISION dg,dv,maxdim,xcen,ycen real*4 dg,dv,maxdim,xcen,ycen record /xycoord/xy record /videoconfig/vc ! Перемещение начала координат в точку (50,100) call setvieworg(50,100,xy) ! Рисование диагональной линии call getvideoconfig(vc) ! определение видеоконфигурации dum=setcolor(2) call moveto(-50,-100,xy) dum=lineto(vc.numxpixels-50,vc.numypixels-100) read* call setviewport(100,100,200,200) ! окно просмотра, координаты - физические dum=floodfill(1,1,3) ! заполнение области (окна просмотра) текущим цветом ! при отсутствии окна просмотра заполняется весь экран read* ! Рисование и масштабирование эллипса в квадратном окне просмотра call clearscreen($gclearscreen) write(5,*)'Введите диаметры эллипса по горизонтали и вертикали' read(5,*)dg,dv call setviewport(100,100,300,300) ! окно просмотра, координаты - физические dum=rectangle($gborder,1,1,199,199) !рамка окна maxdim=max(dg,dv) ! Максимальный габарит рисунка dum=setwindow(.false.,0.,0.,maxdim,maxdim) if(dum.eq.0) write(5,*)'Ошибка установки окна' ! Рисование, масштабирование эллипса и его центровка xcen=0.5*(maxdim-dg) ycen=0.5*(maxdim-dv) dum=ellipse_w($gfillinterior,xcen,ycen,xcen+dg,ycen+dv) end
Курсовые работы по информатикеУсвоение основных принципов разработки инженерных алгоритмов и графических программ, реализуемых в дальнейшем на различных языках программирования.
Оценок: 457 (Средняя 5 из 5)
Одними из наиболее популярных услуг на рынке IT-технологий являются создание и продвижение лендингов. Они способны положительно влиять на деятельность любого бизнес-проекта в интернете. Судя по многочисленным отзывам, заказавшие создание лендингов люди ни разу не пожалели о потраченных деньгах. Они вложили в будущее, которое неразрывно связано с интернетом. Всё больше и больше предпринимателей обращаются к услугам разных агентств, веб-студий, чтобы заказать создание лендинга у профессионалов.