Număr Natural Inversat – Scratch& Python
Programul face parte din tranzitia Scratch Python
La ce ne folosește să inversăm un număr natural ? Este una din întrebările pe care fiecare copil și le pune. Aici vreau să introduc o întâmplare celebră :
George Mallory rămâne faimos pentru trei cuvinte nemuritoare pe care le-a spus unui reporter al New York Times în 1923 – „Pentru că este acolo” – care au avut ecou în cultura occidentală. Ele sunt invariabil amintite ori de câte ori cineva încearcă să justifice o ambiție presupus nejustificată.
De ce să călătorești pe Lună? De ce să explorezi adâncurile oceanului?
George Mallory a fost un alpinist englez care a participat la primele trei expediții britanice pe Muntele Everest la începutul anilor 1920.Odată întrebat de un reporter de ce a vrut să urce Everestul, Mallory a răspuns celebru: „Pentru că este acolo”.
Este răspunsul cu care trebuie să îi învățăm pe copiii noștri, problemele trebuie rezolvate pentru că EXISTĂ
Descrierea problemei
Dacă introducem de la tastatură 6785 programul să întoarcă 5876
Conceptul este foarte important și este folosit pentru a recunoaște modele. Folosim acest concept pentru a verifica sau a crea palindromuri (numere care citite de la fata spre state sunt aceleași si la citire inversă)
Abordarea Think.And.Think – dezvoltarea unui algoritm
Numărul 6785 împărit la 10 ne furnizeaza 678,5 în care 678 este ce ramane din numarul initial iar restul 5 este prima cifra a numarului inversat
Numarul 678 împartit la 10 ne furnizeaza 67,8 in care 67 este ce ramane din numarul initial trunchiat avem 8 a doua cifra a numarului inversat
Cum putem scrie aceste lucruri cu operatori matematici
Daca avem 6785 si invers =0
cifra = 6785 modulo 10
invers= invers* 10 + cifra
numar= numar/10
Acest proces trebuie repetat până când găsim toate cifrele . Să vedem :
pasul 1- CIFRA UNITĂȚILOR
numar= 6785
cifra= 6785 modulo 10= 5
invers=invers*0+5 = 5
numar=6785/10 = 678 (atenie fiind natural , ignoram zecimalele)
pasul 2- CIFRA ZECILOR
numar=678
cifra = 678 mod 10=8
invers= 5*10+8= 58
numar= 678/10= 67
pasul 2- CIFRA SUTELOR
numar=67
cifra = 67 mod 10=7
invers= 58*10+7=587
numar= 67/10= 6
pasul 2- CIFRA MIILOR
numar=6
cifra = 6 mod 10=6
invers= 587*10+6=5876
numar= 6/10= 0
Cât iterăm/ciclăm ? Până când numar=0
Algoritmul reprezentat prin:
Pseudocod
citeste numar;
invers = 0;
atata timp cat (numar >0){
cifra=numar modulo 10;
invers=invers*10+cifra;
numar=numar/10;
afișeaza numar, invers
Schemă logică
Acum vom codifica algoritmul dezvoltat cu ajutorul celor doua limbaje de programare : Scratch si Python. Particularitățile vor fi subliniate la fiecare limbaj în parte.
Abordarea Think.And.Scratch
Pentru a scrie programul in Scratch vom defini variabilele :
stergem elementele anterioare din lista
ascundem lista
pozitionam personajul
setam marime
decor
numar = 0
invers = 0
cifra = 0
Cu aceste variabile vom lucra
introducere numar de la tastatura
setarea variabilei numar cu datele introduse
introducere in lista Rezultate
repeta până când numar=0
cifra= numar modulo 10
invers = invers *10+cifra
numar = parte intreaga (numar/10) - in Scratch variabilele nu sunt segregate : natural, zecimal siruri. Folosim partea intreaga
de retinut că ciclăm până la numar = 0
am introdus pentru ilustrare toti pasii in lista
Si in final rezultatul
Program similar Python
Program varianta 1 utilizarea unei bucle cu contor length (numar)
Program varianta 2 utilizarea unei bucle cu contor length (numar) și functie definita Inverseaza
Abordarea Think.And.Python
Acesta este un program Python pentru a inversa un anumit număr.
Program sursă
numar=int(input("Introduceti un numar natural "))
invers=0
while(numar > 0):
cifra =numar % 10
invers = invers * 10+ cifra
numar=numar//10
print(cifra,invers,numar)
print("Numarul inversat:",invers)
1. Utilizatorul trebuie mai întâi să introducă valoarea numarului și să o stocheze într-o variabilă n.umar
2. Se folosește bucla while și se obține ultima cifră a numărului folosind operatorul modul
3. Ultima cifră este apoi stocată la locul unitatilor, ultima la locul zecilor și așa mai departe.
4. Ultima cifră este apoi eliminată prin împărțirea efectivă a numărului cu 10 (numarul natural va ignora zecimalele)
5. Această buclă se termină când valoarea numărului este 0.
6. Se imprimă apoi numarul inversat.