Elemente de programare în C

++
1. Structura programului. Orice program C este alcătuit din un număr de funcţii ( spre deosebire de PASCAL nu există subrutine). Orice funcţie are un tip şi întoarce o valoare sau nici o valoare şi atunci tipul ei este void. În orice program trebuie să existe funcţia main care în general este void. O funcţie poate conţine sau nu parametrii, iar dacă nu conţine parametrii se introduc două paranteze fără nimic între ele. Orice funcţie are declaraţiile şi instrucţiunile incluse între două acolade. Dacă o functie are tip (întoarce o valoare) atunci instrucţiunea de atribuire a valorii funcţiei este return valoare sau variabilă. O funcţie poate apela oricare altă funcţie din program generând o structură liniară (nu există blocuri de vizibilitate). Dacă o funcţie este apelată înainte de a fi definită este necesară enunţarea hederului acestei (numele funcţiei şi doar tipul parametrilor de apelare), urmând a fi definită mai târziu. O funcţie are următoarea structură: tip rezultat nume_funcţie (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. Declaraţii de variabile Fiecare variabilă trebuie să fie declarată înainte de a fi utilizată. Variabilele simple vor avea unul din următoarele 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 lipseşte, o expresie logică are valoarea 1 dacă este adevărată şi 0 dacă este falsă. 3. Instrucţiuni Orice instrucţiune trebuie terminată cu ;. O instrucţiune compusă trebuie să fie inclusă între acolade. Instrucţiunea de atribuire var=expresie; operatori de incrementare a++ este a=a+1 a=b++ este a=b b=b*1. Decizia if (expresie) instrucţiune1; else instrucţiune2; pentru instrucţiune se poate utiliza instrucţiunea 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(condiţie) 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);

Acestea se apelează cu ajutorul directivelor preprocesor care încep cu simbolul #. Multe din acţiunile necesare se rezolvă cu ajutorul funcţiilor aflate în biblioteci. double pow10(int p). Operatorul condiţional ? expresie condiţională ? rezultat1: rezultat2 Instrucţiuni de intrare ieşire Pentru introducerea datelor de la consolă şi afişarea lor pe ecran se folosesc funcţiile: cout << expresia1 << expresia2 << expresia3. Pentru utilizarea acestor funcţii este necesară apelarea bibliotecii iostream..h>. #include <stdlib. operatorul & pentru aflarea adresei variabilei. double cos (double x). double ceil (double x) rotunjirea sup/inf.>>variabila n pentru citirea datelor de tip caracter se utilizează şi funcţiile int getch(void). double atan (double x)... este definită adresa la o variabilă de tip caracter cu numele s.restul impartirii x la y double floor (double x). Deoarece limbajul C este orientat pe folosirea funcţiilor există un numă redus de instrucţiuni.. double acos (double x).h> Funcţii predefinite a..#include<ctype.... double atof(const char s). int getche(void) citire de pe ecran cu ecou pe ecran int putch (int c) afişează pe ecran un caracter... Utilizarea pointerilor este folosită şi la definirea şirurilor de caractere... Pentru şirurile de caractere se folosesc char cgets(char s) . După această declaraţie se poate face iniţializarea sir = ”student”. 7. double pow(double x. double exp(double x). double sqrt(double x). Pentru iniţializarea funcţiilor se pot utiliza funcţiile putch. double log10(double x). long int labs (long int x). Instrucţiunea break opreşte secvenţa în cazul în care condiţia s-a respectat. Astfel există #include <stdio. Utilizarea bibliotecilor.[break.h>. char *sir..h>. double tan (double x).long atol (const char s) transforma sir de caractere în numere Noţiunea de pointer Pointerul este o varianilă care conţine adresa altor variabile sau funcţii. Funcţii pentru conversia datelor int atoi (const char s). Funcţii aritmetice care operează cu valori de tip real şi întreg int abs(int x).getch. Instrucţiunea de decizie multiplă Switch(expresie) {case val_1:secventa_1. De exemplu char * s.double y) calculeaza x modulo y.[break. #include <string. b. double asin (double x).h>.int cputs (char s).. double y).[break. 5. # include <math. . #include <conio. unde tip este varianta de adresă de memorie care este accesată.. etc.<<expresia n cin >> variabila 1 >> variabila 2 >> variabila 3>>.. Astfel cele două declaraţii sunt echivalente: char sir[20].h. double sin (double x).] [default:secventa]} ce este între paranteze drepte este opţional. Definirea acestui tip de dată se face cu sintaxa tip * pointer . double log(double x). Este utilă atunci când se doreşte lucrul direct cu memoria. double fmod(double x.4.] case val_2:secventa_2..h>. 6.. La acest tip de dată se pot folosi următorii operatori: operatorul * pentru accesul la conţinutul variabilei adresate.] case val_3:secventa_3. double fabs(double x).

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

&a). size_t nr_max) sursa la destinatie Int strcmp(const char *sir1. Initializarea sirurilor de caractere Initializarea unui sir de caractere se poate face in mai multe moduri. cu argument chiar numele sirului. \t deplasare cu un tab orizontal. 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 &.h>. Functii pentru siruri de caractere.getch. ti_hund. 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 . b. gets. Funcíi standard pentru sirurile de caractere se gasesc in headerul <string. scanf (”%s”. Functiile pentru prelucrarea datei si orei se gasesc in hederul <dos. La aceasta sintaxa nu se utilizeaza indirectarea de adresa deoarece tabloul este privit ca un pointer.h>. 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.sir). putchar.Astfel. 11. a. o structura pentru data contine trei intregi da_year. const char Copiaza sirul sursa in destinatie si intoarce *sursa) adresa destinatiei Char *strncpy (char *dest. Pentru introducerea sirurilor de caractere se mai pot utiliza functiile standard putch. 12. \b este backspace.puts. ti_sec. Pentru citirea datelor de la tastatura se utilizeaza functia scanf(”sir descriptori de format”. Cel ma simplu este acela de a utiliza functia scanf. const char Adauga numarul de caractere precizat din *sursa. \v deplasare cu tab vertical.h>.ti_hour. da_mon si o structura pentru ora patru caractere ti_min.Numarul total si ordinea descritorilor de format trebuie sa coincida cu numarul total si ordinea si tipul numelor datelor care vor fi afisate. lista adrese variabile). Numele datelor care vor fi afisate sunt cuprinse in lista de nume si sunt despartite intre ele prin virgula. Functiile de scriere cu format se gasesc in bibliteca <stdio. 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. da_day. De ex: char sir[20]. \f pagina noua \n linie noua \r revenire la inceputul liniei. 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 pentru a citi variabila a reala se poate utiliza forma scanf(”%f”.

Sign up to vote on this title
UsefulNot useful