Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Рекурсивная процедура удаления элемента из списка






procedure delrec(var s: link; m: string);

var t: link;

begin

if s< > nil then begin

if s^.info=m then begin

t: =s^.next;

dispose(s);

s: =t

end

else delrec(s^.next, m)

end

end;

 

Тема 12. МАШИННАЯ ГРАФИКА.ПРИМЕРЫ ПРОГРАММ С РАЗЛИЧНОЙ СТРУКТУРНОЙ ОРГАНИЗАЦИЕЙ. (1 часа)

План лекции 15:

1. Программное обеспечение машинной графики.

2. Алгоритмы формирования графических изображений.

3. Средства структурирования.

4. Примеры программ с различной структурной организацией.

 

Чтобы сделать процесс графического программирования более эффективным, фирма Borland Int. разработала:

· библиотеку Graph;

· набор драйверов для работы с разными типами мониторов;

· набор шрифтов для вывода на экран текста.

Модуль Graph

Для формирования графических изображений в языке Turbo Pascal предназначен стандартный библиотечный модуль Graph. В нем содержатся 79 графических процедур, функций, десятки стандартных констант и типов данных. Все они составляют единый комплекс средств, позволяющих разрабатывать профессиональные программные продукты.

Подключение модуля Graph к пользовательской программе осуществляется стандартным способом – с помощью зарезервированного слова uses:

uses graph;

С этого момента все графические средства доступны пользователю.

Драйверы

Графические драйверы разработаны практически для всех существующих видеоадаптеров (см. табл.1). Они находятся в так называемых bgi-файлах и активизируются при инициализации графического режима.

Таблица1 - Графические драйверы

Драйвер Адаптер
cga.bgi CGA
egavga.bgi EGA, VGA
herc.bgi Hercules

Вывод текста в графических режимах может осуществляться самыми различными как стандартными, так и пользовательскими шрифтами. По умолчанию после инициализации графического режима устанавливается шрифт DefaultFont. Каждый его символ формируется в матрице 8´ 8 бит.

Таблица 2 - Стандартные шрифты

Шрифт Файл
TriplexFont Trip.chr
SmallFont litt.chr
SanSerifFont sans.chr
GothicFont goth.chr

 

Стандартный набор включает шрифты, приведенные в табл.2. Они размещены в отдельных файлах, имеющих расширение chr. Активизация нужного шрифта осуществляется специальной процедурой. Высота и ширина символов каждого шрифта могут изменяться с помощью специальных средств.

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

Таблица 3 - Видеорежимы

Драйвер Режим Разрешение Файл
CGA (1) CGAC0, CGAHi 320´ 200 (640´ 200) cga.bgi
EGA (3) EGALo, EGAHi 640´ 200 (640´ 350) egavga.bgi
VGA (9) VGALo, VGAHi 640´ 200 (640´ 480) egavga.bgi
HERC HERCMONOHi 720´ 348 herc.bgi

Инициализация видеорежима

С момента подключения модуля Graph программисту доступны все находящиеся в нем подпрограммы. В первую очередь вызывается процедура InitGraph, которая устанавливает один из возможных графических режимов. Формат процедуры:

InitGraph(DriverVar, ModeVar, 'C: \Tp\Bgi');

Целочисленные переменные DriverVar и ModeVar задают драйвер и режим в соответствии со значениями, приведенными в табл. 16.3. Например: DriverVar: =VGA; ModeVar: =VGALo;

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

Для новичков, которые могут не знать типа дисплея своего компьютера, имеется встроенная константа Detect (она имеет нулевое значение). Если это значение присвоено параметру DriverVar:

DriverVar: =Detect;

то InitGraph автоматически инициирует нужный драйвер и установит наиболее подходящий для дисплея режим.

Третий параметр – маршрут к файлу *.bgi. Пустая строка означает, что графический драйвер находится в том же каталоге, что и программа.

Пример: Uses Graph;

var DriverVar, ModeVar: integer;

begin

DriverVar: =Detect;

InitGraph(DriverVar, ModeVar, '');

 

Закрытие видеорежима

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

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

{Программа вычерчиваем в центре экрана треугольник красной линией}

user Crt, Graph;

var

DriverVar, ModeVar: integer;

pp: array[1..4] of PointType;

{встроенный тип PointType определен как

record x, y: integer end}

xM, yM, xMaxD4, yMaxD4: word;

begin

DriverVar: = Detect;

InitGraph(DriverVar, ModeVar, '');

xM: = GetMaxX; yM: = GetMaxY; xMaxD4: = xM div 4;

yMaxD4: = yM div 4;

{определение координат вершин}

pp[1].x: = xMaxD4;

pp[1].y: = yMaxD4;

pp[2].x: = xM - xMaxD4;

pp[2].y: = xMaxD4;

pp[3].x: = xM div 2;

pp[3].y: = yM - yMaxD4;

pp[4]: = pp[1];

SetColor(LightRed); {цвет для вычерчивания}

DrawPoly(4, pp); {4 - количество пересечений + 1}

Readln;

CloseGraph

end.

 

Приложение А. Примеры программ

 

Ввод, вывод данных

 

 

program taxi;

var

ch1, ch2, ch3: integer;

k1, k2, k3: Integer;

p1, p2, p3: real;

begin

writeln('введите количество п сс жиров'); readln(k1);

writeln('введите количество вышедших п cс жиров'); readln(k2);

writeln('введите пок з ние счетчик '); readln(ch1);

p1: =ch1/k1;

Writeln(p1);

writeln('введите количество вышедших п с жжиров'); readln(k3);

writeln('введите пок з ние счетчик '); readln(ch2);

p2: =(ch2-p1)/(k2+k3);

Writeln(p2, ' Otvet');

writeln('введите пок з ние счетчик '); readln(ch3);

p3: =ch3-p2-p1;

writeln ('су з плоченн я', p1, p2, p3); end.

 

Работа с матрицами

program d;

const n=10;

var mas: array[1..n] of integer;

i, j: byte;

exchanger: integer;

begin

for i: =1 to n do

begin

write('? ');

readln(mas[i]);

end;

for i: =1 to n-1 do

for j: =1 to n-1 do

if mas [j]> mas[j+1]

then

begin

exchanger: =mas[j];

mas[j]: =mas[j+1];

mas[j+1]: =exchanger;

end;

for i: =1 to n do write(mas[i]: 6);

end.

 

 

program r;

var

j, i: integer;

a: array[1..3, 1..3] of real;

b: array[1..3] of real;

begin

write('vvedite element massiva');

for i: =1 to 3 do

for j: =1 to 3 do

begin

readln(a[i, j]); end;

for i: =1 to 3 do

for j: =1 to 3 do

begin

b[i]: =b[i]+a[i, j];

write(a[i, j]);

end;

for i: =1 to 3 do begin

b[i]: =b[i]/3;

writeln(b[i]); end;

for i: =1 to 3 do

for j: =1 to 3 do begin

a[i, j]: =a[i, j]-b[i];

writeln(a[i, j]); end;

end.

 

Процедуры функции и подпрограммы, формальные и фактические параметры

 

Program dm;

const

mw=14.0;

var

vl, cs: real;

procedure nan(var pt: real);

begin

write('wedite stoimost tovara');

readln(pt);

end;

procedure calc(value: real; var cost: real);

begin

cost: =(1.0+mw/100.0)*value;

end;

procedure outpute(inpute: real); begin

writeln; writeln;

writeln('rasschitat cena s uchetom', mw: 5: 2, '%nalog', 'sostavlaet', inpute: 7: 2, '$');

end;

begin

nan(vl);

calc(vl, Cs);

outpute(Cs);

nan(vl);

calc(vl, cs);

outpute(Cs);

nan(Vl);

calc(vl, cs);

outpute(Cs);

end.

 

Указатели адресов памяти, ссылочные переменные

 

program T;

var

p1, ip: ^integer;

begin

writeln('ip = ', ip^, 'p1= ', p1^);

new(ip); new(p1);

writeln('ip=', ip^, 'p1= ', p1^);

ip^: =7;

p1^: =20;

writeln('ip=', ip^, 'p1= ', p1^);

ip: =p1;

writeln('ip=', ip^, 'p1= ', p1^);

dispose(ip);

ip: =nil;

end.

 

Графический режим работы

 

program Tesya;

uses crt;

var

x1, y1, x2, y2: word;

Gulvira: string;

i: integer;

procedure wn(a1, b1, a2, b2: word);

begin

window(a1+i, b1+i, a2-i, b2-i);

end;

begin

x1: =6; y1: =6; x2: =44; y2: =24;

readln(Gulvira);

for i: =1 to 5 do;

begin

wn(x1, y1, x2, y2);

Inc(i);

textbackground(red);

end;

GOTOxy(15, 15);

textattr: =i+8+16*i+blink;

write('Gulvira');

end.

 

 

program Tesya;

uses crt;

var

x, y: word;

FIO: string;

i: integer;

begin

clrscr;

textattr: =i+8+16*i+blink;

textbackground(green);

write('Gulvira', FIO);

read(FIO);

end.

 

 

program Love;

uses crt;

var

x1, y1, x2, y2: word;

Maks: string;

i: integer;

procedure wn(a1, b1, a2, b2: word);

begin

window(a1+i, b1+i, a2-i, b2-i);

end;

begin

clrscr;

textmode(co80);

x1: =4; y1: =4; x2: =56; y2: =45;

textattr: =i+11+25*i+blink;

textbackground(blue);

write('Maks');

readln(Maks);

for i: =1 to 3 do;

begin

wn(x1, y1, x2, y2);

textbackground(green);

end;

GOTOxy(15, 15);

textattr: =i+25+40*i+blink;

write('Gulvira');

end.

 

 

Литература

1. Турбо Паскаль 7.0, К.: Торгово-издательское бюро ВHV, 1996-448 c.

2. Гофман В. Delphi 6. – Санкт-Петербург: Издательство «BHV», 2000.

3. В.Н.Пильщиков. Сборник упражнений по языку Паскаль: Учебное пособие для вузов.- М.: Наука, 1989.-160 с.

4. Ж.-П.Ламуатье. Упражнения по программированию на фортране IV. Перевод с фран., М.: - «Мир», 1978.-160 с.

 

5. Фаронов В.В. Основы- Турбо-Паскаля 6.0. - М.: МВТУ - ФБСТО
ДИДАКТИК, 2000. - 304 с.

6. Меженный О.A. TURBO PASCAL. Учитесь программировать М.: Диа­-
лектика, 2001

7. Абрамов В.Г. и др. Введение в язык Паскаль: для вузов. М.: Наука,
1988.-319 c.

8. Перминов О.Н. Программирование на языке Паскаль. - М.: Радио и
связь, 1988.-220 с..

9. Культин Н.Б. Программирование на Object Pascal в Delphi 5.- СПб.: БХВ – Санкт-Петербург, 1999. -464 с., ил.

10. Петров А.В. и др. Вычислительная техника в инженерных и экономи­ческих расчетах: Учебник для вузов. - М.: ВШ, 1984.

11. Шнейдерман Б. Психология программирования. - М.: Радио и связь, 1984.-304 с.

12. Дейтел X., Дейтел П. Как программировать на Си. -М.: Бином, 2000.

13. Паннае К., Мюррей У. Программирование на Си и Си++. -К.: Ирина, BHV, 2000.

14. Уэйт М., Прата С, Мартин Д. Язык Си. - М.: Мир, 1988.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.