|
mai multe pagini grafice,respectiv au un tampon de memorie rezervat pentru
|
səhifə | 35/55 | tarix | 07.05.2018 | ölçüsü | 4,6 Mb. | | #50260 |
| mai multe pagini grafice,respectiv au un tampon de memorie rezervat pentru
acest scop(EGA,EGA,Hercules).
Se utilizeaza pentru a afisa pe ecran,pagini din tamponul de memorie.
Functia nu returneaza valori.
-254- [ graphics.h - setwritemode() ]
EXEMPLU: #include
#include
int *drv,*mod;
main()
{ drv=DETECT;
initgraph(drv,mod,"");
setcolor(12);
outtext("Pagina 1");
circle(100,100,30);
setactivepage(0);
setactivepage(1);
setcolor(3);
outtextxy(150,150,"Pagina 2");
bar3d(200,200,300,300,10,10);
setvisualpage(0);
sleep(3);
setvisualpage(1);
sleep(3);
setactivepage(0);
outtext("Pagina 1 (rescrisa)");
circle(300,100,300);
setvisualpage(0);
sleep(3); }
FUNCTIA setwritemode()
-seteaza modul de trasare a liniilor prin comparare cu pixelii ecranului
SINTAXA GENERALA este: void far setwritemode(int mode);
Functia traseaza liniile dupa ce citeste pixelii de pe ecran.Acepta doua
constante: 0 (COPY_PUT) sau 1 (XOR_PUT) care corespund operatorilor binari
MOV si XOR.COPY_PUT scrie indiferent de pixelii de pe ecran,iar XOR_PUT
scrie invers fata de pixelii de pe ecran(comenzile succesive sterg linia).
Nu returneaza valori.Se poate apela pentru:line,linerel,rectangle,drawpoly
EXEMPLU: #include
#include
int *drv,*mod,x;
main()
{ drv=DETECT;
initgraph(drv,mod,"");
setwritemode(1);
line(300,100,500,100);
outtextxy(50,50,"modul XOR_PUT");
for(x=1;x<20;x++)
{ setwritemode(1);
line(25*x,100,25*x+10,100);
sleep(1); }
outtextxy(50,150,"modul COPY_PUT");
line(300,200,500,200);
for(x=1;x<20;x++)
{ setwritemode(0);
line(25*x,200,25*x+10,200);
sleep(1); }}
-255- [graphics.h-textheight()-textwidth()]
FUNCTIA textheight()
-determina inaltimea in pixeli pentru textul afisat
SINTAXA GENERALA este: int far textheight(char far *textstring)
Functia determina dimensiunea fontului curent si factorii de multiplicare
si returneaza inaltimea totala,exprimata in pixeli.Se utilizeaza pentru a
calcula sau seta automat,dstanta dintre randuri,incadrarea in regiunea
grafic activa,sau pe ecran,localizarea titlurilor etc.Caracterele impli-
cite au 8x8 pixeli si sunt definite prin 9x9 biti.Functia se poate utiliza
pentru a incadra in acelasi spatiu grafic,texte scrise cu fonturi diferite
Functia returneaza inaltimea caracterelor(in pixeli).
EXEMPLU: #include
#include
int *drv,*mod,x,size;
char text[80];
char *text1="text exemplificativ";
main()
{ drv=DETECT;
initgraph(drv,mod,"");
for(x=1;x<11;x++)
{ settextstyle(1,0,x);
outtext(text1);
size=textheight(text1);
sprintf(text," %d pixeli",size);
outtextxy(10,100,"inaltimea este de:");
outtextxy(10,300,text);
sleep(1);
cleardevice(); }}
FUNCTIA textwidth()
-calculeaza si returneaza largimea (in pixeli) a caracterelor de text
SINTAXA GENERALA este: int far textwidth(char far *textstring);
Functia determina dimensiunile fontului si factorii de multiplicare si
returneaza,in pixeli,largimea caracterelor.Se utilizeaza ca si textheight.
EXEMPLU: #include
#include
int *drv,*mod,x,size;
char text[80];
char *text1="Text oarecare";
main()
{ drv=DETECT;
initgraph(drv,mod,"");
for(x=1;x<7;x++)
{ settextstyle(1,0,1);
setusercharsize(x,1,1,1);
outtext(text1);
size=textwidth(text1);
sprintf(text,"%d pixeli",size);
outtextxy(10,100,"Largimea textului este de:");
outtextxy(10,300,text);
sleep(2);
cleardevice(); }}
-256- [ graphics.h -generalitati ]
Biblioteca de functii grafice,contine elementele necesare pentru a putea
dezvolta aplicatii grafice complexe:grafice de functii,tabele si analize
statistice exprimate fie prin cod de bare, fie prin sectoare de cerc sau
elipsa,desene si desene animate,text formatat si neformatat,jocuri pentru
calculator,reclame si mesaje de avertizare sau atentionare etc.
Nu ezitati sa dezvoltati si sa arhivati file de antet cu propriile functii
sau obiecte grafice.Pentru aceasta,dezvoltati functiile intr-o fila de
program obisnuita,verificati cu atentie fiecare functie,apoi stergeti
din fila toate datele,cu exceptia celor care declara si definesc functiile
si redenumiti fila cu extensia h (De exemplu: grafice.h).In continuare,
nu trebuie decat sa copiati fila in directorul INCLUDE si apoi sa o ape-
lati ori de cate ori aveti nevoie,cu comanda de preprocesare #include...
(De exemplu: #include grafice) si sa utilizati functiile gata definite.
In acest fel,etapa de trecere la programarea orientata pe obiect (OLE),
va fi mult mai usoara.De exemplu,eu mi-am format o fila header in care
am arhivat ca obiecte grafice,definitiile pentru drapelurile nationale
ale statelor lumii.
Versiunea Windows C++,include o biblioteca speciala de functii grafice
(API),destinata operatiunilor cu obiecte grafice.Descrierea acestor
functii,depaseste scopul propus pentru acest manual(puteti utiliza cu
succes utilitarul Help ce insoteste programul).
Biblioteca de functii grafice BGI descrisa in acest manual este aplicabila
pentru versiunile DOS ale limbajelor C si C++ si nu este compatibila cu
versiunile Windows,dar principiile de programare si algoritmii elementari
sunt asemanatoare.
Pentru aplicatiile grafice,selectati compilatorul de care aveti nevoie,
in functie de necesitatile aplicatiei,dar si in functie de spatiul de
memorie ocupat.Pentru aplicatiile simple si izolate(fara link-uri spre
alte aplicatii grafice sau spre reteaua network),este de preferat limbajul
C si biblioteca BGI.Pentru aplicatiile complexe,inlantuite,cu multiple
operatii asupra obiectelor grafice (gen jocuri,desene animate,prezentari
dinamice sau secventiale etc) se va prefera limbajul C++ si platforma
oferita de sistemul Windows.
Atunci cand dezvoltati biblioteci personale de functii,pe care le
utilizati in aplicatii,daca distribuiti aplicatiile rezultate,nu uitati
sa adaugati si fila header(de antet) care contine definitiile functiilor,
si eventualele specificatii necesare.In caz contrar,aplicatiile d-voastra
vor fi absolut inutile si incomprehensibile.
Daca dezvoltati functii noi,este bine sa va limitati la minimum de
spatiu necesar pentru definirea lor.Este bine ca functiile dezvoltate sa
fie cu o aplicabilitate cat mai larga,usor de intuit si usor de inclus
si in programele dezvoltate de altii.Daca dezvoltati functii complexe,
care includ formule matematice lungi sau calcule complexe,este bine sa
adaugati,etapa cu etapa,explicatii referitoare la comezile si operatiile
efectuate.
Daca dezvoltati aplicatii sau biblioteci de functii destinate pentru
a fi partajate de mai multi utilizatori,in retea,este bine a adaugati si
o fila cu explicatii detailiate.Nu uitati sa includeti in fila si un
antet cu numele autorului si adresa la care se pot obtine informatii
despre aplicatiile dezvoltate si/sau necesitatile de hardware pentru
utilizarea lor.
-257- [ conio.h -cgets() ]
BIBLIOTECA C -fila antet
-contine declaratiile pentru o serie de functii utilizate de sistemul de
operare pentru rutinele I/O (input/output) pentru consola(dispozitivul de
afisare a datelor).Functiile sunt utilizate pentru afisarea datelor sau
preluarea datelor de pe ecran,pentru manevrarea datelor sau pentru ope-
ratii grafice asupra datelor de pe ecran etc.
FUNCTIA cgets()
-citeste un sir de caractere de pe ecran
SINTAXA GENERALA este: char *cgets(char *str);
Functia citeste un sir de caractere de pe ecran si le arhiveaza la adresa
de memorie spre care pointeaza pointerul *str.
Functia citeste sirul de caractere,pana cand ajunge la sfarsit de rand
(combinatia carriage-return/linefeed) sau pana cand a ocupat tot spatiul
din memorie(din adresa pointata).Daca functia intalneste combinatia de
sfarsit de rand (CR/LF),inlocuieste combinatia cu un terminator null (\0),
inainte de a salva sirul citit(pentru a marca sfarsitul sirului).
Pentru a salva datele citite,trebuie declarata adresa la care vor fi
salvate(spre care pointeaza *str) in care primul element din aria de me-
morie str[0] va fi setat pentru numarul maxim de caractere ce poate fi
citit de catre functia cgets().La apelare,functia arhiveaza in elementul
str[1] numarul total de caractere citite,iar in continuare va arhiva sirul
citit,caracter cu caracter,incepand cu str[2] si pana la epuizarea sirului
sau respectiv a numarului de caractere setat in str[0].Ultimul caracter
arhivat va fi un caracter NULL(terminatorul de sir adaugat automat).
Astfel,pentru a salva un sir de caractere,aria de memorie declarata tre-
buie sa contina str[0]+2 elemente(sa fie mai lunga decat sirul cu cel
putin doua elemente).
La executie,functia returneaza un pointer spre str[2] (primul caracter).
Nu apelati aceasta functie pentru aplicatiile Win32 sau Win32 GUI.
EXEMPLU: #include
#include
#include
char tampon[83];
char *p;
int main()
{ tampon[0]=81;
printf("\n Introduceti un sir de caractere: ");
p=cgets(tampon);
printf("\n cgets() a citit:%d caractere \"%s\"\n",tampon[1],p);
printf("Pointerul returnat %p este la:%p \n",p,&tampon);
sleep(3);
tampon[0]=6;
printf("Introduceti un sir de caractere (maxim 5):");
p=cgets(tampon);
printf("\n Sirul introdus este: \n %s",p);
sleep(3);
}
In exercitiul de mai sus,observati cum tampon[0] determina numarul maxim
de caractere citite,iar tampon[1] returneaza numarul actual de caractere
citite.Incercati sa utilizati functia pentru a solicita o parola.
-258- [ conio.h- clreol() si clrscr() ]
FUNCTIA clreol()
-sterge sfarsitul liniei (dupa cursor)
SINTAXA GENERALA este: void clreol(void);
Functia sterge sfarsitul liniei de text(clear end of line) in modul text
al ecranului.La apelarea functiei,toate caracterele care urmeaza dupa
pozitia actuala a ecranului si pana la sfarsitul liniei de text vor fi
sterse,fara a se modifica pozitia cursorului(nu revine la 1,1).
Functia nu returneaza valori.
Nu poate fi apelata in aplicatiile Win32 sau Win 32 GUI.
EXEMPLU: #include
#include
#include
main()
{ clrscr();
cprintf("Functia clreol() sterge caracterele de la sfarsitul liniei\r\n");
cprintf("dintr-o fereastra de tip text.Mai exact; \r\n");
cprintf("de la pozitia cursorului si pana la capatul liniei,\r\n");
cprintf("fara sa deplaseze pozitia cursorului.\r\n");
cprintf("\n Pentru exemplificare,apasati orice tasta !");
gotoxy(25,3);
getch();
clreol();
gotoxy(5,4);
sleep(1);
clreol();
sleep(3); }
FUNCTIA clrscr()
-sterge tot ecranul in modul text al ecranului
SINTAXA GENERALA este: void clrscr(void);
Functia clrscr() sterge complet ecranul in modul text si deplaseaza
cursorul in coltul din stanga sus(pozitia 1,1).
Functia nu returneaza valori (nu este depanabila).
Nu apelati functia pentru aplicatii Win 32 sau Win 32 GUI.
EXEMPLU: #include
#include
#include
int x;
char text[85];
char *p;
main()
{ text[0]=81;
for(x=1;x<4;x++)
{ clrscr();
printf("Introduceti un text oarecare: \n");
p=cgets(text);
gotoxy(20,10);
sleep(1);
printf("Textul introdus este: \n %s",p);
sleep(1);
}}
-259- [ conio.h -cprintf() si cputs() ]
FUNCTIA cprintf()
-scrie date formatate pe ecran
SINTAXA GENERALA este: int cprintf(const char *format[,argument,...]);
Functia este similara cu printf().Accepta un numar oarecare de argumente,
la care aplica formatul de date specificat prin *format,dupa care afiseaza
datele pe ecran,sau in fereastra de text specificata.Pentru fiecare argu-
ment al functiei,trebuie sa existe si un specificator de format.Pentru
detalii,vezi functia printf().Datele vor fi scrise fie direct in tamponul
de memorie destinat ecranului,fie printr-un apel BIOS,in functie de valoa-
rea variabilei globale _directvideo.
Spre deosebire de functiile printf() si fprintf(),pentru functia
cprintf() caracterul \n trece cursorul la linia urmatoare(linefeed),dar
nu deplaseaza cursorul la inceput de rand.Pentru a deplasa cursorul la
inceput de rand,trebuie utilizat si caracterul \r (carriage-return).
Deasemenea,caracterele Tab (\t) nu vor fi expandate la spatii goale (vor
fi ignorate).Functia nu poate fi apelata pentru aplicatiile Win32.
Functia returneaza numarul de caractere afisate.
EXEMPLU: #include
#include
char *text="Model de afisare cu retur de car \r\n";
char *text2="...si fara retur de car...\n ";
float nr=3.77E+11;
main()
{ clrscr();
cprintf("%s",text);
cprintf("%s",text);
cprintf("%f",nr);
cprintf("%s",text2);
cprintf("%s",text2);
cprintf("\r\n\n\n");
cprintf("In format stiintific numarul este: ");
gotoxy(25,15);
cprintf("%E",nr);
sleep(5);
}
vezi si functia printf() din
FUNCTIA cputs()
-scrie un sir pe ecran
SINTAXA GENERALA este: int cputs(const char *str);
Functia afiseaza un sir de caractere la pozitia actuala a cursorului.Sirul
va fi afisat pana la primul caracter NULL(terminator al sirului).
Sirul specificat prin *str va fi transcris fie direct in tamponul de
memorie destinat ecranului,fie se va apela o rutina BIOS,in functie de
valoarea setata pentru variabila globala _directvideo.
Spre deosebire de functia puts(),cputs() nu executa automat si returul
de car dupa caracterul \n (linefeed) ci doar trece cursorul la randul
imediat urmator.Pentru a deplasa cursorul la inceputul randului urmator,
trebuie adaugat si caracterul \r (carriage return).
Functia nu poate fi apelata pentru aplicatiile Win32 si Win32 GUI.
Functia returneaza valoarea ASCII a ultimului caracter afisat.
-260- [ conio.h -cscanf() si delline() ]
FUNCTIA cscanf()
-citeste si formateaza date preluate de la consola
SINTAXA GENERALA este: int cscanf(char *format[,address,...]);
Functia citeste o serie de date introduse de la tastatura,caracter cu
caracter,dupa care formateaza datele in concordanta cu formatul specificat
si le arhiveaza la adresa specificata.Trebuie sa existe cate un specifi-
cator de format pentru fiecare argument al functiei (adresa de memorie).
Functia este similara cu scanf() si poate intrerupe citirea datelor din
aceleasi motive ca si scanf().Cel mai frecvent,citirea se intrerupe atunci
cand intervine un spatiu gol (terminatorul de sir) sau cand se epuizeaza
spatiul de memorie pentru arhivarea datelor.
Functia nu poate fi apelata pentru aplicatiile Win32 si Win32 GUI.
Functia returneaza numarul de campuri de date citite,formatate si arhi-
vate cu succes,fara a include cele care au fost citite dar nu au fost
arhivate.Daca nici un camp de date nu a putut fi arhivat,functia retur-
neaza 0 (zero).Daca functia incearca sa citeasca la sfarsitul unei file
(daca citeste caracterul EOF),returneaza valoarea EOF.
EXEMPLU: #include
#include
int x,y,z;
char nr[80];
char suma[80];
char nume[80];
char prenume[80];
main()
{ clrscr();
cprintf("\r\n Introduceti numele si prenumele d-voastra:\r\n");
x=cscanf("%s %s",nume,prenume);
cprintf("\r\n Introduceti numarul de telefon:");
y=cscanf("%s",nr);
cprintf("\r\n Introduceti suma din cont:");
z=cscanf("s",suma);
cprintf("\r\n\n VERIFICARE: \r\n\n");
cprintf("nume=%s %s\r\n telefon=%s \r\n suma=%s",nume,prenume,nr,suma);
cprintf(" \r\n Functia a citit: %d campuri de date",x+y+z);
sleep(5);
}
Functia se poate utiliza pentru a introduce date in memorie si pentru a
verifica automat si numarul de operatii efectuate cu succes.
FUNCTIA delline()
-sterge o line de text
SINTAXA GENERALA este: void delline(void);
Functia sterge linia de text pe care se gaseste pozitionat cursorul si
deplaseaza apoi toate liniile care urmeaza cu o linie mai sus (scurteaza
textul cu o linie,fara a lasa spatii goale).Functia este activa doar in
cadrul ferestrei active de tip text(in modul text al ecranului).
Functia nu poate fi apleata pentru aplicatiile Win32 si Win32 GUI.
Functia nu returneaza nici o valoare.
Functia este utila mai ales atunci cand doriti sa eliminati pasaje mari
de text si sa reduceti consecutiv si dimensiunea textului final.
-261- [ conio.h -getch() ]
EXEMPLU: #include
#include
int x;
main()
{ clrscr();
cprintf("Text exemplificativ: \r\n");
cprintf("pentru functia delline() \r\n");
cprintf("Functia delline() \r\n");
cprintf("sterge linia \r\n");
cprintf("pe care se afla cursorul ! ");
sleep(3);
for (x=5;x>0;x--)
{ gotoxt(1,x);
delline();
sleep(1);
}
}
FUNCTIA getch()
-citeste un caracter introdus de la tastatura
SINTAXA GENERALA este: int getch(void);
Functia citeste un caracter unic,introdus de la tastatura,fara sa arhi-
veze caracterul pentru a putea fi reprodus(doar valoarea lui ASCII).
Functia nu poate fi apelata pentru aplicatile Win32 si Win32 GUI.
Functia returneaza valoarea ASCII a caracterului introdus.
EXEMPLUL 1 : #include
#include
#include
int nr;
main()
{ clrscr();
printf("Apasati orice tasta grafica(nr,semn,caracter)\n");
nr=getch();
printf("Valoarea ASCII a tastei apasate este: \n");
printf("%d",nr);
sleep(3); }
EXEMPLUL 2 : #include
Dostları ilə paylaş: |
|
|