Limbajul c si C++ abc-doar


Dintre acestea,cea mai importanta este wait(),restul nu fac obiectul



Yüklə 4,6 Mb.
səhifə48/55
tarix07.05.2018
ölçüsü4,6 Mb.
#50260
1   ...   44   45   46   47   48   49   50   51   ...   55

Dintre acestea,cea mai importanta este wait(),restul nu fac obiectul

acestui manual.

FUNCTIA wait()

-asteapta pana la terminarea unui proces copil

SINTAXA GENERALA este: int wait(int *statloc);

Functia asteapta terminarea unuia sau mai multor procese copil.Functia se

poate aplica doar pentru procesele copil derivate din programul apelant,

nu si pentru cele derivate din procesele copil(procese nepot ramificate cu

spawnle din procesul copil).Daca *statloc nu este NULL,indica adresa la

care se va transfera statusul de terminare a procesului.

Daca procesul copil se termina normal( cu apel de exit() sau revenire in

functia main() ),atunci statusul de terminare a procesului va fi definit

dupa cum urmeaza:

Bitul 0-7 Zero

Bitul 8-15 Byte-ul cel mai putin semnificativ din codul returnat

de procesul copil.

Daca procesul copil nu returneaza nici o valoare,valoarea pentru *statloc

este impredictibila.Daca procesul copil retruneaza eroare,valorile sunt:

Bitul 0-7 1=eroare critica 2=eroare de executie 3=semnal extern

Bitul 0-15 Zero

Functia nu returneaza valori (nu este depanabila automat).


-364- [ ctype.h - isalnum() ]

EXEMPLU: [C++]

#include


#include

#include

#include

main()

{ int result;

result=spawnlp(P_NOWAIT,"C:\BC5\BIN\td.exe","td.exe",NULL);

if (result==-1)

{

perror("Error from spawnlp=");

};

wait(0);

int x;

for (x=1;x<11;x++)

{ printf("x= %d \n",x);

sleep(1);

}}

Pentru a sesiza difernta,rulati exercitiul si dupa eliminarea comenzii

wait(0) si observati ca programul din main() se deruleaza in timp ce

inchideti fereastra utilitarului Turbo Debugger (td.exe).
BIBLIOTECA C fila antet

-contine functii care sunt utilizate mai ales pentru clasificarea tipuri-

lor de caractere,pentru construirea unor macro-uri de conversie a datelor

sau pentru analiza datelor.
FUNCTIA isalnum()

-testeaza daca un caracter este alfanumeric (alfabetic sau digital)

SINTAXA GENERALA este: int isalnum(int c);

Functia este de fapt un macro,care clasifica toate caracterele ASCII prin

codul lor numeric.In versiunea C++,valoarea poate fi influentata de

categoria din LC_TYPE (structura lconv din locale.h).Pentru valorile

implicite,caracterele alfanumerice sunt fie caractere alfabetice (de la

A la Z si de la a la z) fie caractere numerice digitale (de la 0 la 9 ).

Functia returneaza nonzero pentru caracterele alfanumerice sau zero pentru

restul caracterelor.

EXEMPLU: #include

#include

#include

int x,val;

main()

{ for (x=50;x<70;x++)

{ val=isalnum(x);

if (val==0)

printf("%d=%c si NU este un caracter alfanumeric!\n",x,x);

else

printf("%d=%c si ESTE alfanumeric ! \n",x,x);

};

sleep(5); }

Functia poate numara caracterele dintr-o fila de tip text,etc.


-365- [ ctype.h -isalpha() si isascii() ]

FUNCTIA isalpha()

-determina daca un caracter este alfabetic

SINTAXA GENERALA este: int isalpha(int c);

Functia este similara cu isalnum(),dar nu recunoaste decat caracterele

alfabetice (A-Z si a-z).Clasificarea caracterelor se face in fucntie de

codul lor numeric ASCII.Poate fi influentata de categoria locale LC_CTYPE.

Functia returneaza nonzero pentru caracterele alfabetice.

EXEMPLU: #include

#include

int x,val,nr;

main()

{ for (x=1;x<6;x++)

{ printf("Introduceti un numar intre 1 si 255: \n");

scanf("%d",&nr);

val=isalpha(nr);

if (val==0)

printf("%d=%c NU este un caracter alfabetic! \n",nr,nr);

else

printf("%d=%c si este o litera din alfabet ! \n",nr,nr);

};

printf(" ...Apasati orice tasta...\n");

getch();

}
FUNCTIA isascii()

-este un macro de clasificare a caracterelor ASCII

SINTAXA GENERALA este: int isascii(int c);

Functia identifica primele 128 de caractere din setul de caractere ASCII

(cele care au bitul binar cel mai nesemnificativ egal cu zero) fata de

caracterele speciale (cele cu cod numeric 128-255 si primul bit binar=1).

Functia returneaza nonzero pentru caracterele 0-127 ( 0x00 la 0x7F )

EXEMPLU: #include

#include

int a,b,c,val;

main()

{ a=77,b=303,c=210;

val=isascii(a);

valoare();

val=isascii(b);

valoare();

val=isascii(c);

valoare();

printf(" ...Apasati orice tasta... \n");

getch();

}

valoare()

{ if (val==0)

printf("Caracterul NU ESTE un caracter ASCII 1 ! \n");

else

printf("Caracterul este ASCII 1 ! \n");

}


-366- [ ctype.h -iscntrl() si isdigit() ]

FUNCTIA iscntrl()

-verifica daca este un caracter de control (0-31)

SINTAXA GENERALA este: int iscntrl(int c);

Caracterele de control sunt coduri ASCII utilizate pentru controlul

operatiilor de editare.Sunt primele 32 de coduri ASCII si determina

diferite operatii.Se utilizeaza pentru controlul editarii si pentru

rutine scrise in cod masina.Nu se recomanda utilizarea lor de catre

incepatori (pot altera sau chiar sterge datele).

Functia este un macro si verifica daca un carcater oarecare este sau nu

un caracter de control (cu cod numeric ASCII 0-31) sau carcaterul delete.

Caracterele de control au adresa hex 0x00-0x7F si respectiv 0x1F=delete).

Functia returneaza nonzero pentru delete si caracterele de control.

EXEMPLU: #include

#include

#include

int x,val;

main()

{ printf("Introduceti valoarea lui x (0-255); \n");

printf("Caractere de control= 0-31 sau 127 \n");

scanf("%d",&x);

printf("%x \n",x);

val=iscntrl(x);

if (val==0)

printf("%d=%c si NU ESTE un caracter de control ! \n",x,x);

else

printf("%d=%c si ESTE caracter de control ! \n",x,x);

sleep(3);

}
FUNCTIA isdigit()

-determina daca un carcater este digital (numar 0-9 cod ASCII 48-57)

SINTAXA GENERALA este: int isdigit(int c);

Functia este de fapt un macro si determina daca un caracter oarecare este

sau nu este digital (numar reprezentabil digital,adica un numar cuprins

intre 0 si 9.Numerele mai mari necesita mai multi digiti :Exemplu: 777

poate fi reprezentat pe 3 digiti).

Functia returneaza nonzero pentru numerele de la 0 la 9 (digitale).

EXEMPLU: #include

#include

#include

int x,val;

main()

{ for (x=44;x<66;x++)

{ val=isdigit(x);

if (val==0)

printf("%d=%c si NU ESTE un caracter digital !\n",x,x);

else

printf("%d=%c si ESTE un caracter digital (0-9)!\n",x,x);

};

sleep(5); }

Exemplul clasic pentru digiti sunt numerele afisate de ceasul de mana!


-367- [ ctype.h -isgraph() si islower() ]

FUNCTIA isgraph()

-determina daca un caracter este caracter grafic

SINTAXA GENERALA este: int isgraph(int c);

Functia este fapt un macro si identifica daca un caracter este sau nu

este grafic,cu exceptia caracterului blank space(spatiul gol).

Functia returneaza nonzero daca este caracter grafic.

EXEMPLU: #include

#include

#include

int a,val;

main()

{ a=' ';

val=isgraph(a);

valoare();

a=255;

val=isgraph(a);

valoare();

a=100;

val=isgraph(a);

valoare();

sleep(3);

}

valoare()

{ if (val==0)

printf("NU este un caracter grafic ! \n");

else

printf("caracterul ESTE grafic ! \n");

}
FUNCTIA islower()

-determina caracterele alfabetice scrise cu minuscula(litera mica)

SINTAXA GENERALA este: int islower(int c);

Functia este un macro si identifica intr-un text caracterele scrise cu

minuscula (fata de cele scrise cu majuscula).Se aplica pentru literele

de la a la z.(restul caracterelor returneaza zero)

Functia returneaza nonzero daca litera este minuscula(litera mica)

EXEMPLU: #include

#include

#include

char x;

int z;

main()

{ printf("Introduceti o litera din alfabet: \n");

x=getch();

printf("%c \n",x);

z=islower(x);

if (z==0)

printf("Litera este scrisa cu majuscula ! \n");

else

printf("Este o litera mica ! \n");

sleep(3); }


-368- [ ctype.h-isprint() si ispunct() ]

FUNCTIA isprint()

-determina daca este un caracter imprimabil

SINTAXA GENERALA este: int isprint(int c);

Functia este un macro care utilizeaza codurile numerice ASCII pentru a

determina daca un caracter este sau nu imprimabil.Sunt imprimabile toate

caracterele alfanumerice si semnele de punctuatie,inclusiv blank space

(spatiul gol),adica codurile ASCII 32-127.

Functia returneaza nonzero pentru caracterele imprimabile.

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ printf("Introduceti un numar oarecare (0-255): \n");

scanf("%d",&a);

nr=isprint(a);

if (nr==0)

printf("Caracterul NU ESTE imprimabil ! \n");

else

printf("Caracterul este:%c si ESTE imprimabil ! \n",a);

sleep(3);

}
FUNCTIA ispunct()

-determina daca un caracter este semn de punctuatie

SINTAXA GENERALA este: int ispunct(int c);

Functia este un macro si determina daca un caracter oarecare este sau nu

este un semn de punctuatie utilizat pentru editarea textelor.Utilizeaza

codurile numerice ASCII si identifica toate caracterele care sunt impri-

mabile dar nu sunt alfanumerice sau spatiul gol.

Functia returneaza nonzero pentru caracterele care sunt semn de punctuatie

EXEMPLU: #include

#include

#include

int a,val;

main()

{ printf(Introduceti un numar oarecare (0-255): \n");

scanf("%d",&a);

nr=ispunct(a);

if (nr==0)

printf("Caracterul NU ESTE semn de punctuatie ! \n");

else

printf("Caracterul este:%c si ESTE semn de punctuatie! \n",a);

sleep(3);

}

Caracterele utilizate ca semn de punctuatie sunt cele cu codul numeric

cuprins intre 33 si 47.

Functia este foarte utila,atunci cand se scriu programe de analiza a

codurilor,care citesc un program token cu token si determina structura

programului: numarul de functii,numarul de variabile si constante,numarul

de linii de program,numarul de semne de punctuatie etc.


-369- [ ctype.h-isspace() si isupper() ]

FUNCTIA isspace()

-determina daca un caracter este sau nu este un spatiu gol.

SINTAXA GENERALA este: int isspace(int c);

Functia este un macro si utilizeaza codurile numerice ASCII pentru a

determina daca un carcacter oarecare(cel specificat) este sau nu este un

spatiu gol.Spatiile goale sunt cele rezultate la editarea caracterelor

space,tab,carriage return,new line,vertical tab,formfeed sau pentru orice

alt caracter local,definit ca atare de catre utilizator.

Functia returneaza zero pentru spatiile goale (cod ASCII 0x09,0x0D,0x20..)

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ printf("Introduceti un numar oarecare (0-255): \n ");

scanf("%d",&a);

nr=isspace(a);

if (nr==0)

printf("Caracterul NU ESTE un spatiu gol ! \n");

else

printf("Caracterul ESTE un spatiu gol ! \n ");

sleep(3);

}

Introduceti 9 sau 32 pentru a verifica exercitiul.
FUNCTIA isupper()

-determina daca un caracter este scris cu majuscula(litera mare)

SINTAXA GENERALA este: int isupper(int c);

Functia este un macro si determina daca un caracter oarecare este sau nu

este scris cu litera mare (majuscula).Se utilizeaza doar pentru caracte-

rele alfabetice de la A la Z (coduri ASCII 64-90).

Functia returneaza nonzero pentru caracterele scrise cu litera mare.

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ printf("Introduceti un numar oarecare (0-255): \n ");

scanf("%d",&a);

nr=isupper(a);

if (nr==0)

printf("Caracterul NU ESTE o majuscula ! \n");

else

printf("Caracterul este:%c si ESTE o majuscula ! \n",a);

sleep(3);

}

Functia poate avea diverse aplicatii:-numara numele proprii dintr-un text,

numara propozitiile dintr-un text,identifica comenzile de tip DOS,iden-

tifica constantele si variabilele (daca exista o conventie de notare cu

litera mare) etc.Se poate utiliza impreuna cu islower() pentru a alterna

modul de editare a unor cuvinte sau comenzi,etc.


-370- [ ctype.h-isxdigit() si toascii() ]

FUNCTIA isxdigit()

-determina daca un caracter este sau nu este hexazecimal

SINTAXA GENERALA este: int isxdigit(int c);

Functia este un macro si utilizeaza codurile numerice ASCII pentru a

determina daca un caracter este sau nu este hexazecimal(numar 0-9 sau

litera a-f sau A-F).

Functia returneaza nonzero pentru caracterele hexazecimale.

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ printf("Introduceti un numar oarecare (0-255): \n");

scanf("%d",&a);

nr=isxdigit(a);

if (nr==0)

printf("Caracterul NU ESTE hexazecimal ! \n");

else

{ printf("Caracterul este :%c si ESTE hexazecimal ! \n",a);

printf("Scris ca adresa hexazecimala este: 0x000%c \n",a);

}

sleep(3);

}

Functia este utila mai ales pentru scrierea si citirea adreselor hexa-

zecimale (adrese DOS) sau pentru conversii de date in formate diferite.
FUNCTIA toascii()

-transcrie caracterele in format ASCII

SINTAXA GENERALA este: int toascii(int c);

Functia este un macro care realizeaza conversia unui numar de tip int

la un caracter de tip ASCII.Conversia se realizeaza prin stergerea celor

7 biti de nivel inferior (cei mai putin semnificativi),astfel incat sa

rezulte o valoare cuprinsa intre 0-127,valoare care va fi considerata a

fi codul numeric ASCII pentru caracterul rezultat.

Functia returneaza valoarea rezultata (caracterul ASCII rezultat).

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ printf("Introduceti un numar >255 : \n");

scanf("%d",&a);

nr=toascii(a);

printf("Caracterul rezultat este: %c \n",nr);

sleep(3);

}

Functia este utila mai ales pentru a genera caractere aleatorii,pentru a

forma denumiri unice (pentru variabile,file,fisiere etc.) sau pentru a

realiza diverse conversii intre datele scrise in format numeric si cele

acceptate de standardul ASCII.Atentie-conversia reciproca nu este apli-

cabila decat daca se utilizeaza reguli fixe de conversie (se pierd date).


-371- [_tolower(),tolower()si _toupper() ]

FUNCTIA _tolower()

-converteste o majuscula la o minuscula (litera mare in litera mica)

SINTAXA GENERALA este: int _tolower(int ch);

Functia este identica cu tolower() cu deosebirea ca accepta doar carac-

tere de tip alfabetic de la A-Z.Pentru orice alt tip de caracter rezul-

tatul functiei este nedefinit.

Functia returneaza minuscula literei specificate (litera mica).

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ a='A';

nr=_tolower(a);

printf("Caracterul rezultat este: %c \n",nr);

sleep(3);

}
FUNCTIA tolower()

-converteste un caracter la minuscula sa (daca exista)

SINTAXA GENERALA este: int tolower(int ch);

Functia este un macro si converteste un caracter alfabetic de la majuscula

la sa la minuscula (din litera mare in litera mica).Functia are efect doar

asupra caracterelor alfabetice de la A-Z (cod 65-91) dar accepta pentru

ch orice valoare cuprinsa intre 0 si 255,insa caracterele nealfabetice

raman nemodificate.

Functia returneaza minuscula (litera mica).

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ for (a=65;a<91;a++)

{ nr=tolower(a);

printf("%c se transforma in %c \n",a,nr);

}

sleep(3);

}
FUNCTIA _toupper()

-translateaza un caracter alfabetic la majuscula sa (litera mare)

SINTAXA GENERALA este: int _toupper(int ch);

Functia este un macro si realizeaza conversia de la minuscula la majuscula

(din litera mica in litera mare).Functia este identica cu toupper() cu

deoasebirea ca nu accepta ca valori pentru ch decat codul numeric al

caracterelor alfabetice a-z (97-122).Pentru celelalte caractere ASCII,

rezultatul functiei este nedefinit.

Functia returneaza majuscula (litera mare)

Functia este utila mai ales pentru a realiza compatibilitatea unor date

intre sisteme diferite (de exemplu sistemul DOS nu accepta comenzi si

variabile decat daca sunt denumite cu majuscula).


-372- [ ctype.h-toupper() si _ctype[] ]

EXEMPLU: #include

#include

#include

int a,nr;

main()

{ a='z';

nr=_toupper(a);

printf("Caracterul rezultat este: %c \n",nr);

sleep(3);

}
FUNCTIA toupper()

-translateaza un caracter alfabetic la majuscula sa (litera mare)

SINTAXA GENERALA este: int toupper(int ch);

Functia este de fapt un macro si utilizeaza codurile numerice ASCII ale

caracterelor pentru a realiza conversia unui caracter alfabetic,din

minuscula in majuscula (din litera mica in litera mare -respectiv de

Yüklə 4,6 Mb.

Dostları ilə paylaş:
1   ...   44   45   46   47   48   49   50   51   ...   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