![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Рекурсивная процедура удаления элемента из списка ⇐ ПредыдущаяСтр 4 из 4
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 - Графические драйверы
Вывод текста в графических режимах может осуществляться самыми различными как стандартными, так и пользовательскими шрифтами. По умолчанию после инициализации графического режима устанавливается шрифт DefaultFont. Каждый его символ формируется в матрице 8´ 8 бит. Таблица 2 - Стандартные шрифты
Стандартный набор включает шрифты, приведенные в табл.2. Они размещены в отдельных файлах, имеющих расширение chr. Активизация нужного шрифта осуществляется специальной процедурой. Высота и ширина символов каждого шрифта могут изменяться с помощью специальных средств. Прежде чем работать с графикой, необходимо установить наиболее подходящий для имеющегося монитора видеорежим. Каждый драйвер может поддерживать от одного до трех видеорежимов. Тип драйвера и режим могут быть заданы как число или как символическая константа типа. Константы, определяющие видеорежим, приведены в табл.3 вместе с информацией о выбираемом режиме и типе видеоадаптера, который может такой видеорежим поддерживать. Таблица 3 - Видеорежимы
Инициализация видеорежима С момента подключения модуля 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. - М.: МВТУ - ФБСТО 6. Меженный О.A. TURBO PASCAL. Учитесь программировать М.: Диа- 7. Абрамов В.Г. и др. Введение в язык Паскаль: для вузов. М.: Наука, 8. Перминов О.Н. Программирование на языке Паскаль. - М.: Радио и 9. Культин Н.Б. Программирование на Object Pascal в Delphi 5.- СПб.: БХВ – Санкт-Петербург, 1999. -464 с., ил. 10. Петров А.В. и др. Вычислительная техника в инженерных и экономических расчетах: Учебник для вузов. - М.: ВШ, 1984. 11. Шнейдерман Б. Психология программирования. - М.: Радио и связь, 1984.-304 с. 12. Дейтел X., Дейтел П. Как программировать на Си. -М.: Бином, 2000. 13. Паннае К., Мюррей У. Программирование на Си и Си++. -К.: Ирина, BHV, 2000. 14. Уэйт М., Прата С, Мартин Д. Язык Си. - М.: Мир, 1988.
|