Documente Academic
Documente Profesional
Documente Cultură
CALCULATOARELOR SI
LIMBAJE DE
PROGRAMARE I
2010/2011 - Suceava
PSEUDOCOD
Reprezentarea Citirea
operaţiilor de
bază
Atribuirea
Scrierea
Oprirea
PROGRAMAREA
CALCULATOARELOR SI Există trei tipuri de structuri fundamentale care eflectă
LIMBAJE DE cele trei tipuri de raţionamente umane elementare:
PROGRAMARE I • Secvenţa,
• Decizia,
2010/2011 - Suceava • Repetiţia.
int a, b, suma
scrie “\nIntrodu doua valori: “
citeste a, b
suma = a+b
scrie “\nsuma = “, suma
stop
PROGRAMAREA
CALCULATOARELOR SI ¨
Structura decizională
LIMBAJE DE
PROGRAMARE I Sunt posibile următoarele forme de structură decizionale
care exprimă o decizie ce trebuie luată în cursul
2010/2011 - Suceava execuţiei unui algoritm.
Decizionala. Forma I
PSEUDOCOD dacă <condiţie> atunci <operaţie_de_bază> n
Reprezentarea Execuţie:
structurilor de
- se evaluează expresia logică <condiţie>
- dacă rezultatul este adevărat se execută <operaţie_de_bază>,
control altfel se trece la structura următoare din algoritm.
Decizionala. Forma II
┌ dacă <condiţie> atunci
│ <secventă>
│
└ n
Execuţie:
- se evaluează expresia logică <condiţie>
- dacă rezultatul este adevărat se execută <secvenţă>, altfel
se trece direct la structura următoare.
PROGRAMAREA
CALCULATOARELOR SI ¨ Decizionala. Forma III
┌ dacă <condiţie> atunci
LIMBAJE DE │ <secvenţa_1>
PROGRAMARE I │ altfel
│ <secvenţa_2>
2010/2011 - Suceava │
└ n
PSEUDOCOD Execuţie:
- se evaluează expresia logică <condiţie>
- dacă rezultatul este adevărat se execută <secvenţa_1>,
Reprezentarea altfel se execută <secvenţa_2>.
structurilor de - se trece apoi la secvenţa următoare.
control Observaţie.
Nu este corectă utilizarea unei structuri decizionale care
să aibă doar ramura altfel, ramura atunci fiind vidă.
daca A == 0 atunci
PSEUDOCOD daca B == 0 atunci
scrie "\nO infinitate de solutii"
Reprezentarea altfel
structurilor de scrie "\nFara solutii"
@
control altfel
scrie "\nX = ", -B/A
@
stop
PROGRAMAREA
Rezolvarea ecuatiei de gradul II
CALCULATOARELOR SI
float A, B, C, delta
LIMBAJE DE scrie "\nRezolvare ec gr. I: Ax^2 + Bx + C = 0"
PROGRAMARE I scrie "\nIntrodu A, B, C: "
citeste A, B, C
2010/2011 - Suceava
daca A == 0 atunci
daca B == 0 atunci
daca C == 0 atunci
PSEUDOCOD scrie "\nO infinitate de solutii"
altfel
Reprezentarea scrie "\nFara solutii"
@
structurilor de altfel
scrie "\nX = ", -C/B
control
@
altfel
delta = B*B - 4*A*C
daca delta >= 0 atunci
scrie "\nX1 = ", (B*B + sqrt( delta ))/2/A
scrie "\nX2 = ", (B*B - sqrt( delta ))/2/A
altfel
scrie "\nX1 = ", (B*B)/2/A, "+i", sqrt(-delta)/2/A
scrie "\nX2 = ", (B*B)/2/A, "-i", sqrt(-delta)/2/A
@
@
stop
PROGRAMAREA Structura repetitivă
CALCULATOARELOR SI ¨ Structurile repetitive permit comanda execuţiei
LIMBAJE DE repetate a unei secvenţe funcţie de respectarea unei
anumite condiţii de oprire.
PROGRAMARE I Există trei forme distincte de repetiţii:
2010/2011 - Suceava cu test iniţial,
cu test final şi
cu contor.
structurilor de
control Explicatie
structurilor de
control Observatii
1. Parantezele [ şi ] denotă faptul că ceea ce este cuprins între ele este
opţional.
2. Valoarea expresiei <pas> reprezintă incrementul cu care este
modificată valoarea variabilei <contor> după fiecare execuţie a
secvenţei.
3. Dacă nu este prezentă în mod explicit atunci valoarea incrementului
este 1.
4. De reţinut că incrementul poate lua valori pozitive sau negative.
PROGRAMAREA Execuţia structurii pentru în cazul pas>0
CALCULATOARELOR SI ¨
LIMBAJE DE i) se iniţializează <contor> cu <val_iniţială>;
PROGRAMARE I ii) se verifică dacă valoarea contorului este mai mică sau egală
cu <val_finală>.
2010/2011 - Suceava In situaţia în care această inegalitate nu este respectată,
execuţia structurii pentru se termină şi se trece la următoarea
structură de control din algoritm.
iii) dacă inegalitatea este respectată se execută <secvenţa>;
PSEUDOCOD iv) se execută <contor> = <contor> + <pas> ;
structurilor de
control Execuţia structurii pentru cazul în care pas<0
structurilor de └ n
control Observatie
Enunţul nestandard *)schimbă între ele x(i-1) şi x(i) poate fi
înlocuit prin secvenţa de enunţuri standard
salv = x(i-1)
x(i-1) = x(i)
x(i) = salv
PROGRAMAREA
CALCULATOARELOR SI ¨ Exemplul I
Calculul sumei mai multor numere întregi.
LIMBAJE DE
Numerele vor fi citite de la dispozitivul de intrare
PROGRAMARE I pînă ce se va introduce o valoare nulă.
2010/2011 - Suceava
Soluţie.
1. Algoritmul va iniţializa cu 0 o variabilă numită suma.
2. Pe măsură ce numerele vor fi citite de la dispozitivul de
intrare, vor fi adunate la această variabilă.
PSEUDOCOD
int x, suma
Exemple de suma=0
scrie “Introdu un sir terminat cu 0”
algoritmi //citeşte x
┌ repetă
│ citeşte x
│ suma = suma + x
└ până când x==0
scrie "Suma= ", suma
stop
PROGRAMAREA
CALCULATOARELOR SI ¨ Exemplul II
LIMBAJE DE Calculul lui N!. Solutia data va folosi metoda de
calcul a factorialului in varianta iterativa.
PROGRAMARE I N! = 1*2*3* … *N
2010/2011 - Suceava
Definitii Iterativitate := Repetarea unui acelasi set de
operaţii asupra unor date diferite
Recursivitate := Repetarea unui set de operaţii,
asupra datelor obţinute la iteraţia anterioară
PSEUDOCOD
Observatie.
Structura decizională dacă a fost necesară pentru a preveni
Exemple de afişarea unui rezultat absurd ca urmare a unei greşeli de
introducere a datelor..
algoritmi
int n,f
citeşte n
┌─dacă n<0 atunci
│ scrie "Număr ilegal"
│ altfel
│ f=1
│ ┌ pentru i=2,n execută
│ │ f=f*i
│ └─n
│ scrie n,"!=",f
└n
stop
PROGRAMAREA
CALCULATOARELOR SI ¨ Exemplul III
Scrieţi un algoritm care citeste elementele unui vector
LIMBAJE DE şi determia valoarea minimă a acestor elemente cat şi
poziţia ei în vector.
PROGRAMARE I
float x(20), xmin
2010/2011 - Suceava int i,n,l
citeşte n
┌─pentru i=1,n execută
│ citeşte x(i)
PSEUDOCOD └ n
xmin=x(1)
l=1
┌ pentru i=2,n execută
Exemple de │ ┌ dacă xmin>x(i) atunci
│ │ xmin = x(i)
algoritmi │ │ l=i
│ └ n
└ n
scrie "Min=", xmin, " se află pe poziţia", l,
l=1 stop
┌ pentru i=1,n execută
TEMA:
│ citeşte x(i)
Rezolvati algoritmul intr-o singura structura repetitiva,
│ dacă x(l) > x(i) atunci l=i n
fara memorarea elementelor
└─n
scrie "Min=",x(l),"pe poziţia",l
Observaţie:
stop
Programul putea fi construit cu ajutorul unei singure
structuri pentru şi chiar fără utilizarea unei variabile
suplimentare
PROGRAMAREA
CALCULATOARELOR SI ¨ Exemplul IV
Scrieţi un algoritm care să citească o matrice pătrată de
LIMBAJE DE numere reale şi să înlocuiască elementele aii de pe diagonala
principală cu media aritmetică a elementelor de pe linia i.
PROGRAMARE I
float A[20,20]
2010/2011 - Suceava int i,j,n
citeşte n
┌─pentru i=1,n execută
│ ┌─pentru j=1,n execută
PSEUDOCOD │ │ citeşte A[i,j]
│ └ n
└ n
┌─pentru i=1,n execută
Exemple de │ S=0
algoritmi │ ┌─pentru j=1,n execută
│ │ S=S+A[i,j]
│ └ n
│ A[i,i]=S/n
└ n
… tema individuala …
*) afişare matrice
stop
Observatie
Enunţul nestandard din algoritmul de mai sus se
explicitează printr-o secvenţă asemănătoare cu cea
utilizată la citirea matricii.
PROGRAMAREA
CALCULATOARELOR SI ¨ Exemplul V
Să se scrie un algoritm care să determine şi să afişeze factorii
LIMBAJE DE primi ai unui număr introdus de utilizator.
PROGRAMARE I Soluţie
Ideea acestui algoritm este dată în următoarea reprezentare,
2010/2011 - Suceava conţinând şi enunţuri pseudocod nestandard, care constituie o
primă abordare a problemei:
citeşte N
PSEUDOCOD D = 2
┌ repetă
│ *) diviz. repetată (de E ori) a lui N cu D
│ dacă E>0 atunci scrie D, En
│ *) treci la următorul D
Exemple de └ până când N = 1
algoritmi
stop
p = ∑xi • yi
n
i=1