Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Reprezentarea algoritmilor prin limbaj pseudocod
Rezolvarea unei probleme, indiferent de natura acesteia, cu ajutorul calculatorului electronic, conduce la necesitatea modelarii problemei respective adica la conceperea unui model matematic al problemei. Acesta va putea fi algoritmizat si apoi transpus intr-un program folosind un limbaj de programare evoluat sau limbajul de comanda al unui sistem de gestiune a bazelor de date.
O etapa importanta in rezolvarea unei probleme cu ajutorul calculatorului electronic este deci conceperea algoritmului de rezolvare. Daca acest algoritm este mai complex sau daca el trebuie prezentat intr-o forma independenta de limbajul de programare, se recomanda descrierea acestuia in schema logica sau intr-un limbaj pseudocod. In felul acesta algoritmul poate fi usor inteles si verificat.
Limbajul pseudocod este o modalitate de reprezentare a algoritmului care, desi este independent de un anumit limbaj de programare, respecta reguli de scriere, o anumita sintaxa, in descrierea operatiilor ce-l compun. Exista multiple forme de limbaje pseudocod, unele supersofisticate si apropiate ca rigoare de limbajele de programare. In continuare vom prezenta o forma simplificata a unui astfel de limbaj, care sa asigure o transpunere clara si usor de inteles a oricarui algoritm. Desi majoritatea limbajelor pseudocod folosesc (pentru universalitate) cuvinte sau prescurtari de cuvinte ale limbii engleze, in limbajul pseudocod propus in continuare vom folosi cuvinte ale limbii romane. Traducerea acestora in limba engleza asigura insa o corespondenta rapida cu instructiunile sau comenzile specifice limbajelor de programare si, respectiv, sistemelor de gestiune a bazelor de date.
In descrierea algoritmilor prin limbaj pseudocod vom inlocui notiunea de operatie, cu care am operat frecvent in cazul schemelor logice, cu cea de instructiune specifica limbajelor de programare.
Descrierea algorimului cu ajutorul unui limbaj pseudocod va respecta principiul programarii structurate conform caruia orice algoritm poate fi reprezentat doar cu ajutorul a trei structuri logice de baza: secventiala, alternativa si repetitiva. De asemenea, notiunile de variabila, constanta, expresie, identificator, prezentate anterior ca elemente cu care opereaza algoritmii, raman valabile.
În limbajul pseudocod, corespunzator operatiilor de intrare / iesire de la schemele logice avem definite instructiuni de intrare - iesire:
Citeste <lista de variabile>
Scrie [<constante alfanumerice>], <lista de variabile>
Efectul acestor doua instructiuni este descrierea operatiei de introducere date si respectiv extragere date.
Inainte de a continua prezentarea instructiunilor limbajului pseudocod sa retinem faptul ca acest limbaj opereaza cu doua tipuri de cuvinte: cuvinte cheie (specifice limbajului si care nu pot fi folosite in alt context; ele vor fi scrise subliniat in cadrul programului) si cuvinte utilizator (care sunt la dispozitia programatorului si pot avea orice semnificatie).
Instructiunea de atribuire
v: = < expresie>
unde v este o variabila, iar expresie este o expresie aritmetica, relationala sau logica. Remarcam ca tipul variabilei trebuie sa corespunda tipului expresiei: variabila numerica pentru expresie aritmetica si logica pentru expresie relationala sau logica.
Structura alternativa este descrisa in limbaj pseudocod prin intermediul instructiunii de decizie cu urmatorul format general:
daca < conditie >
atunci
instructiune_a
astfel
instructiune_f
sf-daca
Alinierea de maniera celei prezentate anterior in descrierea instructiunilor se recomanda a fi pastrata in scrierea programelor. Aceasta sporeste lizibilitatea programului.
Efectul instructiunii de decizie:
se evalueaza conditia ce urmeaza cuvantului daca (ea poate fi expresie relationala sau logica).
daca aceasta conditie este adevarata se executa instructiunea_a
daca aceasta conditie nu este adevarata se executa instructiune_f
Observatie: sunt situatii in care trebuie descrisa in program modalitatea de luare a unei decizii in care nu intereseaza decat situatia de adevarat a conditiei. În aceasta situatie instructiunea alternativa are formatul:
daca <conditie>
atunci
<instructiune>
sf-daca
O astfel de instructiune alternativa se spune ca este cu ramura vida, de tipul IF-THEN, spre deosebire de forma cu doua ramuri, care este de tipul IF-THEN-ELSE.
Structura repetitiva poate fi reprezentata in limbajul pseudocod propus sub trei forme:
(v1)
pentru var := val_i pana la val_f executa
<instructiuni>
sf_pentru
unde "var" este numele unei variabile care controleaza ciclul, "val_i" reprezinta valoarea initiala ce este atribuita variabilei "var", iar "val_f" este valoarea finala. Efectul acestei instructiuni este urmatorul: repetarea de un numar de ori egal cu val_f - val_i + 1 a corpului instructiunii cuprins intre liniile "pentru" si "sf_pentru" (aceasta din urma marcheaza sfarsitul blocului de instructiuni ce constitue corpul repetitivei). Variabila "var" joaca astfel rolul unui contor care numara repetarile corpului ciclului, ea incremetandu-si valoarea dupa fiecare iteratie (executie a corpului repetitivei). Aceasta instructiune este cunoscuta sub numele REPEAT-n-TIMES.
(v2)
cat timp <conditie> executa
<instructiuni>
sf-cat_timp
unde "conditie" reprezinta o expresie relationala sau logica. Efectul instructiunii este urmatorul: se repeta grupul de instructiuni pana la intalnirea cuvantului "sf_cat_timp", atata timp cat conditia "conditie" este adevarata. Corespunde repetitivei anterior conditionata prezentata in paragraful anterior si este cunoscuta sub numele de DO-WHILE.
( v3)
repeta
<instructiuni>
pana cand <conditie>
unde conditie are aceeasi semnificatie ca la (v2). Efectul instructiunii este urmatorul: repetarea grupului de instructiuni ce constitue corpul repetitivei pana cand conditia ce apare in final devine adevarata. Corespunde structurii repetitive posterior conditionata si este cunoscuta sub numele de REPEAT-UNTIL.
Dupa cum se observa am propus pentru un limbaj pseudocod un set minimal de instructiuni cu o sintaxa simpla si naturala.
Pentru a clarifica si mai mult lucrurile, sa vedem cum arata programele pseudocod corespunzatoare algoritmilor reprezentati anterior prin scheme logice.
Enuntul problemelor este acelasi ca si in paragraful anterior:
(E1)
variabile n, i: intreg
s, v: real
citeste n
s: = 0
pentru i:=1 pana la n executa
citeste v
s:=s+ v
sf-pentru
scrie s/n
stop
Apare aici o instructiune pe care nu am prezentat-o anterior si anume "stop". Aceasta marcheaza sfarsitul programului.
( E2)
variabile zi: intreg
s1,s2,s3: real
s1:=0
s2:=0
s3:=0
citeste zi
cat timp (zi > 0) and (zi < 32) executa
citeste v
daca zi < 11
atunci
s1: = s1+ v
altfel
daca zi < 21
atunci
s2: = s2+v
altfel
s3: = s3+v
sf-daca
sf_daca
citeste zi
sf-cat timp
scrie s1
scrie s2
scrie s3
stop
( E3)
variabile sn, nrm: intreg
nota, teza: intreg
media: real
sn:=0
citeste nota
sn:=sn+nota
citeste nota
sn:=sn+nota
nrm:=2
citeste nota
cat-timp (nota > 0) and (nota <11) executa
sn:=sn+nota
nrm:=nrm+1
citeste nota
citeste TEZA
media:=((sn/nrm)*3+teza)/4
scrie media
Stop
Copyright © 2024 - Toate drepturile rezervate