Documente Academic
Documente Profesional
Documente Cultură
Limbajul C
CURS 1
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
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)
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
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;
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#.
Programarea calculatoarelor
Programarea calculatoarelor
Programarea calculatoarelor
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