www.agora.ro

Se apropie olimpiadele

Lumea din jur este într-o schimbare permanentă, deci nu este de mirare că se schimbă și modul în care se evaluează lucrările concurenților, realizate cu ocazia olimpiadelor de informatică.

De câțiva ani, s-a introdus, în faza de evaluare a lucrărilor concurenților o metodă "modernă" de corectare, bazată pe ceea ce numim evaluare automată. În ce constă acest stil de corectare? În primul rând este 100% fiabil. Nu mai pot interveni factori, cum ar fi subiectivismul, atenția, graba, sau chiar faptul că cel care a corectat "nu a văzut bine" rezultatul afișat pe ecran sau în fișier. Apoi, evaluarea automată este rapidă.

Fiind vorba de olimpiade de informatică, ce poate fi mai firesc, decât să se folosească instrumentul cel mai la îndemână: calculatorul. Dar cum nu există (încă?) nici un calculator pe lume care să poată aprecia singur dacă un program furnizează rezultate corecte sau nu, este nevoie de programe de verificare. Aceste programe sunt scrise, de regulă, de autorul problemei, care cunoaște detalii cu privire la soluțiile posibile și poate estima eventualele greșeli.

Dacă soluțiile programelor corecte sunt unice, (de exemplu, când se cere determinarea unui singur număr - un minim sau un maxim), programul de verificare este simplu: rezultatul corect, așteptat și de la concurenți, există într-un fișier al comisiei; programul de verificare va compara conținutul acestuia cu cel al fișierelor concurenților. Dacă în urma verificării se constată că acestea diferă, concurentul nu primește puncte pentru testul respectiv.

Ce se întâmplă atunci când rezultatul nu este unic, de exemplu, când pe lângă minim se cer și termenii sumei care formează acel minim. Poate să difere ordinea, dar de multe ori pot să difere și termenii. În acest caz, programul de verificare, va calcula suma termenilor din rezultatul concurentului și va controla validitatea termenilor.

Și după cum bine știți, mai există un factor important în evaluare: timpul de executare. Anumite programe furnizează rezultatele într-un timp care se încadrează în limita precizată în specificațiile problemei, altele nu. Chiar mai mult, există programe care ar rula într-un timp inadmisibil de mare: ore sau zile. Cum, nu este posibil să se aștepte încheierea normală a executării, dar nici întreruperea manuală nu este cea mai potrivită soluție, este nevoie de un program care măsoară timpul de executare al programului concurentului și îl întrerupe după expirarea timpului.

Sunt cam multe programe... "Oare nu se încurcă membrii comisiei printre ele?" Evident, nu. Software-ul de evaluare controlează executarea tuturor acestor componente.

Evaluarea automată

Voi descrie în linii mari pașii pe care îi execută un asemenea soft, creat pentru a fi rulat sub DOS.

  • Pentru a fi testate, programele (executabilele) concurenților trebuie să se afle într-un director, în care le va "căuta" softul de evaluare.
  • Se copiază fișierele de intrare în acest director; aceste fișiere nu sunt denumite ca în specificațiile din enunț.
  • Urmează o parte din algoritmul de evaluare care se repetă pentru fiecare test existent:
  • se redenumește fișierul de intrare corespunzător testului, astfel încât numele să fie cel din specificații;
  • se lansează programul care execută programul concurentului, măsoară timpul și îl întrerupe dacă acestuia îi expiră timpul;
  • se redenumește fișierul de ieșire, astfel încât numele acestuia să corespundă specificațiilor evaluatorului.
  • Urmează partea de evaluare propriu-zisă:
  • se verifică datele din fișierele de ieșire ale concurentului și se acordă punctajul corespunzător fiecărui test în parte;
  • există probleme în cazul cărora se acordă punctaj parțial: de exemplu, un anumit număr de puncte pentru fiecare subpunct al problemei, dar se pot acorda punctaje parțiale pentru găsirea unor soluții "aproape optime".
  • Un evaluator poate genera rapoarte pentru fiecare concurent, eliminându-se astfel posibilitățile de a greși în redactarea manuală a clasamentului.

Menționez că la concursurile internaționale timpul de executare al programului este măsurat de un alt calculator, cele două fiind legate în serie.

Problemele

Pentru a asigura o bună desfășurare pentru un asemenea concurs, evident, nu este suficient să se lucreze cu un evaluator automat. Probleme clar formulate, fără ambiguități, teste "acoperitoare", un punctaj bine gândit, o soluție corectă care ar primi punctaj maxim în concurs din partea autorului, toate contribuie la derularea fără incidente a concursurilor de informatică.

Clara Ionescu
[cuprins]