Ce este algoritmul?
Deși algoritmul este în primul rând un termen matematic, în timpurile moderne este în mare parte legat de informatică, adică de programare.
Pentru a răspunde la întrebarea ce este un algoritm, trebuie să ne întoarcem mai întâi în secolul al IX-lea. În acea perioadă a trăit matematicianul persan Muhammad Al-Khwarizmi. Se crede că el este tatăl algebrei și după numele acestuia s-a denumit și algoritmul (bazat pe transcrierea numelui său în latină). Însă, ceea ce considerăm azi algoritm în informatică a fost definit pentru prima dată de către Ada Lovelace în secolul al XIX-lea.
Ea a format primul algoritm care ar fi trebuit să fie scris de către o mașină de calcul, prezentând viitorul calculatoarelor moderne. Datorită contribuției sale, ea este considerată primul programator din istorie. Astăzi algoritmul este privit în principal ca o bază a fiecărui program de computer, devenind astfel o parte inevitabilă a poveștii despre programare.
Definiția algoritmului
Există multe definiții pentru algoritm, dar pe noi cel mai mult ne interesează rolul său în soluționarea problemelor computerelor. După o definiție, algoritmul reprezintă o serie de pași pe care trebuie să îi urmăm pentru a rezolva o anumită sarcină. Cu alte cuvinte, el reprezintă un set de operații necesare pentru rezolvarea unei sarcini care se execută într-o ordine exact stabilită.
Pentru ca algoritmul să rezolve problema, trebuie ca el să se definească la „intrare”, în timp ce la „ieșire” se găsește rezolvarea problemei. Ceea de este important să se menționeze este că algoritmul trebuie să aibă o procedură corectă. Deci, fiecare segment al problemei stabilite (la intrare) trebuie să aibă definită o soluție (la ieșire). Dacă este clar stabilită și nu are nicio greșeală, se consideră că procedura este corectă.
Vă interesează acest domeniu? | La LINK Academy puteți frecventa programul Programare Java și puteți deveni expert în domeniul de aplicaţii software. |
Algoritmii și structurile datelor
Fiecare algoritm se compune dintr-un început și un sfârșit, în timp ce între ele se găsesc elemente care reprezintă părțile de bază care conțin o cale definită pentru rezolvarea problemei. În general, pentru a începe să rezolvăm problema, trebuie mai întâi să o definim și să stabilim soluția.
Algoritmul poate fi descris în mai multe moduri: limbaj natural, diagrame, pseudocod și limbaj de programare. Diagramele reprezintă poate cel mai popular mod, deoarece într-un mod simplu prezintă atât problema, cât și soluția ei. Pentru acest lucru nu aveți nevoie de un computer, ci de un creion și de hârtie pe care veți desena o reprezentare grafică a algoritmului.
În funcție de complexitatea problemei, în procesul de soluționare se utilizează trei structuri de bază ale algoritmului:
Liniară
Structura liniară a algoritmului este cea în care pașii sunt realizați unul câte unul, și nu se repetă, ci fiecare se execută o singură dată. Este vorba despre cea mai simplă formă, și totodată reprezintă un mod de a scrie cele mai simple programe.
Ramificată
Structura ramificată a algoritmului este cea la care fiecare pas este efectuat o dată sau deloc. Aceasta depinde de condițiile care se stabilesc și se poate întâmpla ca o comandă să nu fie executată deloc. Sunt stabiliți astfel mai mulți pași pentru a acoperi toate condițiile posibile și în acest fel încercăm să avem un răspuns pentru fiecare situație.
Aceasta înseamnă că într-o anumită parte a algoritmului se ajunge la o bifurcație unde pasul următor este condiționat de situația de la bifurcația concretă. Dacă se întâmplă ca din greșeală să „virați stânga, și nu dreapta”, comenzile care se găsesc „în dreapta” nu vor fi executate niciodată. În cazul în care există mai multe opțiuni, se utilizează o ramificație multiplă.
Ciclică
Structura ciclică a algoritmului reprezintă posibilitatea utilizării anumitor pași de mai multe ori. Acest lucru se întâmplă atunci când nu sunt cunoscute toate valorile care vor fi introduse. Ciclurile reprezintă posibilitatea de a face un pas înapoi și de a permite introducerea altor informații.
În acest fel se creează o buclă, adică se repetă ciclul. Această repetare se numește „iterație”, ceea ce implică repetarea pașilor în algoritm, dar cu utilizarea altor valori.
Subliniem că aceste structuri nu sunt reciproc exclusive, dimpotrivă, ele se utilizează deseori împreună la crearea algoritmului.
Algoritmul și programarea
Pentru a înțelege importanța algoritmilor și a programării, trebuie să înțelegem aplicarea lor în practică prin utilizarea computerelor. Și anume, algoritmilor le este deseori necesar un hardware specific pentru a efectua anumite operațiuni. Deși scrisul propriu-zis nu este solicitant, anumite operații necesită cipuri specializate și o tehnică suplimentară.
Aceste bucăți specializate de hardware se găsesc deja peste tot în jurul nostru, deși poate nu suntem conștienți de acest lucru. Oriunde se realizează o activitate automată care depinde de condițiile stabilite, pentru realizarea lor se utilizează anumite cipuri care prelucrează asta.
În ceea ce privește aplicarea în programare, algoritmul reprezintă o serie de comenzi care sunt executate în cadrul unui program. Aici este important de știut că în general computerele se bazează pe execuția literalmente a comenzilor folosind informațiile care le sunt date. Programarea este explicația practică dată computerului în limbajul său despre ce trebuie să facă în anumite situații.
Desigur, computerul execută instrucțiunile pe care i le dați pentru a ajunge la o soluție. Deci, dacă nu înțelegeți problema și dacă nu vedeți calea spre soluție, nici cel mai puternic computer nu va ajuta.
Pentru ca algoritmul să fie aplicabil pe computer, trebuie să îndeplinească următoarele condiții:
- Fiecare pas trebuie să fie definit – În orice moment trebuie să fie clar „ce a vrut să spună autorul”, adică nu este loc de comenzi ambigue.
- Nu poate fi infinit – El trebuie să aibă definit numărul de pași care vor duce la soluție.
- Trebuie să existe una sau mai multe date la intrare – Aceste date trebuie să se introducă la începutul sau în timpul activității.
- Trebuie să existe una sau mai multe date la ieșire – Ideea creării unui algoritm este să rezolve problema și să ofere rezultatul activității sale.
- Trebuie să fie aplicabil pe computer – Ceea ce gândiți trebuie să fie aplicabil în practică, adică prin scrierea codului într-un limbaj de programare.
În acest mod „algoritmul de computer” prezintă schița problemei și a modului de rezolvare a acesteia. Avantajul algoritmului este că se poate aplica în orice limbaj de programare, cum ar fi: Java, Python, C#, Javascript, PHP…
Clasificarea algoritmilor după modul de programare
Când este vorba despre abordarea rezolvării unei probleme, există câteva abordări de programare diferite:
Dezbină și stăpânește
Rezolvarea problemelor nu este niciodată ușoară, și este și mai dificilă atunci când aveți resurse limitate. În acest caz este binevenită strategia aplicată de vechii romani – dezbină și stăpânește! Este mult mai ușor să se rezolve o problemă mare prin împărțirea acesteia în câteva mai mici. Ideea este să se rezolve fiecare problemă individual și totul să se lege într-o soluție completă.
În acest mod instanța problemei se reduce până când ea va fi atât de mică încât să se poată rezolva cu ușurință. Un bun exemplu al acestei metode este sortarea. Prin împărțire se realizează sortarea pe categorii care sunt aplicabile la toate părțile. După sortarea cu succes, se face din nou unirea într-un întreg și la aceasta se respectă și clasificarea realizată anterior.
Algoritmii lacomi (greedy)
Când nu sunteți sigur cum va arăta finalul procesului de căutare, cel mai bine este să vă concentrați asupra cazurilor individuale care vă stau în față, în speranța că acestea vă vor conduce la soluția finală. Aceasta este esența metodei de lucru cu algoritmii lacomi - alegerea celei mai bune soluții dintre cele oferite în prezent.
Acest proces, din punct de vedere al abordării, este similar cu programarea dinamică, cu mențiunea că în acest caz soluțiile problemelor nu sunt întotdeauna cunoscute. Cum nu vedem prea mult înainte, soluțiile pe care le acceptăm sunt cele care în acest moment par cele mai bune.
Acest lucru înseamnă că algoritmul prelucrează problemele una câte una, fără a privi cum va arăta rezultatul final. Aveți întotdeauna în minte că în definitiv este nevoie de o soluție bună, nu de mai multe soluții minore care nu rezolvă problema principală.
Chiar și când găsiți o soluție bună, important este să fiți conștienți și de prețul acesteia. Se poate întâmpla foarte ușor ca soluția dumneavoastră să reprezinte versiunea de programare à la Pirus, unde prețul este atât de mare încât depășește valoarea soluției.
Programarea dinamică
Este vorba despre o metodă de programare unde se caută soluții optime la probleme mai mici pentru a reduce timpul pentru rezolvarea problemei mari. În acest mod, problemele mai mici se împart în probleme suplimentare.
Totuși, spre deosebire de algoritmii lacomi, la programarea dinamică, un algoritm bazat pe decizii anterioare presupune că o soluție potențial bună poate să nu fie chiar atât de bună. Printr-o astfel de abordare se caută soluții într-un mod care să țină seama de consecințele unei astfel de decizii. Aceasta se realizează prin utilizarea anumitor soluții de mai multe ori, astfel încât acest proces este adesea mult mai rapid, deoarece nu necesită noi acțiuni de calcul.
Algoritmii euristici
La abordarea euristică nu se caută cea mai bună soluție, ci cea optimă, adică cea care este satisfăcătoare, dar în conformitate cu limitele stabilite (timp, memorie, preț…).
Această metodă se bazează pe autodescoperire care permite algoritmului să prezinte o cale potențial bună către soluția finală. Desigur, în acest caz este în continuare necesară implicarea umană pentru a identifica cele mai bune soluții dintre cele oferite.
Algoritmii – probleme și rezolvări
Pentru a vă perfecționa cunoștințele despre cunoașterea și scrierea algoritmilor, trebuie să vă dedicați rezolvării problemelor. Astfel veți înțelege cel mai bine importanța vizualizării „imaginii de ansamblu”, adică depistarea corectă a problemei și găsirea celei mai bune soluții. Pentru acest lucru este necesară practica creării algoritmilor care rezolvă și cele mai complexe probleme.
Din acest motiv, faceți-vă timp și perfecționați-vă abilitățile prin rezolvarea problemelor algoritmice pe această pagină. În acest mod veți înțelege cum se rezolvă problemele, dar și care sunt cele mai bune abordări ale acestora. Pur și simplu, ca orice altă provocare matematică, și algoritmii reprezintă o combinație de rezolvare creativă a problemei respectând regulile stabilite.
Desigur, acesta este doar primul pas spre perfecționarea în domeniu, dacă doriți să faceți programare. Acum când știți ce este algoritmul, ați făcut un prim pas spre o carieră de succes de dezvoltator de software sau un alt job în domeniul programării IT. Până la urmă, prin stăpânirea acestor noțiuni vă puneți în poziția de a câștiga ca programator în România, în regiune și chiar în lume.
3 moduri de a obține un job bine plătit
Am pregătit un document în care puteţi descoperi trei moduri de a obţine un job bine plătit pentru profesioniştii care lucrează pe calculator. Descărcați raportul aici
Verificați dacă mai sunt locuri disponibile! Sesiunea de înscrieri 2024/25 este deschisă.
Pentru a afla mai multe despre înscriere, daţi clic aici.
Înscrie-te