If you're seeing this message, it means we're having trouble loading external resources on our website.

Dacă sunteţi în spatele unui filtru de web, vă rugăm să vă asiguraţi că domeniile *. kastatic.org şi *. kasandbox.org sunt deblocate.

Conţinutul principal

Reprezentarea algoritmilor

Un algoritm poate fi reprezentat în multe feluri, printre care limbaj natural, scheme logice, limbaj pseudocod și, desigur, limbaje de programare.
Limbajul natural este folosit frecvent deoarece ne este ușor să îl folosim și pașii pe care îi descriem cu ajutorul lui vor fi înțeleși de foarte multă lume. Când proiectăm și dezvoltăm algoritmi, lucrăm atât cu persoane care lucrează în programare, cât și cu necunoscători ai acestui domeniu—dar toți cunosc limbajul natural.
Însă, limbajul natural are dezavantajele lui. Tinde să fie ambiguu și vag definit, întrucât nu are o structură impusă. Acest lucru îngreunează urmărirea algoritmului și nu avem certitudinea că este corect. Schema logică și limbajul pseudocod sunt metode de reprezentare mai structurate, care pot descrie mai exact un algoritm, fiind populare printre programatori și informaticieni.
Hai să testăm aceste metode mai structurate pentru reprezentarea algoritmului de traducere în Pig Latin pe care l-am descris în articolul anterior.

Schema logică

O modalitate de reprezentare convențională a unui algoritm o reprezintă schemă logică, o diagramă cu casete conectate prin săgeți.
Să trecem direct la treabă și să dăm schema logică pentru versiunea de bază a algoritmului de traducere în Pig Latin:
Fiecare dreptunghi reprezintă un pas al secvenței, iar săgețile fac trecerea de la un pas la următorul.
Schema logică pentru algoritmul îmbunătățit care folosește un romb pentru a reprezenta decizia:
În sfârșit, schema logică pentru versiunea cu repetiție a algoritmului este următoarea:
Reprezentarea unui algoritm prin schema logică ne permite să vizualizăm algoritmul la nivel logic și ne forțează să ne gândim foarte atent la secvențe și decizii. Unde punem săgeți și ce sens are fiecare dintre ele? Am inclus toate componentele algoritmului? Astfel de întrebări riguroase ne punem în timpul reprezentării unui algoritm cu ajutorul unei scheme logice.

Limbaj pseudocod

Majoritatea algoritmilor vor fi implementați ca programe ce rulează pe un calculator. Însă înainte de transpunerea într-un limbaj de programare, programatorilor le convine să reprezinte un algoritm în limbajul pseudocod: această reprezentare folosește toate structurile întâlnite și la un limbaj de programare, dar nu se execută pe un calculator, ci îl ajută pe programator să proiecteze programul.
Iată algoritmul de traducere în Pig Latin implementat în limbajul pseudocod AP CSP:
PENTRU FIECARE cuv ÎN cuvinte
{
  ADAUG(cuv, "-")
  lit ← PRIMA_LITERĂ(cuv)
  DACĂ (ESTE_VOCALĂ(lit)) {
    ADAUG(cuv, "yay")
  } ALTFEL {
    ADAUG(cuv, lit)
    ADAUG(cuv, "ay")
    ȘTERG_PRIMA(cuv)
  }
}
Întrucât nu există un standard oficial, fiecare programator scrie pseudocod în propriul său stil. Poți întâlni implementări pseudocod care arată foarte diferit.
Reprezentarea unui algoritm prin pseudocod ajută programatorul să gândească în termeni familiari, fără a se concentra pe sintaxă și particularități de limbaj. De asemenea, pseudocodul oferă informaticienilor o modalitate de a reprezenta un algoritm independent de un limbaj de programare, ceea ce permite programatorilor din orice limbaj să colaboreze, să înțeleagă și să îl implementeze (traducă) în limbajul de programare care îi convine.

Limbaje de programare

După ce am proiectat algoritmul, fie că este limbaj natural, schemă logică sau pseudocod, sau un mix din acestea, este timpul să îl transformăm în cod care să ruleze pe un calculator.
Vom traduce algoritmul pentru traducerea în Pig Latin folosind JavaScript, deoarece acesta este limbajul de programare ales de noi la Khan Academy. Putem folosi un for pentru repetiție, un if/else pentru decizie, apoi o combinație de operații cu șiruri de caractere (strings) și tablouri (arrays) pentru pașii algoritmului.
📝 Vezi implementările corespunzătoare în: App Lab | Snap | Python
Un algoritm poate fi tradus în orice limbaj de programare. Ca să te convingi, vezi RosettaCode.org, un wiki care enumeră sute de algoritmi traduși în peste 700 de limbaje.
Programele sunt scrise într-o varietate de limbaje de programare, în funcție de scopul lor și de cine le implementează. Khan Academy folosește în prezent patru limbaje diferite pentru părți diferite ale programelor sale. Din fericire, putem folosi aceiași algoritmi pentru toate limbajele!
🙋🏽🙋🏻‍♀️🙋🏿‍♂️Ai și alte întrebări legate de acest subiect? Ne bucurăm să îți putem răspunde—nu ai decât să pui întrebările în spațiul de mai jos!