Проделана большая исследовательская работа в плане изучения модуля Graphсреды программирования TurboPascal.
При изучении программы становится понятным, для чего предназначено объектно-модульное программирование, которое предполагает использование готовых, уже существующих программ в виде подключаемых модулей, вместо создания новых для отображения экранного интерфейса.
Программа имеет практическую направленность, не замкнута, и может быть усовершенствована для построения более сложных графиков.
Программа может быть использована в качестве стартовой площадки – готового программного модуля для других учащихся желающих изучить способы работы с графическим режимом, модуль Graph среды программирования TurboPascal. Также программу можно использовать на уроках физики для наглядной демонстрации графиков равномерного и неравномерного движения.
Вложение | Размер |
---|---|
referat_berber.doc | 341 КБ |
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И ВЫСШЕЙ ШКОЛЫ РЕСПУБЛИКИ КОМИ
МУНИЦИПАЛЬНОЕ УЧРЕЖДЕНИЕ
«УПРАВЛЕНИЕ ОБРАЗОВАНИЯ АДМИНИСТРАЦИИ
МУНИЦИПАЛЬНОГО ОБРАЗОВАНИЯ ГОРОДСКОГО ОКРУГА «УСИНСК»
МУНИЦИПАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
«СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА № 2»
ПОСТРОЕНИЕ ГРАФИКОВ ДВИЖЕНИЯ СРЕДСТВАМИ СРЕДЫ ПРОГРАММИРОВАНИЯ TURBO PASCAL
Автор:
учащийся 9 А класса
Руководитель:
Зайкова Анна Вадимовна,
учитель информатики
2007 г.
СОДЕРЖАНИЕ:
При изучении языка программирования TURBO PASCAL на уроках информатики, составляя программы и изучая результаты их работы на экране в текстовом режиме, возник вопрос о работе в графическом режиме. Захотелось изучить возможности графического режима, познакомиться с процедурами и функциями позволяющими работать в нём. В связи с этим появилась идея создания компьютерной программы как демонстрации возможностей среды программирования TURBO PASCAL. Решили создать не просто что-то рисующую программу, а для построения графиков, которую можно будет использовать не только на уроках информатики, но и на уроках физики при изучении различных форм движения. Осуществить идею на практике показалось интересным и актуальным.
Чтобы создать программу, необходимо было решить следующие задачи: научиться инициализировать графический режим, изучить процедуры и функции модуля Graph, разобраться с понятием текущий указатель экрана и системой координат в графическом режиме.
Изучив библиотеку модуля Graph и возможности среды программирования Turbo Pascal для работы с графикой, разобравшись с системой координат графического режима, нужно было выбрать необходимые процедуры и функции и создать работающую программу, которая сможет заинтересовать и учителей и учеников своей практической направленностью.
Был проработан большой справочный материал по физике, так как для отладки программы пришлось решить не одну, а множество задач на движение, построить графики движения на бумаге, изучить графики и физические формулы позволяющие строить такие графики.
Созданная программа наглядно демонстрирует и графический режим работы монитора и текстовый. При изучении на уроках информатики типов мониторов, можно показать ученикам наглядно особенности работы монитора в двух режимах. На многих современных компьютерах установлена операционная система WINDOWS, которая использует графический режим работы монитора, поэтому её и называют графической или объектно – ориентированной. Изучая, как работает данная программа можно лучше понять разницу между WINDOWS и DOS, которая работает в текстовом режиме.
Программа предусматривает проверку правильного запуска режима и сообщения об ошибке, если графический режим не запускается.
Программу можно условно разделить на три части. Первая часть выводит графики равномерного движения, вторая – графики равноускоренного движения, третья – равнозамедленного. Подробнее узнать как работает программа можно в соответствующей главе.
1. Графический режим
Аппаратная поддержка графики персонального компьютера обеспечивается двумя основными модулями: видеоадаптером и видеомонитором.
Видеоадаптеры — это весьма сложные электронные устройства, управляемые собственным микропроцессором, сравнимым порой по мощности с основным центральным процессором вычислительной системы. Конструктивно он представляет собой самостоятельную электронную плату, вставляемую в один из свободных разъемов внутри системного блока компьютера. Будет или не будет способен компьютер выводить графические изображения — целиком зависит от типа адаптера. Какой бы адаптер ни был установлен на компьютере, настройка на конкретный адаптер осуществляется специальными программами, которые называются графическими драйверами.
В среде программирования TURBO PASCAL графические драйверы разработаны практически для всех существующих видеоадаптеров. Они находятся в файлах, имеющих расширение .BGI (Borland Graphics Interface) и активизируются при инициализации графического режима.
Видеомонитор (или дисплей) — это устройство, на котором появляется выводимый текст или графические изображения, т. е. дисплей может работать в текстовых или графических режимах. Экран 25 раз в секунду формируется заново. Так как человеческий глаз не способен уловить такое быстрое мелькание кадров, создается иллюзия неподвижного изображения на экране монитора. Экран дисплея компьютера представляет собой прямоугольное поле, состоящее из большого количества точек (пикселей). Соответственно минимальной единицей управления является пиксель. Число точек на одной телевизионной линии и число самих телевизионных линий различно для разных типов видеоадаптеров. При работе в графическом режиме появляется возможность управлять цветом любого пикселя. Число строк пикселей и число пикселей в каждой телевизионной строке зависит от режима работы видеоадаптера. [2]
Для построения изображений на экране используется система координат. Отсчёт начинается от верхнего левого угла экрана, который имеет координаты (0,0). Значение X (столбец) увеличивается слева направо, значение Y (строка) увеличивается сверху вниз. Так, в режиме адаптера EGA экранные координаты каждого из четырех углов и точка в центре экрана будут представлены, как показано на рис.1. Рис. 1.
Чтобы строить изображение, необходимо указывать, по крайней мере, точку начала вывода. В текстовых режимах эту точку указывает курсор, который присутствует на экране. В графических режимах видимого курсора нет, но есть невидимый текущий указатель СР (Current Pointer). Фактически это тот же курсор, но он невидим. При создании программ выполняется постоянный контроль местоположения текущего Указателя. [2]
2. МОДУЛЬ GRAPH.
Чтобы включить графический режим, нужно предварительно подключить библиотечный модуль GRAPH в разделе Uses, определить графический драйвер и инициализировать графический режим с помощью процедуры InitGraph входящей в состав программного модуля GRAPH. [1]
В состав модуля GRAPH входит 79 графических процедур и функций, десятки стандартных констант и типов данных. Все они составляют единый комплекс средств, позволяющих разрабатывать профессиональные программные продукты. [2]
В созданной программе используются следующие процедуры и функции модуля GRAPH:
Initgraph (gd,gm,tpf); - процедура работает от трёх параметров, где:
параметр gd – имеет целочисленный тип (integer), определяет графический режим,
параметр gm - имеет целочисленный тип(integer), определяет графический драйвер,
параметр tpf - имеет строковый(string) тип, определяет путь к графическому драйверу.
PutPixel(x,y,c); - процедура, рисующая точку с координатами x и y и цветом c, параметры x, y, c целочисленного типа.
Line(x1,y1,x2,y2); - процедура, которая рисует линию от точки с координатами x1,y1 до точки с координатами x2,y2. Все параметры целочисленного типа.
OutTextXY(x,y,tx); - процедура, выводящая текст tx в точку с координатами x,y. Параметры x, y целочисленного типа,параметр tx строкового типа.
SetBkColor(c) – процедура, устанавливает цвет фона. Параметр с целочисленного типа.
SetColor(c) – процедура, устанавливает цвет рисования. Параметр с целочисленного типа.
GraphErrorMsg(ErrK) – функция, возвращает строку сообщения об ошибке для заданного кода ошибки, параметр ErrK целочисленного типа - код ошибки.
GraphResult – функция, возвращает код ошибки для последней графической операции.
CloseGraph; – процедура, закрывает графический режим. Без параметров.
В процессе выполнения процедура CloseGraph освобождает память, распределённую под драйверы графики, файлы шрифтов и промежуточные данные, и восстанавливает режим работы адаптера в то состояние, в котором он находился до выполнения инициализации графики. [1]
3. КАК РАБОТАЕТ ПРОГРАММА.
Программа называется grafik и находится в файле с именем FIZGRDV.PAS. Условно всю программу можно разделить на три части. Первая часть строит графики равномерного движения. Вторая часть выводит на экран графики равноускоренного движения, третья - графики равнозамедленного движения.
Во всех трёх частях программы инициализируется графический режим, проверяется запуск графического режима на возможную ошибку, если ошибка произойдёт, то будет выдано сообщение о коде ошибки. Коды возможных ошибок в приложение 9.
Запуск программы можно осуществлять в среде программирования TURBO PASCAL, открыв в текущем окне файл с именем FIZGRDV.PAS, нажатием клавиш ctrl+F9 или щелчком мыши на кнопке RUN строки меню. После запуска открывается текстовое окно программы – главное меню, представленное в приложении 2.
Если пользователь введёт цифру 1, то программа будет строить графики равномерного движения, 2 - равноускоренного движения, 3 - графики равнозамедленного движения, 4 – выйдет из программы. После построения, например графиков равноускоренного движения, можно построить графики равнозамедленного движения, так как при нажатии любой клавиши в графическом режиме программа вновь предложит вам выбрать необходимую цифру.
В зависимости от введённой с клавиатуры цифры открывается другое текстовое окно, которое запрашивает необходимые для построения графиков исходные данные (приложения 3,4,5).
Программа предлагает исходные данные ограничить определёнными интервалами значений. Не потому что программа не будет работать, а потому что при других данных графики будут менее наглядными, так как при их выводе задана определённая система координат.
График зависимости проекции пути от времени при равномерном движении строится по формуле S=V*t. [4]
График зависимости проекции координаты от времени при равномерном движении строится по формуле X=X0 +V*t. [4]
График зависимости проекции пути от времени при равноускоренном и равнозамедленном движении строится по формуле [4]
График зависимости проекции скорости от времени при равноускоренном и равнозамедленном движении строится по формуле [4]
График зависимости координаты от времени при равноускоренном и равнозамедленном движении строится по формуле [4]
Примеры построенных графиков в приложении 6,7,8.
Для удобной работы с программой на уроках физики, создан файл FIZGRDV.EXE, и пакетный файл с именем Start.bat.
Пакетный файл запускает программу русификатор RKSV.COM, а затем файл FIZGRDV.EXE русификатор нужен, для того чтобы программа выводила русские буквы. В папке Графики находится необходимый для правильного запуска графического режима на современных мониторах типа VGA графический драйвер EGAVGA.BGI.
Чтобы использовать программу необходимо сделать следующее:
Программа написана на языке программирования Turbo Pascal. В программе присутствуют необходимые комментарии. Листинг программы представлен в приложении 1.
Создана программа, которая строит графики равномерного, равноускоренного и равнозамедленного движения на экране компьютера по введённым пользователем данным.
Стало очевидным, что без знаний графического режима и среды программирования Turbo Pascal работа в других объектно-ориентированных средах может оказаться непосильной задачей. Взять, к примеру, Delphi. В ней более удобный интерфейс, чем в Turbo Pascal и программировать в среде Delphi на первый взгляд кажется легче, чем в Turbo Pascal, но это не так, ведь в Delphi нужно пользоваться теми же операторами. [2]
Программа наверняка заинтересует учителей физики, ведь с её помощью в интересной не стандартной форме можно демонстрировать графики движения.
Программу можно будет использовать на уроках информатики для наглядной демонстрации возможностей модуля Graph.
На примере созданной программы для решения задачи построения графиков движения, можно создавать более сложные программы. Например, программу, которая рисует какой-нибудь сложный рисунок, состоящий не только из линий и точек, но и других геометрических фигур. Можно попытаться создать программу с двигающимися объектами на экране.
V. Приложения.
Приложение 1. Листинг программы.
program grafik;
uses crt,graph;
const Xy=320;Yyn=350;yyk=160;
Xxn1=15;Xxk1=205; Yxn1=25;Yxk1=25;
Xxn2=215;Xxk2=405; Yxn2=225;Yxk2=225;
Xxn3=415;Xxk3=605; Yxn3=425;Yxk3=425;
var v,s,t,hx,hy,ht,ax,x0,km:real;
gd,gm,ErrK,M,k,i,Xn,Vox,Yn,Xk,Yk,dvig:integer;
{функция перевода целого числа в строку для вывода на экран}
function IntSt(Int:integer):string;
var Buf:string[10];
begin
Str(Int,Buf);
IntSt:=Buf;
end;
{функция перевода вещественного числа в строку для вывода на экран}
function RealSt(Re:real;Dig,Dec:integer):string;
var Buf:string[20];
begin
Str(Re:Dig:Dec,Buf);
RealSt:=Buf;
end;
begin
repeat
clrscr;
writeln('1-равномерное движение ');
writeln('2-равноускоренное движение ');
writeln('3-равнозамедленное движение ');
writeln('4-выход из программы ');
readln(k);
if k=1 then begin
{I часть программы}
writeln('РАВНОМЕРНОЕ ДВИЖЕНИЕ');
writeln ('введите скорость в м/с');
write('(скорость не дожна превышать 100 м/с), V=');readln(v);
writeln('введите время в секундах');
write('(время не должно превышать 1000 с), t=');readln(t);
writeln('введите начальную координату в метрах');
write('(начальная координата должно быть не менее 1000 м), xo=');readln(x0);
{инициализация графического режима}
gd:=detect;
initgraph(gd,gm,'d:\tp7\bgi');
ErrK:=GraphResult;
if ErrK=grOk then begin
SetBkcolor(0);
{вывод нач данных для 1ой части программы}
SetColor (3);
OutTextXy(5,5,'начальные данные:');
OutTextXy(5,25,'скорость v=');OutTextXy(93,25,RealSt(v,3,0));
OutTextXy(5,45,'время t=');OutTextXy(69,45,RealSt(t,4,0));
OutTextXy(5,65,'начальная координата Xo=');OutTextXy(210,65,RealSt(x0,4,0));
OutTextXy(244,65,'м');
OutTextXy(103,45,'c');
OutTextXy(120,25,'м/с');
{подписи данных на 1ом графике}
SetColor (3);
OutTextXy(20,150,'V,м/с');
OutTextXy(165,335,'t*100,с');
SetColor(58);
OutTextXy(5,300,'10');
OutTextXy(5,285,'20');
OutTextXy(5,270,'30');
OutTextXy(5,255,'40');
OutTextXy(5,240,'50');
OutTextXy(5,225,'60');
OutTextXy(5,210,'70');
OutTextXy(5,195,'80');
OutTextXy(5,180,'90');
OutTextXy(0,165,'100');
OutTextXy(17,322,'0');
SetColor(3);
OutTextXy(220,150,'Sx1000,м');
OutTextXy(365,335,'t*100,c');
SetColor(58);
OutTextXy(205,300,'10');
OutTextXy(205,285,'20');
OutTextXy(205,270,'30');
OutTextXy(205,255,'40');
OutTextXy(205,240,'50');
OutTextXy(205,225,'60');
OutTextXy(205,210,'70');
OutTextXy(205,195,'80');
OutTextXy(205,180,'90');
OutTextXy(200,165,'100');
OutTextXy(217,322,'0');
setcolor(3);
OutTextXy(420,150,'Xx1000,м');
OutTextXy(565,335,'t*100,с');
SetColor(58);
OutTextXy(415,300,'1');
OutTextXy(415,285,'2');
OutTextXy(415,270,'3');
OutTextXy(415,255,'4');
OutTextXy(415,240,'5');
OutTextXy(415,225,'6');
OutTextXy(415,210,'7');
OutTextXy(415,195,'8');
OutTextXy(415,180,'9');
OutTextXy(405,165,'10');
OutTextXy(417,322,'0');
SetColor(58);
OutTextXy(35,322,'1');
OutTextXy(55,322,'2');
OutTextXy(73,322,'3');
OutTextXy(90,322,'4');
OutTextXy(107,322,'5');
OutTextXy(124,322,'6');
OutTextXy(141,322,'7');
OutTextXy(158,322,'8');
OutTextXy(175,322,'9');
OutTextXy(188,322,'10');
SetColor(58);
OutTextXy(240,322,'1');
OutTextXy(258,322,'2');
OutTextXy(276,322,'3');
OutTextXy(291,322,'4');
OutTextXy(307,322,'5');
OutTextXy(325,322,'6');
OutTextXy(342,322,'7');
OutTextXy(358,322,'8');
OutTextXy(376,322,'9');
OutTextXy(388,322,'10');
SetColor(58);
OutTextXy(440,322,'1');
OutTextXy(457,322,'2');
OutTextXy(474,322,'3');
OutTextXy(491,322,'4');
OutTextXy(508,322,'5');
OutTextXy(525,322,'6');
OutTextXy(542,322,'7');
OutTextXy(559,322,'8');
OutTextXy(576,322,'9');
OutTextXy(591,322,'10');
SetColor(63);
{построение осей}
line (Yxn1,Yyn,Yxk1,Yyk);line (Xxn1,Xy,Xxk1,Xy);
line(Xxk1,Xy,Xxk1-5,Xy+5);line(Xxk1,Xy,Xxk1-5,Xy-5);
line(Yxn1,Yyk,Yxk1-5,Yyk+5);line(Yxn1,Yyk,Yxk1+5,Yyk+5);
line (Yxn2,Yyn,Yxk2,Yyk);line (Xxn2,Xy,Xxk2,Xy);
line(Xxk2,Xy,Xxk2-5,Xy+5);line(Xxk2,Xy,Xxk2-5,Xy-5);
line(Yxn2,Yyk,Yxk2-5,Yyk+5);line(Yxn2,Yyk,Yxk2+5,Yyk+5);
line (Yxn3,Yyn,Yxk3,Yyk);line (Xxn3,Xy,Xxk3,Xy);
line(Xxk3,Xy,Xxk3-5,Xy+5);line(Xxk3,Xy,Xxk3-5,Xy-5);
line(Yxn3,Yyk,Yxk3-5,Yyk+5);line(Yxn3,Yyk,Yxk3+5,Yyk+5);
{нанесение делений}
Xn:=Yxn1;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn1-2;Yn:=Xy;Xk:=Yxn1;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn2;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn2-2;Yn:=Xy;Xk:=Yxn2;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn3;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn3-2;Yn:=Xy;Xk:=Yxn3;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
{1}
setcolor(57);
hx:=t*170/1000;hy:=(v*150)/100;{масштабирование}
line(Yxn1,Xy-round(hy),(Yxn1+round(hx)),Xy-round(hy));
{2}
M:=round((180*t)/1000);km:=172/123;{масштабирование}
for i:=1 to M do begin
s:=km*(v*i)/150;
putpixel(Yxn2+i,Xy-round(s),57);
end;
{3}
M:=round((180*t)/1000);km:=150/120;{масштабирование}
for i:=0 to M do begin
hx:=km*((x0+(v*i))/150);ht:=(x0/150);
putpixel(Yxn3+i,Xy-round(ht)-round(hx),57);
end;
repeat until keypressed;end
else writeln('Ошибка',GraphErrorMsg(ErrK));
closeGraph;
end
else
if k=2 then begin writeln('РАВНОУСКОРЕННОЕ ДВИЖЕНИЕ');
{II часть программы}
writeln ('введите начальную скорость в м/с');write('(начальная скорость не должна превышать 100 м/с), Vo=');readln(Vox);
writeln ('введите время в секундах');write('(время не должно превышать 10 c), t=');readln(t);
writeln ('введите ускорение в м/с^2');write('(ускорение положительно и не должно превышать 10 м/с^2 ), a=');readln(ax);
gd:=detect;
initgraph(gd,gm,'d:\tp7\bgi');
ErrK:=GraphResult;
if ErrK=grOk then begin
{вывод нач данных для 2ой части программы}
SetColor (3);
OutTextXy(5,5,'начальные данные:');
OutTextXy(5,25,'начальная скорость Vo=');OutTextXy(199,25,RealSt(Vox,3,0));
OutTextXy(5,45,'время t=');OutTextXy(69,45,RealSt(t,2,0));
OutTextXy(5,65,'ускорение a=');OutTextXy(110,65,RealSt(ax,2,0));
OutTextXy(225,25,'м/с');
OutTextXy(87,45,'c');
OutTextXy(130,65,'м/с^2');
SetBkcolor(56);
{подписи данных на графике}
SetColor (2);
OutTextXy(22,150,'a ,м/с^2');
OutTextXy(27,156,'x');
OutTextXy(199,310,'t,с');
SetColor(61);
OutTextXy(15,300,'1');
OutTextXy(15,285,'2');
OutTextXy(15,270,'3');
OutTextXy(15,255,'4');
OutTextXy(15,240,'5');
OutTextXy(15,225,'6');
OutTextXy(15,210,'7');
OutTextXy(15,195,'8');
OutTextXy(15,180,'9');
OutTextXy(10,165,'10');
OutTextXy(17,322,'0');
SetColor(2);
OutTextXy(222,150,'V ,м');
OutTextXy(227,155,'x');
OutTextXy(399,310,'t,c');
SetColor(61);
OutTextXy(205,300,'10');
OutTextXy(205,285,'20');
OutTextXy(205,270,'30');
OutTextXy(205,255,'40');
OutTextXy(205,240,'50');
OutTextXy(205,225,'60');
OutTextXy(205,210,'70');
OutTextXy(205,195,'80');
OutTextXy(205,180,'90');
OutTextXy(200,165,'100');
OutTextXy(217,322,'0');
SetColor(2);
OutTextXy(422,150,'S ,x100 м');
OutTextXy(427,155,'x');
OutTextXy(599,310,'t,с');
SetColor(61);
OutTextXy(410,300,'1');
OutTextXy(410,285,'2');
OutTextXy(410,270,'3');
OutTextXy(410,255,'4');
OutTextXy(410,240,'5');
OutTextXy(410,225,'6');
OutTextXy(410,210,'7');
OutTextXy(410,195,'8');
OutTextXy(410,180,'9');
OutTextXy(405,165,'10');
OutTextXy(417,322,'0');
SetColor(61);
OutTextXy(35,322,'1');
OutTextXy(55,322,'2');
OutTextXy(73,322,'3');
OutTextXy(90,322,'4');
OutTextXy(107,322,'5');
OutTextXy(124,322,'6');
OutTextXy(141,322,'7');
OutTextXy(158,322,'8');
OutTextXy(175,322,'9');
OutTextXy(188,322,'10');
SetColor(61);
OutTextXy(240,322,'1');
OutTextXy(258,322,'2');
OutTextXy(276,322,'3');
OutTextXy(291,322,'4');
OutTextXy(307,322,'5');
OutTextXy(325,322,'6');
OutTextXy(342,322,'7');
OutTextXy(358,322,'8');
OutTextXy(376,322,'9');
OutTextXy(388,322,'10');
SetColor(61);
OutTextXy(440,322,'1');
OutTextXy(457,322,'2');
OutTextXy(474,322,'3');
OutTextXy(491,322,'4');
OutTextXy(508,322,'5');
OutTextXy(525,322,'6');
OutTextXy(542,322,'7');
OutTextXy(559,322,'8');
OutTextXy(576,322,'9');
OutTextXy(591,322,'10');
SetColor(63);
{построение осей}
line (Yxn1,Yyn,Yxk1,Yyk);line (Xxn1,Xy,Xxk1,Xy);
line(Xxk1,Xy,Xxk1-5,Xy+5);line(Xxk1,Xy,Xxk1-5,Xy-5);
line(Yxn1,Yyk,Yxk1-5,Yyk+5);line(Yxn1,Yyk,Yxk1+5,Yyk+5);
line (Yxn2,Yyn,Yxk2,Yyk);line (Xxn2,Xy,Xxk2,Xy);
line(Xxk2,Xy,Xxk2-5,Xy+5);line(Xxk2,Xy,Xxk2-5,Xy-5);
line(Yxn2,Yyk,Yxk2-5,Yyk+5);line(Yxn2,Yyk,Yxk2+5,Yyk+5);
line (Yxn3,Yyn,Yxk3,Yyk);line (Xxn3,Xy,Xxk3,Xy);
line(Xxk3,Xy,Xxk3-5,Xy+5);line(Xxk3,Xy,Xxk3-5,Xy-5);
line(Yxn3,Yyk,Yxk3-5,Yyk+5);line(Yxn3,Yyk,Yxk3+5,Yyk+5);
{нанесение делений}
Xn:=Yxn1;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn1-2;Yn:=Xy;Xk:=Yxn1;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn2;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn2-2;Yn:=Xy;Xk:=Yxn2;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn3;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn3-2;Yn:=Xy;Xk:=Yxn3;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
{1}
setcolor(57);
hx:=t;hy:=ax;{масштабирование}
line(Yxn1,Xy-15*round(hy),(Yxn1+17*round(hx)),Xy-15*round(hy));
{2}
M:=round((170*t)/10);{масштабирование}
for i:=1 to M do begin
hy:=(Vox+(ax*i))/11;km:=175/123;
putpixel(Yxn2+i,Xy-round(km*Vox)-round(hy),57);
end;
{3}
M:=round((170*t)/10);{масштабирование}
for i:=1 to M do begin
hy:=(Vox*i+(ax*i*i/2))/1000;km:=175/123;
putpixel(Yxn3+i,Xy-round(hy),57);
end;
repeat until keypressed; end
else writeln('Ошибка',GraphErrorMsg(ErrK));
closeGraph;
{III часть программы}
end
else if k=3 then begin writeln('РАВНОЗАМЕДЛЕННОЕ ДВИЖЕНИЕ');
writeln ('введите начальную скорость в м/с');write('(начальная скорость не должна превышать 100 м/с), Vox=');readln(Vox);
writeln ('введите время в секундах');write('(время не должно превышать 10 с), t=');readln(t);
writeln ('введите ускорение');write('(ускорение отрицательно и не должно превышать 10 м/с^2), ax=');readln(ax);
gd:=detect;
initgraph(gd,gm,'d:\tp7\bgi');
ErrK:=GraphResult;
if ErrK=grOk then begin
{вывод нач данных для 3-eй части программы}
SetColor (3);
OutTextXy(5,5,'начальные данные:');
OutTextXy(5,25,'начальная скорость Vo=');OutTextXy(199,25,RealSt(Vox,3,0));
OutTextXy(5,45,'время t=');OutTextXy(69,45,RealSt(t,2,0));
OutTextXy(5,65,'ускорение a=');OutTextXy(110,65,RealSt(ax,2,0));
OutTextXy(225,25,'м/с');
OutTextXy(87,45,'c');
OutTextXy(137,65,'м/с^2');
SetBkcolor(56);
{подписи данных на графике}
SetColor (6);
OutTextXy(22,150,'a ,м/с^2');
OutTextXy(28,155,'x');
OutTextXy(199,310,'t,с');
SetColor(62);
OutTextXy(5,300,'1');
OutTextXy(5,285,'2');
OutTextXy(5,270,'3');
OutTextXy(5,255,'4');
OutTextXy(5,240,'5');
OutTextXy(5,225,'6');
OutTextXy(5,210,'7');
OutTextXy(5,195,'8');
OutTextXy(5,180,'9');
OutTextXy(0,165,'10');
OutTextXy(17,322,'0');
SetColor(6);
OutTextXy(222,150,'V ,м/c');
OutTextXy(227,155,'x');
OutTextXy(399,310,'t,c');
SetColor(62);
OutTextXy(205,300,'10');
OutTextXy(205,285,'20');
OutTextXy(205,270,'30');
OutTextXy(205,255,'40');
OutTextXy(205,240,'50');
OutTextXy(205,225,'60');
OutTextXy(205,210,'70');
OutTextXy(205,195,'80');
OutTextXy(205,180,'90');
OutTextXy(200,165,'100');
OutTextXy(217,322,'0');
SetColor(6);
OutTextXy(422,150,'S x100,м');
OutTextXy(427,155,'x');
OutTextXy(599,310,'t,с');
SetColor(62);
OutTextXy(405,300,'1');
OutTextXy(405,285,'2');
OutTextXy(405,270,'3');
OutTextXy(405,255,'4');
OutTextXy(405,240,'5');
OutTextXy(405,225,'6');
OutTextXy(405,210,'7');
OutTextXy(405,195,'8');
OutTextXy(405,180,'9');
OutTextXy(400,165,'10');
OutTextXy(417,322,'0');
SetColor(62);
OutTextXy(35,322,'1');
OutTextXy(55,322,'2');
OutTextXy(73,322,'3');
OutTextXy(90,322,'4');
OutTextXy(107,322,'5');
OutTextXy(124,322,'6');
OutTextXy(141,322,'7');
OutTextXy(158,322,'8');
OutTextXy(175,322,'9');
OutTextXy(188,322,'10');
SetColor(62);
OutTextXy(240,322,'1');
OutTextXy(258,322,'2');
OutTextXy(276,322,'3');
OutTextXy(291,322,'4');
OutTextXy(307,322,'5');
OutTextXy(325,322,'6');
OutTextXy(342,322,'7');
OutTextXy(358,322,'8');
OutTextXy(376,322,'9');
OutTextXy(388,322,'10');
SetColor(62);
OutTextXy(440,322,'1');
OutTextXy(457,322,'2');
OutTextXy(474,322,'3');
OutTextXy(491,322,'4');
OutTextXy(508,322,'5');
OutTextXy(525,322,'6');
OutTextXy(542,322,'7');
OutTextXy(559,322,'8');
OutTextXy(576,322,'9');
OutTextXy(591,322,'10');
SetColor(63);
{построение осей}
line (Yxn1,640,Yxk1,Yyk);line (Xxn1,Xy,Xxk1,Xy);
line(Xxk1,Xy,Xxk1-5,Xy+5);line(Xxk1,Xy,Xxk1-5,Xy-5);
line(Yxn1,Yyk,Yxk1-5,Yyk+5);line(Yxn1,Yyk,Yxk1+5,Yyk+5);
line (Yxn2,640,Yxk2,Yyk);line (Xxn2,Xy,Xxk2,Xy);
line(Xxk2,Xy,Xxk2-5,Xy+5);line(Xxk2,Xy,Xxk2-5,Xy-5);
line(Yxn2,Yyk,Yxk2-5,Yyk+5);line(Yxn2,Yyk,Yxk2+5,Yyk+5);
line (Yxn3,640,Yxk3,Yyk);line (Xxn3,Xy,Xxk3,Xy);
line(Xxk3,Xy,Xxk3-5,Xy+5);line(Xxk3,Xy,Xxk3-5,Xy-5);
line(Yxn3,Yyk,Yxk3-5,Yyk+5);line(Yxn3,Yyk,Yxk3+5,Yyk+5);
{нанемение делений}
Xn:=Yxn1;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn1-2;Yn:=Xy;Xk:=Yxn1;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn1-2;Yn:=Xy;Xk:=Yxn1;
for i:=1 to 10 do begin
Yn:=Yn+15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn2;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn2-2;Yn:=Xy;Xk:=Yxn2;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn2-2;Yn:=Xy;Xk:=Yxn2;
for i:=1 to 10 do begin
Yn:=Yn+15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn3;Yn:=Xy-2;Yk:=Xy;
for i:=1 to 10 do begin
Xn:=Xn+17;line(Xn,Yn,Xn,Yk);end;
Xn:=Yxn3-2;Yn:=Xy;Xk:=Yxn3;
for i:=1 to 10 do begin
Yn:=Yn-15;line(Xn,Yn,Xk,Yn);end;
Xn:=Yxn3-2;Yn:=Xy;Xk:=Yxn3;
for i:=1 to 10 do begin
Yn:=Yn+15;line(Xn,Yn,Xk,Yn);end;
SetColor(62);
{подписи данных на графике 3.1}
OutTextXy(0,330,'-1');
OutTextXy(0,345,'-2');
OutTextXy(0,360,'-3');
OutTextXy(0,375,'-4');
OutTextXy(0,390,'-5');
OutTextXy(0,405,'-6');
OutTextXy(0,420,'-7');
OutTextXy(0,435,'-8');
OutTextXy(0,450,'-9');
OutTextXy(0,465,'-10');
SetColor(62);
OutTextXy(200,330,'-10');
OutTextXy(200,345,'-20');
OutTextXy(200,360,'-30');
OutTextXy(200,375,'-40');
OutTextXy(200,390,'-50');
OutTextXy(200,405,'-60');
OutTextXy(200,420,'-70');
OutTextXy(200,435,'-80');
OutTextXy(200,450,'-90');
OutTextXy(190,465,'-100');
SetColor(62);
OutTextXy(405,330,'-1');
OutTextXy(405,345,'-2');
OutTextXy(405,360,'-3');
OutTextXy(405,375,'-4');
OutTextXy(405,390,'-5');
OutTextXy(405,405,'-6');
OutTextXy(405,420,'-7');
OutTextXy(405,435,'-8');
OutTextXy(405,450,'-9');
OutTextXy(395,465,'-10');
{1}
setcolor(57);
hx:=t;hy:=ax;{масштабирование}
line(Yxn1,Xy-15*round(hy),(Yxn1+17*round(hx)),Xy-15*round(hy));
{2}
M:=round((170*t)/10);{масштабирование}
for i:=1 to M do begin
hy:=(Vox+(ax*i))/11;km:=175/123;
putpixel(Yxn2+i,Xy-round(km*Vox)-round(hy),57);
end;
{3}
M:=round((170*t)/10);{масштабирование}
for i:=1 to M do begin
hy:=(Vox*i+(ax*i*i/2))/1000;km:=175/123;
putpixel(Yxn3+i,Xy-round(hy),57);
end;
repeat until keypressed;end
else writeln('Ошибка',GraphErrorMsg(ErrK));
closeGraph;
end
else
if k=4 then dvig:=1
else
writeln('введите правильную цифру');
until dvig=1;
end.
Приложение 2. Главное меню.
Приложение 3. Меню для равномерного движения.
Приложение 4. Меню для равноускоренного движения.
Приложение 5. Меню для равнозамедленного движения.
Приложение 6. Графики равномерного движения
Приложение 7. Графики равноускоренного движения
Приложение 8. Графики равнозамедленного движения
Приложение 9. Коды ошибок запуска графического режима
Константа | Значение | Описание |
grOK grNoInitGraph grNotDetected grFileNotFound grlnvalidDriver grNoLoadMem grNoScanMem grNoFloodMem grFontNotFound grNoFontMem grlnvalidMode grError grIOerror grlnvalidFont grlnvalidFontNum | 0 —1 —2 —3 —4 —5 —6 —7 — 8 —9 —10 —11 —12 —13 —14 | Нет ошибок Графика не инициализирована (используйте InitGraph) Графическое устройство не обнаружено Файл драйвера устройства не найден Неправильный файл драйвера устройства Недостаточно памяти для загрузки драйвера Выход за пределы памяти при заполнении (scan fill) Выход за пределы памяти при заполнении (flood fill) Файл шрифта не найден Недостаточно памяти для загрузки шрифта Неверный графический режим для этого драйвера Графическая ошибка Ошибка графического ввода-вывода Неверный файл шрифта Неверный номер шрифта |
Мост из бумаги для Киры и Вики
Горка
Украшаем стену пушистыми кисточками и помпончиками
Лев Николаевич Толстой. Индеец и англичанин (быль)
Девчата