Limbajul c si C++ abc-doar


mai multe pagini grafice,respectiv au un tampon de memorie rezervat pentru



Yüklə 4,6 Mb.
səhifə35/55
tarix07.05.2018
ölçüsü4,6 Mb.
#50260
1   ...   31   32   33   34   35   36   37   38   ...   55

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

Yüklə 4,6 Mb.

Dostları ilə paylaş:
1   ...   31   32   33   34   35   36   37   38   ...   55




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin