KULTUROSFERA

Citesc datele, deduc modificarea

Până acum ți-ai construit programele de la zero: tu ai ales personajele, tu ai pus blocurile, tu știai fiecare colț al scriptului. De azi schimbăm rolul. Primești un program făcut de altcineva — un coleg, un programator de pe scratch.mit.edu, poate chiar tu cel de acum trei luni — și trebuie să-l modifici fără să-l strici. La finalul lecției vei ști să identifici datele unui program, să urmărești pe hârtie cum se schimbă ele la rulare și să deduci ce bloc trebuie modificat ca programul să facă ce ți se cere.

Programul altcuiva, pe masa ta

În viața reală, programatorii scriu rar de la zero. De cele mai multe ori primesc un program care există deja și o cerință scurtă: „schimbă asta". Aplicația de catalog electronic pe care o folosește diriginta ta a fost modificată de zeci de ori de oameni care nu au scris prima ei versiune.

Regula de aur a meseriei: nu modifici ce nu ai înțeles. Dacă schimbi un bloc la întâmplare și „pare că merge", ai ascuns problema, nu ai rezolvat-o. De aceea, înainte de orice modificare, faci muncă de detectiv: citești programul și îi interoghezi datele.

Datele îți spun povestea

Ia programul de mai jos, dintr-un joc numit „Prinde mărul". La fiecare măr prins, jucătorul ar trebui să primească puncte:

când se dă clic pe steagul verdesetează scor la0repetă de10orimodifică scor cu2așteaptă1secundespunescorpentru2secunde

Înainte să atingi orice bloc, pune-i programului trei întrebări:

  1. Ce variabile are? Aici, una singură: scor.
  2. De unde pleacă fiecare? scor pleacă de la 0 — blocul „setează scor la 0".
  3. Cine și cu cât o schimbă? Blocul „modifică scor cu 2", executat de 10 ori din cauza repetării.

Trei întrebări, trei răspunsuri — și deja știi mai multe despre program decât cineva care doar l-a rulat de cinci ori.

Tabelul de urmărire: rulezi programul pe hârtie

Ca să vezi exact ce se întâmplă cu datele, rulează programul pe caiet, pas cu pas. Se numește tabel de urmărire și e cel mai bun prieten al detectivului de programe:

PasulBlocul executatValoarea lui scor
startsetează scor la 00
repetarea 1modifică scor cu 22
repetarea 2modifică scor cu 24
repetarea 3modifică scor cu 26
.........
repetarea 10modifică scor cu 220

La final, personajul spune 20. Nu ai avut nevoie de calculator — hârtia ți-a spus rezultatul înainte de rulare.

De la cerință la modificare

Acum, cerința: „Vrem ca fiecare măr prins să aducă 1 punct, iar la finalul celor 10 mere scorul maxim să fie 10."

Rulezi programul: personajul spune 20. Dublu față de așteptare. Fără analiză, ai două ținte posibile de modificat — numărul repetărilor sau pasul de creștere — și doar una este corectă. Tabelul îți arată vinovatul: fiecare repetare adaugă 2 în loc de 1. Deci modificarea corectă este în blocul „modifică scor cu 2", unde 2 devine 1. Numărul de repetări rămâne 10, pentru că mere sunt tot 10.

Atenție aici — e greșeala pe care o văd cel mai des: elevul „repară" schimbând repetarea de la 10 la 5. Scorul final iese 10, dar jocul prinde doar 5 mere. Rezultatul final pare corect, comportamentul e stricat. De asta compari cu cerința întreagă, nu doar cu numărul de la sfârșit.

Exersează

  1. Pe caiet: setează a la 5, apoi modifică a cu 3, apoi modifică a cu 3. Construiește tabelul de urmărire și scrie valoarea finală a lui a.
  2. Un cronometru trebuie să numere 60 de secunde, dar se oprește prea repede. În script găsești „setează timp la 30" și „repetă până când timp este 0". Ce valoare modifici și cu cât?
  3. În jocul „Prinde mărul", cerința nouă este: mărul aduce 1 punct, dar jocul durează 15 mere. Scrie cele două valori din script după modificare.
  4. Provocare: scrie un script de 4–5 blocuri cu o variabilă, dă-l colegului de bancă doar pe hârtie și cere-i valoarea finală. Apoi construiți amândoi programul în Scratch și verificați. Cine a greșit — omul sau hârtia?

Săptămâna viitoare, programele noastre primesc o memorie mai încăpătoare: o singură variabilă nu poate ține notele întregii clase, dar o listă poate.

Verifică-te

Activitate

Se încarcă activitatea…

Activitate

Se încarcă activitatea…

Activitate

Se încarcă activitatea…