Conceptul de subprogram/procedură
Subalgoritmii (subprogramele sau procedurile) reprezintă module de cod reutilizabile care permit descompunerea problemelor complexe în subprobleme mai simple și mai ușor de gestionat.
Avantajele utilizării subalgoritmilor:
• Modularitate: Împărțirea codului în secțiuni logice distincte
• Reutilizabilitate: Același cod poate fi apelat de mai multe ori
• Mentenabilitate: Modificările se fac într-un singur loc
• Claritate: Codul devine mai ușor de citit și înțeles
• Debugging: Testarea și depanarea se face pe module mici
Crearea de blocuri proprii (My Blocks/Proceduri)
În Scratch, subalgoritmii se implementează prin "Blocurile mele" (My Blocks), accesibile din categoria portocalie din paleta de blocuri.
Procesul de creare a unui bloc propriu:
1. Accesarea categoriei "Blocurile mele"
2. Clic pe "Creează un bloc"
3. Definirea numelui și parametrilor blocului
4. Implementarea funcționalității în blocul "definește"
Exemplu practic - Bloc pentru desenarea unui poligon:
definește desenează poligon (laturi) (lungime)
repetă (laturi)
mută (lungime) pași
rotește ↻ ((360) / (laturi)) grade
Utilizarea blocului creat:
desenează poligon (6) (50) // Hexagon
desenează poligon (8) (40) // Octogon
Tipuri de blocuri personalizate:
1. Blocuri simple (fără parametri)
definește salutare
spune [Bună ziua!] pentru (2) secunde
spune [Cum vă simțiți?] pentru (2) secunde
2. Blocuri cu parametri de intrare
definește calculează aria dreptunghi (lungime) (lățime)
setează [aria v] la ((lungime) * (lățime))
spune (îmbină [Aria este: ] (aria))
3. Blocuri cu valoare de retur
definește distanța până la (x) (y)
raportează (√ (((x poziție) - (x)) ^ (2) + ((y poziție) - (y)) ^ (2)))
Avantajele specifice în Scratch
Performanță optimizată
Blocurile proprii în Scratch au o caracteristică unică: rulează fără reîmprospătarea ecranului, ceea ce înseamnă:
• Execuție mai rapidă pentru operații complexe
• Animații mai fluide
• Reducerea întârzierilor vizuale
Organizarea structurală
Exemplu de descompunere structurală:
// Programul principal
când se apasă ⚑
inițializează joc
bucla principală joc
finalizează joc
// Subprogramele
definește inițializează joc
setează [scor v] la (0)
setează [vieți v] la (3)
mergi la x: (0) y: (0)
definește bucla principală joc
pentru totdeauna
dacă <tasta [spațiu v] apăsată?> atunci
trage proiectil
mută jucător
verifică coliziuni
definește verifică coliziuni
dacă <atingi [inamic v]?> atunci
pierde viață
dacă <(vieți) = (0)> atunci
oprește [toate v]
Reutilizabilitatea între sprite-uri
Blocurile personalizate pot fi:
• Locale: Disponibile doar pentru sprite-ul curent
• Globale: Partajate între toate sprite-urile (prin export/import)
Vizualizează pe pagina oficială proiectul și crează un proiect asemănător în contul tău îmbunățățind versiunea proiectului prin cerințele de mai jos.
Transformarea programului tău într-unul cu butoane interactive este o idee excelentă! În loc să scrii numele figurii, vei avea pe ecran butoane pe care scrie „Pătrat”, „Cerc”, etc.
Iată cum trebuie să modifici structura pentru a trece de la „scris” la „clic”:
Nu vei mai folosi întrebarea Ce vrei să desenezi?. În schimb:
Apasă pe pictograma de adăugare Personaj (pisica) și alege „Desenează” (Paint).
Desenează un dreptunghi și scrie pe el textul „Pătrat”.
Repetă procesul pentru fiecare figură (Cerc, Triunghi, etc.). Numește fiecare personaj după figura sa (ex: Buton_Patrat).
Fiecare buton trebuie să „anunțe” personajul principal (Pisica) ce are de făcut. Vom folosi un mesaj de tip Difuzare (Broadcast).
Pe Personajul „Buton_Patrat”:
când se dă clic pe acest personaj
transmite [desenează_patrat]
Pe Personajul „Buton_Cerc”:
când se dă clic pe acest personaj
transmite [desenează_cerc]
Acum, pisica nu mai așteaptă un răspuns scris, ci așteaptă semnalul de la butoane. Vei înlocui blocul cu steguleț verde cu blocuri de tip „Când primesc”.
Pentru Pătrat:
când primesc [desenează_patrat]
desenează (blocul tău care cere coordonatele X și Y)
pătrat (blocul tău custom care face desenul)
Pentru Cerc:
când primesc [desenează_cerc]
desenează
cerc
Elimini erorile de scriere: Nu mai contează dacă scrii cu diacritice sau nu, pentru că butonul face toată treaba.
Nu mai ai nevoie de Selector_Figuri: Deoarece fiecare mesaj (desenează_patrat, desenează_cerc) activează direct blocul corect, poți șterge selectorul cu toate condițiile „dacă”. Codul tău devine mult mai curat!
Dacă vrei ca butoanele să pară reale, adaugă acest cod mic pe fiecare buton:
când se dă clic pe acest personaj
modifică mărimea cu (-10)
așteaptă 0.1 secunde
modifică mărimea cu (10)
transmite [mesaj...]
Acest lucru va face butonul să se „comprime” puțin când apeși pe el, ca unul real.