Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
Pseudocod

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.


Structura liniara

Text Box: begin
prelucrare_1
prelucrare_2
.
.
prelucrare_n
end 
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.


Structurile alternative

- Structura alternativa binara

Text Box: if conditie 
  then prelucrare_1
  else prelucrare_2
endif
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).


Text Box: select  v  from
  v1 : prelucrare_1
  v2 : prelucrare_2
	.
	.
  vn : prelucrare_n
endselect
- 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


Structurile repetitive

- Structura repetitiva de tip 'while'

Text Box: while conditie 
do prelucrare 
endwhile
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'

Text Box: repeat prelucrare 
   until conditie
endrepeat
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'

Text Box: for v := vi, vf, p
    do prelucrare 
endfor
Este o structura controlata de o variabila v numita contor. Contorul se initializeaza cu valoarea initiala vi Se testeaza daca v nu depaseste valoarea finala vf. Daca nu, atunci se executa prelucrare si v creste cu valoarea p a pasului. Se reia testul de depasire a domeniului (domeniul lui v este intervalul [vi, vf]). In momentul depasirii domeniului, se paraseste structura si se continua cu prelucrarea de dupa endfor


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

read a,b,c

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