Pseudo cod - Pseudocode
În informatică , pseudocodul este o descriere în limbaj simplu a pașilor dintr-un algoritm sau alt sistem. Pseudocodul folosește adesea convențiile structurale ale unui limbaj de programare normal , dar este destinat citirii umane mai degrabă decât citirii automate. De obicei, omite detalii care sunt esențiale pentru înțelegerea algoritmului de către mașini, cum ar fi declarațiile variabile și codul specific limbii. Limbajul de programare este mărit cu detalii despre descrierea limbajului natural , acolo unde este convenabil, sau cu notație matematică compactă . Scopul utilizării pseudocodului este că este mai ușor de înțeles pentru oameni decât codul limbajului de programare convențional și că este o descriere eficientă și independentă de mediu a principiilor cheie ale unui algoritm. Este frecvent utilizat în manuale și publicații științifice pentru a documenta algoritmi și în planificarea software-ului și a altor algoritmi.
Nu există un standard larg pentru sintaxa pseudocodului , deoarece un program în pseudocod nu este un program executabil, cu toate acestea există anumite standarde limitate (cum ar fi pentru evaluarea academică). Pseudocode seamănă cu programele de schelet , care pot fi compilate fără erori. Scheme logice , Drakon-diagrame si Unified Modeling Language diagrame (UML) poate fi considerat ca o alternativă grafică la pseudocod, dar au nevoie de mai mult spațiu pe hârtie. Limbaje precum HAGGIS acoperă decalajul dintre pseudocod și cod scris în limbaje de programare.
Cerere
Manualele și publicațiile științifice legate de informatică și calculul numeric folosesc adesea pseudocod în descrierea algoritmilor, astfel încât toți programatorii să le poată înțelege, chiar dacă nu știu toți aceleași limbaje de programare. În manuale, există, de obicei, o introducere însoțitoare care explică convențiile particulare utilizate. Nivelul de detaliere al pseudocodului se poate apropia, în unele cazuri, de limbajele de uz general formalizate.
Un programator care are nevoie să implementeze un algoritm specific, în special unul necunoscut, va începe adesea cu o descriere a pseudocodului, apoi „va traduce” acea descriere în limbajul de programare țintă și o va modifica pentru a interacționa corect cu restul programului. Programatorii pot începe, de asemenea, un proiect schițând codul în pseudocod pe hârtie înainte de a-l scrie în limbajul propriu-zis, ca o abordare de structurare de sus în jos , cu un proces de pași care urmează ca rafinament.
Sintaxă
În general, pseudocodul nu respectă regulile de sintaxă ale unui anumit limbaj; nu există o formă standard sistematică. Unii scriitori împrumută stilul și sintaxa din structurile de control dintr-un anumit limbaj de programare convențional, deși acest lucru este descurajat. Unele surse de sintaxă includ Fortran , Pascal , BASIC , C , C ++ , Java , Lisp și ALGOL . Declarațiile variabile sunt de obicei omise. Apelurile funcționale și blocurile de cod, cum ar fi codul conținut într-o buclă, sunt adesea înlocuite cu o propoziție cu un singur limbaj natural.
În funcție de scriitor, pseudocodul poate varia, așadar, în stil, de la o imitație aproape exactă a unui limbaj de programare real la o extremă, până la o descriere care se apropie de proza formatată la cealaltă.
Acesta este un exemplu de pseudocod (pentru jocul matematic fizz buzz ):
Pseudocod stil Fortran: program fizzbuzz
Do i = 1 to 100
set print_number to true
If i is divisible by 3
print "Fizz"
set print_number to false
If i is divisible by 5
print "Buzz"
set print_number to false
If print_number, print i
print a newline
end do
|
Pseudocod în stil Pascal: procedure fizzbuzz
For i := 1 to 100 do
set print_number to true;
If i is divisible by 3 then
print "Fizz";
set print_number to false;
If i is divisible by 5 then
print "Buzz";
set print_number to false;
If print_number, print i;
print a newline;
end
|
Pseudocod în stil C: void function fizzbuzz {
for (i = 1; i <= 100; i++) {
set print_number to true;
If i is divisible by 3 {
print "Fizz";
set print_number to false; }
If i is divisible by 5 {
print "Buzz";
set print_number to false; }
If print_number, print i;
print a newline;
}
}
|
Pseudocod stil structurat de bază: Sub fizzbuzz()
For i = 1 to 100
print_number = True
If i is divisible by 3 Then
Print "Fizz"
print_number = False
End If
If i is divisible by 5 Then
Print "Buzz"
print_number = False
End If
If print_number = True Then print i
Print a newline
Next i
End Sub
|
Pseudocod stil matematic
În calcul numeric , pseudocod de multe ori constă în notație matematice , în mod tipic de la set și matrice teorie, amestecat cu structurile de control ale unui limbaj de programare convențional, și poate , de asemenea limbaj natural descrieri. Aceasta este o notație compactă și adesea informală care poate fi înțeleasă de o gamă largă de oameni instruiți matematic și este frecvent utilizată ca o modalitate de a descrie algoritmi matematici . De exemplu, operatorul sumă ( notația capital-sigma ) sau operatorul de produs ( notația capital-pi ) pot reprezenta o buclă for și o structură de selecție într-o singură expresie:
Return
În mod normal, tipărirea non- ASCII este utilizată pentru ecuațiile matematice, de exemplu prin intermediul limbajelor de marcare, cum ar fi TeX sau MathML , sau editorii de formulare proprietari .
Pseudocodul stil matematic este uneori denumit cod pidgin , de exemplu pidgin ALGOL (originea conceptului), pidgin Fortran , pidgin BASIC , pidgin Pascal , pidgin C și pidgin Lisp .
Simboluri matematice comune
Tipul operației | Simbol | Exemplu |
---|---|---|
Misiune | ← sau: = |
c ← 2πr , c := 2πr
|
Comparaţie | =, ≠, <,>, ≤, ≥ | |
Aritmetic | +, -, ×, /, mod | |
Podea / tavan | ⌊, ⌋, ⌈, ⌉ |
a ← ⌊b⌋ + ⌈c⌉
|
Logic | și , sau | |
Sume, produse | Σ Π |
h ← Σa∈A 1/a
|
Exemplu
Iată un exemplu mai lung de pseudocod în stil matematic, pentru algoritmul Ford – Fulkerson :
algorithm ford-fulkerson is input: Graph G with flow capacity c, source node s, sink node t output: Flow f such that f is maximal from s to t (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v) for each edge (u, v) in GE do f(u, v) ← 0 f(v, u) ← 0 while there exists a path p from s to t in the residual network Gf do let cf be the flow capacity of the residual network Gf cf(p) ← min{cf(u, v) | (u, v) in p} for each edge (u, v) in p do f(u, v) ← f(u, v) + cf(p) f(v, u) ← −f(u, v) return f
Compilație automată a limbajelor de stil pseudocod
Gramatica limbajului natural în limbaje de programare
Diverse încercări de a aduce elemente ale gramaticii limbajului natural în programarea computerelor au produs limbaje de programare precum HyperTalk , Lingo , AppleScript , SQL , Inform și într-o oarecare măsură Python . În aceste limbi, parantezele și alte caractere speciale sunt înlocuite cu prepoziții, rezultând un cod destul de vorbăreț. Aceste limbi sunt de obicei tastate dinamic , ceea ce înseamnă că declarațiile variabilei și alte coduri ale cazanului pot fi omise. Astfel de limbi pot face mai ușor pentru o persoană fără cunoștințe despre limbă să înțeleagă codul și poate, de asemenea, să învețe limba. Cu toate acestea, asemănarea cu limbajul natural este de obicei mai cosmetică decât autentică. Regulile de sintaxă pot fi la fel de stricte și formale ca în programarea convențională și nu facilitează neapărat dezvoltarea programelor.
Limbaje de programare matematice
O alternativă la utilizarea pseudocodului matematic (care implică notația teoretică a seturilor sau operații matriciale) pentru documentarea algoritmilor este utilizarea unui limbaj formal de programare matematică care este un amestec de notare matematică non-ASCII și structuri de control al programului. Apoi, codul poate fi analizat și interpretat de o mașină.
Mai multe limbaje de specificare formale includ notația teoretică a seturilor folosind caractere speciale. Exemple sunt:
- Notația Z
- Limbajul de specificare a metodei de dezvoltare Viena (VDM-SL).
Unele limbaje de programare matrice includ expresii vectorizate și operații matriciale ca formule non-ASCII, amestecate cu structuri de control convenționale. Exemple sunt:
- Un limbaj de programare (APL) și dialectele sale APLX și A + .
- MathCAD .
Vezi si
- Programare concept
- Drakon-diagramă
- Diagrama de flux
- Programare literară
- Limbajul de proiectare a programului
- Cod scurt
- Engleză structurată
Referințe
Lecturi suplimentare
- Zobel, Justin (2013). „Algoritmi”. Scrierea pentru informatică (ediția a doua). Springer. ISBN 978-1-85233-802-2.
linkuri externe
- Un pseudocod standard
- Algoritmi colectați ai ACM
- Ghidul pseudocodului , fișier PDF.