Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Limbajul pseudocod

calculatoare



+ Font mai mare | - Font mai mic



Limbajul pseudocod

Limbajul pseudocod este prin definitie un limbaj alcatuit din cateva instructiuni prestabilite, specifice programarii structurate, folosit pentru reprezentarea algoritmilor.



Plecand de la o definitie a programului ca fiind:

PROGRAM = ALGORITM + DATE (Niklaus Wirth)

programul evolueaza spre instructiuni structurate, iar datele spre tipuri prestabilite (constante, variabile, stive, coada, vector, tablou, multime (set), tip complex).

Aceasta definitie indica faptul ca reprezentarea sub forma de pseudocod implica si faptul ca datele sint structurate sub o anumita forma, deci viziunea algoritmica trebuie imbinata cu una asupra structurilor de date.

Datele pot fi clasificate dupa unul din criteriile:

1. Tipul datelor - poate fi unul dintre urmatoarele:

- intreg (integer)

- real (real)

- logic (bool)

- sir de caractere (char)

2. Natura datelor:

- constante

- variabile

3. Organizarea datelor:

- tablouri (array)

- stive (stack)

- cozi (queue)

- ansamble (heap)

Operatiile cu date depind de natura si organizarea datelor.

Se aplica o serie de conventii la reprezentarea calculelor prin formule. Una dintre acestea se refera la faptul ca putem plasa numai o singura variabila in partea stanga a semnului "=". Astfel, computerul realizeaza toate calculele indicate in partea dreapta a semnului "=" si genereaza un unic rezultat. Acesta va fi memorat in locatia de memorie corespunzatoare variabilei inscrisa in partea stanga a semnului "=".

Pentru datele numerice (de tip intreg si real) folosim urmatoarele operatii:

operatii aritmetice: adunare (+), scadere (-), inmultire (*), si impartire (/).

operatii de decizie (care precizeaza relatia existenta intre doua date) : egalitate (=), mai mic decat (<), mai mare decat (>), inegalitate (< >), mai mic sau egal decat (<=), mai mare sau egal decat (>=).

Datele numerice sunt alcatuite numai din cifrele de la 0 la 9 (eventual este folosit si punctul zecimal); aceste date nu pot contine caractere speciale sau literele alfabetului. Prin contrast cu ele, datele ne-numerice sunt alcatuite din orice combinatie de caractere numerice, alfabetice, sau speciale. Caracterele alfabetice sunt formate de literele de la A la Z, iar caracterele speciale sunt toate celelalte semne (de ex. $, @, #, %, etc.).

Pentru datele de tip logic se folosesc urmatoarele operatii:

negatia logica ù

conjunctia logica Ù

disjunctia logica

Pentru datele de tip sir de caractere folosim:

concatenarea (+) - reuniunea a doua sau mai multe siruri de caractere (rezultatul acestei operatii fiind tot un sir de caractere);

compararea bazata pe ordine lexicografica (rezultatul fiind o data de tip logic).

Pentru celelalte categorii de date folosim urmatoarele operatii:

extragerea unui element x;

introducerea unui element x;

verificarea daca un asemenea ansamblu de date este sau nu vid.

Cuvintele prestabilite cu ajutorul carora se construieste algoritmul se numesc cuvinte cheie.

Exemple: do, if, integer.

Instructiunile se grupeaza in doua categorii:

declaratii: alcatuite dintr-un cuvant cheie (ex.: integer, real, bool, char, array, stack, queue, heap), urmat de un sir de variabile; astfel se precizeaza ca acele variabile au tipul de data indicat de cuvantul cheie;

instructiuni efective.

Exemple:

integer a, B, c;

real d(n), E(m,n);

Instructiunile efective sunt urmatoarele:

Instructiunea de atribuire:

Forma de baza: V e

unde V = variabila; e = expresie de acelasi tip.

Efect: Se evalueaza expresia e si se atribuie rezultatul obtinut variabilei V.

Forma generala: (V1, V2, .Vn ) (e1, e2, . en) sau

Vi ei , i I

Instructiunile READ/ WRITE:

Forma generala: read a1, a2, .an

Efect: Sunt citite n variabile de la intrare si sunt scrise in locatii de memorie.

si

Forma generala: write a1, a2, .an

Efect: Se scriu din memorie pe banda de iesire valorile a n variabile.

Instructiunea STOP:

Efect: Se incheie un program.

Decizia cu o alternativa vida (IF-THEN):

Sintaxa:

daca <conditie> atunci

<secventa>

stop

Pseudocod:

if P then sau if P then

S1 begin

endif S1

end

endif

Semnificatie:

ADEVARAT

evalueaza executa

<conditie> <secventa>

FALS

Se evalueaza <conditie>; daca <conditie> este ADEVARATA, se executa instructiunile din <secventa>; altfel, se sare peste aceste instructiuni si se continua algoritmul cu prima instructiune de dupa <secventa>.

Schema logica:

DA NU

<conditie>

<secventa>

Exemplu: Calculul valorii maxime dintre trei numere date, A, B, C.

Programul in pseudocod va fi:

start

citeste A, B, C

# afla X = max (A, B)

# afla X = max (X, C)

scrie X

stop

Daca se detaliaza cele doua proceduri marcate cu #, obtinem urmatorul algoritm:

start

citeste A, B, C

daca A > B atunci

atribuie X A

altfel

atribuie X B

daca C > X atunci

atribuie X C

scrie X

stop

Secventa de program din dreptunghiul punctat reprezinta decizie cu o alternativa vida.

Decizie cu doua alternative (IF-THEN-ELSE):

Sintaxa:

daca <conditie> atunci

<secventa 1>

altfel

<secventa 2>

stop

Pseudocod:

if P then sau if P then

S1 begin

else S1

S2 end

endif else

begin

S2

end

endif

Semnificatie:

evalueaza ADEVARAT executa

<conditie> <secventa 1>

FALS executa

<secventa 2>

Aceasta instructiune defineste o relatie logica pe care ulterior o testeaza. Conditia este construita in mod deliberat sub forma de intrebare, cu numai doua raspunsuri posibile, DA si NU. Aceste doua optiuni definesc ramurile conditionale care permit evaluarea expresiei logice cu ajutorul simbolilor de decizie.

Se evalueaza <conditie>; daca <conditie> este ADEVARATA, se vor executa instructiunile din <secventa 1>; altfel (<conditie> este FALSA) se vor executa instructiunile din <secventa 2>. Dupa acest pas, se executa urmatoarea instructiune din algoritm (prima instructiune dupa IF-THEN-ELSE).

Schema logica:

DA NU

<conditie>

<secventa 1> < secventa 2>

Exemplu: Reluam aceeasi problema, si anume calculul valorii maxime dintre trei numere A, B, C.

O alta solutie pentru rezolvarea problemei ar fi:

start

citeste A, B, C

daca A > B atunci

atribuie X A

altfel

atribuie X B

daca C > X atunci

atribuie X C

altfel

atribuie X X

scrie X

stop

Secventele de program din dreptunghiurile punctate reprezinta decizie cu doua alternative.

Selectia (CASE):

Sintaxa:

alege <expresie> dintre:

<constanta 1> : <secventa 1>

<constanta 2> : <secventa 2>

.

<constanta n> : <secventa n>

altfel : <secventa (n+1) >

stop

Pseudocod:

case P1 : S1

P2 : S2

.

Pn : Sn

else Sn+1

endcase

Semnificatie:

Se evalueaza <expresie> si se executa diferite operatii corespunzator valorilor posibile pentru <expresie>: daca <expresie> = <constanta 1>, se executa instructiunile din <secventa 1>; daca <expresie> = <constanta 2> se executa instructiunile din <secventa 2>, si asa mai departe; daca <expresie> = <constanta n>, se executa instructiunile din <secventa n>, si altfel (cand <expresie> ¹ <constant1>, <constant 2>, ., <constant n>) se executa instructiunile din <secventa (n+1)>. Apoi se executa urmatoarea instructiune din algoritm (prima instructiune dupa CASE).


<constanta 1> executa

<secventa 1>

evalueaza <constanta 2> executa

<expresie> <secventa 2>

.

<constanta n> executa

<secventa n>



¹ <constant 1>,.

¹ <constant n> executa

<secventa (n+1)>

Schema logica:

<expresie>

<constanta 1> . <constanta n> <constanta (n+1)>

<secventa 1> <secventa n> <secventa (n+1)>

Exemplu: Valoarea intreaga oarecare V se adauga la una din valorile (sumele) S0, S1, S2, S3 dupa cum restul impartirii sale la 4 este 0, 1, 2, 3.

Algoritmul care realizeaza aceste calcule va fi:

alege V - int(V/4) 4 dintre

0: atribuie S0 S0 + V

1: atribuie S1 S1 + V

2: atribuie S2 S2 + V

3: atribuie S3 S3 + V

stop

Secventa de program din dreptunghiul punctat reprezinta un exemplu de selectie.

7. Ciclu cu test initial (WHILE-DO, structura repetitiva conditionata anterior):

Sintaxa:

cat timp <conditie> executa

<secventa>

stop

Pseudocod:

while P do

begin

S

end

enddo

Semnificatie:


DA

evalueaza executa

<conditie> <secventa>

NU

Se evalueaza <conditie>; atata timp cat <conditie> este ADEVARATA, se executa instructiunile din <secventa>, si apoi se evalueaza <conditie> din nou; cand <conditie> devine FALSA se iese din bucla; deoarece mai intai se evalueaza <conditie> , si dupa aceea se executa instructiunile, WHILE-DO este cunoscuta sub numele de "ciclare cu test initial". Daca <conditie> este FALSA la prima evaluare, instructiunile din <secventa> nu se executa nici o data, si se trece direct la prima instructiune de dupa WHILE-DO; prin urmare este posibil sa avem o bucla WHILE-DO vida.

Schema logica

DA

<conditie>

NU

<secventa> 

Ciclu cu test final (REPEAT-UNTIL, structura repetitiva conditionata posterior):

Sintaxa:

repeta

<secventa>

pana cand <conditie>

Pseudocod:

repeat

S

until P

Semnificatie:


NU

executa evalueaza DA

<secventa> <conditie>

Se executa <secventa> si apoi se evalueaza <conditie>; atata timp cat <conditie> este FALSA, ne intoarcem inapoi si executam <secventa> din nou, dupa care evaluam iarasi <conditie>; atunci cand <conditie> devine ADEVARATA, se iese din bucla si se executa urmatoarea instructiune de dupa REPEAT-UNTIL. Deoarece mai intai se executa <secventa> si apoi se evalueaza <conditie>, REPEAT-UNTIL mai este numita si ciclare cu test final. Se observa ca nu putem avea o bucla REPEAT-UNTIL vida, deoarece <secventa> este executata cel putin o data (cand <conditie> este ADEVARATA la prima evaluare). 

Schema logica:


<secventa>

<conditie> NU

DA

Ciclare cu contor (FOR):

Sintaxa:

pentru <variabila> = <val. initiala>, <val. finala>, <pas> repeta

<secventa>

stop

Pseudocod:

for v:=vi to vf step vp do

begin

S

end

endfor

Semnificatie:

Instructiunea FOR realizeaza o ciclare pana cand este indeplinita o anumita conditie. De aceea este cunoscuta ca un tip de ciclare cu test posterior, conditia fiind verificata la sfarsitul buclei. Partea de dupa FOR a instructiunii defineste ciclul, iar partea de dupa TO defineste conditia de iesire din bucla.


evalueaza <VAR> <vi>  executa

<vi>, <vf>, <vp> <secventa>

<VAR> <VAR> + <vp>

NU

VAR> > <vf>

DA

Avem un contor, <variabila>, cu valori intre o <valoare initiala> si o <valoare finala>. La inceput avem <variabila> = <valoare initiala> si se executa instructiunile continute in <secventa>. Apoi marim valoarea din <variabila> cu <valoare pas> si comparam <variabila> cu <valoare finala>. Daca <variabila> £ <valoare finala>, repetam pasul anterior. Se procedeaza in acest mod pana cand <variabila> > <valoare finala>; in acest moment se iese din bucla.

Schema logica:

<VAR> <vi>

< secventa >

<VAR> <VAR> + <vp>

NU

<VAR> > <vf>

DA

Decizie multipla (IF-THEN-ELSE-.-ELSE):

Sintaxa:

daca <conditie 1> atunci

<secventa 1>

altfel daca <conditie 2> atunci

<secventa 2>

altfel

altfel

<secventa n>

stop

Pseudocod:

if <conditie 1> then

S1

else if <conditie 2> then

S2

else if <conditie 3> then

S3

else

.

else

Sn

endif

Semnificatie:

evalueaza ADEVARAT executa

<conditie 1> <secventa 1>

FALS

evalueaza ADEVARAT executa

<conditie 2> <secventa 2>

FALS

.

FALS

executa

<secventa n>

Schema logica:

ADEVARAT

<conditie 1> <secventa 1>

FALS

ADEVARAT

<conditie 2> <secventa 2>

FALS

.

FALS <secventa n>

Se evalueaza <conditie 1>; daca este ADEVARATA, se executa <secventa 1>; altfel, se evalueaza <conditie 2>; daca este ADEVARATA, se executa <secventa 2>; altfel, se evalueaza <conditie 3> si asa mai departe, pana la <conditie (n-1)>; daca aceasta este ADEVARATA, se executa <secventa (n-1)> si altfel se executa <secventa n>; apoi se executa urmatoarea instructiune din algoritm (prima de dupa IF-THEN-ELSE-.-ELSE).

Aceasta instructiune este numita decizie multipla deoarece este formata din mai multe instructiuni simple de decizie (IF-THEN-ELSE), legate impreuna intr-o singura structura de decizie; este similara instructiunii CASE, dar ramificatiile se construiesc diferit: la CASE, era vorba de valori diferite pentru o expresie data, in timp ce aici avem diferite conditii de evaluat.

Exemplu:

citeste X

daca X > Ù X < 10 atunci

atribuie A A + 1

ori X > Ù X < 20 atunci

atribuie B B + 1

ori

altfel

scrie "varsta eronata"

stop

Instructiunile din dreptunghiul punctat reprezinta un exemplu de decizie multipla.




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 3066
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved