Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΜΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΜΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

More Decks by Πασχάλης Μυρμηγκάκης

Other Decks in Education

Transcript

  1. Εϊδαμε πως μπορούμε με το Scratch να φτιάξουμε ένα δικό

    μας παιχνϊδι ή κινούμενο σχέδιο. Σο Scratch όμως έχει (σχεδόν) όλα τα εργαλεϊα μιας κανονικής γλώσσας προγραμματισμού. Όλες οι εφαρμογές, τα προγράμματα, τα παιχνϊδια στους υπολογιστές ή στις κινητές συσκευές που χρησιμοποιούμε έχουν δημιουργηθεϊ με μια γλώσσα προγραμματισμού*. Ας δούμε λοιπόν ένα ή δυο παραδεϊγματα για το πώς μπορούμε να λύσουμε μαθηματικά προβλήματα με το Scratch! *Δεκνθηιείο γιώζζεο πξνγξακκαηηζκνύ είλαη νη Python, Java, Javascript, C, C#, PHP θαη άιιεο. Κάζε κηα έρεη ηε δηθή ηεο ρξεζηκόηεηα κε πιενλεθηήκαηα θαη κεηνλεθηήκαηα.
  2. Πριν ξεκινήσουμε να λύσουμε ένα πρόβλημα με το Scratch, πρέπει

    να κάνουμε τα παρακάτω ΕΡΩΣΗΜΑΣΑ: 1. Ξέρω να λύνω το πρόβλημα; 2. Μπορώ να εκφράσω την λύση του προβλήματος σαν αλγόριθμο*; 3. Μπορώ να υλοποιήσω κάθε βήμα του αλγόριθμου με τις εντολές/τουβλάκια του Scratch; Αν έχω απαντήσει ΝΑΙ και στα τρϊα, τότε εϊμαστε έτοιμοι να μάθουμε στον υπολογιστή να λύνει το πρόβλημα. Και θα μας το λύνει ΚΑΘΕ φορά, γρήγορα και σωστά! *Αιγόξηζκνο, ζπκόκαζηε, ζεκαίλεη ηελ ιύζε ελόο πξνβιήκαηνο κε ζπγθεθξηκέλα βήκαηα, ηα νπνία είλαη απιά θαη θαηαλνεηά!
  3. Έχουμε πρόσφατα δει κάποια απλά μαθηματικά προβλήματα που τα λύσαμε

    με απλά και συγκεκριμένα βήματα : την μετατροπή ενός αριθμού από το δυαδικό στο δεκαδικό σύστημα και το αντίστροφο! Ας θυμηθούμε τις διαδικασϊες εδώ! Από το ΔΤΑΔΙΚΟ στο ΔΕΚΑΔΙΚΟ Βρϊσκω την αξϊα του κάθε ψηφϊου. Ξέρω ότι οι αξϊες στο δυαδικό σύστημα εϊναι οι δυνάμεις του 2 (1, 2, 4, 8, 16 κτλ.) Πολλαπλασιάζω κάθε ψηφϊο με την αξϊα του. Προσθέτω τα αποτελέσματα. Εναλλακτικά, επειδή όταν το ψηφϊο εϊναι 0, το αποτέλεσμα εϊναι 0, προσθέτω μόνο τις αξϊες όταν το ψηφϊο εϊναι 1. Από το ΔΕΚΑΔΙΚΟ στο ΔΤΑΔΙΚΟ Διαιρώ τον αριθμό με το 2, βρϊσκω το ακέραιο πηλϊκο και κρατάω το υπόλοιπο. Διαιρώ το πηλϊκο με το 2 και κρατάω το υπόλοιπο. ΢υνεχϊζω την ϊδια διαδικασϊα μέχρι το πηλϊκο να εϊναι 0. Σα υπόλοιπα που βρήκα, από το τελευταϊο μέχρι το πρώτο, σχηματϊζουν τον δυαδικό αριθμό που ψάχνω.
  4. Αλγόριθμος 1: 1. Πάρε το τελευταϊο ψηφϊο του αριθμού και

    πολλαπλασϊασέ το με την μονάδα (20 = 1). 2. Πρόσθεσε το γινόμενο στο αποτέλεσμα. 3. Πάρε το προτελευταϊο ψηφϊο του αριθμού και πολλαπλασϊασέ το με την δυάδα (21 = 2). 4. Πρόσθεσε κι αυτό το γινόμενο στο αποτέλεσμα. 5. ΢υνέχισε έτσι μέχρι και το πρώτο ψηφϊο του αριθμού. Αλγόριθμος 2: 1. Πάρε το τελευταϊο ψηφϊο του αριθμού. Αν εϊναι 1, πρόσθεσε την μονάδα (20 = 1) στο αποτέλεσμα. 2. Πάρε το προτελευταϊο ψηφϊο του αριθμού. Αν εϊναι 1, πρόσθεσε την δυάδα (21 = 2) στο αποτέλεσμα. 3. ΢υνέχισε έτσι μέχρι και το πρώτο ψηφϊο του αριθμού. Ατξύ νέοχ ςιπ λύρειπ ςχμ ποξβλημάςχμ, απ ςιπ γοάφχ με απλά βήμαςα : Αλγόριθμος: 1. Διαϊρεσε τον αριθμό με το 2. Βρες το πηλϊκο και το υπόλοιπο της διαϊρεσης. 2. Πάρε το προηγούμενο πηλϊκο και διαϊρεσέ το με το 2. «Κόλλησε» το νέο υπόλοιπο μπροστά από το προηγούμενο. 3. ΢υνέχισε έτσι μέχρι να βρεις πηλϊκο 0. 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 Σην πξόβιεκα 1 ρξεζηκνπνηώ ηηο δσνάμεις ηοσ 2. Γηα λα ζπκεζνύκε, νη δπλάκεηο ελόο αξηζκνύ είλαη πόζεο θνξέο ηνλ πνιιαπιαζηάδσ κε ηνλ εαπηό ηνπ. Τν δηπιαλό πηλαθάθη κνπ δείρλεη ηηο δπλάκεηο ηνπ 2, από ηελ κεδεληθή κέρξη ηελ όγδνε.
  5. Αν έχουμε εξοικειωθεϊ με τις εντολές του Scratch, θα δούμε

    ότι τα προηγούμενα βήματα μπορούμε να τα υλοποιήσουμε με αυτές. Ας δούμε πως! Σο πρώτο βήμα εϊναι το πιο δύσκολο, αν το καταλάβουμε, όλα μετά εϊναι ευκολότερα! 1. Πάρε το τελευταϊο ψηφϊο του αριθμού και πολλαπλασϊασέ το με την μονάδα (20 = 1). Πσο ζα πάξνπκε ην ηειεπηαίν ςεθίν ηνπ αξηζκνύ ζην Scratch; Η ρξήζηκε εληνιή θάησ (από ηνπο Τειεζηέο) καο δίλεη έλα γξάκκα από κηα ιέμε ή έλα ςεθίν από έλαλ αξηζκό κε βάζε ηελ ζέζε ηνπ! Πσο μέξνπκε όκσο πνην είλαη ην ηειεπηαίν ςεθίν; Μπνξεί ν αξηζκόο καο λα έρεη 5 ή 9 ςεθία! Επηπρώο, ππάξρεη ε από θάησ εληνιή πνπ καο ιέεη πόζα ςεθία έρεη έλαο αξηζκόο! Ξέξσ όηη κπνξώ λα θάλσ πξνζζέζεηο, πνιιαπιαζηαζκνύο θαη λα απνζεθεύσ πξάγκαηα ζε κεηαβιεηέο. Τη κεηαβιεηέο ρξεηάδνκαη όκσο; 1. Τνλ δπαδηθό αξηζκό πνπ ςάρλσ λα βξσ. Αθνύ απηόλ ηνλ αξηζκό ηνλ γξάθνπκε εκείο, ην Scratch ηνλ απνζεθεύεη ζηελ έηνηκε κεηαβιεηή απάνηηζη. 2. Τν αποηέλεζμα πνπ πξέπεη λα βξσ. 3. Τελ δύναμη πνπ πνιιαπιαζηάδσ ζε θάζε βήκα. 4. Τέινο, παξαηεξώ ην εμήο: ζε θάζε βήκα ρξεηάδνκαη λα ππνινγίδσ ηελ δύλακε 0, κεηά ηελ δύλακε 1, 2, 3 θηι. Χξεηάδνκαη ινηπόλ θαη κηα κεηαβιεηή πνπ ζα απνζεθεύεη ην 0, 1, 2, 3 θηι. Απηή ηελ νλνκάδσ μεηρηηή. Ο κεηξεηήο ζα κνπ ρξεζηκεύζεη θαη ζε θάηη άιιν : λα πεγαίλσ θάζε θνξά ζην ςεθίν πνπ ζέισ! Παξαηεξώ θαη θάηη άιιν : πξέπεη λα ππνινγίδσ κηα δύλακε ηνπ 2 ζε θάζε βήκα, δειαδή λα θάλσ πνιινύο πνιιαπιαζηαζκνύο πνπ ζα ρξεηάδνληαη πνιιά ηνπβιάθηα ηνπ Scratch. Μπνξώ λα θάλσ απηό ηνλ ππνινγηζκό κε 1 ηνπβιάθη κόλν; Ναη, κπνξώ λα θηηάμσ κηα δηθή κνπ εληνιή ζην Scratch θαη ζα δνύκε πσο ζηηο επόκελεο δηαθάλεηεο!
  6. Για μα τςιάνω μια δική μξσ εμςξλή, πάω ρςημ ςελεσςαία

    καςηγξοία Οι Δμςξλέπ μξσ και επιλέγω Δημιξσογία Δμςξλήπ. Αουικά γοάτω έμα όμξμα για ςημ εμςξλή μξσ (ΣΤΡΙΦΟΓΥΡΙΣΔ) και μεςά μπξοώ μα ποξρθέρω αμ θέλω ςα παοακάςω: 1. Δίρξδξ δεδξμέμωμ (αοιθμόπ ή κείμεμξ): κάςι πξσ θα πάοει η εμςξλή ραμ μεςαβληςή για μα κάμει κάςι με ασςό. (όπωπ η εμςξλή Κιμήρξσ ςόρα βήμαςα) 2. Δίρξδξ δεδξμέμωμ (λξγική): εδώ μπξοξύμε μα βάλξσμε μια ρύγκοιρη ρυήμαςξπ οόμβξσ, ή ξςιδήπξςε έυει απξςέλερμα true ή false. Μπξοξύμε μα ςξ υοηριμξπξιήρξσμε μέρα ρε έμα Δάμ ρςημ εμςξλή μαπ. 3. Δςικέςα : η εςικέςα είμαι κάςι πξσ γοάτξσμε για μα διαβάζεςαι πιξ ωοαία η εμςξλή μαπ και μα καςαλαβαίμξσμε καλύςεοα ςι κάμει. Όςαμ έυχ τςιάνει μια λειςξσογία ρςξ Scratch πξσ υοειάζεςαι μα ςημ υοηριμξπξιήρχ ρε πξλλά μέοη, ίρχπ με λίγξ διατξοεςικό ςοόπξ κάθε τξοά, ςόςε μπξοώ μα τςιάνχ μια δικιά μξσ εμςξλή, έμα ςξσβλάκι πξσ θα εκςελεί ασςή ςημ λειςξσογία!
  7. Βλέπξσμε παοαπάμω πωπ λειςξσογεί η δικιά μαπ εμςξλή. Κάςω από

    ςξμ ξοιρμό κξλλάμε ςημ λειςξσογία πξσ τςιάναμε, και υοηριμξπξιξύμε ςιπ ειρόδξσπ από ςημ δημιξσογία ςηπ εμςξλήπ ραμ μεςαβληςέπ (ςιπ ςοαβάμε από ςξμ ξοιρμό και ςιπ ςξπξθεςξύμε εκεί πξσ θέλξσμε). Η εληνιή καο βξίζθεηαη πιένλ έηνηκε ζαλ ηνπβιάθη. Όηαλ ηελ ρξεζηκνπνηνύκε βάδνπκε ζηα θελά πιαίζηα απηά πνπ ρξεηαδόκαζηε θάζε θνξά, όπσο θαη ηηο άιιεο εληνιέο ηνπ Scratch. Μπνξνύκε δειαδή λα γξάςνπκε δηθέο καο ηηκέο ή λα βάινπκε άιιεο κεηαβιεηέο!
  8. Η διπλανή εντολή υπολογϊζει την δύναμη του 2 που χρειαζόμαστε

    κάθε φορά, ανάλογα με την εϊσοδο ψηφϊο. Η δύναμη του 2 αποθηκεύεται στην μεταβλητή δύναμη. Πως γϊνεται ο υπολογισμός; Βλέπουμε πως πρώτα ορϊζουμε την δύναμη σε 1. Μετά την πολλαπλασιάζουμε με το 2, όσες φορές εϊναι το ψηφϊο, με ένα επανάλαβε! Άρα όταν το ψηφϊο εϊναι 0, δε κάνουμε καμιά επανάληψη και η δύναμη μένει 1 (20 = 1). Με μια επανάληψη, κάνουμε ένα πολλαπλασιασμό με το 2 και η δύναμη εϊναι 2 (21 = 2). Έτσι υπολογϊζουμε όποια δύναμη του 2 θέλουμε με ένα τουβλάκι μόνο!
  9. Εϊμαστε τώρα έτοιμοι να υλοποιήσουμε τον αλγόριθμο στο Scratch. Παρακάτω

    βλέπουμε με ποια τουβλάκια βρϊσκουμε το ψηφϊο σε κάθε βήμα και πολλαπλασιάζουμε με την κατάλληλη δύναμη του 2. Εϊπαμε ότι πρέπει να πάρουμε τα ψηφϊα του δυαδικού αριθμού από το τελευταϊο προς το πρώτο, και σε αυτό θα μας βοηθήσει η μεταβλητή μετρητής. Πως ακριβώς; Εϊναι πολύ απλό. Ο μετρητής αυξάνεται από το 0 μέχρι το μήκος του αριθμού μας (τον αριθμό των ψηφϊων του). Άρα σε κάθε βήμα αν αφαιρώ τον μετρητή από το μήκος, θα έχω τον αριθμό που θέλω! Δϊπλα εϊναι ένα παράδειγμα με τον αριθμό 101100. μεηρηηής μήκος - μεηρηηής ψηθίο Δύναμη ηοσ 2 Γινόμενο 0 6-0 = 6 101100 20 = 1 0 x 1 = 0 1 6-1 = 5 101100 21 = 2 0 x 2 = 0 2 6-2 = 4 101100 22 = 4 1 x 4 = 4 3 6-3 = 3 101100 23 = 8 1 x 8 = 8 4 6-4 = 2 101100 24 = 16 0 x 16 = 0 5 6-5 = 1 101100 25 = 32 1 x 32 = 32 = 44 Σηελ κεηαβιεηή απάνηηζη απνζεθεύεηαη ν δπαδηθόο αξηζκόο καο θαη κε ηελ εληνιή μήκος μέξσ πόζα ςεθία έρεη (6 ζην δηθό καο παξάδεηγκα!)
  10. Αφού βρήκα το γινόμενο του κάθε ψηφϊου με την αντϊστοιχη

    δύναμη του 2, τώρα πρέπει να αλλάζω τον μετρητή επαναληπτικά και αυτά τα γινόμενα να τα προσθέτω στο αποτέλεσμα! Η τελική υλοποϊηση φαϊνεται παρακάτω: Παρατηρώ τα εξής: 1. Πρέπει να ορϊσω μετρητή και αποτέλεσμα σε 0. 2. Φρησιμοποιώ επανάλαβε ώσπου και τελειώνω την επανάληψη όταν ο μετρητής γϊνει ϊσος με το μήκος. 3. Προσθέτω το γινόμενο στο αποτέλεσμα σε κάθε επανάληψη. 4. Υυσικά, αλλάζω τον μετρητή κατά 1 κάθε φορά. 5. Ανακοινώνω το αποτέλεσμα με μια εντολή πες. Αλ ζαο κπεξδεύεη ε γξακκή όπνπ νξίδνπκε ην απνηέιεζκα ζε κηα πξόζζεζε πνπ έρεη κέζα ην απνηέιεζκα, θαληαζηείηε όηη ε κεηαβιεηή είλαη έλα ζπξηάξη. Σε θάζε πξόζζεζε ην αλνίγνπκε θαη βάδνπκε θάηη θαηλνύξγην κέζα.
  11. Αυτό που κάναμε ήταν ο Αλγόριθμος 1. ΢τον Αλγόριθμο 2

    τα πράγματα εϊναι παρόμοια και μάλλον λϊγο ευκολότερα! ΢τον Αλγόριθμο 2 αν θυμάστε αντϊ να κάνουμε πολλαπλασιασμό, προσθέτουμε την δύναμη μόνο αν το ψηφϊο εϊναι 1. Φρησιμοποιούμε μια εντολή Εάν για αυτή την δουλειά! Όιε απηή ε ιεηηνπξγία (όπσο θάζε ιεηηνπξγία ζην Scratch – νλνκάδνπκε θάζε ηέηνην θνκκάηη Σενάριο) μεθηλάεη από έλα Σσμβάν. Εκείο δηαιέγνπκε πνην ζα είλαη απηό ην ζπκβάλ, αλάινγα πσο ζέινπκε λα μεθηλάεη ε εθαξκνγή καο. Μπνξεί λα γίλεηαη κε ηελ πράζινη ζημαία, κπνξεί λα παηάκε θάπνην αληηθείκελν, λα ζηέιλνπκε έλα κήλπκα θηι. Αλγόριθμος 2: 1. Πάρε το τελευταϊο ψηφϊο του αριθμού. Αν εϊναι 1, πρόσθεσε την μονάδα (20 = 1) στο αποτέλεσμα. 2. Πάρε το προτελευταϊο ψηφϊο του αριθμού. Αν εϊναι 1, πρόσθεσε την δυάδα (21 = 2) στο αποτέλεσμα. 3. ΢υνέχισε έτσι μέχρι και το πρώτο ψηφϊο του αριθμού.
  12. Με αυτά που μάθαμε, δεν θα δυσκολευτούμε να καταλάβουμε την

    υλοποϊηση του αλγόριθμου του Προβλήματος 2! Παρακάτω βλέπουμε όλη την λειτουργϊα : ΢το Πρόβλημα 2 αν θυμόμαστε, μετατρέπουμε έναν αριθμό από το δεκαδικό στο δυαδικό σύστημα, δηλαδή το αντϊστροφο από το Πρόβλημα 1! Εδώ πξέπεη λα πξνζέμνπκε ηα εμήο: 1. Χξεζηκνπνηνύκε ηελ εληνιή Ένωζε κε ην απνηέιεζκα δεύηεξν! Έηζη, θάζε θαηλνύξγην ππόινηπν κπαίλεη από κπξνζηά, όπσο ζέινπκε. 2. Σηνπο Τελεζηές βξίζθνπκε ρξήζηκεο καζεκαηηθέο ιεηηνπξγίεο όπσο ην αθέξαην ππόινηπν κηαο δηαίξεζεο θαη ηελ ζηξνγγπινπνίεζε πξνο ηα θάησ (πνπ ρξεηαδόκαζηε γηα λα πάξνπκε ην πειίθν ρσξίο δεθαδηθά ςεθία!). Αλγόριθμος: 1. Διαϊρεσε τον αριθμό με το 2. Βρες το πηλϊκο και το υπόλοιπο της διαϊρεσης. 2. Πάρε το προηγούμενο πηλϊκο και διαϊρεσέ το με το 2. «Κόλλησε» το νέο υπόλοιπο μπροστά από το προηγούμενο. 3. ΢υνέχισε έτσι μέχρι να βρεις πηλϊκο 0.