|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
Pseudocod
Ca o alternativa la etapa de desenare a schemelor logice, unii programatori prefera descrierea algoritmului prin pseudocod. Acesta este un limbaj simbolic, situat intre limbajul natural (limba utilizata in comunicarea obisnuita intre oameni, de exemplu limba engleza, franceza sau romana) si limbajul de programare, obtinut prin introducerea unor reguli specifice limbajelor de programare in limbajul natural. Avantajul pseudocodului fata de schema logica este economia timpului necesar executarii desenelor si incadrarii lor in pagina. De zavantajul este intelegerea mai dificila a evolutiei proceselor, pentru ca este necesara o atentie mai mare in urmarirea ordinii lor.
De exemplu, pentru algoritmii genetici (a se vedea 6.3), pseudocodul este foarte simplu:
i := 0 |
seteaza numarul generatiilor la 0 |
initpopulation P(0) |
initializeaza in mod aleator o populatie de indivizi |
evaluate P(0) |
se atribuie o masura fiecarui individ din populatie |
while (not done) do |
cat timp conditia de oprire nu este satisfacuta, se va realiza succesiunea de operatii descrisa dupa "do" |
i := i + 1 |
creste cu o unitate numarul generatiilor |
select P(i) from P(i-1) |
selecteaza o subpopulatie pentru reproductie |
recombine P(i) |
realizeaza recombinarea genelor parintilor selectati in P(i) |
mutate P(i) |
realizeaza mutatii in P(i) |
Pentru algoritmii matematici uzuali, limbajul pseudocod foloseste urmatoarele propozitii standard:
v := expresie |
Atribuire se calculeaza valoarea membrului drept; variabila v primeste valoarea calculata prin expresie |
read lista write lista |
Intrare / iesire orice operatie a unui dispozitiv de intrare/iesire |
algorithm nume stop |
Terminal inceputul, respectiv sfarsitul unui program |
Expresie desemneaza o expresie valida (aritmetica sau logica). Se determina valoarea acestei expresii Variabilei aflate in membrul stang i se atribuie valoarea calculata. Observam aici diferenta intre egalitatea matematica v = expresie (care este o propozitie adevarata sau falsa) si atribuirea din informatica v := expresie, care indica o dubla actiune: calculul expresiei si asignarea (atribuirea) valorii obtinute variabilei v. Exemple: x := b*b-4*a*c
a :=(x1+x2)*(y1+y2)
Lista desemneaza o lista de variabile care se vor citi sau se vor scrie. Separatorul obiectelor din lista este caracterul , (virgula).
Exemple read x,y,t,s
write ai
Nume precizeaza numele pe care utilizatorul doreste sa il dea algoritmului descris. Exemplu: algorithm produs
Structurile utilizate in pseudocod sunt: structura liniara, structurile alternative, structurile repetitive.
Prelucrarile sunt executate in ordinea scrisa. Avantajul folosirii acestei structuri este ca toate prelucrarile 'stranse' intr-o astfel de structura sunt percepute ca o singura entitate. Acolo unde sintaxa limbajului nu permite decat o instructiune, dar sunt necesare mai multe prelucrari, acestea sunt incluse intr-o astfel de structura.
- Structura alternativa binara
Este testata conditia inscrisa. Daca este adevarata, atunci se executa prelucrare_1. Daca nu, atunci se executa prelucrare_2. In ambele cazuri se continua cu prelucrarea de dupa endif. Este posibil ca una din prelucrari sa lipseasca (in una din alternative nu este necesara nici o prelucrare). Se obtine structura pseudoalternativa (structura alternativa cu ramura vida).
- Structura alternativa generalizata
Alegerea urmatoarei prelucrari se face in functie de valoarea variabilei v, numita selector. Daca v este egal cu v1, atunci se executa prelucrare_1; daca v este egal cu v2, atunci se executa prelucrare_2 si asa mai departe. In toate cazurile se continua cu prelucrarea de dupa endselect
- Structura repetitiva de tip 'while'
Se testeaza conditia inscrisa. Daca este adevarata, atunci se executa prelucrare. Apoi se reiau pasii de mai sus, care se repeta pana cand conditie devine falsa. In acest moment se paraseste structura si se continua cu prelucrarea de dupa endwhile
- Structura repetitiva de tip 'repeat'
Se executa prelucrare. Se testeaza conditia inscrisa. Daca este falsa, atunci se reiau pasii de mai sus, care se repeta pana cand conditie devine adevarata. In acest moment se paraseste structura si se continua cu prelucrarea de dupa endrepeat
- Structura repetitiva de tip 'for'
Exemplul 1. Secventa pseudocod care realizeaza citirea a doua variabile reale a si b si scrierea variabilei x, calculata astfel: x = -b/a daca a este nenul, sau x = b-7 daca a=0.
algorithm calcul
begin
read a,b
if a=0 then x:=b-7 else x:=-b/a endif
write x
end
Exemplul 2. Secventa pseudocod pentru rezolvarea ecuatiei de gradul al II-lea:
algorithm ecuatie
begin
if a=0 then
if b=0 then if c=0 then write 'identitate'
else write 'imposibil'
endif
else begin x:=-c/b
write 'solutie unica',x
end
endif
else begin d:=b*b-4*a*c
if d>0 then begin x1:=(-b+ d)/(2*a)
x2:=(-b- d)/(2*a)
write x1,x2
end
else if d=0 then begin
x:=-b/(2*a)
write 'solutie dubla',x
end
else write 'ecuatia nu are solutii reale'
endif
endif
end
endif
end
Exemplul 3. Secventa pseudocod pentru sortarea unui vector folosind metoda selectiei directe:
algorithm sortare
begin
read n
for i:=1,n,1
do read a[i]
endfor
for i:=1,n-1,1
do for j:=i+1,n,1
do if a[i]>a[j]
then begin aux:=a[i]
a[i]:=a[j]
a[j]:=aux
end
endif
endfor
endfor
for i:=1,n,1 do write a[i] endfor
end
Pentru a usura citirea, se decaleaza spre dreapta prelucrarile ce compun structuri de rang superior. Cand sunt necesare cel putin doua prelucrari acolo unde sintaxa structurii nu permite decat una, cele doua se introduc intr-o structura liniara (begin . end
|