Графиктік режимде текст шығару процедуралары

Скачать




МАЗМҰНЫ
Кіріспе.............................................................................................................. 2
І. Графиктік режимде жұмыс.................................................................... 3
1.1. Экранды басқаратын процедуралар мен функциялар........ 3
1.2. Графиктік фигуралар салу процедуралары............................ 7
1.3. Графиктік режимде текст шығару процедуралары............. 14
1.4. Графиктік режимде қателерді өңдеу.................................... 17
1.5. Фигураларды жылжыту......................................................... 19
ІІ. «Әріптер жауынын» ұйымдастыру қосымшасы................................... 22
2.1. Программаға сипаттама........................................................... 22
Қорытынды..................................................................................................... 24
Қолданылған әдебиеттер.................................................................................. 25
Қосымша........................................................................................................... 26
КІРІСПЕ
Курстық жұмыстың тақырыбы «Әріптер жауынын ұйымдастыру». Курстық жұмыстың
Бұл курстық жұмыс екі тараудан тұрады. Бірінші тарауда
Программа құруға ыңғайлы тамаша тілдердің бірі- Паскаль
Енді бірер ауыз сөз тілдің тарихына
Турбо Паскаль Borland фирмасының кеңейтілген стандартты тілі болып
І. ГРАФИКТІК РЕЖИМДЕ ЖҰМЫС
1.1. Экранды басқаратын процедуралар мен функциялар
Графиктік режим орнату үшін программаның басында келесі амалдар
USES қызметші сөзінде GRAPH модулі жазылады:
USES Graph;
VAR
d1,d2:Integer;
BEGIN
dl:=Detect;
I nitGraph(d1, d2, 'C:\Turbo\Graph');
мұндағы:
InitGraph - графикалық режимді орнату процедурасы,
d1- графиктік режим драйверініңтипін,
d2 - видеоадаптердің жұмыс режимінің нөмірін анықтайтын тұрақтылар.
Бұл шамалар монитор мен видеадаптер типтеріне байланысты болады.
Экранның фоны SETBKCOLОR процедурасының көмегімен орнатылады, жазылуы:
SETBKCOLOR(C);
мұндағы: С - түс коды 0-ден 15-ге дейін
Экрандағы барлық салынған графиктік объектілерді өшіріп тастау үшін
Графикалық режимнің көзге көрінбейтін сілтеме- көрсеткіш курсоры болады.
MОVETO процедурасы курсорды координаттары өзінде көрсетілген орынға апарып
MOVETO(X,Y); //курсорды А(Х,Ү) нүктесіне
MOVEREL процедурасы курсорды бұрынғы тұрған жерінен X және
MOVEREL(X1,Y1);//курсорды А(Х,Ү) нүктесінен А1(Х+Х1,Ү+Ү1)
нүктесіне апарып қояды
Курсордың тұрған жерін анықтау үшін GET функциясы қолданылады,
A:=CetX; //курсор түрган жердің X осіндегі
B:=GetY; //курсор түрған жердің Ү осіндегі
X және Ү осіндегі барлық нүктелер санын анықтау
A:=CetmaxX; //А - X осінің ең үлкен мәнін
B:=GetmaxY;//B - Y осінің ең үлкен мәнін меншіктейді
Бұдан басқа Getmax функциясын экран ортасының координаттарын анықтау
Xc:=GetmaxX Div 2; Yc:-GetmaxY Div 2; Putpixel(Xc, Yc,
//экранның қақ ортасынан нүкте шығару немесе:
Circle(GetmaxX Div 2, GetmaxY Div 2,30);
//экранның қақ ортасынан шеңбер шығару
Текстік режимдегідей графиктік режимде де графиктік фигураларды бөлек
SETVIEWPORT(X1, Y1,X2, Y2, Clip);
мұндағы: Х1.Ү1 - орнатылатын терезенің сол жақ жоғарғы
Clip - салынатын графиктік объектінің терезенің сыртына шығатын
Ағымдағы терезенің ішін тазалау үшін CLEARVIEWPORT процедурасы қолданылады.
SETVIEWPORT процедурасының көмегімен орнатылған терезе тек қана экранның
Орнатылған терезе параметрлерінің мәндерін текстік режимге шығып GETVIEWSETTING
Графикалық режимнен шығу үшін параметрсіз CLOSEGRAPH проиедурасы қолданылады.
Кей жағдайлардатекстік режимнен графиктік режимге, одан қайтадан текстік
Графиктік режимнен текстік режимге өтіп, одан қайтадан графиктік
PROGRAM Gr1;
USES
Graph, Crt;
VAR
d1,d2:Integer;
V:Viewporttype;
BEGIN
d1:=Detect;
Initgraph(d1,d2,'');
Setbkcolor(9);
Setcolor(S);
Outtextxy(200,250, 'Graph Rejim');
ReadLn;
Restorecrtmode;
Textbackground(2);
Clrscr;
Gotoxy(Lo(WindMax) Div2,Hi(WindMax) Div2);
Textcolor(5); Writeln('Text Rejim');
Readln;
Setgraphmode(d2);
Setbkcolor(2);
Circle(GetmaxX Div 2, GetmaxY Div 2,150);
Line( 100, GetmaxY Div 2, 500, GetmaxY Div
LinefGetmaxX Div 2, 50, GetmaxXDiv2, 450);
Readln;
Closegraph
END.
1.2. Графиктік фигуралар салу процедуралары
Графиктік фигуралардың түсін орнату үшін SETCOLOR процедурасы қолданылады,
SETCOLOR(C);
мұндағы: С - палитрадағы түс коды 0-ден 15-ге
Бұл процедурамен орнатылған түс кодының мәнін анықтау үшін
Палитрадағы ең үлкен түстің коды GETMAXCOLOR процедурасымен анықталады.
Палитрадағы немесе жаңадан жасалған палитрадағы түстердің орналасуы мен
PUTPIXEL(X,Y,C);
Бұл процедураның орындалу нәтижесінде экранның координаттары X және
Салынған нүктенің түсін GETPIXEL функциясымен анықтауға болады, жазылуы:
C:=GETPIXEL(X, Y); немесе WRITELN(GETPIXEL(X, Y));
Бұл функцияның орындалу нәтижесінде координаттары X және Ү
Түзу салу үшін LINETO және LINEREL процедуралары да
1)LINE(X1, Y1,X2, Y2);
Бұл процедураның орындалу нәтижесінде экранға төбелерінің координаттары Х1,Ү1,Х2,Ү2
LINETO(X,Y,);
Бұл процедураның орындалу нәтижесінде экранға курсор түрған жерден
LINEREL(X1,Y1);
Бұл процедураның орындалу нәтижесінде экранға курсор тұрған жерден
Түзулерді әртүрлі стильдерде шығару үшін SETLINESTYLE процедурасы қолданылады,
SETLINESTYLE(L, P, T);
мұндағы: L – түзу стильдері:
L=0 - түзу үздіксіз, L=1 - нүктелерден қүралады,
L-2 - нүктелер мен сызықшадан турады,
L=3 - штрихтерден қуралады,
L=4 - түзу стилін пайдаланушының өзі анықгайды.
Р - түзу үлгісі, егер түзу стильдері стандартты
Т - түзудің қалыңцығы, егер түзу қалыңцығы қалыпты
SETWRITEMODE(M) процедурасының көмегімен экранда бір-бірімен қиылысатын түзулердің байланысы
Экранда салынған түзу стилі параметрлерінің мәндерін GETLINESETTINGS процедурасының
Тік төртбұрыш шығару үшін RECTANGLE процедурасы қолданылады, жазылуы:
RECTANGLE(X1, Y1,X2, Ү2);
мұндағы: Х1,Ү1,Х2,Ү2 - тік төртбурыштың бүрыштарының координаттары.
Бұл процедураның орындалу нәтижесінде экранға сол жақ жоғарғы
Жауын-шашын диаграммасын шығару:
PROGRAM Gr61;
USES
Graph;
CONST
A:Array[ 1..12]Of lnteger=(205, 178, 315, 180, 65, 54,
VAR
k,i,d1,d2:lnteger;
BEGIN
d1:=Detect;
Initgraph(d1,d2,' ');
Setbkcolor(1);
Setcolor(5);
K:=1; Forl:=1 To 12 Do
Begin
K:=K+49;
Rectangle(K-20,450-A[l],K+30,450);
End;
Readln;
Closegraph
END.
Экранда боялған тік төртбүрыш салу үшін BAR процедурасы
BAR(X1,Y1,X2,Y2);
Бұл процедураның орындалу нәтижесінде экранға сол жақ жоғарғы
Фигуралардың ішін бояумен толтыру стилі SETFILLSTYLE поцедурасымен орнатылады,
SETFILLSTYLE(N, C);
мұндағы: С - түс коды;
N - толтыру типі(өрнегі):
N=0 - фонның түсімен толық толтырылады,
N=1 - көрсетілген С түсімен толықтолтырылады,
N=2 - сызықшалармен толтырылады,
N=3 - көлбеу сызықтармен толтырылады,
N=4 - жуан көлбеу сызықтармен толтырылады,
N=5 - жуан кері көлбеу сызықтарментолтырылады,
N=6 - кері көлбеу сызықтармен толтырылады,
N=7 - + символдарымен толтырылады,
N=8 - х символдарымен толтырылады,
N=9 - тік бүрышты торлармен толтырылады,
N=10 - аралары алшақ орнапасқан нүктелермен толтырылады,
N=11 - аралары жиі орналасқан нүктелермен толтырылады,
N = 12 болған жағдайда суреттің өрнектерін пайдаланушының
SETFILLPATTERN(X,C);
мұндағы: С - түс коды,
X - Fillpatterntype-типті сурет өрнектерін орнататын шама, 8x8
TYPE
Fillpatterntype=Array[1 ..8] Of Byte;
VAR
X:Fillpatterntype;
Пайдаланушылар орнатқан толтыру стильдері параметрлерін GETFILLPATTERN процедурасымен анықтауға
GETFILLPATTERN(I);
мұндағы: I - элементтері орнатылған стиль параметрлерінен тұратын
Үш өлшемді боялған тік төртбүрыш(немесе параплелепипед) салу үшін
BAR3D(X1, Y1,X2, Y2,D, T);
мұндағы:Х1, Ү1 - тіктөртбурыштыңсолжақжоғарғыбурышының координат-тары, Х2, Ү2
Rectangle процедурасымен салынған тік төрбүрыштардың немесе кез-келген басқа
FLOODFILL(X,Y,C);
мұндағы: Х,Ү- шектелген фигураныңішінде жататын кез-келген нүктеніңкоординаттары, егер
Көпбұрыштар салу үшін DRAWPOLY процедурасы, ал іші боялған
DRAWPOLY(N,P); FILLPOLY(N,P);
мұндағы:
N - көпбүрыштың қабырғаларының қиылысусанын білдіретін
бүтін шама, Р - көпбүрыштың бүрыштарының координаттарын білдіретін
Соңғы салынған доғаның параметрлерін білу үшін GETARCCOORDS процедурасы
GETARCCOORDS(A);
мұндағы: A - соңғы салынған доғаға орнатқан параметрлер
Эллипс немесе эллипстік доғалар салу үшін ELLIPSE процедурасы
ELLIPSE(X, Y,A, B, Rx, Ry);
мұндағы: Х,Ү - эллипс центрініңкоординаттары, А,В - бастапқы
Боялған эллипсті алдын-ала Setfillstyle, Setcolor процедураларында бояу стильдерін
FILLELLIPSE(X, Y, Rx, Ry);
мұндағы: Х,Ү - эллипс центрінің координаттары, Rx,Ry -
Шеңбердің боялған секторын салу үшін PIESLICE процедурасы қолданылады,
PIESLICE(X, Y,A, B, R);
мұндағы:
Х,Ү- шеңбер центрінің координаттары,
А,В – сектордың бастапқы және соңғы бұрыштары,
R – шеңбердің радиусы.
Эллипстің боялған секторын салу үшін SECTOR процедурасы қолданылады,
SECTOR(X, Y,A, B, Rx, Ry);
мұндағы:
X, Ү - эллипс центрінің координаттары,
А,В - сектордың бастапқы және соңғы бұрыштары,
Rx, Ry - эллипстіңХосі және Үосі бойынша радиустары.
Секторлар іші алдын-ала Setfillstyle немесе Setfillpattern процедураларында орнатылған
1.3. Графиктік режимде текст шығару процедуралары
Графиктік режимде текст шығару үшін OUTTEXT және OUTTEXTXY
ОиТТЕХГХҮ(Х, Ү, 'text');
мұндағы: Х,Ү - текст басталатын
Graph модулінде сандық шамаларды шығару процедуралары жоқ болғандықтан,
PROGRAM Gr10;
USES
Graph;
VAR
d1,d2,X: Integer;
Y:Real;
Z:String;
BEGIN
d1:=Detect;
InitGraphfdl, d2, ");
Setbkcolor(2);
X:=150;
Str(X,Z);
Outtextxy( 100,100, 'X= l+Z);
Y:=231.25;
Str(Y:4:2,Z);
Outtextxy(100,110,Z);
ReadLn;
CloseGraph;
END.
Экранға текстерді әртүрлі стандартты және пайдаланушының өзі орнататын
SETTEXTSTYLE(F, D, С);
Мұндағы: F- таңцалған шрифт түрі(0 - биттік, 1
Шрифтің өлшемдерін пайдаланушының өзі SETUSERCHARSIZE процедурасының көмегімен орнатса
SETUSERCHARSIZE(MX, DX, MY, DY);
мұндағы: MX, DX, - шрифтің горизонтальді өлшемін анықтайтын
X:=Textwidth(T);
Y:=Textheight(T));
Бір қатарда жазылған символдардың орналасуын өзгерту үшін SETTEXTJUSTIFY
SETTEXTJUSTIFY(H, V);
мұндағы:
Н - символдарды горизонтальді бағытта түзеу:
- символды солға қарай жылжыту,
- орталықгандыру,
- оңға қарай жылжыту.
V- символдарды вертикальді бағытта түзеу:
- символды төменге қарай жылжыту,
- орталықтандыру,
- төменге қарай жылжыту.
PROGRAM Gr11;
USES Graph;
VAR
d1,d2: Integer;
BEGIN
d1Ж=Detect; I
nitGraph(d 1, d2, ");
Setbkcolor(2);
Settextstyle(1,0,10);
Outtextxy(100,100, 'TEXT');
Settextstyle(3,1,5);
Outtextxy(150,250,'TEXT');
ReadLn;
CloseGraph;
END.
PROGRAM Gr111;
USES
Graph;
VAR
d1,d2: Integer;
BEGIN
d1:=Detect;
InitGraph(d1,d2,'');
Setbkcolor(2);
Settextstyle(1,0,1);
Setusercharsize(2,1,2,1);
Outtextxy(100, 100, 'TEXT');
Setusercharsize(1,2,1,2);
Outtextxy( 100,200, 'TEXT');
Setusercharsize( 14,3,22,5);
Outtextxy(100,300, 'TEXT');
ReadLn;
CloseGraph;
END.
1.4. Графиктік режимде қателерді өңдеу
Графиктік программалардың орындалу барысында басқа программалардай(мысалы файлдарды енгізу-шығаруда)
ЕГЕР соңғы графиктік амал дүрыс орындалса онда GRAPHRESULT
If GraphResult = 0 Then
Begin
...
графиктік операторлар
...
End
Else
Writeln('графиктік режимде қате кетті');
GRAPHERRORMSG функциясының көмегімен программада жіберілген қате туралы текстік
If GraphResult = O Then
Begin
...
графиктік операторлар
...
End
Else
Writeln('мынадай қате:', GraphErrorMsg(GraphResult));
Қателер коды мен сипаттамалары туралы мәлімет.
GRAPHRESULT GraphErrorMsg(GraphResult)
0 GrOk (қате жоқ)
-1 GrlnitGraph (графиктік режим ашылған жоқ)
-2 GrNotDetected (драйвердің типі анықталмаған)
-3 GrFileNotFind (графиктік драйвер табылмаған)
-4 GrlnvalidDriver (драйвердің типі сәйкес емес)
-5 GrNoLoadMem (драйвердің орналасуына жад жетпейді)
-6 GrNoScanMem (объекті көруге жадтан орын жетпейді)
-7 GrNoFloodMem (бояуға жадтан орын жетпейді)
-8 GrFontNotFound (шрифт орнататын файл табылмаған)
-9 GrNoFontMem (шрифт орналастыруға жад жетпейді)
-10 GrlnvalidMode (графиктік режим дүрыс емес)
-11 GrError (жалпы қате)
-12 GrIOError (енгізу-шығаруда қате жіберілген)
-13 GrlnvalidFont (шрифт форматы дүрыс берілмеген)
-14 GrlnvalidFontNum (шрифт нөмірі дұрыс берілмеген)
1.5. Фигураларды жылжыту
Экранда фигуралардың жылжу эффектілері циклдік процестермен жүзеге асырылады.
Фигураны шығару процедурасының кемінде бір параметрі цикл параметрімен
Экранда тік төртбүрыш X осі бойымен жылжыту.
а):
PROGRAM Gr13;
USES
Graph, Crt;
VAR
d1,d2,K: Integer;
BEGIN
d1 := Detect;
ІnitGraph(d1, 62, "};
If Graph Result 0
Then Halt(1);
Fork:=1 To 100 Do
Begin
Setbkcolor(2);
Setfillstyle(1,5);
Bar(K+100,200, K+300,350);
If K< 100 Then
Begin
Delay(700);
Cleardevice
End;
End;
ReadLn;
CloseGraph;
END.
ә) Ү осі бойымен жылжыту:
PROGRAM Gr13;
USES
Graph, Crt;
VAR
d1,d2,K:Іnteger;
BEGIN
d1:=Detect;
InitGraph(d1, d2, ");
If Graph Result 0
Then
Halt(1);
For k:=1 To 100 Do
Begin
Setbkcolor(2);
Setfillstyle( 1,5);
Bar(200, K+50, 400, K+250);
If K< 100 Then
Begin
Delay(700);
Cleardevice
End;
End;
ReadLn;
CloseGraph;
END.
ІІ. «ӘРІПТЕР ЖАУЫНЫН» ҰЙЫМДАСТЫРУ ҚОСЫМШАСЫ
2.1. Программаға сипаттама
Программа S-айнымалысына жазылған текстен жауын ұйымдастырады. Программаның жалпы
Program jaun;
{тақырып жолы}
Uses graph, crt; {модульдерді қосып қолдану}
Var d,m,y1,h,I,n,k,x:integer;
{Қажетті айнымалыларды сипаттау}
s:string; {«Жауын» ұйымдастыруға тиіс тексті меншіктейтін айнымалы}
s1:char;
{«Жауын» ұйымдасытру барысында қолданылатын аралық айнымалыны сипаттау}
Begin
d:=detect;
m:=0;
initgraph (d,m,'c:\bp\bgi'); {Графикалық режимді инициализациялау}
s:='Kurstyk jumysty korgau satti otsin!';
{256 символдан аспайтын кез келген сөйлем жазуға болады}
n:=length(s);
settextstyle (0,0,2); {Графикалық режимдегі текстің шығу стилі}
h:=1; {у өсі бойынша жылжу қадамы}
outtextxy(10,10,s); {Сөйлемді экранға шығару}
{«Жауынды ұйымдастыратын негізгі цикл денесі»}
for k:=1 to n do
begin y1:=10; x:=10+16*(k-1);
for i:=1 to 405 do begin
s1:=s[k];
setcolor(0);
outtextxy(x,y1,s1); y1:=y1+h;
setcolor(7);
outtextxy(x,y1,s1);
delay(100);
end;
end;
{while not keypressed do;}
closegraph;
end.
ҚОРЫТЫНДЫ
Компьютердің мониторы нүктелердің (пикселдердің) жиынтығынан тұрады. Ал символдарды
Графиктік режимде экранға бейнелер шығару үшін координаттар жүйесі
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР
Абрамов А.Г., Трифонов Н.П., Трифонова Г.Н. Введение
Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н.,
Ахо А., Хопкрофт Дж., Ульман Дж. Построение и
Вирт Н. Алгоритмы и структуры данных. М., Мир,
Епанешников А., Епанешников В. Программирование в среде Turbo
Зуев Е.А. Система программирования Turbo Pascal. М., Радио
Зуев Е.А. Программирование на языке Турбо-Паскаль 6.0,7.0. М.
Йодан Э. Структурное программирование и
Кенин А.М., Печенкина Н.С. Работа на IBM PC.
Кнут Д. Искусство программирования на ЭВМ.
ҚОСЫМША
Program jaun;
Uses graph, crt;
Var d,m,y1,h,I,n,k,x:integer; s:string; s1:char;
Begin
d:=detect;
m:=0;
initgraph (d,m,'c:\bp\bgi');
s:='Kurstyk jumysty korgau satti otsin!';
n:=length(s);
settextstyle (0,0,2);
h:=1; outtextxy(10,10,s);
for k:=1 to n do
begin y1:=10; x:=10+16*(k-1);
for i:=1 to 405 do begin
s1:=s[k];
setcolor(0); outtextxy(x,y1,s1); y1:=y1+h;
setcolor(7); outtextxy(x,y1,s1);
delay(100);
end;
end;
{while not keypressed do;}
closegraph;
end.
26




Скачать


zharar.kz