Методический комплекс "Графика, текст, музыка в Турбо Паскале" по теме: "Система координат. Вывод точки и линии"

Разделы: Информатика


Тема: Система координат. Вывод точки и линии.

Цель: познакомить учащихся с системой координат, процедурами вывода точки и линии, научиться применять данные понятия.

Теоретическая часть Для построения изображения на экране используется система координат. Отсчет начинается от верхнего левого угла экрана, который имеет координаты (0,0). Значение Х увеличивается слева направо до (639,0), значение Y увеличивается сверху вниз до(0,349).

Вывод точки осуществляется процедурой PutPixel(x,y,c); Где X,y- координаты расположения точки только целые числа, c- цвет. Например:PutPixel(10,30,red), вместо английского слова красный можно писать его номер по шкале цветов. Вывод линии (отрезка прямых) осуществляется с помощью процедуры Line(x1,y1,x2,y2); В скобках указаны координаты начала и конца линии, они целые числа. LineTo(x,y); строит линию из точки текущего положения указателя в точку с координатами x,y. Процедура LineRel(dx,dy); проводит линию от точки текущего расположения указателя в точку CPx+dx,Cpy+dy, где СРх и Сру –текущие координаты СР. В процедуре линии нет параметра цвета.

Практическая часть

Задание 1. Построить линию с координатами(50,80,100,100) и красную точку с координатами (200,200). Программа для данной задачи будет выглядеть:

program z1;

uses graph;

var GraphDriver,GraphMode,GraphColor: integer;

begin

GraphDriver : =Detect;

InitGraph(GraphDriver,GraphMode,’’);

PutPixel(200,200,red); Line(50,80,100,100);

Readln; CloseGraph;

End.

Задание 2. Построить прямоугольный треугольник, параллелограмм с диагоналями, равнобедренную трапецию.

Задание 3. А)Построить звезду Давида. Б) Построить пятиконечную звезду.

Тема: Цветовая шкала. Окрашивание графических фигур и экрана. Тип линии.

Цель: познакомиться с таблицей цветов и научиться окрашивать объекты и экран, использовать различные типы линии.

Теоретическая часть. Для окрашивания геометрических фигур используется следующая цветовая шкала. Для работы с цветом используют процедуры:SetColor(C); окрашивает контур фигуры, устанавливается в программе перед фигурой. Где С- цвет из таблицы цифра или слово. Например: SetColor(4); или SetColor(red); SetBkColor(C); окрашивает фон, где С- цвет из таблицы. Например: SetBkColor(4); или SetBkColor(red); SetFillStyle(стиль, цвет); устанавливает стиль и цвет заливки, используемый процедурами вывода областей(Bar,Bar3D,Sector и т. д.). Например: SetFillStyle(SolidFill,red). В качестве параметра Стиль можно использовать:

Цветовая шкала

Цвет Код
русский английский
черный 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

EmpltyFill-без заливки(сплошная заливка цветом фона). SolidFill- сплошная заливка текущим цветом. LineFill- горизонтальная штриховка. SlashFill- штриховка под углом 45 градусов влево. LtBkSlashFill- штриховка под углом 45 градусов вправо. HatchFill- штриховка клеткой.

CloseDotFill – заполнение частыми точками. Для выполнения различных чертежей используется тип линии, который задается процедурой SetLineStyle(ТипЛинии, Образец, Толщина); устанавливает стиль вычерчиваемых контуров и линии. Тип Линии (строки), образец, толщина берется из таблицы. Например: SetLineStyle(CenterLn, 2, 3);

Стиль линии Толщина линии
Тип Линии Образец Описание линии Толщина Значение Описание
SolidLn 0 Непрерывная NormWidth 1 Нормальная
DottedLn 1 Из точек ThickWidth 3 Жирная
CenterLn 2 Из точек и тире      
DashedLn 3 Штриховая      
UserBitLn 4 Тип пользователя      

Практическая часть

Задание 1. Используя тип линии, толщину и цвет построить: А) Пирамиду (невидимая часть фигуры выполнена из точек и тире). Б )Параллелепипед с основанием равнобедренная трапеция(невидимая часть фигуры выполнена штриховой, толщина нормальная). В) Пирамиду с основанием правильный пятиугольник(невидимая часть фигуры выполнена из точек, контур основания- бирюзовый, видимая часть чертежа- красный)

Задание 2. Выполнить рисунок в цвете: горы со снежными вершинами, залив, кораблик на воде.

Тема: Построение многоугольников

Цель: научиться строить многоугольники с использованием процедур и функций.

Теоретическая часть. Без построения различных графических фигур не обходится ни одна серьезная графическая система. Для построения прямоугольных фигур имеется несколько процедур: Rectangle(x1,y1,x2,y2); строит прямоугольник, где x1,y1- координаты верхнего левого угла, x2,y2- координаты нижнего правого. В программе это будет так: Rectangle(100,120,200,100) ; С помощью данной процедуры легко можно построить любую диаграмму для визуального анализа данных. Более эффектные для восприятия прямоугольники можно строить с помощью процедуры Bar(x1,y1,x2,y2) ; В программе : Bar(100,60,40,100); Этот прямоугольник легко заливается. Трехмерный закрашенный прямоугольник можно построить с помощью процедуры, Bar3D(x1,y1,x2,y2,Depth,Top); где Depth-параметр представляет число пикселей, задающих глубину трехмерного контура, например число 100. Top- параметр определяет строить ли над прямоугольником вершину , да-True , нет пишется –False. В программе : Bar3D(60,40,100,80,100, True); Заливается только лицевая сторона. Многоугольники строятся с помощью процедур: Line, LineТо и т. д. Новый способ построения многоугольников использование процедуры : DrawPoly(Num Points,var PolyPoints) ; Данная процедура используется для массива. где : Num Points- число точек – вершин многоугольника , var PolyPoints – описание координат или способов задания этих точек. В программе будет так: DrawPoly(5,pp); где 5-число вершин+1,рр- имя массива.

Задача. Построить трапецию с координатами вершин А(30,40), В(50,45), С(55,60), D(25,50). При построении используется массив , состоящий из координат вершин. В описательную часть программы добавляется :

pp:array[1. . 5] of Point Type; (описание массива)
x,y : integer; (координаты только целые числа)
в программную часть добавить координаты вершин
pp[1]. x:=30;
pp[1]. y:=40
………………. продолжить для других вершин
pp[4]. x:=25;
pp[4]. y:=50;
pp[5]:=pp[1]; (прибавляется одна вершина чтобы замкнуть фигуру)
SetColor(red);
SetBkColor (green);
DrawPoly(5,pp);

Практическая часть

Задание 1. Выполнить задачу из лекционного курса.

Задание 2. Построить в одной программе зеленый треугольник с помощью процедуры Line, синий четырехугольник с помощью процедуры Rectengle, желтый прямоугольник с помощью Bar, зеленый четырехугольник с помощью Bar3D.

Задание 3. Построить правильный шестиугольник, используйте массивы. Фон экрана и контура шестиугольника выбрать самостоятельно.

Тема: Построение дуги, окружности и сектора

Цель: научиться строить фигуры, содержащие окружность, сектор, дугу.

Теоретическая часть Для построения кривых рациональнее пользоваться готовыми процедурами модуля Graph. Для задания углов используется полярная система координат.

Для вычерчивания окружности используется процедура Circle(x,y,r); где х,у- координаты центра, r- радиус окружности. В программе это будет выглядеть так: Circle(200,123,10); Для построения псевдообъемных фигур используются дуги. Они вычерчиваются с помощью процедуры Arc(x,y,StAngle,EndAngle,r); где х,у- координаты центра, r- радиус, StAngle- начальный угол, EndAngle- конечный угол в градусах. В программе это будет выглядеть так: Arc(100,200,0,90,25); У дуги закрашивается контур. Стандартный библиотечный модуль содержит процедуру вычерчивающую эллипс Ellipse(x,y, StAngle,EndAngle,xR,yR); где х, у- координаты центра эллипса, StAngle,EndAngle- начальный и конечный углы в градусах (чтобы фигура была замкнута то брать 0,360), xR,yR- горизонтальная и вертикальная оси. В программе это будет выглядеть так: Ellipse(100,123,0,360,30,50); Эллипс заливается и окрашивается контур. Чтобы разделить окружность на секторы применяется процедура PieSlice(x,y, StAngle,EndAngle,r); данная процедура рисует и заполняет маской сектор круга, где х,у- координаты окружности, сектор рисуется от начального угла StAngle до конечного EndAngle ,углы в градусах. В программе процедура выглядит так PieSlice(1000,90,0,90,50); Полученная фигура заливается и контур окрашивается. Можно создать и заполнить сектор с помощью процедуры Sector(x,y, StAngle,EndAngle , xR,yR); где х, у- координаты центра, сектор вычерчивается от начального угла StAngle до конечного EndAngle , xR,yR- горизонтальный и вертикальный радиусы. В программе выглядит так: Sector(200,100,180,135,60,70); Данная фигура заливается и окрашивается контур.

Для построение многократно повторяющихся геометрических фигур можно использовать оператор цикла for. Например: Задание1. Написать программу, которая выводит на экран 15 концентрированных окружностей разного цвета.

Program cir;
Uses Grahp;
Var GraphDriver,GraphMode : integer ; х,y,r,dr,i: integer ; (описание переменных)
Begin
GraphGriver:= detect;
InitGraph(GraphDriver, GraphMode,’’);
х: =100; у: =100; R: =5; Dr: =5;
For i: =1 to15 do (начало цикла)
Begin
SetColor (i); Circle(x,y,r);
R:=r+dr;
} тело цикла
End; (конец цикла)
Readln; CloseGraph; End.

Практическая часть

Задание 1. Выполнить в цвете: улыбающийся смайлик, печальный смайлик, строгий смайлик.

Задание2. Выполнить программу, выводящую на экран олимпийские кольца (используя циклы).

Задание 3. Выполнить программу “Рупор”, выводящую на экран 10 колец, радиус следующего кольца увеличивается на 20, координата по оси Х изменяется на 15. Кольца разного цвета(используя циклы).

Задание 5. Выполнить фрагмент кольчуги: пять рядов по пять штук, каждый ряд разным цветом (используя циклы).

Тема: РАБОТА С ТЕКСТОМ.

Цель: научиться пользоваться различными шрифтами, выполнять надписи.

Теоретическая часть. Выводимые на экран изображения могут сопровождаться пояснительным текстом для этого используется процедуры: OutText(‘Текст’); Она выводит строку текста, начиная с текущего положения. Чтобы вывести текст в точку с определенными координатами используется процедура: OutTextXY(x,y,’текст’); где х,у- являются координатами точки вывода текста. При выводе текста используют два типа шрифтов: Растровый, задается матрицей точек и Векторный, задается рядом векторов составляющих символов. При увеличении надписи растрового шрифта, различаются отдельные точки его составляющие и качество надписи снижается. С векторным шрифтом этого не происходит. Чтобы не было искажений, после инициализации графического режима по умолчанию включается растровый фильтр. Растровый шрифт DefaultFont , который, как правило, является шрифтом, используемым установленным драйвером клавиатуры. Каждый его символ формируется в матрице 8х8 бит. Шрифты размещены в отдельных файлах, имеющих расширение CHR. Активизация шрифта осуществляется специальной процедурой.

Стандартные шрифты.

Шрифт Файл
TriplexFont

SmallFont

TRIP. CHR

LITT. CHR

SansSerifFont

GothicFont

SANS. CHR

GOTH. CHR

Шрифты SmallFont, SansSerifFont, GothicFont являются векторными и не содержат русских символов, поэтому их применяют для надписей на латинском языке.

Установка шрифта. Качественное оформление экрана требует использование самых различных шрифтов. При установке используют следующие процедуры:SetTextStyle (Font; Direction,CharSize); Font- выбранный шрифт(см. таблицу); Direction- направление надписи(горизонтальное, вертикальное); CharSize- размер выводимых символов. Используя данные таблицы можно составить следующую подсказку: SetTextStyle(0,1,1); - Буквы стандартной величины. OutTextXY(200,200,’Веритикальная строка’); SetTextStyle(0,0,2); - Размер букв увеличен. OutTextXY(200,200,’Горизонтальная строка’); Нужную величину шрифта , можно установить и другим способом, используя процедуру:SetUserCharSize(multX,divX,multY,divY); где отношение multX/divX устанавливает ширину нового шрифта, а multY/divY устанавливает высоту. Эта процедура ставится в программе после SetTextStyle. В программе это будет выглядеть так: SetUserCharSize(1,3,1,1); OutTextXY(200,200,’Уменьшение по высоте’); SetUserCharSize(3,1,1,1); OutTextXY(200,200,’Увеличение по ширине’);

Шрифты

Константа Значение Описание
DefaultFont

TriplexFont

SmallFont

SansSerifFont

GothicFont

0

1

2

3

4

8х8 битовый шрифт

штриховые шрифты малый шрифт

сансериф

готический

Константы ориентации

HorizDir

VertDir

0

1

Слева направо

Снизу вверх

Выравнивание текста Иногда в пределах одной строки нужно вводить символы выше или ниже , выравнивание текста происходит с помощью процедуры: SetTextJustify(Horiz,Vert); Horiz- выравнивание по горизонтали; Vert- выравнивание по вертикали. Например: пользуясь нижней таблицей можно расположить в центре SetTextJustify(CenterText,CenterText); и в центре ниже SetTextJustify(1,0);

Параметры выравнивания

Параметры Значение Комментарий

Горизонтальное выравнивание

LeftText

CenterText

RightText

0

1

2

Выровнять влево

Центрировать

Выровнять вправо

Вертикальное выравнивание

BoottomText

CenterText

TopText

0

1

2

Переместить вниз

Центрировать

Переместить вверх

Практическая часть

Задание 1. Выполнить в цвете флаги и подписать :А)Россия, Германия, Италия;

Б) Швеция, Норвегия, Финляндия; В) Япония(красная окружность в центре окрасится только контур), Турция(желтый полумесяц окрасится только контур).

Задание2. Выполнить в цвете эмблему команды Спартак, Зенит и сделать надпись.

Тема : УПРАВЛЕНИЕ ЗВУКОМ.

Цель: научиться составлять звуковые программы с использованием процедур Sound, Nosound, Delay.

Теоретическая часть. При работе со звуком необходимо рассказать учащимся расположение нот на нотоносцах и расположение октав. Для создания звуковых эффектов используются стандартные процедуры модуля Сrt. Sound(I); где I - активизирует звуковые средства компьютера принимает целочисленное значение указывает частоту звучания звука в Герцах. Будет звучать до тех пор, пока не отменить. NoSound; - отмена звука, отменяет звуковой режим, заданный процедурой Sound. Delay – указывает время, в течение которого будет продолжаться звучание. Пример:

Begin

Sound(500); - цифра в скобках зависит от вашего процессора.

Delay(2000); где 2000- длительность звучания ноты, величина цифры зависит от вашего процессора.

NoSound ; End.

С помощью данной процедуры и операторов цикла можно создавать самые различные звуковые эффекты : серены, метронома, будильника, пение птиц , мелодий известных песен.

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

Частота звучания нот

Нота Большая окт. Малая октава Первая октава Вторая октава
До

Ре

Ми

Фа

Соль

Ля

Си

130. 81

46. 83

164. 81

174. 61

196. 00

220. 00

246. 94

261. 63

293. 66

329. 63

349. 23

392. 00

440. 00

493. 88

523. 25

587. 25

659. 26

698. 46

784. 99

880. 00

987. 77

1046. 50

1174. 07

1318. 05

1396. 09

1568. 00

1760. 00

1975. 00

Задача Составить гамму для малой октавы с нарастающей продолжительностью звучания каждой ноты. Program nota;

Uses Crt; Const

M:array[1. . 7] of integer = (262,294,330,349,392,440,494); где[1. . 7]ноты, в круглых скобках- продолжительность звучания

T:array[1. . 7] of integer = (10,12,13,14,15,16); увеличение длительности нот
Var I: byte;
Begin
Wile not KeyPressed do begin использование цикла для
For I: = 1 to 7 do begin звучания всей гаммы нот
Sound(M[I]); звучание
Delay (T[I]); длительность звучания(задержка)
NoSound; отмена звука
End; End; End.

Практическая часть

Задание 1. Составить программу для песни “Веселые гуси”.

Задание 2. Составить программу для песни “Голубой вагон”

Задание 3. Составить программу для песни “Во поле березка стояла”

Задание 4. Составить программу для своей мелодии.

Тема : ЗВУКОВОЕ СОПРОВОЖДЕНИЕ ПРОЦЕССА ВЫВОДА.

Цель: Научиться применять процедуры и функции звука для сопровождения вывода текста, графики.

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

Задача1. Вывести в центр экрана заставку в виде текста “Средняя школа № 30” Использовать процедуру Zvuk.

Program zv;
Uses crt; Const
Procedure ZvukOut; (основная процедура)
Var I: bite; St: string[40]; (размер строки 40 символов)
Procedure Zvuk; (вспомогательная процедура)
Begin
Sound (5000);
Delay (70) ;
NoSound ; (отмена звука)
End; ClrScr; (очистка экрана)
St:=’ СРЕДНЯЯ ШКОЛА № 30’; (строка с текстом)
GoToXY(18,12); (установить курсор начала текста в позицию экрана 18,12)
For I:=1 to Length(St) do begin (записывать по буквам строку)
Write(St[I]);
Zvuk; (вызывается вспомогательная процедура)
End; End;
Begin
ZvukOut; (завершение работы процедуры)
Readln; End.

Практическая часть

Задание1. Выполнить заставку для текста “Город Абакан”, используя процедуру Zvuk, вывод текста по буквам.

Задание 2. Изобразить кораблик, вывести под изображением “Титаник” по буквам и в сопровождении звука.

Задание 3. Выполнить программу, которая после выполнения каждого из трех блоков (вывод трех прямых разным цветом) выводит сообщения: “Отработан 1-й блок”, “Отработан 2-й блок”, “Отработан 3-й блок” и выдает звуковой сигнал после отработки каждого блока.

ЗАДАНИЯ ДЛЯ ЗАЧЕТА

Задание1. Изобразить ракету, цвет контура выбрать самостоятельно, ракета движется, движение сопровождается звуком.

Задание 2. Придумать демонстрации: А) равномерного движения объекта; Б) равноускоренного движения объекта; Г) движение по кривой. Использовать звук, текст, цвет.

Задание 3. Придумать демонстрацию импульса двух тел.

Задание 4. Придумать рекламу произведения М. Булгакова “Мастер и Маргарита”, используя цвет, звук, движение, текст.