Limbajul LOGO - Mediu de programare online | Ţestoasa ta ce ştie să facă?
S.T.E.M. (Fizică) - Să ne jucăm cu accelerația gravitațională!



Scurtă introducere

În fizică accelerația gravitațională este accelerația imprimată unui obiect de către gravitația unui alt obiect. Orice corp este accelerat, într-un punct al câmpului gravitațional al altui corp, spre centrul câmpului cu aceeași accelerație indiferent de masă și natura materialului. Simbolul este "g".

La suprafața Pământului accelerația gravitațională variază între 9,78–9,82 m/s² în funcție de latitudine. Vom prelua valoarea standard acceptată de 9,8 m/s², fără frecare cu aerul (în vid) pentru acest experiment.

Avem toate instrumentele de lucru la dispoziție, mediul de programare Logo putând fi considerat un adevărat laborator educațional. Să trecem așadar la treabă!

Experiment

Ne dorim să cadă liber, cu viteză inițială zero, o bilă (obiect - un cerc în esență) pe Pământ. Ce se întâmplă? Când atinge solul, are o reacție. Dacă este un meteorit, bolovan, ori o minge de fotbal? Fiecare are elasticitatea sa - un factor esențial. Nu intrăm în amănunte deoarece ne dorim un experiment principial.

De exemplu, o minge lăsată să cadă sare în sus la impactul cu solul, din ce în ce mai puțin, până se oprește datorită gravitației.

Priviți algoritmul de mai jos:

ascundetestoasa
creion_sus
set_culoare_umplere "brown
mutay 200
var "g 0.98 ;acceleratia gravitationala
var "elasticitate 0.7
var "v 0 ;viteza obiectului
var "y 200 ;pozitia curenta
var "ok adevarat
cat_timp :ok [
    var "temp_y :y
    curata
    var "v :v + :g
    var "y :y - :v
    daca :y <= -225 [
        var "y -225
        var "v -(:v * :elasticitate)
    ]
    mutay :y
    imaginefundal "Camp3
    u_cerc 25
    asteapta 20 "fals
    daca :temp_y = :y
    [ var "ok fals ]
]

Legătura spre programul publicat pe platformă o găsiți [aici].
Rulați programul fără animație, o are deja prin comanda "asteapta" și trebuie să se execute rapid!

Detalii despre program
1. Primele instrucțiuni sunt evidente: ascundem Țestoasa și ridicăm creionul, apoi setăm o culoare pentru umplere ("brown).
2. Mutăm poziția Țestoasei inițial pe axa Y la 200 de pixeli (locul de unde începe experimentul).
3. Setăm variabila "g", accelerația gravitațională, cu valoarea 0.98. Aici nu avem metri, ci pixeli, deci am ponderat-o puțin. Ea este de fapt o constantă, nu își modifică valoarea pe parcursul programului.
4. Setăm elasticitatea la 0.7. Dacă este 0, corpul cade și se oprește. Dacă este 1, va rula la infinit, fapt ce conduce la blocarea browser-ului web - programul nu se oprește niciodată. Puteți testa diverse valori pentru acest parametru (tot constantă)!
5. Setăm variabila "v" ca fiind viteza corpului - inițial este 0.
6. Variabila "y" va reține poziția curentă (în esență centrul cercului).
7. Variabila "ok" este necesară pentru a opri instrucțiunea repetitivă "cat_timp". Dacă condiția este îndeplinită (corpul nu se mișcă o iterație, înseamnă că s-a oprit - este la sol), programul încetează.
8. În cadrul instrucțiunii repetitive, la fiecare iterație:
- reținem mai întâi poziția curentă într-o variabilă auxiliară numită "temp_y";
- curățăm ecranul complet (la fiecare cadru redesenăm întregul spațiu pentru a induce animația, mișcarea);
- adăugâm valoarea accelerației gravitaționale la viteza curentă a corpului;
- modificăm poziția corpului fix cu valoarea vitezei (totul este în pixeli);
- testăm dacă am ajuns la sol: 250 - (25, raza corpului) = 225;
- dacă am ajuns la sol, setăm poziția fix la -225 (valoarea nu e număr intreg), apoi inversăm viteza "v" și o ponderăm cu elasticitatea; astfel, va fi din ce în ce mai mică la urcare/coborâre;
- mutăm corpul la noua poziție;
- trasăm fundalul;
- trasăm cercul/corpul (în acest caz, umplem cu maro un cerc cu diametrul de 25 de pixeli);
- așteptăm pentru animație 20 de milisecunde (înainte de a merge mai departe);
- dacă poziția nu a fost modificată pe parcursul iterației, ne oprim (setăm variabila "ok" ca fiind falsă).
Algoritmul este interesant și se poate adapta ușor - până la urmă, programul are în esență doar 25 de linii de cod!

Provocare - Probleme propuse

1. Programul efectuează experimentul "în vid", deci frecarea cu aerul este 0. Adăugați o constantă numită "frecare" care să afecteze corespunzător viteza de mișcare a corpului (de exemplu, cu valoarea 0.1).

2. Cercul este un exemplu primar de obiect desenat. Puteți să-l modificați cu un elefant? (vezi obiectele grafice disponibile)

3. (*) Realizați o procedură care să permită impunerea ca parametri: obiectului grafic ca și corp, elasticitatea și poziția inițială.

4. (**) Realizați un program care să conțină două obiecte care cad din poziții diferite și cu elasticități alese la alegere.
Indicație. Puteți folosi operatorul "OR" (sau logic), care are forma generală "OR (expresie1) (expresie2)".

LOGO este aproape de un limbaj natural şi este o alternativă de învățare a programării la gimnaziu în curriculumul oficial M.E.N. [programa].
Acest proiect este susţinut şi colaborează cu:
U.P.I.R.         www.infogim.ro
ebooks.infobits.ro
Cărți, culegeri de probleme și cursuri în format electronic
(simplu, rapid, sigur, *.pdf)
www.infobits.ro
Biblioteca Digitală de Informatică "TUDOR SORIN"

Materiale educaționale în format electronic