Informatică

“Pentru a putea întrebuința calculatorul la studiul problemelor concrete, omul e obligat să învețe să gândească exact și abstract.”

Grigore Moisil

În general copiii iau legătura cu informatica prin intermediul jocurilor. Dar unii copii depășesc faza utilizării jocurilor și își doresc să-și creeze propriile lor jocuri. Astfel fără să-și dea seama ei își doresc să programeze.

Învățând să programezi îți dezvolți gândirea algoritmică, capacitatea de analiză, proiectare, sistematizare, planificare, competențe necesare în multe domenii de activiate și în viața de zi cu zi, nu doar pentru a scrie programe pentru calculatoare.

La școală, în viața de zi cu zi, în permanență executăm algoritmi, completăm structuri de date, proiectăm diverse fluxuri de informații, șiruri de acțiuni. Înțelegem lumea care ne înconjoară pe baza unor modele. Dezvoltarea deprinderilor de modelare se poate realiza și prin învățarea metodelor de programare. Necesitatea unor formalizări  necesită o gândire precisă și riguroasă, iar în scrierea programelor pentru calculator formalizarea constă în alegerea structurilor de date și elaborearea algoritmului.

Trebuie să se atingă performanța ca elevii să înțeleagă că în procesul de rezolvare de probleme cu ajutorul calculatoarelor etapa cea mai importană este cea a descoperirii algoritmului și nu scrierea efectivă a programului.

Una din caracteristicile algoritmilor este generalitatea. Adică nu se scrie un program pentru a rezolva o singură problemă concretă, ci pentru a rezolva o clasă de probleme. Pentru aceasta trebuie identificate și tratate toate situațiile posibile, lucru important și în planificarea altor activități. O altă caracteristică a algoritmilor este claritatea, adică în orice moment trebuie să fie clar ce instrucțiune se execută, la fel cum și în coordonarea unei echipe, liderul trebuie să se asigure că fiecare membru al echipei știe când și ce are de făcut.

Și totuși pentru a programa corect și eficient sunt necesare cunoștințe de programare practice, dar învățarea limbajului de programare nu este un scop în sine. Limbajul de programare este un instrument, elevii trebuie să învețe structurile de control de bază independent de limbalul de programare, astfel încât să se poată adapta în viitor, schimbând cu ușurință un limbaj de programare cu altul.

Programul este un produs care trebuie să fie utilizabil, adică este o codificare corectă a unui algoritm corect care pe baza datelor de intrare furnizează întotdeauna rezultate corecte într-un interval de timp cât mai scurt posibil. Se afirmă că „Un program care nu funcţionează este ca un avion care nu zboară – ii lipseşte doar un şurub numai că nu se ştie care şi de unde?”. Așa cum nu ne-am urca să pornim la drum într-un avion despre care știm că are o defecțiune tehnică, nu se va utiliza un program care aproape merge și nu se știe când rezultatele furnizate sunt corecte sau nu.

La olimpiadele și alte concursuri de informatică nimeni nu se ocupă cu evaluarea programelor pe baza gândirii corecte a concurentului, ci pe baza mai multor teste pe diferite seturi de date de intrare. Se execută programul concurentului pe mai multe seturi de date de intrare și se compară rezultatele obținute de programul concurentului cu ceea ce ar trebui să se obțină. De asemenea programul trebuie să se încadreze într-un anumit timp precizat, după expirarea timpului, programul concurentului se oprește din execuție. Ca și consecință, de foarte multe ori, mulți concurenți au plecat acasă descurajați, cu 0 puncte, poate cu programe aproape de a fi corecte și probabil după multă muncă și efort în pregătirea pentru olimpiadă, ceea ce intră în contradicţie cu funcţia motivaţională pe care ar trebui să o îndeplinească orice evaluare a perfomanţelor elevilor. E greu de spus dacă acest mod de evaluare este corect sau nu, dar un lucru este sigur: în condiţii de concurs nu există timp pentru o verificare de alt gen, practicabilă în şcoli, dar care să fie minuţioasă şi lipsită de subiectivism.