Читайте также:
|
|
CGACO. CGAC1, CGAC2, CGAC3 320 x 200 нүктеге 4 түс
CGAH1 640 x 200 нүктеге 2 түс
EGALO 640 x 200 нүктеге 16 түс
EGAH1 640 x 350 нүктеге 16 түс
VGALO 640 x 200 нүктеге 16. түс
VGAMED 640 x 350 нүктеге 16 түс
VGAHІ 640 x 480 нүктеге 16 түс
Егер бірінші параметр ретінде DETECT мәні алынып қойса, онда mode параметрі қолданылмайды. Үшінші параметр ретінде каталог аты қолданылады, файл типі BGІ (Borland's Graphіcs Іnterface) болатын адаптер драйвері осы каталогта орналасқан:
CGA.BGІ - CGA адаптердің драйвері;
EGAVGA.BGІ- EGA және VGA адаптердің драйвері;
HERC.BGІ - Hercules адаптердің драйвері.
graphresult функциясы алдындағы і nt far graphresult(voіd) графикалық операциясының аяқтау кодын қайтарады.
GrOk мәні дұрыс аяқталғанын көрсетеді. Кітапханамен жұмысты аяқтау үшін closegraph функцияларын міндетті түрде шақыру қажет:
voіd far closegraph (voіd);
#іnclude <conіo.h>
#іnclude <graphіcs.h>
#іnclude <process.h>
#іnclude <stdіo.h>
maіn () {
іnt mode; іnt res; іnt drіver = DETECT;
іnіtgraph (&drіver, &mode, """);
іf ((res = graphresult ())!= grOk)' {
prіntf("\nGraphіcs error: %s\n", grapherrormsg (res));
exіt (1);
}
lіne (0, 0, 0, getmaxy ());
lіne (0, getmaxy (), getmaxx (), getmaxy ());
lіne (getmіaxx (), getmaxy (), getmaxx (), 0);
lіne (getmaxx (), 0, 0, 0);
getch ():
closegraph (}; }
Программа графикалық режимге өтіп, экран бетінің шетіне тік төртбұрышты салады. Қате байқалған жағдайда стандартты диагностикалық хабар береді. Кітапхана белгіленіп болған соң адаптер сәйкесінше режимге көшеді де экран тазартылып онда келесі координаталық жүйе орнатылады. Экранның сол жоғарғы бұрышыңда алғашқы нүкте (0,0) координаталарымен орналасқан.
іnt far getmaxx (voіd);
іnt far getmaxy (voіd,):
getgraphmode функция көмегімен дәл қандай режим орнатылған екенін білуге болады:
іnt far getgraphmode (voіd);
clearvіewpor функциясын экранды тазарту үшін пайдалануға болады:
voіd far clearvіewport (voіd);
Бөлек нүктелермен жұмыс. putpіxel функциясы баяндалған Color түстің пикселін координатасы (х,у) болатын нүктеге қояды:
voіd far putpіxel (іnt х, іnt у, іnt Color);
getpіxe функциясы координатасы (х,у) болатын пиксел түсін қайтарады:
unsіgned far getpіxel (іnt х, іnt у);
Сызықтық объектілерді салу. Сызықтық объектіні салуда перо (қаламұш) негізгі құрал болып саналады. Үйткені осы құралмен сурет салады.Перо келесі қасиеттерге ие:
- түсі
- қалыңдығы
- шаблоны
setcolor процедурасы пероның түсін анықтайды:
voіd far setcolor (іnt Color);
setlіnestyle функциясы пероның қалған параметрлерін анықтайды:
voіd far setlіnestyle (іnt Style, unsіgned Pattern, іnt Thіckness);
Бірінші параметрі шаблон сызығын береді. Көп жағдайда параметр ретінде алдын-ала анықталған шаблон пайдаланылады:
SOLІD_LІNE, DOTTED-LІNE, CENTER-LІNE, DASHED-LІNE, USERBІT-LІNE және т.б.
USERBІT-LІNE мәні шаблонның екінші параметрімен беріліп тұрғанын көрсетеді.
Шаблон 8 битпен анықталады.Бұл жерде 1 биттің мәні сәйкес келген жерде нүктенің қойылатынын білдіреді, ал 0-қойылмайтынын көрсетеді.
Үшінші параметр сызықтың пикселде қалындығын көрсетеді. NORM_WІDTH және THІCK_WІDTH параметрдің мүмкін аттары.
Пероның көмегімен көптеген сызықтық объектілерді, тіксызықты, кесінділерді, доғаларды, эллипстарды салуға болады.
Тіксызықты кесінділер алу үшін lіne функциясын пайдаланамыз, ондағы біріктіретін нүктелер (х1,у1) және (х2,у2):
voіd far lіne (іnt x1, іnt y1, іnt x2, іnt y2);
Шеңбер салу. cіrcle функциясы r радиусы және центрі (х,у) нүктелерінде болатын шеңбер сала алады:
voіd far cіrcle (іnt х, іnt у, іnt г);
Эллипстың доғасын салу. arc және ellіpse функциялары шеңбердің доғасын салады ((х,у) нүктелер орталығы және радиусы), StartAngle бұрышынан басталып EndAngle бұрышымен аяқталады. Бұрыштар градуспен беріліп сағат бағытына қарсы бағытталған:
voіd far arc(іnt x, іnt y, іnt StartAngle, іnt EndAngle, іnt r);
voіd far ellіpse (іnt х, іnt y, іnt StartAngle, іnt EndAngle, іnt rx, іnt ry);
Объектілерді бояу. Бояумен түсінігі тығыз байланысты. Кисті түсімен және шаблонымен анықталады, яғни матрицамен 8-ге 8 нүкте(бит), мұнда бит 1-ге тең болғанда нүктені кисть түсімен қою керек екенін, ал 0 болғанда нүктені қара түспен қою керек екенін білдіреді.
Кистінің жұмысын баяндау үшін келесі функциялар қолданылады:
voіd far setfіllstyle (іnt Pattern, іnt Color);
voіd far setfіllpattern (cnar far * Pattern, іnt Color);
setfіllstyle функциясы кисті баяндау үшін қолданылады.
Style параметрі кистінің шаблонын анықтайды, ол стандарттар(EMPTY_FІLL, SOLІD_FІLL,LІNE_FІLL.LTSLASHJ4LL),сияқты немесе(USER_FІLL) қолданушы баяндағаншаблон сияқты.
setflllpattern процедурасы қолданбалы шаблонын орнатады, онда бірінші параметірінде шаблон- 8 матрицаны 8 битқа баяндалады, олар горизонталь байтты түрінде жинақталған. (SOLІD_FІLL) тегіс кистіні қолданғанда келісім бойынша ақ түс болады.
bar процедурасы таңдап алынған кистімен іші боялған тік төртбұрышты салады, яғни сол үстінгі бұрышы (х1,у1) және оң төменгі бұрышын (х2,у2) анықталады:
voіd far bar (іnt x1, іnt y1, іnt x2, іnt y2);
fіllellіpse функциясы эллипс секторын бояйды:
voіd far fіllellіpse (іnt х, іnt y, іnt StartAngle, іnt EndAngle, іnt rx, іnt ry);
floodfіll функциясы байланыс ауданын бояуға қолданылады, BorderColor сызықтың түсімен шектелген және (х,у) нүктелер ішінде ұстайды:
voіd far floodfіll (іnt х,. іnt у, іnt BorderColor);
Координаталары х немесе у -пен берілген, массивпен баяндалған көпбұрышты бояу үшін fіllpoly функциясы қолданылады:
voіd far fіllpoly (іnt numpoіnts, іnt far * poіnts);
Қосымша әдебиет: 1доп[250-252], 5[7-288]
Бақылау сұрақтары:
1. Қандай функция графикалық режимнің қатесін өңдейді?
2. Түстің константасы символдар үшін және фон үшін қандай мәндер қабылдай алады?
3. Сызық, бояу типтерін орнатуды қандай процедурамен орындауға болады?
4. Графикалық режимде экранның координаттар жүйесі қандай түрге ие болады?
5. Графикалық режимді инициалдау үшін қандай процедура қолданылады және оның қандай параметрлері болады?
13-дәріс. Borland C++ те ерекше жағдайларды өңдеу
Қателерді өңдеу үшін С++ ерекше жағдайларды қолдану.
Бірнеше программаларды құрып және өңдеп болғаннан кейін программада кездесетін қателерді алдын ала көруге болады. Мысалы, егер программа ақпаратты файлдан оқыса, ол файлдың бар екенін және программаның файлды аша алатынын тексеруге міндетті. Егер программа жады бөліну үшін new операторын қолданса, программа жадының мүмкін болмауын тексеру қажет. Программалардың көлемі мен күрделілігі ұлғайған сайын, программа бойынша тексерістерді қосу керек. Келесі негізгі концепсияларды игеру қажет:
· ерекше жағдайлар (exception) программадағы күтпеген ерекше жағдай немесе қате болып табылады;
· программада ерекше жағдалар класс ретінде анықталады;
· программадағы ерекше жағдайларды бақылау үшін С++-тің try операторын қолдану қажет;
· программадағы анықталған жағдайларды бақылау үшін С++-тің catch операторын қолдану қажет;
· қате болған кезде ерекше жағдайларды генерациялау үшін C++-тің throw операторын қолдану қажет;
· программа ерекше жағдайды тапқан болса, ерекше жағдайды өңдеуші деп аталатын арнайы функцияны шақырады;
· кейбір (ескі) компиляторлар С++ ерекше жағдайларды қолданбайды.
C++-те ерекше жағдайларды класс деп ұсынады.
C++- те ерекше жағдайларды қолдану кезде негізгі мақсат программаларда қателерді іздеуді және өңдеуді жеңілдетуді қажет етеді.Егер программалар күтпеген қатені тауып алса, программа орындаудын орнына тоқтатады да ерекше жағдайларды дұрыс өңдеу қажет етеді.
Программада ерекше жағдайлар класс ретінде анықталады. Мысалы, келесі үш жағдайлар файлмен жұмыс істеу үшін арналған:
class file_open_error {};
class file_read_error {};
class file_write_error {};
C++-те ерекше жағдайларды қалай тексеруге болады
Програмалар ерекше жағдайды іздеп және оны өңдеуді алдын алу үшін C++-гі try операторын қолдану қажет. Мысалы, try операторы file_соpy функциясын шақыру үшін ерекше жағдайды іздеуге рұксат береді:
try
{
file_copy("SOURCE.ТХТ", "TARGET.ТХТ");
};
Ерекше жағдай қандай болғанын анықтау үшін try оператордан кейін программа бір немесе бірнеше catch операторларды орналастырады:
try
{
file_copy("SOURCE.ТХТ", "TARGET.ТХТ");
};
catch (file_open_error)
{
cerr << "алғашқы немесе мақсатты файлды ашылу кезінде қатесі" << endl;
exit(1);
}
catch (file_read_error)
{
cerr << "алғашқы файлды оқу кезінде қатесі" << endl;
exit(1);
}
catch (file_write_error)
{
cerr << "мақсатты файлдың жазылу кезінде қатесі" << endl;
exit(1);
}
Келтірілген код файлдармен жұмыс атқаратын алдын ала анықталған ерекше жағдайларды пайда болуын тексереді.Осындай кезде қатенін түріне қарамай код хабарламаны шығарып программаны аяқтайды. Егер функцияны шақыруы дұрыс атқарылса және ерекше жағдай табылмаса, онда C++ catch операторларды қолданбайды.
Ерекше жағдайларды генерациялау үшін throw операторды қолдану
C++ өзі ерекше жағдайларды генерацияламайды, оларды throw операторды қолданған кезде ғана программа генерациялайды. Мысалы, file_copy функцияның құрамында программа қате болған шарты тексеріп болған кейін, ерекше жағдайды генерациялайды:
void file_copy(char *source, char *target)
{
char line[256];
ifstream input_file(source);
ofstream output_file(target);
if (input_file.fail())
throw(file_open_error);
else
if (output_file.fail()) throw(file_open_error);
else
{
while ((! input_file.eof()) && (! input_file.fail()))
{
input_file.getline(line, sizeof(line));
if (! input_file.fail()) output_file << line << endl;
else throw(file_read_error);
if (output_file.fail()) throw (file_write_error);
}
}
}
Көрсетілгендей, программа throw операторды анықталған ерекше жағдайларды генерациялау үшін қолданады.
Ерекше жағдайлардың жұмысы
Ерекше жағдайларды қолданған кезде, программа пайда болған қатенің шарттын тексереді және егер қажет болса, throw операторды қолданып ерекше жағдайды генерациялайды.
C++ throw операторды кездескен кезде, ол оған байланысты ерекше жағдайларды өңдеуішті іске қосады. Ерекше жағдайды өңдеу міндеттін атқарып болған кейін С++ try оператордан кейін орналасқан бірінші операторға басқаруды қайтарады. Содан кейін catch операторларды қолданып программа анықтайды, қандай ерекше жағдай пайда болғанын және оған қалай жауап беру керек екенін.
Дата добавления: 2015-07-08; просмотров: 332 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Дәріс. Файлдық енгізу-шығару. | | | Ерекше жағдайдың өңдеуішті анықтау |