Presentation is loading. Please wait.

Presentation is loading. Please wait.

CURS 3 Limbajul C dezvoltat între anii 1969-1973 (D.M.Ritchie), o dată cu dezvoltarea sistemului de operare Unix. (Ken Thompson & D.M.Ritchie); 1972 -

Similar presentations


Presentation on theme: "CURS 3 Limbajul C dezvoltat între anii 1969-1973 (D.M.Ritchie), o dată cu dezvoltarea sistemului de operare Unix. (Ken Thompson & D.M.Ritchie); 1972 -"— Presentation transcript:

1 CURS 3 Limbajul C dezvoltat între anii (D.M.Ritchie), o dată cu dezvoltarea sistemului de operare Unix. (Ken Thompson & D.M.Ritchie); anul "naşterii" limbajului C. elementele esenţiale ale limbajului C au fost complete schimbari majore 1978 – apare cartea "The C programming language" scrisă de către B.W.Kernighan, D.M.Ritchie 1983 incepe standardizarea limbajului C de către ANSI (American National Standards Institute) a apărut ANSI C.

2 Avantaje 1. limbaj de programare de scop general
=> dezvoltarea de aplicaţii diverse: soft ştiinţific, soft pentru gestiunea bazelor de date, editoare de texte, jocuri, etc. - nu este specializat pe un domeniu particular de aplicaţii - control modern al funcţiilor şi al structurilor de date - set bogat de operatori 2. permite o foarte bună portabilitate a programelor 3. permite programarea structurată (modulară) 4. permite scrierea softului de bază (programare de sistem) 5. oferă posibilitatea lucrului pe biţi şi a calculului adreselor

3 Elementele limbajului C
Exemple

4 Categorii de elemente Comentarii note explicative (adnotări) în program complet ignorate de către compilator şiruri de caractere (pot fi şi caractere speciale sau cuvinte cheie) cuprinse între /* */ sau care se găsesc pe un singur rând după caracterele //

5 Cuvinte cheie cuvinte rezervate limbajului de programare, cu utilizare predefinită nume cu destinaţii speciale se scriu cu litere mici Exemple

6 Identificatori (nume)
folosiţi pentru a denumi variabile, constante, funcţii, structuri de date, etc. = succesiuni de caractere alfanumerice, primul caracter trebuind să fie literar in C, de ex., S  s un identificator poate conţine oricâte caractere dar sunt luate în considerare doar primele 32 caractere nu pot conţine caractere speciale: + - / ^ < > ( ) [ ] { } . , : ; ' # $ @ - spatiu Recomandare sa fie sugestivi x2: x2, xx, xla2, xp, etc. Exemple: a, suma, SUMA, m2, nr_stud_an1f, NrStudAn1F 2x, a*b, if Obs. Identificatorii care încep cu _ sau conţin _ _ sunt folositi pentru implementare şi pentru librăriile standard în C şi C++.

7 Variabile nume simbolice asociate unor locaţii de memorie valorile lor pot fi modificate prin instrucţiuni ale programului declararea (definirea) variabilelor constă în precizarea tipului şi numelui lor. Exemple:  

8 Variabile globale variabile declarate in afara functiei main se initializeaza automat cu zero Exercitiu Scrieti programul pentru transformarea oC->oF

9 Constante valori care nu pot fi modificate în decursul programului constante simbolice constante obiect Constante simbolice se definesc cu directiva define constante fara tip Directiva define - stabileşte (defineşte) un nume simbolic pentru o anumită valoare se compune din: cuvântul cheie #define, o denumire simbolică, o valoare nu se termină cu ; autorizează substituţia pe care o defineşte din punctul în care este scrisă până la sfârşitul fişierului sursa sau până la întâlnirea unei directive undef.

10 declararea acestor constante se termină cu caracterul ;
Constantele obiect constante cu tip Se declara folosind cuvântul cheie const urmat de tipul constantei şi de un identificator iniţializat. declararea acestor constante se termină cu caracterul ; Exemplu O constantă de tip char (caracter) este un întreg, scris ca un singur caracter între două simboluri '. Valoarea constantei caracter este valoarea caracterului respectiv în setul de caractere ASCII (American Standard Code for Information Interchange). Astfel, de exemplu, '0' are valoarea 48, 'A' are valoarea 65, iar 'a' are valoarea 97.

11 Instrucţiuni părţi (linii) de program care prin compilare produc acţiuni (coduri) executabile se termină cu caracterul ; - terminator de instrucţiune lipsa caracterului ; este semnalata la începutul liniei următoare

12 Exemple ► In urma execuţiei programului se tipăresc valorile de la 5 la 105 ► Dacă nu se pun acolade la while se va tipări doar valoarea 105

13 Expresii construcţii formate din operanzi şi operatori. au valori şi tipuri valorile şi tipurile expresiilor sunt determinate de către valorile şi tipurilor operanzilor şi de către operatorii care compun expresia. Exemplu b*b-4*a*c expresie a , b , c operanzii expresiei *, operatorii expresiei delta = b*b - 4*a*c ; instrucţiune prin care se atribuie variabilei delta rezultatul evaluarii expresiei b2 - 4ac Operanzii pot fi : - constante - identificatori (nume) de variabile - nume de tipuri de date - apeluri de funcţii - expresii cuprinse între paranteze rotunde

14 grupuri de instrucţiuni recunoscute sub un anumit nume
Funcţii grupuri de instrucţiuni recunoscute sub un anumit nume realizează acţiuni şi întorc (returnează) valori programului principal (funcţiei principale) sau altei funcţii apelante. se apelează prin nume şi lista lor de parametri. Parametrii funcţiilor sau valorile cu care sunt apelate transferă informaţia din exteriorul funcţiilor în interiorul lor. Valorile pe care le returnează funcţiile nu trebuie folosite în mod obligatoriu (vezi de ex. funcţiile scanf() şi printf()) Funcţia principală returnează valori sistemului de operare, acesta fiind programul apelant al ei. Anumite funcţii standard sunt gata scrise şi prototipurile lor se găsesc în bibliotecile limbajului (header files). <stdio.h> - conţine funcţii standard de intrare ieşire (I/O): printf, scanf, getch, ... <stdlib.h> - conţine funcţii standard precum: abort, exit, rand, atoi, itoa,... <string.h> - conţine funcţii pentru prelucrarea şirurilor de caractere: strcpy, strlen, strcmp, strcat,... <math.h> - conţine funcţii matematice: cos, sin, pow, fabs, abs, ... <graphics.h> - conţine funcţii pentru gestiunea ecranului în mod grafic (initgraph, putpixel, line, outtext, outtextxy , cleardevice, ...) <conio.h> - conţine funcţii standard de intrare ieşire de la consolă (clrscr, getch, getche, gotoxy, putch, wherex, wherey,...) <time.h> - conţine funcţii pentru gestiunea orei şi a datei sistemului de calcul (gettime, settime, ctime,...) <dos.h> - conţine funcţii pentru interacţiunea cu sistemul de operare DOS (setdrive, inport, outport) … etc.

15 Funcţia itoa (nu este suportată de toate compilatoarele)

16 Structura funcţiilor Antetul tipul valorii pe care o returnează funcţia + numele funcţiei + lista parametrilor funcţiei (tipul şi numele variabilelor funcţiei) Corpul de instructiuni - grupul de instrucţiuni care se execută la apelul funcţiei respective.

17 Apelul functiilor prin nume şi lista de parametri. La apelul funcţiei, controlul programului este pasat acelei funcţii. La întâlnirea instrucţiunii return în interiorul unei funcţii se face saltul în afara funcţiei, controlul fiind preluat de către funcţia main, din locul imediat următor celui în care a fost apelată funcţia din care se face saltul.

18 Funcţia main partea principală a unui program C este apelată şi lansată în execuţie de către sistemul de operare. Funcţii recursive functii care se autoapelează se folosesc la definirea proceselor recursive. Proces este recursiv - proces care are o parte care se defineşte prin el însuşi.

19 Funcţia fact recursivă:
Exemple Funcţia factorial dacă n==0 fact(n)=1 <- aceasta este partea apelului recursiv care nu se defineşte prin el însuşi (partea definită direct) altfel fact(n)=n*fact(n-1) <- se defineşte funcţia fact prin ea însăşi Funcţia fact recursivă: Cel mai mare divizor comun dacă a%b==0 cmmdc(a,b)=b altfel cmmdc(a,b)=cmmdc(b,a%b) Funcţia cmmdc recursivă: Recursivitatea nu conduce la coduri mai rapide şi nici la necesităţi de memorie mai mici. - convenabila pentru structuri de date definite recursiv (arbori) Codurile recursive sunt mai compacte şi uneori mai uşor de înţeles.

20 Tablouri Exemple colecţii de valori de acelaşi tip
plasate in zone contigue de memorie elementele - pot fi referentiate si accesate individual folosind un index - sunt indexate de la 0 la n-1 unde n reprezintă dimensiunea tabloului Exemple Este declarat un tablou unidimensional de 5 elemente şi elementele tabloului sunt apoi iniţializate cu valoarea 0. float medii[10]; medii[10]=9.85; int a[5]; int i; for(i=0;i<5;i++) a[i]=0; float x[6]; x[1] = 12; x[2]=34; … x[5] = 14; //x[0] = nedefinit !! float x[6] = {12, 34, 1, 9, 14} //rezultă: x[0] = 12; ... x[4] = 14; şi x[5] = nedefinit !!

21 Care va fi output-ul urmatorului program

22 Care va fi output-ul urmatorului program
Fara _kbhit() si fara <conio.h>

23 Tema: Modificati programul de mai sus astfel incat sa se tipareasca notatia tablei de sah:

24 Şirurile de caractere trebuie cuprinse între " ".
Şiruri de caractere Citirea şi tipărirea şirurilor - cu funcţiile gets( ) şi puts( ) - tablouri cu elemente de tip char (caractere). Exemple: #include <string.h> char nume[20]; gets(nume); puts(nume); char nume[20], prenume[20]; char nume[20] = "Popescu"; Şirurile de caractere trebuie cuprinse între " ". Dacă avem declaraţia: char nume[20] = "Popescu”; Atunci o reiniţializare de forma: nume = "Ionescu" va produce o eroare. Iniţializare şirurilor: - la declararea lor - folosind funcţia strcpy (string copy) # include <stdio.h> char nume[20] = "Popescu"; strcpy (nume, "Ionescu");

25 - este scris folosind secvenţa escape '\0’
Un şir de caractere este terminat cu caracterul NULL (caracterul '\0'). Exemplu Sirul de caractere "Programare" este stocat în tabloul de caractere sircar[] după cum urmează: char sircar[DIM] sircar[0]='P'; sircar[1]='r'; sircar[2]='o‘; sircar[3]='g‘ sircar[4]='r' sircar[5]='a'; sircar[6]='m'; sircar[7]='a'; sircar[8]='r’ sircar[9]='e'; sircar[10]='\0'; Caracterul NULL - este scris folosind secvenţa escape '\0’ - este definit în <stdio.h> - valoarea sa ASCII este 0. Exemple printf("String1:\t"); strcpy(S1,"testare\0siruri"); //’\0’ = NULL printf("\n%s",S1); l1=strlen(S1); printf("\nLungimea sirului 1: %d\n",l1); printf("String1:\t"); strcpy(S1,"testare\\0siruri"); //’\0’ = NULL printf("\n%s",S1); l1=strlen(S1); printf("\nLungimea sirului 1: %d\n",l1);

26 http://www.cplusplus.com/reference/ Exemplificare strcmp() si strlen()
strcmpy int strcmp ( const char * str1, const char * str2 ); Compare two strings Compares the C string str1 to the C string str2. This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ or until a terminating null-character is reached. This function performs a binary comparison of the characters. Parameters str1 C string to be compared. str2 Return Value Returns an integral value indicating the relationship between the strings: A zero value indicates that both strings are equal. A value greater than zero indicates that the first character that does not match has a greater value in str1 than instr2; And a value less than zero indicates the opposite. strcmp este utila la ordonarea alfabetica a cuvintelor!

27 http://www.cplusplus.com/reference/ Exemplificare strcmp() si strlen()
size_t strlen ( const char * str ); Get string length Returns the length of the C string str. The length of a C string is determined by the terminating null-character: A C string is as long as the number of characters between the beginning of the string and the terminating null character (without including the terminating null character itself). This should not be confused with the size of the array that holds the string. For example: char mystr[100]="test string";  defines an array of characters with a size of 100 chars, but the C string with which mystr has been initialized has a length of only 11 characters. Therefore, while sizeof(mystr) evaluates to 100, strlen(mystr) returns 11. In C++, char_traits::length implements the same behavior. Parameters str C string. Return Value The length of string. 

28 Secvenţe escape coduri de control (spaţii albe), folosite pentru specificarea formatelor de scriere a datelor constau din combinaţii dintre un caracter backslash \ urmat de o literă sau de o combinaţie de cifre . Setul de secvente escape în C: Unele secvenţe escape sunt specifice perifericelor folosite. \v (tabulator vertical) şi \f (pagină nouă la imprimantă) nu afectează formatul de ieşire al datelor pe monitor ci numai la imprimantă. Exemple: printf("\nSuma celor %d numere este %g\t\a“,n,s); Suma celor 5 numere este ♫_ (cursor)

29 #define fis_intrare "d:\\fiz1r\\centru.dat“
printf("\n\tSem I\t\tSem II"); for(i=1; i<=nrstud; i++) printf("\n%d:\t%5.2f\t\t%5.2f",i,medsem1[i],medsem2[i]); Sem I Sem II 1: 2: 3: #define fis_intrare "d:\\fiz1r\\centru.dat“ Pentru despărţirea directoarelor într-o cale de directoare scrisă într-un program C trebuie folosite două caractere backslash (\\).

30 Codul ASCII (American Standard Code for Information Interchange)
cod standard de reprezentare a caracterelor ca valori întregi pe 7 biţi. introdus pentru a se obţine o compatibilitate între tipuri diferite de echipamente folosite la procesarea datelor. ASCII standard constă din 128 de numere întregi (reprezentate pe 7 biţi, cu valori între 0 şi 127) atribuite unor caractere (cele englezeşti), numere, semne de punctuaţie, celor mai uzuale caractere speciale şi unor coduri de control (comenzi) netipăribile (primele 32 de caractere). Codul ASCII extins constă de asemenea din 128 numere întregi, cu valori între 128 şi 255 (pentru reprezentarea lor folosindu-se toţi cei 8 biţi ai unui octet), care reprezintă caractere suplimentare din alte limbi, simboluri matematice, grafice, caractere speciale sau sau simboluri ale unor monede străine. Folosirea acestor coduri face posibilă şi prelucrarea caracterelor, nu numai a numerelor.

31 Codul ASCII standard

32 Codul ASCII extins


Download ppt "CURS 3 Limbajul C dezvoltat între anii 1969-1973 (D.M.Ritchie), o dată cu dezvoltarea sistemului de operare Unix. (Ken Thompson & D.M.Ritchie); 1972 -"

Similar presentations


Ads by Google