Sunteți pe pagina 1din 4

Elemente de programare n C++

1. Structura programului. Orice program C este alctuit din un numr de funcii ( spre deosebire de PASCAL nu exist subrutine). Orice funcie are un tip i ntoarce o valoare sau nici o valoare i atunci tipul ei este void. n orice program trebuie s existe funcia main care n general este void. O funcie poate conine sau nu parametrii, iar dac nu conine parametrii se introduc dou paranteze fr nimic ntre ele. Orice funcie are declaraiile i instruciunile incluse ntre dou acolade. Dac o functie are tip (ntoarce o valoare) atunci instruciunea de atribuire a valorii funciei este return valoare sau variabil. O funcie poate apela oricare alt funcie din program genernd o structur liniar (nu exist blocuri de vizibilitate). Dac o funcie este apelat nainte de a fi definit este necesar enunarea hederului acestei (numele funciei i doar tipul parametrilor de apelare), urmnd a fi definit mai trziu. O funcie are urmtoarea structur: tip rezultat nume_funcie (lista parametrii) {declaratii interne; instructiuni} Exemplu de structur de program: void main() {<declaratii locale> <instructiuni locale>} int abs(float a,int b) { <declaratii locale> <instructiuni> } float max(int x,int y) { <declaratii> ;<instructiuni> } void main() { } float max(int,int); int abs(float a,int b) { <declaratii> ;<instructiuni> float max(int x,int y) {<declaratii> <instructiuni>}

2. Declaraii de variabile Fiecare variabil trebuie s fie declarat nainte de a fi utilizat. Variabilele simple vor avea unul din urmtoarele tipuri: char,short, int, long int,float, double, long double. Pentru variabilele indexate se utilizeaz formatul tip nume_variabil [nr1][nr2]. Se poate ca nr1 s lipseasc, dar nr2 trebuie ntotdeauna s fie definit. O variabil indexat se apeleaz cu var [id1][id2]. n limbajul C tipul logic lipsete, o expresie logic are valoarea 1 dac este adevrat i 0 dac este fals. 3. Instruciuni Orice instruciune trebuie terminat cu ;. O instruciune compus trebuie s fie inclus ntre acolade. Instruciunea de atribuire var=expresie; operatori de incrementare a++ este a=a+1 a=b++ este a=b b=b*1. Decizia if (expresie) instruciune1; else instruciune2; pentru instruciune se poate utiliza instruciunea compus inclus ntre acolade.Else poate lipsi. Pentru expresia logic se utilizeaz operatorii logici < ;<=;>;>=;==;!= si operatorii logici || (OR) && (AND) !(NOT). Ciclul cu contor for(initializare contor;test;incrementare) {declarare tip contor; instructiuni} exemplu for(i=1;i<20;i++) {int i; <instructiuni} Ciclul cu verificare la inceput while(condiie) instructiune; exemplu while (i<20) i=i+1; Ciclul cu verificare la sfirsit do instructiune while (conditie) Exemplu do {i=i+1;j=i+5;} while (i<20);

4.

5.

6.

7.

Instruciunea de decizie multipl Switch(expresie) {case val_1:secventa_1;[break;] case val_2:secventa_2;[break;] case val_3:secventa_3;[break;] [default:secventa]} ce este ntre paranteze drepte este opional. Instruciunea break oprete secvena n cazul n care condiia s-a respectat. Operatorul condiional ? expresie condiional ? rezultat1: rezultat2 Instruciuni de intrare ieire Pentru introducerea datelor de la consol i afiarea lor pe ecran se folosesc funciile: cout << expresia1 << expresia2 << expresia3.....<<expresia n cin >> variabila 1 >> variabila 2 >> variabila 3>>...............>>variabila n pentru citirea datelor de tip caracter se utilizeaz i funciile int getch(void); int getche(void) citire de pe ecran cu ecou pe ecran int putch (int c) afieaz pe ecran un caracter. Pentru irurile de caractere se folosesc char cgets(char s) ;int cputs (char s); Pentru utilizarea acestor funcii este necesar apelarea bibliotecii iostream.h. Utilizarea bibliotecilor. Deoarece limbajul C este orientat pe folosirea funciilor exist un num redus de instruciuni. Multe din aciunile necesare se rezolv cu ajutorul funciilor aflate n biblioteci. Acestea se apeleaz cu ajutorul directivelor preprocesor care ncep cu simbolul #. Astfel exist #include <stdio.h>, #include <conio.h>, #include <stdlib.h>, # include <math.h>,#include<ctype.h>, #include <string.h> Funcii predefinite a. Funcii aritmetice care opereaz cu valori de tip real i ntreg int abs(int x); long int labs (long int x); double fabs(double x); double sqrt(double x); double pow(double x, double y); double pow10(int p); double exp(double x); double log(double x); double log10(double x); double fmod(double x,double y) calculeaza x modulo y.restul impartirii x la y double floor (double x); double ceil (double x) rotunjirea sup/inf. double sin (double x); double cos (double x); double tan (double x); double asin (double x); double acos (double x); double atan (double x); b. Funcii pentru conversia datelor int atoi (const char s); double atof(const char s);long atol (const char s) transforma sir de caractere n numere Noiunea de pointer Pointerul este o varianil care conine adresa altor variabile sau funcii. Este util atunci cnd se dorete lucrul direct cu memoria. Definirea acestui tip de dat se face cu sintaxa tip * pointer ; unde tip este varianta de adres de memorie care este accesat. De exemplu char * s; este definit adresa la o variabil de tip caracter cu numele s. La acest tip de dat se pot folosi urmtorii operatori: operatorul * pentru accesul la coninutul variabilei adresate; operatorul & pentru aflarea adresei variabilei. Utilizarea pointerilor este folosit i la definirea irurilor de caractere. Astfel cele dou declaraii sunt echivalente: char sir[20], char *sir. Dup aceast declaraie se poate face iniializarea sir = student. Pentru iniializarea funciilor se pot utiliza funciile putch,getch, etc.

8. Functii Orice program C se bazeaza pe notiunea de functie. Orice functie are un antet si corpul functiei. Antetul specifica tipul valorii intoarse, numele functiei si lista parametrilor formali. Prototipul functiei este acelasi cu antetul functiei, cu deosebirea ca este urmat de instructiunea vida. Tipul valorii intoarse, ca si tipul parametrilor formali poate fi un tip predefinit sau un tip generat de utilizator. Pentru tipul functiei acesta trebuie sa coincida cu tipul datei pe care o contine instructiunea return din functie. Daca functia nu intoarce nici o valoare, atunci tipul este void si nu exista return. Numele functiei trebuie sa corespunda regulilor impuse variabilelor (exista si cuvinte rezervate). Corpul functiei incepe cu o acolada, urmeaza instructiunile si se incheie cu o acolada. 9. Variabile locale si variabile globale. Variabilele locale sunt cele care sunt declarate in interiorul unei functii si/sau in o instructiune compusa. La iesirea din functie acestea nu mai pot fi utilizate, in locatia de memorie ocupata intrind alte elemente din program. Un alt tip de variabile sunt cele care isi pstreaza locul in memorie si ele vor avea atributul static. Variabilele locale statice sint declarate in interiorul functiilor si din acel moment capata valabilitate pe tot restul programului. Alta categorie de variabile sunt cele declarate in afara oricarei structuri (inainte de functia main) si acestea vor fi tot statice. 10. Scrierea si citirea cu format Scrierea si citirea datelor cu format se face cu ajutorul functiilor printf si scanf. Pentru scriere se foloseste functia printf cu prototipul de forma printf (sir dr caractere ,lista variabile); unde sir de caractere reprezinta text care va fi afisat pe ecran si un sir de descriptori de format. Tipul variabilelor si descriptorii de format sunt prezentati in tabelul urmator: Tipul datei Cuvint cheie Descriptor Spatiu Interval valori format memorare oct Caracter char %c 1 [-128,127] Caracter fara Unsigned char %c 1 [0,255] semn Intreg zecimal Int sau short %d sau 2 [-32768; 32767] cu semn int %i Intreg octal int %o 2 [-32768; 32767] Intreg hexa int %x 2 [-32768; 32767] Intreg pe Long int %ld sau 4 [-2^31..2^31] lungime dubla %li Octal dubla Long int %lo 4 [-2^31..2^31] lungime Hexa dubla Long int %lx 4 [-2^31..2^31] lungime Intreg lung Unsigned long %lu 4 [0...2^32] fara semn int Real simpla float %f sau 4 10^38 prcizie %e Real dubla double %lf sa 8 10^308 precizie %le Real dubla Long double %lf 10 10^4932 precizie long

Numarul total si ordinea descritorilor de format trebuie sa coincida cu numarul total si ordinea si tipul numelor datelor care vor fi afisate. Numele datelor care vor fi afisate sunt cuprinse in lista de nume si sunt despartite intre ele prin virgula. Pentru citirea datelor de la tastatura se utilizeaza functia scanf(sir descriptori de format, lista adrese variabile), unde sir descriptori de format cuprinde descriptorii de format corespunzatori in ordinea in care se afla datele cu tipul lor in lista adrese variabile. Pentru a citi la adresa unei variabile este necesara includerea in lista de adrese a operatorului &. Astfel pentru a citi variabila a reala se poate utiliza forma scanf(%f,&a). Functiile de scriere cu format se gasesc in bibliteca <stdio.h>. 11. Secvente pentru controlul ecranului La scrierea pe ecra se pot utiliza semne cheie care vor controla modul in care se face scrierea pe ecran.Astfel, \b este backspace, \f pagina noua \n linie noua \r revenire la inceputul liniei, \t deplasare cu un tab orizontal, \v deplasare cu tab vertical. 12. Functii pentru siruri de caractere. a. Initializarea sirurilor de caractere Initializarea unui sir de caractere se poate face in mai multe moduri. Cel ma simplu este acela de a utiliza functia scanf, cu argument chiar numele sirului. De ex: char sir[20]; scanf (%s,sir). La aceasta sintaxa nu se utilizeaza indirectarea de adresa deoarece tabloul este privit ca un pointer. Pentru introducerea sirurilor de caractere se mai pot utiliza functiile standard putch,getch, putchar, gets,puts. b. Funci standard pentru sirurile de caractere se gasesc in headerul <string.h>. Functiile pentru prelucrarea datei si orei se gasesc in hederul <dos.h>. o structura pentru data contine trei intregi da_year, da_day, da_mon si o structura pentru ora patru caractere ti_min,ti_hour, ti_hund, ti_sec. Acestea vor fi prezentate in tabelul urmator: Prototip functie Operatie efectuata Size_t strlen(const char*sursa) Lungimea sirului de caractere Char *strcpy (char *dest, const char Copiaza sirul sursa in destinatie si intoarce *sursa) adresa destinatiei Char *strncpy (char *dest, const char Copiaza un numar de caractere definit prin *sursa, size_t nr_max) nr_max din sursa in destinatie Char *strcat (char *dest, const char Adauga sirul sursa la destinatie *sursa) Char *strncat (char *dest, const char Adauga numarul de caractere precizat din *sursa, size_t nr_max) sursa la destinatie Int strcmp(const char *sir1, const char Compara cele doua siruri valoare negativa *sir2) daca 1 <2 pozitiv invers Char *strupr(char *sir) Transforma in majuscule caracterele Functii pentru timp Void getdate (struct date *d) Citeste data Void gettime(struct time *t) Citeste ora Void setdate (struct date *d) Seteaza data Void settime (struct time *t) Seteaza ora