13
Asist.dr.ing. Claudia Hebedean Curs 1-Abordarea problemelor de programare

Curs 1-Abordarea problemelor de programare - users.utcluj.rousers.utcluj.ro/~claudiah/Programarea calculatoarelor si limbaje de...Rezolvarea unei probleme de programare implica parcurgerea

  • Upload
    others

  • View
    39

  • Download
    1

Embed Size (px)

Citation preview

Asist.dr.ing. Claudia Hebedean

Curs 1-Abordarea problemelor de

programare

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*