Turbo Pascal Лекция 8 – Графический режим, Коды ошибок компиляции


графика

  1. Графический режим. Графический экран дисплея состоит из точек, которые можно зажигать определенным цветом или тушить, в результате чего на экране образуется некоторое изображение. Точки называются пикселями. Количествоточек на экране может быть различным, что зависит от качества экрана. Рассмотрим экран, который имеет 640 точек в горизонтальном (x) направлении и 480 в вертикальном (y). Начало отсчета точек у левом верхнем углу экрана. Каждая точка характеризуется двумя координатами (x, y). Примеры расположения на экране некоторых точек показаны на рис. 3.

Рис. 3. Координаты точек на графическом экране 640х480

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

Сам модуль может быть в бiблiотеци Turbo.tpl или в некотором каталоге на диске. В последнем случае модуль надо присоединить командой uses в начале программы.Нужен также файл egavga.bgi — драйвер для VGA адаптера или файл cga.bgi для соответствующего CGA адаптера монитора и тому подобное.

Графический режим сначала надо задать. Это выполняют так:              

<Разделы описаний и объявлений конкретной программы>;

var driver, mode: integer; {Для характеристик дисплея}

begin

driver = detect; {Detect — стандартная стала}

initgraph (driver, mode, »); {Задание графического режима}

if graphresult <> 0 then

      begin

writeln ( ‘графический режим задать не удалось’);

halt {Стоп}

end;

<Текст конкретной программы с графическими командами>

end.

  1. Процедуры и функции для графических построений. Рассмотрим процедуры модуля Graph, предназначенные для графических построений.
initgraph (driver, mode, <путь к драйверу>) — задает графический режим.Путь к драйвера отмечают (в кавычках), если он не в том же каталоге, что и файл turbo.exe;

detectgraph (<драйвер>, <режим>) — возвращает значение характеристикдисплея;

setcolor (<цвет>) — задает цвет будущего изображения

setbkcolor (<цвет>) — задает цвет фона;

putpixel (x, y, <цвет>) — освещает точку (x, y) заданным цветом

line (x1, y1, x2, y2) — рисует линию между двумя точками;

lineto (x, y) — рисует линию от текущей точки к точке (x, y)

linerel (dx, dy) — рисует линию от текущей точки с заданными приростами;

rectangle (x1, y1, x2, y2) — рисует прямоугольник с заданными координатами диагонально противоположных вершин (левой верхней и правой нижней)

setviewport (x1, y1, x2, y2, true) — задает координаты нового графического окна.Логическая стала true задает режим отсечения изображения, которое будет выходить за меживикна;

bar (x1, y1, x2, y2) — рисует закрашенный прямоугольник

bar3d (x1, y1, x2, y2, <объемная глубина>, true) — рисует параллелепипед;

circle (x, y, R) — рисует круг с радиусом R и центром в (x, y)

arc (x, y, <начальный угол>, <конечный угол>, <радиус>) — рисует дугу;

pieslice (x, y, <начальный угол>, <конечный угол>, <радиус>) — рисует закрашенный сектор;

ellipse (x, y, <начальный угол>, <конечный угол>, <горизонт. радиус>, <вертик.радиус>) — рисует эллипс или дугу эллипса;

setfillstyle (<заполнения>, <цвет>) — задает способ заполнения замкнутоиобласти в зависимости от значения параметра заполнения: 0 — заполнение кольоромфону, 1 — сплошное заполнение, 2 — заполнение толстыми горизонтальнимилиниямы, 3 — заполнение наклоненными линиями, …, 10 — заполнение точками, 11-плотное заполнение точками;

floodfill (x, y, <цвет границы>) — заполняет замкнутую область, содержащую точку (x, y)

closegraph — закрывает графический режим;

outtext (<текст>) — выводит заданный текст с текущей позиции;

outtextxy (x, y, <текст>) — выводит текст в заданном месте;

settextstyle (<шрифт>, <направление>, <размер>) — задает вид символов, направление вывода: 0 — горизонтально или 1 — вертикально, и размеры символов: 1,2, 3.

 

Рассмотрим некоторые функции модуля Graph:             

graphresult — возвращает код ошибки, если невозможно задать графический режим, и 0 — в случае задания;

getmaxx — возвращает значение размера экрана вдоль оси 0X;

getmaxy — возвращает значение размера экрана вдоль оси 0Y;

getcolor — возвращает значение текущего цвета

getcolor (x, y) — возвращает значение цвета точки (x, y)

getx, gety — возвращают координаты текущего пикселя.

 

  1. Цвета. Цвета задают числами или английскими названиями:
black = 0 — черный;

blue = 1 — синий;

green = 2 — зеленый;

cyan = 3 — голубой;

red = 4 — красный;

magenta = 5 — фиолетовый;

brown = 6 — коричневый;

lightgray = 7 — светло-серый;

darkgray = 8 — темно-серый;

lightblue = 9 — ярко-синий;

lightgreen = 10 — ярко-зеленый;

lightcyan = 11 — ярко-голубой.;

lightred = 12 — ярко-красный;

lightmagenta = 13 — ярко-фиол.;

yellow = 14 — желтый;

white = 15 — белый.

 

Задача 1. Нарисовать разными цветами десять концентрических кругов, которые имеют общий центр по середине экрана, то есть в точке с графическими координатами (320; 240), и описать вокруг кругов красный прямоугольник.

program Circle10;

uses Crt, Graph;

var driver, mode, r: integer;

begin clrscr;

driver = detect;

initgraph (driver, mode, »);

r = 10; {Радиус первого круга 10 точек}

while r <= 100 do

begin

setcolor (r div 10);

circle (320, 240, r)

r = r + 10

end;

setcolor (red)

rectangle (220, 140, 420,340) readln

end.

Задача 2. Нарисовать эмблему. В верхней левой части графического экрана на черном фоне нарисовать голубой квадрат, а в нем — черный круг, закрашено желтым цветом. В центре эмблемы черными ли программным обе написать слово «Летничье».

 

program Emblema;

uses Crt, Graph;

var driver, mode, i, x1, y1: integer; x, y: real;

begin clrscr;

driver = detect;

initgraph (driver, mode, »);

setbkcolor (0);

setcolor (3);

rectangle (100,0,300,200)

setfillstyle (1,3)

floodfill (200,100,3)

setcolor (14)

circle (200,100,100)

setfillstyle (1,14)

floodfill (200,100,14)

setcolor (0);

circle (200,100,100)

settextstyle (0,0,3)

outtextxy (135,95, «Летничье ‘); readln

end.

Задача 3. Нарисовать график функции y = 2sin (2x) +1 на промежутке [0; 2p], табулюючы функцию с шагом h = 0,1. В результате экспериментов, меняя значение амплитуды в пикселях (с помощью множителя М), изобразить график на экране лучше.

program GrafikSin;

uses Crt, Graph;

const a = 0; b = 2 * pi; h = 0.1; h1 = 5, x0 = 60; y0 = 240; M = 50;

var driver, mode, x1, y1: integer; x, y: real;

function f (x: real): real;

begin

f = 2 * sin (2 * x) +1

end;

begin clrscr;

driver = detect; initgraph (driver, mode, »);

setcolor (14) setbkcolor (1);

line (20 y0,600, y0) line (x0,440, x0,20) {Координатные оси}

x = a; x1 = x0 + trunc (M * x) {X, y — математические координаты}

y = f (x) y1 = y0-trunc (M * y) {X1, y1 — графические координаты}

moveto (x1, y1) setcolor (15);

while x <= b do begin

y = f (x) y1 = y0-trunc (M * y) lineto (x1, y1)

x1 = x1 + h1; x = x + h

end;

settextstyle (0,0,1)

outtextxy (60,245, ‘0’); outtextxy (360,245, ‘6.3’);

settextstyle (0,0,2)

outtextxy (200,380, ‘График функции y = 2sin2x + 1’); readln

end.

Примеры

 

Коды типичных ошибок

 

Тurbo Pascal 7.0 генерирует два типа сообщений об ошибках: ошибки компиляции и ошибки исполнения.

 

Коды ошибок компиляции, которые чаще всего встречаются в процессе отладки программы, имеют следующие номера:

 

3 Unknown identifier (Неизвестный идентификатор).Этот идентифи- катор ни был описан.
4 Duplicate identifier (Повторение идентификатора).
5 Syntax error (Синтаксическая ошибка).
14 Invalid file name (Недопустимо имя файла).Имя файла непра вильнет или указано несуществующий путь.
26 Type mismatch (Несоответствие типов).
42 Error in expression (ошибка в выражении).
62 Division by zero (Деление на ноль).
64 Can not Read or Write variables of this type (Нет возможности считать или записать переменные данного типа).
85 «,» expected (Ожидается символ «,»).
91 «=» Expected (Ожидается символ «=»).
94 «.» expected (Ожидается символ «.»).
95 «..» expected (Ожидается символ «..»).
   
Сообщения об ошибках выполнения:
2 Path not found (Путь не найден).
103 File not open (Файл не открыт).
104 File not open for input (Файл не открыт для ввода).
105 File not open for output (Файл не открыт для вывода).
153 Unknown command (Неизвестная команда).
200 Division by zero (Деление на ноль).
215 Arithmetic overflow error (Ошибка при выполнении математической операции).

Рекомендуемая литература

  1. Аладьев В.З. Тупят В.Г. Turbo Pascal для всех. М .: Техника, 1993. -176с.
  2. Барткив А.Б. и др.Турбо Паскаль: Алгоритмы и программы. М .: Высшая школа, 1992. -248с.
  3. Джонс Ж., Харроу К. Решение задач в Турбо Паскаль. -М.: Финансы и статистика, 1991. -720с.
  4. Довгаль СИ., Сбитнева А.И. Интерфейс современной программной системы Турбо Паскаль 7.0. М .: Информсистема-сервис, 1994. -416с.
  5. Йенсен К., Вирт Н. Паскаль. Руководство пользователя и описание языка. М .: Финансы и статистика, 1989. -256с.
  6. Паскаль для персональных компьютеров: Справочное пособие. М .: Высшая школа, 1991. -365с.
  7. Перминов А.Н. Программирование на языке Паскаль. Справочник. -М .: Радио и связь., 1989. -129с.
  8. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное пособие. -М.: Нолидж, 1997. -432с.
  9. Ян Белецкий. Турбо Паскаль с графикой для персональных компьютеров. -М .: Машиностроение, 1991. -320с.
[Всего голосов: 3    Средний: 5/5]

Читать  Turbo Pascal Лекция 1 – Основные понятия языка Паскаль, Типы данных