s.l.dr.ing.Ciprian -Bogdan Chirila chirila@cs.upt.ro http://www.cs.upt.ro/~chirilaALGORITMI , SCHEME LOGICE SI PSEUDOCOD Structura cursului •Notiunea… [612187]
s.l.dr.ing.Ciprian -Bogdan Chirila
[anonimizat]
http://www.cs.upt.ro/~chirilaALGORITMI , SCHEME
LOGICE SI
PSEUDOCOD
Structura cursului
•Notiunea de algoritm
•Operatii de baza
•Structuri de control de baza
Notiunea de algoritm
•provine din limba arabă
•vine de la numele matematicianului și astrologului arab
Al-Khowarizmi care a trăit în secolul IX
•un tipar de gândire pentru rezolvarea unei probleme
intr-un numar finit de pasi
•un mod de gândire adică gândirea algoritmică
Exemplu de algoritm
•Pasii calculul mediei artimetice a două numere sunt:
•1 -start;
•2 -citește primul număr;
•3 -citește al doilea număr;
•4 -calculează suma lor;
•5 -împarte rezultatul la 2;
•6 -afișează rezultatul calculat;
•7 -stop.
Moduri de exprimare a algoritmilor
•Limbaj natural
•fraze coerente in limba romana care permit obtinerea unei
solutii pentru o problema data.
•Scheme logice
•diagrame de blocuri
•Pseudocod
•propozitii scurte
•cu cuvinte cheie predefinite
•exprimate in engleza sau romana
Schemele logice
•Schemele logice sunt notații grafice formate din blocuri
legate între ele prin săgeți
•O schemă logică descrie grafic pașii unui algoritm
•Totodată ea specifică prelucrările care se execută
asupra datelor
Datele din schemele logice
•variabile
•sunt zone de memorie care își schimbă valoarea și care se
caracterizează printr -un nume
•numele poate fi format dintr -o înșiruire de
•litere mari
•litere mici
•cifre
•semnul underscore “_”
•numele unei variabile începe în mod obligatoriu cu literă
•exemple :
•Aria
•aria
•perimetru
•delta
Datele din schemele logice
•constante explicite
•zone de memorie cu valori fixe, dar fără nume
•apar in textul schemei in atribuirea i=1
•constante simbolice
•zone de memorie cu valori fixe și cu nume
•de exemplu in PI*r*r
•evident caeletrebuiesc definite undeva
Operatii de baza -blocurile
•Blocul de start
•Blocul de stop
•Blocul de citire
•Blocul de scriere
•Blocul de atribuire
•Blocul de decizie
Orientarea blocurilor
•“Curg ” pepagina de sus in jos
•Se dezvolta arborescent
•Sunt legate intre eleprin sageti directionale
•Conectori de pagina
•leaga blocuri aflate peaceeasi foaie de hartie
•cerculete cu numere in ele
•Conectori intre pagini
•leaga blocuri aflate pefoide hartie diferite
•sagetute pline cu numere in ele
Blocurile de start
•este unic in cadrul unei scheme logice
•reprezinta punctul de pornire al schemei
•are forma ovala
•scrie in el cuvantul predefinit start
Blocul de stop
•este unic in cadrul unei scheme logice
•trebuie atins intr-un numar finit de pasi
Blocul de intrare
•se mai numeste sibloc de citire
•opreste executia unui progra m
•citeste de la tastatura valori pecare le stocheaza in
variabile
•tastatura –dispozitiv de intrare
•estesimbolizat printr -un trapez cu baza mare sus
Blocul de intrare
•Tipuri de variabile cepot fi cititte
•Numere intregi
•1, 77, 25
•Numere reale
•1.5, 6.7
•Siruri de caractere
•se citesc toate impreuna
•“nota de la UPC este ”
•“am luat examenul la UPC cu nota”
Exemple de utilizare
•citeste de la tastatura variabile simple x,y,z in ordine
•citeste de la tastatura elementul a[i] al unui sir sau
tablou unidimensional
•citeste de la tastatura elementul a[i][j] care este
•elementul unei matrici
•ireprezinta linia , iarj coloana elementului citit
•Tablourile simatricile se citesc element cu element!!!
Blocul de iesire
•Se mai numeste sibloc de scriere
•Are caefect afisarea valorilor unor variabile peecran
•Ecranul -dispozitiv de iesire
•Reprezentat printr -un trapez cu baza mare jos
Exemple de utilizare
•Afiseaza variabilele simple x,y,z
•Afiseaza elementul a[i] al sirului a
•Afiseaza a[i][j] care este
•elementul unei matrici a
•ireprezinta linia , iarj coloana elementului afisat
•Tablourile simatricile se afiseaza element cu element!!!
Blocul de atribuire
•are rolul de a da valori noi unor variabile
•valorile anterioare ale acelor variabile se vor pierde
•unele atribuiri se pot folosi de valorile “vechi” ale
variabilei ce primește noua valoare
•De exemplu in i=i+1
•inseamna canoul ivafi egal cu vechiul iplus o unitate
•daca iavea valoarea 7 inainte de atribuire atunci dupa
atribuire ivaavea valoarea 8
•estesimbolizat prin dreptunghi
Componentele unei atribuiri
•in partea stângă a semnului egal al unei atribuiri se află
•obligatoriu o variabila ce va primi noua valoare
•în partea dreaptă a semnului egal se află
•o expresie care va fi evaluată iar valoarea rezultată se
atribuie variabilei
Exemplu de utilizare
•i=i+1
•a[i]=7.5
•elementul al i-lea din sirul de reale devine egal cu 7.5
•a[i][j]=70
•elementul de pelinia isicoloana j devine 70
•s=“upc”
•variabila s iavaloarea sirului de caractere “upc”
Blocul de decizie
•din puncte de vedere grafic este reprezentat printr -un
romb
•din el pot ieși în orice direcții două săgeți
corespunzătoare celor două căi de execuție a
algoritmului
Blocul de decizie
•are rolul de a ramifica cursul de execuție ale unui
algoritm
•algoritmul se va executa după acest bloc doar pe una
din ramurile sale
•fie pe ramura cu DA
•fie pe ramura cu NU
•decizia de a alege o ramură sau pe cealaltă se face pe
baza evaluării condiției din bloc
Conditia unui bloc de decizie
•ocondiție este o expresie matematică care
•dacă este evaluată la valoarea zero se consideră falsă
•dacă e evaluată la orice altă valoare diferită de zero se
consideră adevărată
•spre exemplu
•7, -1, 22, 107 se consideră toate valori adevărate
•o (zero) se consideră fals
Conditia unui bloc de decizie
•Pentru exprimarea conditiei se pot folosi operatori
matematici
•Relationali
•Mai mic <, Mai mare >
•Mai mic sau egal <=, Mai mare sau egal >=,
•egal ==, diferit !=
•Logici
•SI &&, SAU ||
•Paranteze pentru expresii logice complexe
•Rezultatul trebuie safie boolean adica adevarat sau fals
Exemple de utilizare
Exemple de utilizare
Structuri de control
•Secventa
•Selectia
•Ciclul cu test initial
•Ciclul cu test final
•Ciclul cu contor
Secventa
Secventa
•cea mai simplă structură de control
•esteo notatie abstracta folosita pentru a defini alte
structuri de control
•nu se foloseste direct in schemele logice
•presupune execuția unui șir ordonat de operații de bază
din cele prezentate anterior
•de exemplu o secvență poate cuprinde
•o citire
•două atribuiri
•o decizie
•din punct de vedere grafic secvența este reprezentată
printr -un dreptunghi marcat pe margini cu două linii
verticale
Selectia
Selectia
•are rolul de a selecta o secvență din două pentru execuție în
funcție de valoarea condiției
•conține
•un bloc de selecție
•cele două secvențe ce se execută atunci cand condiția evaluată
este adevărată respectiv falsă
•Diferența între un bloc de selecție și o structură de selecție
•este aceea că o structură de selecție totdeauna va include un bloc
de selecție
•adică blocul de selecție este parte componentă a structurii de
selecție pe lângă cele două secvențe
•Din punct de vedere grafic structura de control nu implică
vre-un element grafic nou deoarece este reprezentată prin
elementele grafice corespunzătoare blocului de decizie
Selectia cu o singura secventa
Ciclul cu test initial
Ciclul cu test intial
•este formată dintr -o
•condiție
•secvență
•conectate cain figura
•împreună cu secvența și selecția pot fi folosite pentru a
scrie orice algoritm
Functionare
•cât timp condiția este adevărată
•seva executa secvența în mod repetat
•reamintim că secvența reprezintă un șir ordonat de
operații de bază
Reprezentare grafica
•nu apar forme noi
•apar blocurile corespunzătoa re
•blocului decizional
•secvenț a
•sunt aranjate astfel încât
•prima dată să se execute condiția
•apoi dacă este adevărată, pe ramura DA să avem secvența
•pe urmă să revenim în punctul inițial unde evaluăm condiția
din nou
•procesul se repe ta
•putem spune că aranjamentul blocurilor formează o
buclă
Ciclul cu test intial
•Scopul unei astfel de construții este :
•să avem o condiție adevărată când traversăm inițial blocul
condițional
•se execută secvența care are rolul de a modifica variabilele
condiției
•după un număr finit de treceri condiția trebuie să devină falsă
•se bloc heaza astfel execuția secvenței
•se continu acu rularea schemei logice prin blocurile care ar urma
mai jos
Ciclul cu test intial
•dacă condiția este falsă la prima trecere prin blocul
decizional
•atunci secvența nu va ajunge să fie executată niciodată
•dacă condiția este tot timpul adevărată
•algoritmul se va bloca într -o buclă infinită, fără a mai putea
ajunge vreodată la blocul de stop
Ciclul cu test final
Ciclul cu test final
•Structura de control ciclu cu test final este format dintr –
o secvență și o condiție organizate în această ordine ca
în figura
•Această structură este considerată a fi una derivată din
structura de control ciclu cu test inițial.
•Din punct de vedere al funcționării structura se
comportă astfel:
•se execută secvența
•după aceea se evaluează condiția
•dacă condiția este adevărată se merge din nou și se execută
secvența
Ciclul cu test final
•Din punct de vedere grafic nu apar elemente noi
•Sunt aceleasi elemente exact ca în cazul structurii de
control cu test initial
•aranjamentul blocurilor legat prin săgeți este făcut de
asemenea natură încât
•prima să fie secvența
•după ea să fie plasată condiția.
•evident că apare și fenomenul de buclă pe ramura DA a
condiției care ne conduce din nou la secvență când
valoarea logică din condiție este adevărată
Ciclul cu test final
•Se poate observa că această structură va permite
execuția secvenței cel puțin o dată indiferent de ce
valoarea logică conține condiția
•nu este strict necesară
•orice algoritm se poate concepe folosind numai
structuri de control ciclu cu test inițial
•în practică sunt situații când structura cu test final oferă
o soluție mai elegantă din punct de vedere al concepției
algoritmului
Ciclu cu contor
Ciclu cu contor
•structura de control ciclu cu contor este una mai
complexă
•se bazează pe un contor care
•primește o valoare inițială
•parcurge toate valorile unui interval continu
•până se atinge o valoare finală
•se execu tala fiecare pas o aceeași secvență
Ciclu cu contor
•Primul bloc este unul de atribuire care are rolul de a
inițializa contorul cu o valoare inițială
•Apoi se poate observa că urmează un bloc de decizie
care verifică dacă contorul este mai mic decât valoarea
finală
•În caz afirmativ se merge pe ramura DA și se execută
secvența
•Reamintim ca secvența poate conține o subschema formată
din blocuri pentru a face diverse calcule
Ciclu cu contor
•După secvență avem un bloc de atribuire care
incrementează sau altfel spus adună la valoarea
contorului valoarea unui pas.
•Acest pas poate să fie un număr pozitiv sau un număr
negativ, întreg sau zecimal.
•Dacă pasul este pozitiv înseamnă că valoarea contorului va
crește la fiecare trecere prin blocul de incrementare.
•Evident că pentru ca o astfel de structură de control să
funcționeze trebuie ca valoarea inițială să fie mai mică decât
valoarea finală.
•Dacă pasul este negativ atunci contorul va descrește și e
recomandat ca valoarea inițială să fie mai mare ca cea finală.
Ciclu cu contor
•Dacă în blocul decizional contorul a atins valoarea finală
se iese cu execuția pe ramura NU de unde se poate
continua cu alte blocuri ale algoritmului.
Suma a doua numere
•Citim primul numar de
la tastatura
•Citim al 2-lea numar
de la tastatura
•Calculam suma celor
doua numere
•Afisam peecran suma
calculata
citeste a
citeste b
s=a+b
scries
Aria unui dreptunghi
•Citim lungimea de la
tastatura
•Citim latimea de la
tastatura
•Calculam aria cafiind
egala cu lungimea
inmultita cu latimea
•Afisam peecran aria
calculataciteste lung
citeste lat
aria=lung* lat
scriearia
Volumul unui cilindru
•Citim raza bazei de la
tastatura
•Citim inaltimea de la
tastatura
•Calculam volumul cafiind
produs intre 3.14, raza la
patrat siinaltimea
•Afisam peecran volumul
calculatciteste r
citeste h
a=PI*r*r
v=a*h
scriev
Functia modul
•Citim un numar de la
tastatura
•Daca numarul este
pozitiv
•Atunci modulul este
egal cu numarul
•Altfel modulul este
egal cu numarul
negat
•Afisam peecran
modulul numaruluiciteste x
dacax>0
atuncim=x
altfelm=-x
scriem
Functia signum
•Citim un numar de la
tastatura
•Daca numarul este
pozitiv
•atunci signum este egal
cu 1
•altfel daca numarul este
nul
•atunci signum este zero
•altfel signum este -1
•Afisam peecran functia
signumciteste x
daca x>0
atunci s=1
altfel
daca x==0
atunci s=0
altfel s= -1
scrie m
Ce este un sir ?
•sir = secventa de elemente de acelasi tip
•se mai numeste si
•vector
•tablou unidimensional
•accesul la un element se face prin
•numele sirului
•index -orice expresie matematica , incepe de la zero, se pune intre
paranteze drepte
•exemple : a[0], b[7], c[ i+j],d[a[0]]
•un sir de 10 elemente are indecsi de la 0 la 9 inclusiv
•operatii
•citire x=a[0], y=a[0]+b[7]
•atribuire a[0]=1, a[7]=a[0], a[ i+j]=c[ i]
citeste n
i=0
cat timpi<n
citeste a[i]
i=i+1
sfarsit cat timpCitirea unui sir de la tastatura
Citirea siafisarea unui sir
citeste n
i=0
cat timp i<n
citeste a[i]
i=i+1
sfarsit cat timp
i=0
cat timp i<n
afiseaza a[i]
i=i+1
sfarsit cat timp
Suma a doi vectori (siruri)
•Citim vectorul a element cu element
•Citim vectorul b element cu element
•Calculam vectorul c peelemente
•Fiecare element este egala cu suma elementelor
corespondente din a sib
•c[0]=a[0]+b[0]
•c[1]=a[1]+b[1]
•…
•c[n-1]=a[n -1]+b[n -1]
•Deci c[i]=a[ i]+b[ i] ptfiecare i=0,n -1
•Afisam vectorul c, anterior calculat , element cu element
Suma a doivectori (siruri )
Suma a doivectori (siruri )
citeste n
i=0
cat timpi<n
citeste a[i]
i=i+1
sfarsit cat timp
i=0
cat timpi<n
citeste b[i]
i=i+1
sfarsit cat timpi=0
cat timp i<n
c[i]=a[i]+b[i]
i=i+1
sfarsit cat timp
i=0
cat timp i<n
afiseaza c[i]
i=i+1
sfarsit cat timp
Aflarea minimului dintr -un sir
•Se citesc elementele vectorului
•Se initializeaza minimul cu primul element
•Se compara minimul cu toate elementele perand
•Daca cumva vre-un element este mai mic decat minimul
atunci minimul iavaloarea acelui element
Aflarea minimului dintr -un sir
•a
•min=10
•La pasul i=1 a[1]<min ? 5<10 ? da! deci min=5
•La pasul i=2 a[2]<min ? 4<5 ? da! deci min=4
•La pasul i=3 a[3]<min ? 3<4 ? da! deci min=3
•La pasul i=4 a[4]<min ? 11<3 ? nu!
•La pasul i=5 a[5]<min ? 12<3 ? nu!
•La pasul i=6 a[6]<min ? 88<3 ? nu!
•La pasul i=7 a[7]<min ? 90<3 ? nu!
•La pasul i=8 a[8]<min ? 2<3 ? da! deci min=2
•La pasul i=9 a[9]<min ? 100<2 ? nu!0 1 2 3 4 5 6 7 8 9
10 5 4 3 11 12 88 90 2 100
Aflarea minimului dintr -un sir
Aflarea minimului dintr -un sir
citeste n
i=0
cat timp i<n
citeste a[i]
i=i+1
sfarsit cat timp
min=a[0]
i=0
cat timp i<n
daca a[i]<min atunci min=a[ i]
sfarsit cat timp
afiseaza min
Aflarea maximului dintr -un sir
•cese schimba la algoritmul anterior ?
•tema de casa …
Ordonarea unui sir prin metoda bulelor
Prima trecere
•10 7 5 4 12 8
•10 7 5 4 12 8
•7 10 5 4 12 8
•7 5 10 4 12 8
•7 5 4 10 12 8
•7 5 4 10 12 8
•7 5 4 10 8 12
•4 interschimbari
Ordonarea unui sir prin metoda bulelor
A doua trecere
•7 54 10 8 12
•5 7 410 8 12
•5 4 7 10 8 12
•5 4 7 10 8 12
•5 4 7 8 10 12
•3 interschimbari
Ordonarea unui sir prin metoda bulelor
A treia trecere
•5 47 8 10 12
•4 5 78 10 12
•4 5 7 810 12
•4 5 7 8 10 12
•4 5 7 8 10 12
•1interschimbare
Ordonarea unui sir prin metoda bulelor
A patra trecere
•4 57 8 10 12
•4 5 78 10 12
•4 5 7 810 12
•4 5 7 8 10 12
•4 5 7 8 10 12
•0 zero interschimbari
Ordonarea unui sir prin metoda bulelor
Ordonarea unui sir prin metoda bulelor
citeste n
i=0
cat timp i<n
citeste a[i]
i=i+1
sfarsit cat timp
Ordonarea unui sir prin metoda bulelor
•executa
•ni=0
•i=0
•cat timp i<n -1
•daca a[i]>a[i+1]
•atunci
•temp=a[i]
•a[i]=a[i+1]
•a[i+1]=temp
•ni=ni+1
•i=i+1
•sfarsit cat timp
•cat timp ni!=0
Ordonarea unui sir prin metoda bulelor
•citeste n
•i=0
•cat timp i<n
•afiseaza a[i]
•i=i+1
•sfarsit cat timp
Ce este o matrice ?
•matrice = secventa de elemente de acelasi tip grupate pe
doua dimensiuni
•se mai numeste si
•tablou bidimensional
•accesul la un element se face prin
•numele matricii
•index de linie, de coloana
•incep de la zero, se pun intre paranteze drepte
•prima linia, a doua coloana
•exemple: a[0][0], b[7][7], c[i+j][i -j]
•indecsii incep de la 0
•operatii
•citire x=a[0][0], y=a[0][0]+b[7][8]
•atribuire a[0][0]=1, a[7][8]=a[0][0]
Citirea unei matrici
citeste m
citeste n
i=0
cat timpi<m
j=0
cat timpj<n
citeste a[i][j]
j=j+1
sfarsit cat timp
i=i+1
sfarsit cat timp
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: s.l.dr.ing.Ciprian -Bogdan Chirila chirila@cs.upt.ro http://www.cs.upt.ro/~chirilaALGORITMI , SCHEME LOGICE SI PSEUDOCOD Structura cursului •Notiunea… [612187] (ID: 612187)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
