Povestea unei rețete(sau algoritm ca să părem savanți)
Bună Seara
Cum să extragem cifrele unui număr
Am să încerc să vă povestesc astăzi despre rețeta prin care pornind de la un număr oarecare, natural, nenul putem obține cifrele din care este compus , iar cu acestea să pot face apoi tot felul de lucruri magice (exerciții, probleme, programe).
Deci cerința este să descompunem un număr natural în cifrele care îl compun, să aflăm logica acestui proces să o exprimăm în limbaje înțelese de programatori și să codificăm testând algoritmul
Structura acestui articol este :
1. Logica după care proiectăm algoritmul
2. Algoritmul – pseudocod
3. Algoritmul – schemă logică
4. Algoritmul – schemă logică Flowgorithm
5. Codificare – Scratch – Codificare vizuală cu blocuri
6. Codificare Edublocks – Python Blocuri
7. Codificare Python
8. Codificare C++
Concluzii
1. Logica după care proiectăm algoritmul
Să înțelegem logica, să considerăm numărul dat ca fiind 294. Pentru un număr dat, putem afla cu ușurință cifra prezentă la locul unităților împărțind numărul la 10.
Pasul 1: număr = 294 împărțit la 10 ne dă cât 29 și rest 4. Continuăm procesul considerând noul număr egal cu partea întreagă =29
Pasul 2: număr = 29 împărțit la 10 ne dă cât 2 și rest 9. Continuăm procesul considerând noul număr egal cu partea întreagă =2
Pasul 3: număr = 2 împărțit la 10 ne dă cât 0 și rest 2. Procesul se oprește
Putem atașa acestui proces un pseudocod ( sau o rezolvare în cuvinte pe care programatorii o înțeleg, computerul nu)
2. Algoritmul – pseudocod
General (orientat spre programator)
- Initializare variabila “numar” cu un numar introdus de utilizator
- Initializare variabila “pas” cu valoarea 1
- Inceperea unui ciclu
- a. Extragerea ultima cifra a lui “numar” si salvarea ei in variabila “cifra”
- b. Eliminarea ultima cifra din “numar”
- c. Afisarea pasului ciclului, valorii variabilei “cifra” si valorii variabilei “numar”
- d. Verificarea daca “numar” este egal cu 0. Daca este, afisarea mesajului “Stop” si iesirea din ciclu
- e. Incrementarea pasului ciclului cu 1
Specific (orientat spre cod)
Acest algoritm se concentreaza pe extragerea cifrelor unui numar prin utilizarea operatorilor modulo si de impartire la 10 cu pastrarea partii intregi, si afisarea pas cu pas a procesului.
- Initializam variabila “numar” cu un numar introdus de utilizator prin functia “input”
- Initializam variabila “pas” cu valoarea 1
- Incepem un ciclu “while” care verifica daca “numar” este diferit de 0
- In interiorul ciclului, extragem ultima cifra a lui “numar” prin utilizarea operatorului modulo (%), si o salvam in variabila “cifra”
- Eliminam ultima cifra din “numar” prin utilizarea operatorului de impartire la 10 cu pastrarea partii intregi (//)
- Afisam pasul ciclului si valorile variabilelor “cifra” si “numar”
- Verificam daca “numar” este egal cu 0, si daca este asa, afisam “Stop” si iesim din ciclu.
3. Algoritmul – schemă logică
4. Algoritmul – schemă logică Flowgorithm
5. Codificare – Scratch – Codificare vizuală cu blocuri
Legendă Scratch
Apăsarea stegulețului verde pune scripturile din www.scratch.mit.edu în execuție
Puteți testa algoritmul cu numărul dorit de dvs.
6. Codificare Edublocks – Python Blocuri
Legendă Edublocks
Apăsarea butonului de Stop dă acces la cod
Apăsarea butonului de Run pune în execuție http://www.edublocks.org
Aveti acces la interfata mediului de dezvoltare :
– puteti mari imaginea blocurilor +
– puteti micsora –
– puteti centra scriptul in mijloc =
– puteti vizualiza blocuri /text
7. Codificare Python
Legendă Replit
Apăsarea butonului de Stop dă acces la cod
Apăsarea butonului de Run pune în execuție codul aflat în contul meu pe site-ul Replit
Puteți să dați un like pe inimioara
Acest cod începe prin a cere utilizatorului sa introducă un număr natural nenul prin intermediul funcției “input”. Apoi, se inițializează variabila “pas” cu valoarea 1.
Urmeaza un ciclu “while” care verifica daca numarul introdus este diferit de 0. In interiorul ciclului, se extrage ultima cifra a numarului prin utilizarea operatorului modulo (%), si se salveaza in variabila “cifra”. Apoi se elimina ultima cifra din numar prin utilizarea operatorului de impartire la 10 cu pastrarea partii intregi (//).
Se afiseaza pasul ciclului, valoarea variabilei “cifra” si valoarea variabilei “numar”. Variabila “pas” este incrementata cu 1, si apoi se verifica daca “numar” este egal cu 0. Daca este asa, se afiseaza mesajul “Am ajuns la 0. Stop” si se iese din ciclu.
In acest caz, acest cod ia un numar introdus de utilizator, extrage cifrele sale individuale si le afiseaza impreuna cu pasul ciclului, pana cand numarul devine 0 si opreste procesul.
8. Codificare C++
In acest cod, se incepe prin a include libraria “iostream” si se utilizeaza namespace-ul “std” pentru a putea utiliza functiile cout si cin. Se declara 3 variabile: numar, cifra si pas si se initializeaza pas cu 1. Se cere utilizatorului sa introduca un numar prin intermediul functiei cout si se salveaza acest numar in variabila “numar”.
Urmeaza un ciclu while care verifica daca numarul introdus este diferit de 0. In interiorul ciclului, se extrage ultima cifra a numarului prin utilizarea operatorului modulo (%), si se salveaza in variabila “cifra”. Apoi se elimina ultima cifra din numar prin utilizarea operatorului de impartire la 10.
Se afiseaza pasul ciclului, valoarea variabilei “cifra” si valoarea variabilei “numar” prin intermediul functiei cout. Variabila “pas” este incrementata cu 1, si apoi se verifica daca “numar” este egal cu 0. Daca este asa, se afiseaza mesajul “Am ajuns la 0. Stop” si se iese din ciclu.
In acest caz, acest cod ia un numar introdus de utilizator, extrage cifrele sale individuale si le afiseaza impreuna cu pasul ciclului, pana cand numarul devine 0 si opreste procesul.
Concluzii
- orice program de calculator începe de la creion și hârtie
- cel mai important lucru este să găsim și să înțelegem logica rezolvării problemei de la care am plecat
- algoritmul pe care îl intuim și vrem să îl codificăm și testăm poate fi reprezentat prin pseudocod – o formă de limbaj înțeleasă de programatori nu și de calculator sau prin scheme logice
- există scheme logice care pot codifica desenul acesteia în linii de cod (Flowgorithm)
- dacă am testat logica și avem un algoritm bun putem codifica de 7-8 ani cu blocuri vizual (Scratch sau Edublocks- Python), rezultatele sunt aceleași ca la folosirea limbajelor de programare text
- consider logic ca evoluția în programare- codificare să fie codificare blocuri Scratch (7-10 ani) – > codificare blocuri Python(9-11 ani)- > codificare text Python(10-16 ani) – > codificare text C++(15-18 ani)
- logica de dinaintea codificării ESTE ACEEAȘI, copilul/elevul/studentul nu trebuie să fie apăsat de particularități de intrări/ieșiri, biblioteci, etc.Dacă stăpânește logica programării și a structurilor de date și de control se poate apropia de orice limbaj
Succes!