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 ← ΣaA 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:

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:

Vezi si

Referințe

Lecturi suplimentare

linkuri externe