140 likes | 294 Views
Programare in limbajul C – Cursul 1 Introducere Prof. univ.dr. Constantin Popescu. Agenda. Istoric Argumente in favoarea utilizarii limbajului C Ciclul de dezvoltare a unui program C Exemple de programe C Compilarea unui program C Structura programelor. Istoric.
E N D
Programare in limbajul C – Cursul 1IntroducereProf. univ.dr. Constantin Popescu
Agenda • Istoric • Argumente in favoarea utilizarii limbajului C • Ciclul de dezvoltare a unui program C • Exemple de programe C • Compilarea unui program C • Structura programelor
Istoric • C a fost creat de Dennis Ritchie la AT&T Labs in 1972 • Initial creat sa proiecteze si sa sustina sistemul Unix. • Sunt numai 27 cuvinte cheie in versiunea originala C: • for, goto, if, else …… • Este usor de construit un compilator pentru C: • Multi programatori au scris compilatoare C • Compilatoarele C sunt disponibile pentru orice platforma • In 1983 American National Standards Institute (ANSI) a format un comitet pentru a stabili o definitie standard: • Numita ANSI Standard C. • Diferita de K&R C (aparuta in prima editie a cartii lui Brian Kernighan si Ritchie: The C Programming Language)
Argumente pentru C • C este un limbaj pentru programatori • BASIC a fost un limbaj pentru nonprogramatori sa rezolve probleme simple. • C a fost creat, influentat si testat de programatori. • C este puternic si eficient: • Se poate eficientiza codul. • Apelurile sistem si pointerii permit multe facilitati ca si limbajul de asamblare. • C este un limbaj structurat: • Codul poate fi scris si citit mult mai usor. • C este standardizat: • Programele ANSI C sunt compatibile cu orice compilator ANSI C.
Ciclul de dezvoltare a unui program C Editare Program Codul Sursa Compilator Codul Obiect Fisiere Biblioteca Executabil Leaga Codul Obiect
Exemplul 1 • Primul program pe care îl scrie oricine învaţă un nou limbaj de programare este un program care afişează pe ecran un şir de caractere: #include <stdio.h> int main ( ) { printf ("Hello, World!\n"); return 0; }
Compilarea programului C • Compilarea transforma codul sursa (din fisierul hello.c) in codul obiect (instructiuni dependente de calculatorul pe care se lucreaza). • Diferente la Java: • Compilatorul javac creaza codul byte Java din programul Java. • Codul byte este apoi executat de masina virtuala Java, astfel este independent de calculator. • Editorul de legaturi va genera fisierul executabil. • Exista multe compilatoare C sub Unix: • SUN are Compilatorul C Workshop, comanda cc • Compilatorul freeware GNU gcc
Exemplul 2 #include <stdio.h> /* tipareste cateva numere, pentru a ilustra o bucla*/ int main() { int i; for(i = 0; i < 10; i = i + 1) printf("i este %d\n", i); return 0; } • Primul element nou care apare în textul sursă este: /* tipareste cateva numere, pentru a ilustra o bucla */ • Această linie este un comentariu. • Tot ceea ce se pune între /* şi */ va fi ignorat de compilator • Poate fi util pentru cel care citeşte programul şi încearcă să-l înţeleagă.
Exemplul 3 #include <stdio.h> int main () { int radius, area; printf (“Introduce raza (de ex. 10) : "); scanf ( "%d", &radius); area = 3.14159 * radius * radius; printf ("\nSuprafata = %d\n\n", area); return 0; }
Exemplul 4 #include <stdio.h> int main () { int i, j; for (i = 0; i < 10; i++) { printf ("\n"); for (j = 0; j < i+1; j++ ) printf ( "A"); } printf("\n"); return 0; }
/* Program ce calculeaza produsul a doua numere */ #include <stdio.h> int product(int x, int y); int main () { int a,b,c; /* Se introduce primul numar */ printf (“Introduce un numar intre 1 si 100: "); scanf ("%d", &a); /* Se introduce al doilea numar */ printf (" Introduce un alt numar intre 1 si 100: "); scanf ("%d", &b); /* Calculeaza si afiseaza produsul */ c = product (a, b); printf ("%d x %d = %d \n", a, b, c); return 0; } /* Functia returneaza produsul celor doua argumente */ int product (int x, int y) { return (x*y); } Exemplul 5
Structura programelor • Codul sursă C este format din mai multe elemente lexicale. • Elementele lexicale pot fi: • Cuvinte, cum ar fi for, return, main sau i, care sunt fie cuvinte cheieale limbajului (for, return), fie identificatoripe care i-am ales pentru funcţiile şi variabilele noastre (main, i) • constantele, cum ar fi 1 sau 10 ce introduc noi valori în program • operatori: =, +, >, care manipulează variabile şi valori • caractere de punctuaţie (numiţi delimitatori) cum ar fi parantezele rotunde sau acoladele care indică modul în care sunt grupate celelalte elemente ale programului • toate elementele lexicale pot fi separate prin spaţii albe: spaţiu, tab, linie nouă.
Exemplu 6 • Fragmente de cod ce sunt tratate identic de compilator: for(i = 0; i < 10; i = i + 1) printf("%d\n", i); for(i = 0; i < 10; i = i + 1) printf("%d\n", i); for(i=0;i<10;i=i+1)printf("%d\n",i); for(i = 0; i < 10; i = i + 1) printf("%d\n", i); for ( i = 0 ; i < 10 ; i = i + 1 ) printf ( "%d\n" , i ) ; for (i=0; i<10;i= i+1)printf ("%d\n", i); • Toate secvenţele de mai sus sunt tratate identic de compilator.
Bibliografie • C. Popescu, I. Mang, D. Noje, H. Oros, Programarea în limbajul C, Editura Universităţii din Oradea, Oradea, 2002. • B. Kernighan, D. Ritchie, The C Programming Language, Second Edition, Prentice Hall, 1988.