Curs 1-Abordarea problemelor de programare - users.utcluj.rousers.utcluj.ro/~claudiah/Programarea...
Transcript of Curs 1-Abordarea problemelor de programare - users.utcluj.rousers.utcluj.ro/~claudiah/Programarea...
Limbajele C si C++ C - este un limbaj de programare standardizat, compilat, de nivel mediu
- este cel mai popular limbaj de programare pentru scrierea de software de sistem
- sintaxa acestuia sta la baza multor limbaje create ulterior si foarte populare in prezent: C++,
Java, JavaScript, C#
1972- limbajul de programare C a fost inventat si implementat pentru prima oara
-principalul scop pentru care a fost realizat limbajul C a fost rescrierea sistemului de operare
UNIX, pentru a-l face portabil pe toate platformele existente
-odata cu cresterea popularitatii calculatoarelor personale,au fost create numeroase
implementari de C
1980-interesul pentru programarea pe obiecte creste si duce la aparitia de limbaje care sa permita
utilizarea acestui nou concept in scrierea programelor
- crearea limbajului C++ care este o extindere a limbajului C care permite utilizarea principalelor
ale programarii orientate pe obiecte
Scurt istoric al limbajelor C si C++
Descrierea algoritmilor
Rezolvarea unei probleme de programare implica parcurgerea urmatoarelor etape:
Definirea problemelor si identificarea solutiilor
Descrierea algoritmului in pseudocod sau prin schema logica
Scrierea programului in limbajul de programare dorit
Testarea si depanarea programului
Algoritm=concept folosit pentru a desemna o multime finita de operatii, complet ordonata in timp,
care pornind de la date de intrare produce intr-un timp finit date de iesire
Pseudocod=limbaj de descriereal algoritmilor care permite exprimarea clara a modului de rezolvare
al problemei
Schema logica= reprezentare grafica aunui algoritm prin intermediul unor blocuri si simboluri
speciale care indica tipul operatiilor si ordinea efectuarii lor
Program= reprezentarea unui algortm intr-un limbaj de programare
Blocurile utilizate in cadrul unei scheme logice Simbol Semnificatie
Bloc terminal, indica inceputul/sfarsitul
schemei logice
Procesul de calcul (operatii de atribuire)
Operatii de I/O (citire/afisare)
Linie de flux
Conector
Bloc decizional sau bloc de test
Exemple Determinati ipotenuza unui triunghi dreptunghic in cazul in care dimensiunea catetelor
este cunoscuta
Algoritm Schema logica
Citim catetele a,b de la tastatura
Calculam ipotenuza c = 𝑎2 + 𝑏2
Afisam valoarea ipotenuzei c pe monitor
start
read a,b
c = 𝑎2 + 𝑏2
write c
end
Sa se scrie algoritmul si schema logica pentru calcularea valorii f(x) a functiei, pentru
orice x citit de la tastatura
Algoritm Schema logica
Se citeste x de la tastatura
Se compara x cu 0:
Daca x<0 atunci f(x)= 4𝑥2 + 2𝑥 − 3
Altfel daca x=0 atunci f(x)=12
altfel f(x)=3x+1
Se afiseaza f(x)
𝑓 𝑥 = 4𝑥2 + 2𝑥 − 3 , 𝑥 < 0
12, 𝑥 = 03𝑥 + 1, 𝑥 > 0
start
read x
X<0
𝑓𝑥 = 4𝑥2 + 2𝑥 − 3
T F
X=0 F T
𝑓𝑥 =12 𝑓𝑥 = 3𝑥 + 1
write fx
end
Se considera un sir format din n termeni intregi care se citesc de la tastatura. Sa se scrie algoritmul si schema logica pentru calcularea sumei si produsului termenilor sirului si determinarea termenului cu valoarea maxina si a pozitiei acestuia in sir.
Algoritm
Citeste dimensiunea n si valorile ai ale
sirului de la tastatura
Initializam S=0
p=1
Max=a0
Im=1
i=0
Calculeaza s,p,max si im
Cat timp i<n calculeaza s=s+ai
Calculeaza p=p*ai
Compara max cu ai
Daca ai>max atunci max=ai,im=I
Incrementeaza contor i=i+1
Afiseaza s,p,max,im pe monitor
start
read n,ai
s=0,p=1,max=a0,im=1,i=0
i<n
T
F
s=s+ai,p=p*ai
Max<ai
T
Max=ai,im=i
i=i+1
write s,p,max,im
end
F
Structura generala a uni program C/C++ Etapele realizarii unui program in C/C++
Sectiunea preprocesor
#include <nume_fisier.h>
#include <nume_fisier.h>
…………………….
Sectiunea functiei main()
Void main()
{declaratii variabile si constante locale functiei main()
Sectiunea de instructiuni a programului
}
Sectiunea functiilor utilizatorului
start
Editare
Compilare
Corect
T
F
Link-editare
Corect
T
F
Executie
Corect
T
F
end
Debug
Tipurile de date in C/C++ Tip de
date
Cuvant
cheie
C/C++
Domeniu de valori Nr.
octeti
caracter Char -128…127 1
Unsigned char 0…255 1
intreg Int -32768…32767 2
Unsigned int 0…65535 2
Long -2147483648…2147483647 4
Unsigned long 0…4294967295 4
real Float 3.4*10-38…3.4*1038 4
Double 1.7*10-308…1.7*10308 8
Long double 3.4*10-4932…3.4*10 4932 10
Sir de
caractere
char - =nr.
Caract
Tip de date Tip variabila Caracter de
conversie
utilizat in
printf()/scanf()
Caracter Char %c
Sir de caractere Char %s
Intreg Int %d
Unsigned %u
Intreg cu semn Int %i
Intreg fara semn
in baza 16
Int/unsigned
%x
Intreg fara semn
in baza 8
Int/unsigned %o
Intreg Long %ld, %lu, %li,
%lx, %lo
Real Float %f
double %lf
Real in format
exponential
Float/double %e sau %E sau %g
sau %G
Variabile o utilizate pentru memorarea unor variabile
o Numele acestora este alcatuit din unul sau mai multe caractere fara a incepe cu
cifra sau liniuta de subliniere, nu poate contine spatii si caractere speciale”;”
o Cuvintele cheie nu pot fi folosite pentru a denumi o variabila:char, int, float,if,
etc.
<tip de date><identificator>=<initializator optional>
Ex: int a=25;
float b;
• Constante-are o valoare fixa , e case sensitive
const <tip de date><identificator>=<constanta>
Printf() –instructiunea de afisare/tiparire
- face parte din biblioteca <stdio.h>
printf(control, arg1, arg2,….)
control=(sir_caractere)(%)(caracter_conversie)(caracter_negrafic)
arg1, arg2, …=sunt expresii sau variabile ce vor fi tiparite
Scanf() –instructiunea de citire
- face parte din biblioteca <stdio.h>
scanf(control, &arg1, &arg2,….)
control=(sir_caractere)(%)(caracter_conversie)(caracter_negrafic)
arg1, arg2, …=sunt argumente care corespund adreselor zonelor de memorie
in care se pastreaza datele citite dupa ce au fost convertite la
formatul specificat de caracterul de control
Ex: int a,b; float rez;
printf(“dati valorile pentru a si b\n”);
scanf(“%d, %d”, &a,&b);
rez=a/b;
printf(“a=%d,b=%d,rez=%f ”,a,b,rez);
Caractere speciale:
\n -> Enter
\t -> Tab
char sir[]= abc ;
printf( *%10s*\n , sir); => * abc*
char sir[]= abc ;
printf( *%-10s*\n , sir); => *abc *
char sir[]= limbajul C++ ;
printf( *%15.10s*\n , sir); => * limbajul C*
char car= 'A ';
printf( *%-4c*\n , car); => *A *
int nr= 123;
printf( *%05d*\n , nr); => *00123*
int nr= 123;
printf( *%-5d*\n , nr); => *123 *
int nr= 12732;
printf( *%3d*\n , nr); => *12732*
float nr= 3.14159265;
printf( *%5f*\n , nr); => *3.141593*
float nr= 3.14159265;
printf ( *%7.2f*\n , nr); => * 3.14*
float nr= 3.14159265;
printf ( *%7.0f*\n , nr); => * 3*
float nr= 3.14159265;
printf( *%e*\n , nr); => *3.141593e+00*
float nr= 123.672;
printf( *%7f*\n , nr); => *123.672000*
float nr= 123.672;
printf( *%10.1f*\n , nr); => * 123.7*
float nr= 123.672;
printf( *%e*\n , nr); => *1.236720e+02*
float nr= 123.672;
printf( *%10.2e*\n , nr); => * 1.24e+02*