Sunteți pe pagina 1din 25

Programarea calculatoarelor

Limbajul C

CURS 1

.l. Carmen Odub#&teanu

Bibliografie:
curs.cs.pub.ro Programarea Calculatoarelor seria 1CC Negrescu L - Limbajele C &i C++ pentru ncep#tori, volumul 1: Limbajul C, Ed. Albastr#, Cluj-Napoca, 2002 Florian Moraru Programarea Calculatoarelor Florian Moraru Programarea Calculatoarelor (culegere) Brian W. Kernighan, Dennis M. Ritchie - The C Programming Language http://www.eskimo.com/~scs/cclass/notes/top.html http://www.eskimo.com/~scs/cclass/int/top.html http://cermics.enpc.fr/~ts/C/cref.html http://www.cs.bath.ac.uk/~pjw/NOTES/ansi_c/ http://www.chris-lott.org/resources/cstyle/ http://www.infoiasi.ro/fcs/absolvire4info.html

Programarea calculatoarelor

Cuprins
Introducere
Algoritm &i obiectele acestuia Limbaje de programare Programare structurat# Scheme logice, pseudocod Exemple

Istoric limbaj C Elemente de baz# ale limbajului C


Tipuri de date &i constante Variabile &i operatori Expresii Func(ii I/O Instruc(iuni

Directive de preprocesare Vectori

Programarea calculatoarelor

Cuprins
Func(ii Pointeri Vectori &i pointeri Func(ii &i pointeri iruri de caractere Structuri Alocare dinamic# Fi&iere text &i fi&iere binare Programe complexe. Compil#ri separate. Fi&iere proiect. Conven(ii de programare

Programarea calculatoarelor

Obiective
Cursan(ii vor dobndi urm#toarele abilit#(i: S# scrie, s# compileze &i s# ruleze un program simplu C utiliznd mediul de dezvoltare DevCpp S# utilezeze corect elementele de baz# ale limbajului C S# foloseasca tipurile structurate de date (vectori, matrici, structuri) S# proiecteze &i s# implementeze programe modulare utiliznd definirea de func(ii proprii S# acceseze memoria folosind pointeri

Programarea calculatoarelor

Obiective
S# acceseze &i s# prelucreze date aflate in fi&iere S# proiecteze &i s# implementeze programe complexe sub form# de proiecte S# testeze &i s# depaneze un program C S# foloseasc# un stil de scriere a programelor ct mai eficient (comentarii, codific#ri) S# treac# examenul de PC &i examenele de programare care vor urma n anii urm#tori.
Uraaaaaa!

Programarea calculatoarelor

Obiective
Condi iile pentru dobndirea acestor capabilit! i?

Dar beneficiile?

Programarea calculatoarelor

Nota final
Prezen(a laborator Activitate laborator
Lucr#ri neanun(ate de maxim 30 min cu probleme asem#n#toare sau chiar din laborator (laboratoarele anterioare + cel curent)

Lucr#ri curs (?) Total din timpul semestrului: maxim 4p

Examen final
condi(ie de intrare n examen: 50% din punctajul maxim din timpul semestrului
Teme de cas# pentru cei care vor s# lucreze mai mult - bonus (?)
Programarea calculatoarelor

Exemplu
x2-2, x<0 F(x)= 3, x=0 x+2, x>0 x = {-3, 0,1,7, 2.23, etc} 100 valori Etape
1. 2. 3.

Elaborare algoritm Transpunere algoritm n limbaj de programare Rulare &i ... din nou etapa 1 dac# nu am ob(inut ce trebuia
Programarea calculatoarelor

Algoritm
Succesiune de etape ce se poate aplica mecanic pentru rezolvarea unei clase de probleme Redactare
Scheme logice Pseudocod Mental cine &i permite?

Cerin(e
Claritate f#r# ambiguit#(i Generalitate pentru o ntreag# clas# de probleme Finitudine furnizare rezultat n timp finit Obs: O problem poate avea mai mul#i algoritmi de rezolvare cel mai bun?
Programarea calculatoarelor

Obiecte cu care lucreaz algoritmii


Date
Intrare Ie&ire

Dup# tipul lor:


ntregi: 2, -4 Reale: 3.25 Logice: true &i false Caracter: y ir de caractere: ab23_c

Constante: date con(inute n program f#r# a fi citite sau calculate - )


Programarea calculatoarelor

Obiecte cu care lucreaz algoritmii


Variabile: nume unic, con(inut diferit
Nume Tip Valoarea la un moment dat Locul n memorie (adresa) x1, x2, x3.... -> x F(x1), F(x2), F(x3), ... -> F x este de tipul real, are valoarea 3 la un moment dat &i se afl# n memorie la adresa 0xFF32
Programarea calculatoarelor

Obiecte cu care lucreaz algoritmii


Expresii
Construite cu constante, variabile, operatori De mai multe tipuri, ca &i variabilele: 3*x+7, x<y, etc

Opera(ii
Intrare: preluarea unei date de la un dispozitiv de intrare Ie&ire: trecerea unei date din memorie c#tre un dispozitiv de ie&ire Atribuire: x=3; y=x; y=x+y
Se evalueaz# expresia din dreapta atribuirii Valoarea ob(inut# este atribuit# variabilei din stnga, care &i pierde vechea valoare

Decizie

Programarea calculatoarelor

Program
Descriere precis# &i concis# a unui algoritm ntr-un anumit limbaj de programare

Programarea calculatoarelor

Limbaje de programare
Limbaje de nivel cobort, dependente de calculator: Limbaj ma&in# Limbaj de asamblare mnemonice pentru opera(iuni simboluri pentru adrese greu, dar interesant!

Programarea calculatoarelor

Limbaje de programare
Limbaje de nivel nalt, independente de structura calculatorului:
Fortran (FORmula TRANslation) 1955, IBM, probleme tehnico-&tiin(ifice Cobol 1959, probleme economice Programare structurat# 70 Programare orientat# pe obiecte 80

Programarea calculatoarelor

Programare structurat
Dijkstra &i Hoare Programarea in care abordarea este topdown: descompunerea problemei complexe n subprobleme mai simple - modul Teorema de structur# a lui Bohm &i Jacopini: orice algoritm poate fi compus din numai trei structuri de calcul:
structura secven(ial# - secven(a; structura alternativ# - decizia; structura repetitiv# - ciclul. o singur# intrare &i o singur# ie&ire pentru fiecare
Programarea calculatoarelor

Opera#ii auxiliare
Start/Stop
Start

Stop

Ac(iuni nedetaliate

Prelucrare

Programarea calculatoarelor

Secven#a
Atribuirea: opera(ia prin care unei variabile i se atribuie o valoare. Opera(iile de intrare/ie&ire: programatorul ia de la tastatur# o valoare (intrarea) afi&eaz# pe ecran o valoare (ie&irea) Pseudocod:
i=7; citeste a; scrie a;

Exemplu: Citirea &i scrierea unei valori.

Programarea calculatoarelor

Decizia
O ntrebare ridicat# de programator la un moment dat n program. In func(ie de r#spunsul la ntrebare - care poate fi ori Da, ori Nu - programul se continu# pe una din ramuri. daca conditie adevarata instructiuni1; altfel instructiuni2; S# se afi&eze maximul dintre dou# valori a &i b.
Programarea calculatoarelor

Structura alternativ
Caz particular decizie
Condi(ie Instruc(iunile care se execut# dac# respectiva condi(ie este adevarat# Instruc(iunile care se execut# dac# este fals#.

Rezolvarea ecua(iei de grad 1: ax+b=0

Programarea calculatoarelor

Structura repetitiv cu conditie ini#ial


O condi(ie, care se afl# la nceput Un bloc de instruc(iuni, care se execut# dac# rezultatul evaluarii condi(iei este adev#rat atata timp cat conditie adevarata instructiuni S# se afi&eze suma primelor n numere naturale, n citit de la tastatur#.

Programarea calculatoarelor

Structura repetitiv cu condi#ie final


Bloc de instruc(iuni, apoi condi(ie. Obs: Blocul de instruc(iuni se execut# minim o dat#, spre deosebire de structura repetitiv# cu test ini(ial, unde blocul de instruc(iuni era posibil s# nu se execute deloc, dac# rezultatul evalu#rii condi(iei ini(iale era fals. executa { instructiuni } atata timp cat conditie adevarata

Programarea calculatoarelor

Structura repetitiv cu contor


Caz particular al structurii de control cu test ini(ial. Utilizeaz# o variabil# pe care o folose&te ca un contor.
pleac# de la o valoare; ajunge la o valoare; nainteaz# cu un pas.

pentru contor de la val_initiala la val_finala cu pasul pas instructiuni Suma primelor n numere naturale

Programarea calculatoarelor

Probleme propuse
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

Interschimbul valorilor a dou# variabile a &i b. Rezolvarea ecua(iei de grad 2: ax2+bx+c=0. S# se afi&eze n ordine cresc#toare valorile a 3 variabile a, b &i c. S# se calculeze &i s# se afi&eze suma: S=1+1*2+1*2*3+..+n! S# se calculeze &i s# se afi&eze suma cifrelor unui num#r natural n. S# se calculeze &i s# se afi&eze inversul unui num#r natural n. S# se afi&eze dac# un num#r natural dat x este prim. S# se afi&eze primele n numere naturale prime. S# se descompun# n factori primi un num#r dat n. S# se afi&eze toate numerele naturale mai mici dect 10000 care se pot descompune n dou# moduri diferite ca sum# de dou# cuburi.
Programarea calculatoarelor