Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания по ЯиСП 1-14 ИВТ.doc
Скачиваний:
53
Добавлен:
01.04.2015
Размер:
648.7 Кб
Скачать

Задания для самостоятельного выполнения лабораторной работы 6:

1 Напишите программу "калькулятор", позволяющую вычислять по выбору одну из четырёх основных арифметических операций. Снабдите програм­му запросом об окончании работы.

2 Напишите программу выбора наибольшего из трёх, введённых с клавиа­туры действительных чисел, и производящую запрос об окончании рабо­ты.

3 Напишите программу вычисления квадратного корня из числа введённого с клавиатуры. Исключите вычисление корня из отрицательных чисел и нуля. Снабдите программу запросом об окончании работы.

4 Напишите программу, которая выводит название дня недели по номеру дня введённому с клавиатуры. Исключите несуществующие номера дней недели и снабдите программу запросом об окончании работы.

5 Напишите программу, которая возводит действительное число, введён­ное с клавиатуры, в степень, введённую с клавиатуры в диапазоне от 2 до 9. Исключите несуществующие (меньше 2 и больше 9) степени, и снабдите программу запросом об окончании работы.

6 Напишите программу, которая выводит на экран квадраты целых чисел от числа а до числа b.

7 Напишите программу вычисления значения функции у=х2-16х+32 для х от 1 до 10 с шагом 0,25.

8 Напишите программу вычисления функции

y=х3, при х>0

у =х2, при -2>=х>=0

y=х, в остальных случаях для х в диапазоне от -5 до 5 с шагом 0,5.

9 Напишите программу вычисления функцииf(х) =4х2+16(х+2) для х от а до b с шагом d введённым с клавиатуры.

10 Напишите программу определения времени года по порядковому номеру недели. Снабдите программу запросом об окончании работы.

Лабораторная работа 7. Графические возможности. Графический режим. Система координат

В настоящей лабораторной работе мы познакомимся с некоторыми гра­фическими возможностями ТР.

Система программирования Turbo Pascal снабжена несколькими моду­лями или "библиотеками" в которых хранятся все её процедуры и функции. Каждая такая библиотека специализирована, т.е. содержит процедуры и функции, поддерживающие одно устройство, выполняющие подобные действия и т.д.

GRAPH.TPU

Библиотека содержащая процедуры и функции для поддержки графичес­кого режима носит имя GRAPH.TPU.

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

Для того, чтобы компилятор "узнавал" названия процедур и функций содержащихся в библиотеке GRAPH.TPU, мы должны после заголовка прог­раммы разместить строчку следующего вида:

Uses Graph;

(что можно перевести на русский язык как выражение "используется гра­фика", или "модуль GRAPH.TPU подключён"). Формально эта строка разре­шает нам использовать процедуры и функции библиотеки GRAPH.TPU.

Инициализация (включение) графического режима.

До сих пор, во время нашей работы за компьютером, экран всегда на­ходился в текстовом режиме (поэтому на экране можно было видеть только лишь символы).

Для рисования прямых, окружностей и пр. необходимо перевести эк­ран в графический режим. Для включения графического режима использует­ся процедура InitGraph. Простейшая программа, использующая графические возможности, может иметь вид:

Program Ех_1;

Uses Graph;

Var Gd,Gm.: Integer;

Begin

Gd:=VGA; { графический адаптер VGA }

Gm:=VGAhi; { графический режим VGAhl (640x430)xl6 }

Initgraph (Gd, Gm) ; { Включить графический режим Драйвер в текущем каталоге}

if GraphResult = grOJcthen { Если режим включился успешно }

begin line(0,0,639,479); { нарисовать отрезок прямой }

Readln;

CloseGraph; { выключений графического режима }

end;

End.

InitGraph(Gd,Gm:integer; Path:string);

Мы видим, что у процедуры InitGraph три параметра. В качестве первых двух параметров должны стоять имена целых (integer) переменных.

Первый параметр Gd является кодом графического адаптера (т.е. электронной схемы, управляющей выводом информации на экран). Дело в том, что на IBM-совместимых компьютерах применяется ряд стандартных графических адаптеров, носящих названия CGA, EGA, VGA.

По нашей программе можно догадаться, что в используемых нами компьютерах используется адаптер VGA (и компилятор сам "узнаёт" слово VGA и заменит его на нужное целое число).

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

Третий параметр Path является строкой (string), содержащей путь к файлу, который называется egavga.bgi. В этом файле содержится драйвер (такая специальная программа), необходимый для работы мониторов EGA и VGA в графическом режиме. И, как видно из нашего примера, файл этот находится в текущем каталоге.

GraphResult: integer;

Эта функция, при обращении к ней, возвращает специальный код (целое число), в зависимости от того, как прошло выполнение любой гра­фической процедуры или функции. Код 0 (grOJc) - успешное выполнение. В приведённом выше примере программы Ех_1, данная функция применяется для проверки того, как прошла инициализация графического режима. Даль­нейшая работа этой программы возможна лишь тогда, когда код функции GraphResult равен grOJc.

CloseGraph

Выключение графического режима.

Всё вышеизложенное необходимо знать каждому грамотному пользова­телю IВM-совместимых компьютеров. Однако, в нашей лабораторной работе - достаточно использовать конструкцию, использованную в первом примере, для включения графического режима. (И не страшно, если в ней не всё понятно.)

Система координат.

Для того, чтобы мы могли что-либо нарисовать на экране, нам нужно уметь задавать положение на экране того, что мы рисуем. Для этого с экраном связывается система координат следующего вида:

(0,0) X

Y

Обратите внимание. Точка (0,0) находится в левом верхнем углу. Привычная для нас система координат "перевёрнута".

Каждая точка на экране на самом деле представляет собой очень ма­ленький прямоугольник (и поскольку это не совсем точка, то иногда ис­пользуют специальный термин - "пиксел"). Количество точек (пикселов), умещающихся на экране по вертикали и горизонтали, называют разрешающей способностью. Разрешающая способность экрана в режиме VGAhi - 640x430. Это означает, что по горизонтали на экране умещается 640 точек, а по вертикали - 480.

Описание некоторых графических процедур и функций.

Line (xl, yl, х2, у2: integer);

Как Вы уже догадались, процедура Line(xl,yl,x2,у2) рисует на эк­ране отрезок, соединяющий точки (xl,yl) и (х2,у2). Например:

Program Ех_2; { нарисовать треугольник }

Uses Graph;

Var Gd, Gm.: integer;

Begin

Gd:=VGA; { графический адаптер VGA }

Gm:=VGAhi; { графический режим VGAhi (640x430)xl6 }

Initgraph (Gd, Gm) ; { Включить графический режим Драйвер в текущем каталоге} ifGraphResult = grOJcthen { Если режим включился успешно }

begin

line(120,210,520,210); { основание }

line(120,210,320,10); { левая сторона }

line(320,10,520,210); { правая сторона }

end;

End.

Текущий цвет рисования.

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

SetColor(Color: word);

Для изменения текущего цвета рисования, т.е. для задания цвета рисования прямых, окружностей, точек и пр. используется процедура SetColor. В качестве единственного её параметра Color нужно указать целое число, являющееся кодом цвета. Цвета кодируются в соответствии со следующей таблицей:

В1аск

= 0

чёрный

В1uе

= 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

белый

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

Program Ех_3; { цветной треугольник }

Uses Graph;

Var Gd, Grr.:Integer;

Begin

Gd:=VGA; { графический адаптер VGA }

Gm:=VGAhi; { графический режим VGAhi (640x430)xl6 }

Initgraph (Gd, Gm) ; { Включить графический режим Драйвер в текущем каталоге} ifGraphResult = grOJcthen { Если режим включился успешно }

begin

setcolor(lightmagenta); line(120,210,520,210); { основание }

setcolor(lightcyan); line(120,210,320,10); { левая сторона }

setcolor(green); line(320,10,520,210); { правая сторона }

end;

end.

GetColor: word;

Возвращает текущий цвет рисования. SetBkColor(color: word);

Вам ещё не один раз придётся столкнутся с понятием-характеристи­кой - "текущий". Текущий цвет, текущая координата, текущее значение и т.д. Данная процедура устанавливает текущий цвет фона. По умолчанию текущий цвет фона - чёрный.

GetBJcColor: word;

Возвращает текущий цвет фона.

ClearDevice

Очищает графический экран закрашивая его в текущий цвет фона, ус­танавливает указатель текущей позиции в точку с координатами (0,0).

PutPixel(х,у:integer; Pixel:word);

Рисует точку с координатами (х,у) цветом Pixel.

GetPixel(х,у: integer): word;

Возвращает цвет точки с координатами (х,у).

Rectangle(xl,yl,х2,у2:integer) ;

Строит контур прямоугольника из линий текущего цвета.

Circle(х,у:integer; г:word);

Для рисования окружностей используется процедура Circle с тремя целочисленными параметрами: х,у - координаты центра окружности; г - радиус.

Arc(х,у:integer; StA,EndA,Radius:word);

Нарисует дугу окружности текущим цветом. х,у - координаты центра окружности данной дуги; Sta - начальный угол; (в градусах) EndA - конечный угол; (в градусах) Radius – радиус дуги.

Ellipse(х,у:integer; stA,endA:word; xr,yr: word);

Рисует дугу эллипса текущим цветом. х,у - координаты центра эллипса; stA - начальный угол; endA - конечный угол;

хг,уг - горизонтальная и вертикальная полуоси эллипса.

SetLineStyle(Ln,Р,Т)

Рисование линий, окружностей и их элементов, контуров прямоуголь­ников осуществляется линиями. Процедура SetLineStyle позволяет изме­нять параметры этих линий. Параметры этой процедуры - целые числа. Ln - стиль линии:

= сплошная;

= пунктирная;

= штрихпунктирная;

= штриховая;

= заданная пользователем. Т - толщина линии:

1 = нормальная; 3 = толстая. Р - шаблон:

0 - во всех случаях для Ln от 0 до 3;

Для Ln = 4 устанавливается шаблон линии в виде двухбайтового числа, каждый бит которого равен 1, если его надо высветить и 0 - в противном случае. Например линия в виде 1111111100000000 в шестнадцатиричной форме следует записать $АА00.

Кратко описанные в данной лабораторной работе графические проце­дуры и функции составляют лишь небольшую часть богатого арсенала биб­лиотеки GRAPH.TPU. Несмотря на то, что в последствии мы изучим все ос­новные возможности этой библиотеки, вы в любой момент можете сделать это самостоятельно, воспользовавшись системой помощи. Для этого необ­ходимо войти в раздел HELP главного меню, и выбрав разделы подменю StandartUnits и Graph, выбрать описание необходимой процедуры или функции.

Контрольные вопросы.

1 Как называется и как подключается библиотека графических процедур и функций?

2 Как инициализируется графический режим?

3 Как выключается графический режим?

4 Как изменяются параметры линий рисования?

5 Опишите процедуру рисования линий.

6 Опишите процедуры рисования окружности, дуги окружности и дуги эл­липса .

7 Опишите процедуру рисования контура прямоугольника.

8 Опишите процедуры изменения текущего цвета рисования и текущего цвета фона.

9 Как изменить (установить) цвет точки экрана.