Wednesday, 06 February 2019 17:30

DESPRE ALGORITMI

Written by
Rate this item
(0 votes)

Ce este un algoritm? O întrebare la care s-au dat multe variante de răspuns. Variante mai vechi sau mai moderne, mai pe înțelesul tuturor sau mai abstracte. Pe scurt, putem spune așa: "Un algoritm este un număr finit de pași succesivi, parcurși în scopul rezolvării unei probleme."

Denumirea de "algoritm" vine de la numele matematicianului și astronomului persan, Muhammad Al-Khwarizmi (se pronunță Al-Horezmi) care a scris și un tratat numit "Algoritmi" (denumirea în limba latină), tratat care era de fapt un manual de aritmetică. Evident, odată cu trecerea timpului, Al-Horezmi a ajuns la forma pe care o cunoaștem astăzi - ALGORITM. Aproape tot ce întâlnim în fiecare zi, se desfășoară după un algoritm: programul nostru zilnic, circulația transportului în comun, modul de preparare al covrigilor sau al pateurilor, nemaivorbind de procese tehnologice de oricare fel.

Să analizăm puțin termenul "număr finit de pași succesivi": de ce avem nevoie de un număr finit de pași? Pentru că algoritmul trebuie să ajungă la final intr-un anumit moment, pentru a încheia rezolvarea problemei respective. Un exemplu ar putea fi concludent în acest sens. Să presupunem că cineva dorește să prepare o supă. Rețeta pe care o folosește este de fapt un algoritm: algoritmul preparării supei. Pașii care trebuie urmați sunt exact cei din rețetă, exact în ordinea menționată acolo. Nu cred că putem să fierbem legumele înainte de a le cumpăra de la magazin. Evident că la un moment dat rețeta se termină, la fel și prepararea produsului. Dacă instrucțiunile ar fi în număr infinit atunci prepararea supei nu s-ar termina niciodată. Și nu e de dorit asta, nu?

Acum să vedem practic realizarea unui algoritm. De unde începe și unde se termină?  Cum trebuie elaborat? Vom realiza algoritmul rezolvării ecuației de gradul 1.

Prin condiția    ne asigurăm că expresia (1) rămâne o ecuație de gradul 1. Apoi rezolvăm ecuația prin metoda cunoscută (algoritm).

Vom face o paralelă între cei 2 algoritmi: rezolvarea ecuației pe hârtie, din punctul de vedere al unui elev și rezolvarea ei printr-un program.

Avem deci:

1) Rezolvarea matematică a ecuației de gradul 1

 

Aici lucrurile sunt clare, condiția pentru a (coeficientul lui x) și domeniul de definiție pentru a și b sunt date încă din enunț. Nu trebuia decât să rezolvăm ecuația. Să vedem acum ce se întâmplă în algoritm. Cum îl începem?

2) Algoritmul ecuației de gradul 1

Pornim de la relatia (1) și înainte de toate ne uităm la condițiile ce ne sunt date: a și b numere reale și  . În această ordine. Deci algoritmul incepe cu:

var a,b: real;

În declararea variabilelor vom mai introduce și necunoscuta x ca rezultat al ecuației, rezultat ce va fi bineînțeles un număr real.

Să vedem ce se întâmplă dacă a=0. Atunci ecuația devine 0x+b=0 adică b=0, iar aceasta nu mai este o ecuație ci o simplă egalitate și în acest caz nu avem ce ecuație să rezolvăm și nici ce algoritm să scriem. Deci trebuie să prevenim această situație și să încheiem algoritmul. Vom scrie:

dacă a=0 atunci afișează ("Coeficientul a trebuie să fie nenul.") sau orice alt mesaj din care să reiasă că variabila a trebuie să fie diferită de 0. În cel de-al doilea caz,   , algoritmul decurge normal prin aflarea necunoscutei exact ca în cazul rezolvării matematice. Să scriem algoritmul în întregime:

var a,b,x: real:

START

afișează("Introduceți coeficienții  a și b ai ecuației: ");

Nu este nevoie să specificăm faptul că variabila a trebuie să fie nenulă deoarece acest lucru va face parte din algoritmul de rezolvare.

Continuăm:

citește(a,b); (îi spunem calculatorului să țină minte valorile lui a și b)

dacă a=0 atunci afișează("Dați pe a diferit de 0!")

                   altfel x= - b/a; ("altfel" reprezintă cazul  )

afișează x;

STOP

Așadar algoritmul va arăta astfel:

var a,b,x: real:

START

afișează("Dați coeficienții  a și b ai ecuației: ");

citește(a,b);

dacă a=0 atunci afișează("Dați pe a diferit de 0!")

                 altfel

                      START

                      x= - b/a;

                      afișează x;

                      STOP

STOP

iar rezolvarea matematică arată așa:

 Observații:

1) În ambele cazuri (a=0 sau ) algoritmul are un număr finit de pași. În primul caz se incheie cu un mesaj către utilizator de a mai încerca o dată, iar în cel de-al doilea caz se încheie cu aflarea necunoscutei.

2) În cazul a diferit de 0, deoarece este o ramură a instrucțiunii condiționale "dacă" și, pentru că această ramură conține mai mult de o instrucțiune, toate instrucțiunile se inserează ca și programul între START și STOP. Sunt 2 instrucțiuni deoarece afișarea lui x se face numai în cazul .

3) Se observă că rezolvarea matematică este mai scurtă decît algoritmul. Acest lucru se datorează faptului că intr-un algoritm programatorul trebuie să țină cont de ABSOLUT TOATE cazurile particulare care pot apărea și trebuie să aibă o rezolvare pentru fiecare. Cu alte cuvinte, atenție mărită la fiecare enunț deoarece trebuie luate în considerare toate condițiile teoretice date sau nu în problemă (asupra acestui aspect am să revin cu un alt articol legat de algoritmi). Pentru ca aceasta să se întâmple trebuie cunoscută foarte bine teoria de la matematică.

P.S. Acest articol a fost scris într-un limbaj non-academic deoarece se adresează elevilor și am încercat să exprim explicațiile cât mai aproape de limbajul natural.

CHESTER the Tester

CHESTER este administratorul și realizatorul acestui site.

This email address is being protected from spambots. You need JavaScript enabled to view it.

Leave a comment

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.

Top