21
"Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή του περιβάλλοντος του BYOB Το BYOB είναι ένα περιβάλλον προγραμματισμού, που στηρίζεται στη γλώσσα LOGO. Αποτελεί προέκταση του Scratch. Η νέα δυνατότητα που προσφέρει είναι η υποστήριξη διαδικασιών(δηλαδή εντολών που κατασκευάζει ο ίδιος ο προγραμματιστής και δεν προϋπάρχουν στη γλώσσα). Από εκεί προέρχεται και το όνομα Build Your Own Blocks(BYOB) που σε ελεύθερη μετάφραση σημαίνει “φτιάξε τις δικές σου εντολές”. Σύμφωνα με τον κατασκευαστή του, το BYOB(Scratch) είναι “Ένα εργαλείο για να κατασκευάσεις τις δικές σου διαδραστικές ιστορίες, παιχνίδια, μουσική ή τέχνη”. Προσφέρει πάρα πολλές δυνατότητες, που σε συνδυασμό με την ευκολία χρήσης, το καθιστούν ένα ιδιαίτερα ελκυστικό περιβάλλον εργασίας, για μαθητές που έρχονται για πρώτη φορά σε επαφή με το κόσμο του προγραμματισμού. α. Κύρια χαρακτηριστικά του περιβάλλοντος Η οθόνη του BYOB, αποτελείται από τέσσερα τμήματα: Σκηνικό( πάνω δεξιά) : Είναι ο χώρος που διαδραματίζεται η ιστορία μας. Σε αυτό συναντάμε το “υπόβαθρο”(φόντο της ιστορίας μας), καθώς και τους ήρωές της(“μορφές”). Μορφές (κάτω δεξιά) : Οι ήρωες της ιστορίας μας Σενάρια (κέντρο) : Είναι η περιοχή του προγράμματος, δηλαδή η περιοχή στην οποία περιγράφουμε με εντολές, τις ενέργειες που θα εκτελέσει η κάθε μορφή, στην εξέλιξη της ιστορίας μας. Τρέχουσα μορφή (πάνω από το κέντρο) : Είναι η μορφή στην οποία αναφέρονται οι εντολές του σεναρίου. Την επιλέγουμε από την οθόνη “μορφές”. Περιοχή εντολών (αριστερά) : Το ρεπερτόριο των διαθέσιμων εντολών, με τις οποίες μπορούμε να δημιουργήσουμε τα προγράμματά μας(σενάρια της κάθε μορφής). Οι εντολές μοιάζουν με “του- βλάκια lego”. Για να δημιουργήσουμε ένα πρόγραμμα, δεν έχουμε παρά να σύρουμε τις κατάλληλες εντολές από την περιοχή εντολών στην περιοχή προγράμματος, να τις βάλουμε στη σωστή σειρά και να τις ενώσουμε. Δεν χρειάζεται άρα, να νοιαζόμαστε για συντακτικά λάθη, παρά μόνο για τη λογική σειρά τους(λογικά λάθη). Δημιουργήθηκε από τον Κ.Χαριτόπουλο

Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

"Ο προγραμματισμός στην πράξη”

Ενότητα1. Σύντομη περιγραφή του περιβάλλοντος του BYOB

Το BYOB είναι ένα περιβάλλον προγραμματισμού, που στηρίζεται στη γλώσσα LOGO. Αποτελεί προέκταση του Scratch. Η νέα δυνατότητα που προσφέρει είναι η υποστήριξη διαδικασιών(δηλαδή εντολών που κατασκευάζει ο ίδιος ο προγραμματιστής και δεν προϋπάρχουν στη γλώσσα). Από εκεί προέρχεται και το όνομα Build Your Own Blocks(BYOB) που σε ελεύθερη μετάφραση σημαίνει “φτιάξε τις δικές σου εντολές”.

Σύμφωνα με τον κατασκευαστή του, το BYOB(Scratch) είναι “Ένα εργαλείο για να κατασκευάσεις τις δικές σου διαδραστικές ιστορίες, παιχνίδια, μουσική ή τέχνη”.

Προσφέρει πάρα πολλές δυνατότητες, που σε συνδυασμό με την ευκολία χρήσης, το καθιστούν ένα ιδιαίτερα ελκυστικό περιβάλλον εργασίας, για μαθητές που έρχονται για πρώτη φορά σε επαφή με το κόσμο του προγραμματισμού. α. Κύρια χαρακτηριστικά του περιβάλλοντος

Η οθόνη του BYOB, αποτελείται από τέσσερα τμήματα:• Σκηνικό( πάνω δεξιά) : Είναι ο χώρος που διαδραματίζεται η ιστορία μας. Σε αυτό συναντάμε το

“υπόβαθρο”(φόντο της ιστορίας μας), καθώς και τους ήρωές της(“μορφές”).• Μορφές (κάτω δεξιά) : Οι ήρωες της ιστορίας μας• Σενάρια (κέντρο) : Είναι η περιοχή του προγράμματος, δηλαδή η περιοχή στην οποία περιγράφουμε

με εντολές, τις ενέργειες που θα εκτελέσει η κάθε μορφή, στην εξέλιξη της ιστορίας μας.• Τρέχουσα μορφή (πάνω από το κέντρο) : Είναι η μορφή στην οποία αναφέρονται οι εντολές του

σεναρίου. Την επιλέγουμε από την οθόνη “μορφές”.• Περιοχή εντολών (αριστερά) : Το ρεπερτόριο των διαθέσιμων εντολών, με τις οποίες μπορούμε να

δημιουργήσουμε τα προγράμματά μας(σενάρια της κάθε μορφής). Οι εντολές μοιάζουν με “του-βλάκια lego”. Για να δημιουργήσουμε ένα πρόγραμμα, δεν έχουμε παρά να σύρουμε τις κατάλληλες εντολές από την περιοχή εντολών στην περιοχή προγράμματος, να τις βάλουμε στη σωστή σειρά και να τις ενώσουμε. Δεν χρειάζεται άρα, να νοιαζόμαστε για συντακτικά λάθη, παρά μόνο για τη λογική σειρά τους(λογικά λάθη).

Δημιουργήθηκε από τον Κ.Χαριτόπουλο

Page 2: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

"Ο προγραμματισμός στην πράξη”Το BYOB, διαθέτει πολλούς τρόπους για να ορίσουμε την εμφάνιση των μορφών και του υπόβαθρου

(έτοιμες εικόνες, εργαλείο ζωγραφικής, κάμερα, δικές μας εικόνες).Στο κείμενο που ακολουθεί, θα εστιάσουμε στο κομμάτι “προγραμματισμός”. Τις παραπάνω δυνα-

τότητες, τις αφήνουμε να τις διερευνήσει μόνος του ο αναγνώστης.β. Εγκατάσταση του BYOB1. Πηγαίνουμε με το φυλλομετρητή μας(Internet Explorer, Mozilla Firefox, Google Chrome, Opera κλπ)

στη διεύθυνση http://byob.berkeley.edu/ και πατάμε στο σύνδεσμο DOWNLOADS.2. Εκεί διαλέγουμε και κατεβάζουμε την έκδοση του BYOB που είναι κατάλληλη για το λειτουργικό

σύστημα που διαθέτουμε. Πχ για τα Windows θα πατήσουμε στο Windows installer.3. Αφού κατέβει το αρχείο “ΒΥΟΒ 3.1.1 Setup.exe”, το εντοπίζουμε στο φάκελό του(Συνήθως “Ο

Υπολογιστής μου->Λήψεις” για Windows7/Vista ή “Ο Υπολογιστής μου->Ληφθέντα αρχεία” για Windows XP). Κάνουμε διπλό κλικ για να γίνει η εγκατάσταση. Αφήνουμε το φάκελο εγκατάστασης στο “C:\BYOB”.

4. Στην ιστοσελίδα “Downloads” του BYOB, κάνουμε δεξί κλικ στο σύνδεσμο “Greek translation”, επιλέγουμε “Αποθήκευση προορισμού ως” ή “Αποθήκευση δεσμού ως”, ανάλογα με το φυλλομετρητή μας, και ως φάκελο προορισμού του αρχείου “el.po” επιλέγουμε τον “C:->BYOB->locale”. Το αρχείο “el.po”, θα κάνει το περιβάλλον του BYOB, Ελληνικό.

5. Τέλος, ανοίγουμε το BYOB, κάνουμε δεξί κλικ στην υδρόγειο(πάνω αριστερά στο μενού) και επι-λέγουμε “Ellinika”.

Δημιουργήθηκε από τον Κ.Χαριτόπουλο

Page 3: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -1-

Ενότητα 2. Κίνηση και γεωμετρικά σχήματαα. Θέση και προσανατολισμός της μορφήςΗ θέση της κάθε μορφής στο σκηνικό προσδιορίζεται από ένα σύστημα συντεταγμένων (x,y). Η κατεύθυνση καθορίζεται από μια γωνία, η οποία κυμαίνεται μεταξύ -180 και 180 μοιρών. Η περιοχή της τρέχουσας μορφής περιλαμβάνει τη θέση και τον προσανατολισμό της.

Ο συνδυασμός θέσης-κατεύθυνσης, καθορίζει το αποτέλεσμα της εκτέλεσης των εντολών κίνησης της μορφής.β. Η πένα

Κάθε μορφή κουβαλάει μαζί της μια πένα. Η πένα έχει δύο καταστάσεις : σηκωμένη, κατεβασμένη.Όταν η πένα είναι κατεβασμένη, η μορφή κινείται και ταυτόχρονα ζωγραφίζει την πορεία που ακο-

λουθεί.Αντιθέτως, όταν η πένα είναι ανεβασμένη, η μορφή απλώς κινείται χωρίς να ζωγραφίζει.Η κατάσταση της πένας ρυθμίζεται από δύο εντολές:• κατέβασε πένα• σήκωσε πέναΣτην παρακάτω εικόνα, βλέπουμε ένα παράδειγμα χρήσης της πένας.

Είναι προφανές ότι όταν θέλουμε να δημιουργήσουμε σχέδια, η πρώτη μας εντολή θα πρέπει να εί - ναι η “κατέβασε πένα”(Σημείωση: Για περισσότερες εντολές και παραδείγματα χρήσης της πένας αλλά και των άλλων κατηγο-ριών που ακολουθούν, διαβάστε τον “Οδηγό αναφοράς των εντολών του BYOB”)γ. Εντολές κίνησης

Οι εντολές που κινούν τη μορφή χωρίζονται σε δύο κατηγορίες:α) Εντολές σχετικής κίνησης. Η νέα θέση και κατεύθυνση της μορφής, εξαρτώνται από την προη-

γούμενη θέση και κατεύθυνσή της. Στην κατηγορία αυτή ανήκουν οι:• κινήσου Χ βήματα : Η χελώνα κινείται προς την κατεύθυνση που δείχνει, όσα βήματα καθορίζει

το Χ. Το Χ είναι ένας ακέραιος αριθμός που παριστάνει εικονοστοιχεία(pixels). Αν το Χ είναι αρνητι-κός αριθμός, τότε η μορφή κινείται προς την αντίθετη κατεύθυνση. Πχ “κινήσου 50 βήματα”, (η μορφή κινείται μπροστά 50 pixels), “κινήσου -40 βήματα” (η μορφή κινείται προς τα πίσω 40 pixels).

• στρίψε δεξιά Χ μοίρες: Η μορφή στρίβει δεξιά Χ μοίρες. Η νέα κατεύθυνση είναι η παλιά + Χ μοί-ρες. Πχ “στρίψε δεξιά 40 μοίρες” (Αν η αρχική κατεύθυνση ήταν 90 μοίρες, η νέα θα είναι 130 μοί -

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Το εύρος των συντεταγμένων του σκηνικού

Η τρέχουσα μορφή

Κατεύθυνση της μορφής

11

2 23

3

4

4

Page 4: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -2-ρες).

• στρίψε αριστερά Χ μοίρες: Η μορφή στρίβει αριστερά Χ μοίρες. Η νέα κατεύθυνση είναι η παλιά – Χ μοίρες. Πχ “στρίψε αριστερά 30 μοίρες”. (Αν η αρχική κατεύθυνση ήταν 90 μοίρες, η νέα θα εί-ναι 60 μοίρες).

β) Εντολές απόλυτης κίνησης. Η νέα θέση και κατεύθυνση της χελώνας καθορίζεται απευθείας από τις εντολές:

• πήγαινε στο x:_ y:_ . Η μορφή πηγαίνει απευθείας στις συντεταγμένες που καθορίζουν οι αριθ-μοί μετά τα x: και y: Πχ “πήγαινε στο x: 0 y: 0” (Η μορφή πηγαίνει στη θέση με συντεταγμένες (0,0)-κέντρο του σκηνικού).

• δείξε στην κατεύθυνση Χ . Η νέα κατεύθυνση της μορφής είναι Χ μοίρες. Πχ “δείξε στην κατεύ-θυνση 30”

• “θέση_x”, “θέση_y”, “κατεύθυνση”. Μεταβλητές που παριστάνουν τις συντεταγμένες(x,y) και την κατεύθυνση της μορφής.δ. Ζωγραφίζοντας ένα τετράγωνο

Ας δοκιμάσουμε τώρα, χρησιμοποιώντας τις εντολές κίνησης να ζωγραφίσουμε ένα τετράγωνο πλευράς 100 pixel.

1. Κατέβασε πένα

2. Κινήσου 100 βήματα

3. Στρίψε δεξιά 90 μοίρες

4. Κινήσου 100 βήματα

5. Στρίψε δεξιά 90 μοίρες

6. Κινήσου 100 βήματα

7. Στρίψε δεξιά 90 μοίρες

8. Κινήσου 100 βήματα

9. Στρίψε δεξιά 90 μοίρες

Παρατηρείστε ότι ο αριθμός που βάζουμε στην εντολή “κινήσου”, παριστάνει την πλευρά του τετρα-γώνου. Επίσης ότι στρίβουμε αριστερά ή δεξιά με βάση τον προσανατολισμό της μορφής και όχι με βάση τον τρόπο που εμείς την βλέπουμε στην οθόνη.

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 5: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -3-ε. Η εντολή “επανάλαβε”Παρατηρούμε ότι οι εντολές “κινήσου 100 βήματα” και “στρίψε δεξιά 90 μοίρες” επαναλαμβάνο-

νται. Δηλαδή εκτελούνται διαδοχικά τέσσερις φορές, χωρίς να παρεμβάλλονται ενδιάμεσα άλλες εντολές.Το φαινόμενο αυτό, το ονομάζουμε επαναληπτική δομή και το συναντάμε συχνά στους αλγορίθ-

μους. Γι' αυτό, οι γλώσσες προγραμματισμού προσφέρουν εντολές που μας επιτρέπουν να τις διατυ-πώσουμε με πιο κομψό τρόπο.

Χρησιμοποιώντας μια τέτοια εντολή στο BYOB, το πρόγραμμα για το τετράγωνο θα γράφονταν ως εξής: επανάλαβε 4κινήσου 100 βήματαστρίψε δεξιά 90 μοίρεςτέλος επανάληψης

Σημείωση: Το “τέλος επανάληψης” δεν υπάρχει στο πραγματικό BYOB. Το χρησιμοποιούμε συμβατικά, όταν γράφουμε το πρόγραμμα στο χαρτί, για να δείξουμε το τέλος των εντολών που επαναλαμβάνονται. Παρόμοιες συμ-βάσεις θα κάνουμε και με άλλες εντολές του BYOB, παρακάτω.

Η εντολή “επανάλαβε” ακολουθείται από έναν αριθμό που παριστάνει το πλήθος των επαναλήψεων και, φυσικά, τις εντολές που θέλουμε να επαναλάβουμε.

Χρησιμοποιούμε την παραπάνω εντολή, όταν το πλήθος των επαναλήψεων είναι γνωστό. Σε επόμε-νη ενότητα θα γνωρίσουμε και μια άλλη εντολή επανάληψης, που χρησιμοποιείται όταν το πλήθος μας εί -ναι άγνωστο.στ. Ζωγραφίζοντας τα υπόλοιπα γεωμετρικά σχήματα

Ας δοκιμάσουμε τώρα να ζωγραφίσουμε ένα ισόπλευρο τρίγωνο πλευράς 100. Οι εντολές που το δημιουργούν είναι:

επανάλαβε 3κινήσου 100 βήματαστρίψε δεξιά 120 μοίρεςτέλος επανάληψηςΑπό τη γεωμετρία, γνωρίζουμε ότι οι γωνίες ενός ισόπλευρου τριγώνου είναι 60 μοίρες. Γιατί όμως

εμείς στρίβουμε 120 μοίρες στο πρόγραμμά μας; Η ανάλυση της κίνησης που εκτελεί η μορφή, μας δίνει την απάντηση.

Παρατηρούμε, ότι για να σχηματίσουμε τη γωνία 60 μοιρών, θα πρέπει να στρίψουμε κατά την πα-ραπληρωματική της, δηλαδή 180-60=120 μοίρες

ΔραστηριότηταΓια να ζωγραφίσουμε ένα τετράγωνο, κάναμε μια πλήρη περιστροφή 360 μοιρών σε τέσσερα βήματα, στρί-

βοντας στο καθένα 360:4 =90 μοίρες. Αντίστοιχα, στο ισόπλευρο τρίγωνο, κάναμε τρία βήματα, που στο καθένα στρίψαμε 360:3=120 μοίρες.

Χρησιμοποιείστε την παραπάνω παρατήρηση για να ζωγραφίσετε κανονικά πολύγωνα. Συγκεκριμένα ζω-γραφίστε ένα πεντάγωνο, ένα εξάγωνο και ένα δωδεκάγωνο.Απάντηση

Στο πεντάγωνο θα κάνουμε πέντε βήματα, που στο καθένα θα στρίβουμε 360:5=72. Αντίστοιχα στο εξάγωνο θα στρίβουμε 360:6=60 και στο δωδεκάγωνο 360:12=30 μοίρες. Τα προγράμματα έχουν ως εξής:

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

60ο120ο

Page 6: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -4-

Πεντάγωνο Εξάγωνο Δωδεκάγωνο

επανάλαβε 5κινήσου 100 βήματαστρίψε δεξιά 72 μοίρεςτέλος επανάληψης

επανάλαβε 6κινήσου 100 βήματαστρίψε δεξιά 60 μοίρεςτέλος επανάληψης

επανάλαβε 12κινήσου 100 βήματαστρίψε δεξιά 30 μοίρεςτέλος επανάληψηςΚύκλος

Για να ζωγραφίσουμε ένα κύκλο, θα χρειαστεί να κάνουμε ένα τρικ. Να ζωγραφίσουμε ένα πολύγωνο με τόσο πολλές και μικρές πλευρές, που στο μάτι μας να μοιάζει με κύκλο. Πχ

επανάλαβε 360κινήσου 1 βήματαστρίψε δεξιά 1 μοίρεςτέλος επανάληψης

ζ. Πράξεις και αριθμητικές παραστάσεις με το BYOBΣτην προηγούμενη δραστηριότητα, για να υπολογίσουμε τη γωνία που έπρεπε να στρίψουμε για να

ζωγραφίσουμε το πολύγωνο, χρειάστηκε να διαιρέσουμε το 360 με τον αριθμό των πλευρών του πολυ-γώνου.

Αντί να κάνουμε εμείς την πράξη και να βάλουμε το αποτέλεσμά της στην εντολή, μπορούμε να βάλουμε το ΒΥΟΒ να την κάνει για μας.

Το ΒΥΟΒ αναγνωρίζει πέντε αριθμητικές πράξεις, τις οποίες μπορούμε να βρούμε στην κατηγορία εντολών “τελεστές” :

+ Πρόσθεση- Αφαίρεση* Πολλαπλασιασμός/ Διαίρεση

mod Υπόλοιπο διαίρεσης ακεραίων

Έτσι για παράδειγμα, για να ζωγραφίσουμε ένα πεντάγωνο και ένα οκτάγωνο θα γράφαμε:Πεντάγωνο Οκτάγωνο

επανάλαβε 5κινήσου 100 βήματαστρίψε δεξιά [360/5] μοίρεςτέλος επανάληψης

επανάλαβε 8κινήσου 100 βήματαστρίψε δεξιά [360/8] μοίρεςτέλος επανάληψης

Πολλές από τις εντολές που γνωρίσαμε, περιέχουν στη σύνταξή τους έναν ή περισσότερους αριθ-μούς. Οι αριθμητικές πράξεις μπορούν να τοποθετηθούν στη θέση αυτών των αριθμών. Το ΒΥΟΒ κάνει τους υπολογισμούς που υπαγορεύουν οι αριθμητικές πράξεις και βάζει το αποτέλεσμά τους στην εντολή. Για παράδειγμα, οι παρακάτω εντολές είναι ισοδύναμες:

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Κινήσου [12+7] βήματα Κινήσου 19 βήματα

12+7=19

επανάλαβε [14 mod 5] επανάλαβε 4

Το 5 χωράει στο 14 δύο φορέςΚαι περισσεύουν 4

Page 7: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -5-Μπορούμε να συνδυάσουμε πράξεις και να σχηματίσουμε αριθμητικές παραστάσεις. Πχ

Μαθηματικά Στο ΒΥΟΒ Στο χαρτί γράφουμε Αποτέλεσμα

(5+2)⋅3 (5+2)*3 21

95−3

9/(5-3) 4,5

5+25−3

⋅3 ((5+2)/(5-3))*3 10,5

“Οι μαθηματικές παραστάσεις δεν είναι εντολές”

Δεν έχει δηλαδή νόημα να γράφουμε “5*3” μόνο του, αλλά θα πρέπει να το περιλαμβάνουμε ΠΑΝΤΑ σε κάποια εντολή, πχ “στρίψε δεξιά [5*3] μοίρες”. ΠΑΡΑΤΗΡΗΣΕΙΣ

Υπάρχουν κάποιες διαφοροποιήσεις, σε σχέση με τον τρόπο που γράφουμε τις παραστάσεις στα μα-θηματικά. Οι πιο σημαντικές είναι:

• Τα σύμβολα της διαίρεσης, του πολλαπλασιασμού και του υπολοίπου διαίρεσης• Στα μαθηματικά υπάρχει προτεραιότητα στις πράξεις και χρήση παρενθέσεων, αγκυλών κλπ. Στο

ΒΥΟΒ δεν χρειάζεται να λάβουμε υπόψη την προτεραιότητα, ούτε να χρησιμοποιήσουμε παρεν-θέσεις. Όταν γράφουμε σύνθετες παραστάσεις στο χαρτί, βάζουμε παρένθεση σε κάθε μέλος πράξης που δεν είναι αριθμός.

• Τα κλάσματα θα γράφονται σε μια γραμμή, ως πράξη διαίρεσης.• Το ΒΥΟΒ, δεν περιέχει τις πράξεις ύψωση σε δύναμη και πηλίκο ακέραιας διαίρεσης. Παρόλα

αυτά, μπορούμε να τις κατασκευάσουμε εμείς(όπως θα δούμε σε επόμενη ενότητα), εκμεταλ-λευόμενοι τη δυνατότητα δημιουργίας δικών μας εντολών που παρέχει το ΒΥΟΒ. η. Δημιουργώντας δικές μας εντολές

Το λεξιλόγιο του BYOB(όπως και των άλλων γλωσσών προγραμματισμού), μπορεί να εμπλουτιστεί με νέες εντολές. Τις εντολές αυτές:

• τις κατασκευάζουμε εμείς(οι προγραμματιστές) • χρησιμοποιώντας τις ήδη γνωστές(εντολές) • και τις αποκαλούμε “ διαδικασίες”

Για παράδειγμα, το σύνολο των “ήδη γνωστών εντολών”:κατέβασε πέναεπανάλαβε 4κινήσου 50 βήματαστρίψε δεξιά 90 μοίρεςτέλος επανάληψης

θα μας επέτρεπε να δημιουργήσουμε τη διαδικασία “τετράγωνο” ως εξής:

διαδικασία “τετράγωνο”κατέβασε πέναεπανάλαβε 4κινήσου 50 βήματαστρίψε δεξιά 90 μοίρεςτέλος επανάληψηςτέλος διαδικασίας

Μετά από αυτή τη δήλωση, το BYOB θα αναγνω - ρίζει πλέον μια νέα εντολή με όνομα “τετράγωνο”

Έτσι θα ήταν πολύ πιο εύκολη η δημιουργία σχημάτων όπως της παραπάνω εικόνας, όπου το βασικό συνθετικό είναι το τετράγωνο. ΠΑΡΑΤΗΡΗΣΗ

Όπως και σε προηγούμενες ενότητες, έτσι και εδώ η διαδικασία “τετράγωνο” και “τέλος επανάλη-ψης” δεν υπάρχουν στο πραγματικό ΒΥΟΒ, αλλά είναι μια υποχρεωτική σύμβαση για να φαίνεται καλύτερα

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 8: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -6-η διαδικασία όταν τη γράφουμε στο χαρτί. Για να δείτε με λεπτομέρεια πώς δημιουργούμε διαδικασίες στο BYOB, ανατρέξτε στον “Οδηγό αναφοράς εντολών” στην κατηγορία “Μεταβλητές” και την ενότητα “Δη-μιούργησε μια εντολή”.

Παρακάτω ακολουθούν οι εντολές που δημιουργούν τα δύο σχήματα της προηγούμενης σελίδας.Το “τετράγωνο” στο ΒΥΟΒ Σχήμα 1 Σχήμα 2

Σήκωσε πέναπήγαινε στο x:-50 y:-50τετράγωνοΣήκωσε πέναπήγαινε στο x:0 y:0τετράγωνοΣήκωσε πέναπήγαινε στο x:50 y:50τετράγωνο

επανάλαβε 10τετράγωνοστρίψε δεξιά 36 μοίρεςτέλος επανάληψης

(*) Μια διαδικασία, μπορεί με τη σειρά της να αποτελέσει τμήμα των “ήδη γνωστών εντολών” που απαρτίζουν μια άλλη διαδικασία.

(*) Τα ονόματα που δίνουμε στις διαδικασίες, θα πρέπει να περιγράφουν τη λειτουργία τους.

ΆσκησηΚατασκευάστε τα διπλανά σχήματα.

Θ. Διαδικασίες με εισόδουςΗ διαδικασία “τετράγωνο” που μόλις κατασκευάσαμε, έχει ένα μειονέκτημα. Ζωγραφίζει μόνο τε-

τράγωνα πλευράς 50 pixel. Θα ήταν πολύ πιο χρήσιμη αν μπορούσε να ζωγραφίζει τετράγωνα με οποια-δήποτε πλευρά.

Όπως έχουμε εντολές που περιλαμβάνουν έναν ή περισσότερους αριθμούς (πχ επανάλαβε, κινήσου, στρίψε κλπ), έτσι μπορούμε να έχουμε και διαδικασίες. Οι αριθμοί αυτοί ονομάζονται είσοδοι ή ορίσματα των διαδικασιών.

Θα μπορούσαμε πχ να ορίσουμε σαν είσοδο στη διαδικασία “τετράγωνο”, έναν αριθμό που παρι-στάνει την πλευρά του τετραγώνου. Αυτό θα μας επιτρέψει να τη χρησιμοποιήσουμε ως πχ “τετράγωνο 100”, “τετράγωνο 60” για να ζωγραφίσουμε τετράγωνα πλευράς 100 και 60 αντίστοιχα κ.ο.κ

Οι είσοδοι, στον ορισμό της διαδικασίας περιλαμβάνονται στην επικεφαλίδα και συμβολίζονται με μεταβλητές.

Τετράγωνο με είσοδο στο ΒΥΟΒ Η δήλωση της διαδικασίας στο χαρτί

διαδικασία “τετράγωνο” χκατέβασε πέναεπανάλαβε 4κινήσου [χ] βήματαστρίψε δεξιά 90 μοίρεςτέλος επανάληψηςτέλος διαδικασίας

Μπορούμε να έχουμε διαδικασίες με περισσότερες εισόδους. Η διαδικασία πολύγωνο που ακολουθεί,

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 9: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -7-ζωγραφίζει πολύγωνο οποιουδήποτε αριθμού γωνιών(go) και μήκους πλευράς(pl).

διαδικασία “πολύγωνο” go plκατέβασε πέναεπανάλαβε [go]κινήσου [pl] βήματαστρίψε δεξιά [360 / go] μοίρεςτέλος επανάληψηςτέλος διαδικασίας

ι. Τμηματικός προγραμματισμός και διαδικασίεςΣτην αρχή της χρονιάς, μάθαμε ότι ένα από τα σημαντικότερα στάδια της ανάλυσης ενός προβλή-

ματος είναι ο καθορισμός της δομής του, δηλαδή η διαίρεσή του σε μικρότερα προβλήματα. Στη φάση της επίλυσης που ακολουθεί, λύνουμε ένα-ένα τα επιμέρους προβλήματα. Τέλος, συνδυάζουμε τις λύσεις αυτές, για τη δημιουργία της συνολικής λύσης του προβλήματος.

Η τεχνική αυτή είναι ιδιαίτερα διαδεδομένη στον προγραμματισμό, με τον όρο τμηματικός προ-γραμματισμός.

Στον τμηματικό προγραμματισμό, οι λύσεις των επί μέρους προβλημάτων είναι μικρότερα προγράμ-ματα, τα οποία υλοποιούνται ως διαδικασίες. Αυτό προσφέρει σημαντικά πλεονεκτήματα όπως:

• ευκολία σχεδιασμού, αφού οι διαδικασίες είναι λύσεις μικρότερων προβλημάτων• τα λάθη περιορίζονται στο χώρο των διαδικασιών, όπου είναι ευκολότερο να εντοπιστούν και να διορθω-

θούν.Η τμηματική σχεδίαση, δεν αποτελεί καινοτομία του προγραμματισμού. Αντιθέτως είναι μια ευρέως

διαδεδομένη σχεδιαστική τεχνική. Παρατηρείστε πχ, ότι όλες οι μηχανές που μας περιβάλουν αποτελού-νται από τμήματα(εξαρτήματα). Η δύναμή της, θα φανεί στο επόμενο παράδειγμα.ΠΑΡΑΔΕΙΓΜΑ

Να γραφεί πρόγραμμα το οποίο θα ζωγραφίζει ένα χωριό, του οποίου τα σπίτια θα έχουν τη μορφή του εικονιζόμενου σχήματος. Το χωριό θα αποτελείται από τυχαίο αριθμό σπιτιών μεταξύ 7 και 15, των οποίων οι θέσεις και το μέγεθος θα είναι επίσης τυχαία.(Συμβουλή: Να χρησιμοποιηθεί η συνάρτηση “τυχαία επιλογή από __ μέχρι __” η οποία παριστάνει έναν τυχαίο -διαφορετικό κάθε φορά- αριθμό, μεταξύ των ορίων που θέτουμε)

Απάντηση

Στην παραπάνω εικόνα βλέπουμε τη δομή του προβλήματος. Οι τίτλοι των επιμέρους προβλημάτων θα είναι και τα ονόματα των διαδικασιών που θα δημιουργήσουμε. Το σπίτι θα αποτελείται από ένα τε-τράγωνο και ένα ισόπλευρο τρίγωνο, που θα έχουν ίσες πλευρές. Επειδή δε, χρειαζόμαστε σπίτια διαφορε-τικού μεγέθους, οι διαδικασίες μας θα έχουν μία είσοδο, που θα παριστάνει την πλευρά αυτή.

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Χωριό

Σπίτι Τετράγωνο

Τρίγωνο

“Δομή του προβλήματος”

Page 10: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -8-

Διαδικασία “τετράγωνο” Διαδικασία “τρίγωνο” Διαδικασία “σπίτι”

διαδικασία “τετράγωνο” χκατέβασε πέναεπανάλαβε 4κινήσου [χ] βήματαστρίψε δεξιά 90 μοίρεςτέλος επανάληψηςτέλος διαδικασίας

διαδικασία “τρίγωνο” χκατέβασε πέναεπανάλαβε 3κινήσου [χ] βήματαστρίψε αριστερά 120 μοίρεςτέλος επανάληψηςτέλος διαδικασίας

διαδικασία “σπίτι” χτετράγωνο χτρίγωνο χτέλος διαδικασίας

(*) Στη διαδικασία τρίγωνο στρίβουμε αριστερά, ώστε η κορυφή του τριγώνου να βρεθεί στο πάνω μέρος.Το πρόγραμμα χωριό θα έχει ως εξής:επανάλαβε [τυχαία επιλογή από 7 μέχρι 15]σήκωσε πέναπήγαινε στο x:[τυχαία επιλογή από -240 μέχρι 240] y:[τυχαία επιλογή από -180 μέχρι 180]σπίτι [τυχαία επιλογή από 30 μέχρι 60]τέλος επανάληψης

Στο ΒΥΟΒ ...

ια. ΜεταβλητέςΌπως γνωρίζετε από τα μαθηματικά, οι μεταβλητές είναι συμβολικά ονόματα τα οποία παριστάνουν

κάποιες, συνήθως άγνωστες, τιμές.Για τον προγραμματισμό, μεταβλητή είναι η συμβολική αναπαράσταση μιας θέσης μνήμης, στην

οποία είναι αποθηκευμένη μία τιμή. Η τιμή αυτή μπορεί να αλλάζει(μεταβάλλεται) κατά την εκτέλεση του προγράμματος.

Οι μεταβλητές αποτελούν σημαντικότατο εργαλείο για τον προγραμματισμό. Αν και έχουν πολλές ομοιότητες με τις μεταβλητές των μαθηματικών, έχουν και σημαντικές διαφορές όπως:

• Έχουν πάντα κάποια τιμή. Η τιμή τους δηλαδή είναι άγνωστη κατά τη συγγραφή του προγράμματος αλλά γνωστή κατά την εκτέλεσή του.

• Οι τιμές που παριστάνουν μπορούν να είναι, εκτός από αριθμοί, λέξεις ή λογικές τιμές(Αληθές-Λάθος). Το είδος της τιμής που παριστάνει μια μεταβλητή είναι γνωστό ως τύπος της μεταβλητής.

Οι μεταβλητές μπορούν να χρησιμοποιηθούν σε εντολές, διαδικασίες ή παραστάσεις στη θέση των αριθμών ή γενικότερα των τιμών που είναι ίδιου τύπου με αυτές. Πχ αν a, b και c αριθμητικές μεταβλητές θα μπορούσαμε να γράψουμε: “κινήσου [a] βήματα”, στρίψε αριστερά [2*a] μοίρες”, πήγαινε στο x: [a] y: [b] κ.ο.κ(Σημείωση: Σε αυτή την ενότητα θα χρησιμοποιήσουμε μόνο αριθμητικές μεταβλητές. Σε επόμενη ενότητα θα δούμε παραδείγματα προγραμμάτων που περιλαμβάνουν μεταβλητές και άλλων τύπων).

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 11: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -9-Οι μεταβλητές στο ΒΥΟΒΓια να μπορέσουμε να χρησιμοποιήσουμε μια μεταβλητή στο ΒΥΟΒ, θα πρέπει αρχικά να τη δη-

μιουργήσουμε με την εντολή “Δημιούργησε μια μεταβλητή”. Οι εντολές που έχουμε στη διάθεσή μας για να της δώσουμε/αλλάξουμε τιμή είναι:

• όρισε <μεταβλητή> στο <τιμή>. Όπου <μεταβλητή> το όνομά της και <τιμή> η τιμή που θέλουμε να της δώσουμε. Πχ “όρισε α στο 0”

• άλλαξε <μεταβλητή> κατά <τιμή>. Η τιμή της μεταβλητής μας αυξάνεται κατά την <τιμή>. Αν η <τιμή> είναι αρνητική, τότε η μεταβλητή μειώνεται.

Ως <τιμή> εκτός από αριθμό, μπορούμε να χρησιμοποιήσουμε μια άλλη μεταβλητή, ή μια αριθ-μητική παράσταση, η οποία μάλιστα μπορεί να περιέχει μεταβλητές. Σε αυτές είναι δυνατόν να συμπεριλαμβάνεται και η <μεταβλητή>. Τα παρακάτω παραδείγματα θα ξεκαθαρίσουν την κατάσταση.ΠΑΡΑΔΕΙΓΜΑΤΑ

α β

Όρισε α στο 10 10 ?

Όρισε β στο α 10 10

Όρισε α στο 7 7 10

α β

Όρισε α στο 10 10 ?

Άλλαξε α κατά 2 12 ?

Άλλαξε α κατά -4 8 ?

Άλλαξε β κατά 3 8 ?(*) Προσοχή: Η τελευταία εντολή δεν έδωσε τιμή στη μεταβλητή “β”, διότι δεν της είχαμε δώσει προηγου-μένως κάποια αρχική τιμή με την εντολή “όρισε”.

α β

Όρισε α στο 3 3 ?

Όρισε α στο (2*α) 6(=2 * 3) ?

Όρισε β στο (2*α) 6 12

Άλλαξε β κατά (2*β) 6 36=(12 + 2 * 12)(*) Προσοχή: Όταν στο <τιμή> συμμετέχει η <μεταβλητή> , η τιμή αυτή είναι η προηγούμενη της μεταβλητής. Χρησιμοποιούμε τέτοιες εντολές όταν η νέα τιμή της μεταβλητής εξαρτάται από την προηγούμενη. Πχ “όρισε α στο (3*α)” -> τριπλασίασε την “α”.Δραστηριότητα 1

Το παρακάτω σχήμα δημιουργείται με τις διπλανές εντολές. Ας δούμε γιατί.

Χρησιμοποιούμε τη διαδικασία “τετράγωνο” με είσοδο, που συναντήσαμε σε προηγούμενη ενότητα. Επιπλέον η μεταβλητή b παριστάνει την πλευρά του τετραγώνου που πρόκειται να ζωγραφίσουμε(μην την συγχέετε με την μεταβλητή εισόδου(“x”) της διαδικασίας “τετράγωνο”). Η b αρχικοποιείται στην τιμή 10 και σε κάθε επανάληψη αυξάνεται κατά 10(δηλ γίνεται διαδοχικά 20, 30, 40, ... 100). Αντίστοιχα, η διαδικασία “τετράγωνο” ζωγραφίζει σε κάθε επανάληψη, ένα τετράγωνο με πλευρά την παραπάνω τιμή.

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 12: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -10-Δραστηριότητα 2Οι παρακάτω εντολές ζωγραφίζουν ένα τρίγωνο με πλευρές 90 και 40 που περιέχουν μια γωνία 50

μοιρών.

Οι μεταβλητές a και b αποθηκεύουν τις συντεταγμένες του αρχικού σημείου(παριστάνεται όπως εί-δαμε με τις ενσωματωμένες στο BYOB μεταβλητές “θέση x” και “θέση y”). Αφού ζωγραφίσουμε τις δύο πλευρές, κλείνουμε το τρίγωνο πηγαίνοντας απευθείας στο αρχικό σημείο.Άσκηση

Να τροποποιηθεί η δραστηριότητα 1, ώστε να ζωγραφίζει 4 τετράγωνα που το καθένα θα έχει δι-πλάσια πλευρά από το προηγούμενο. Το πρώτο από αυτά θα έχει πλευρά 20.

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 13: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

"Ο προγραμματισμός στην πράξη” -1-

Ενότητα 3. Διάλογος με τον υπολογιστήα. ΕισαγωγήΠολλές φορές, είναι απαραίτητο η μορφή μας να επικοινωνήσει με το χρήστη, για να ανταλλάξει

πληροφορίες που αφορούν το εκτελούμενο πρόγραμμα. Συγκεκριμένα:• Μπορεί να ζητήσει από το χρήστη δεδομένα, που θα τα χρησιμοποιήσει στις εντολές του

προγράμματος. Οι εντολές που χρησιμοποιεί για το σκοπό αυτό ονομάζονται εντολές εισόδου.• Να εμφανίσει στην οθόνη μηνύματα που τον πληροφορούν για την εξέλιξή του, πχ για να τον

ενημερώσει για τα αποτελέσματα των υπολογισμών που εκτέλεσε. Οι εντολές αυτές ονομάζονται εντολές εξόδου.β. Εντολή εισόδου “ρώτησε”

Το ΒΥΟΒ, διαθέτει μόνο μια εντολή εισόδου, την “ρώτησε”, που τη συναντάμε στην κατηγορία “Αισθητήρες”. Το συντακτικό της είναι:

• ρώτησε “μήνυμα” και περίμενε. Η εντολή εμφανίζει το “μήνυμα” που περιέχει μια ερώτηση στην οθόνη και περιμένει από το χρήστη να πληκτρολογήσει την απάντηση. Ότι δώσει ο χρήστης αποθηκεύεται στην ειδική μεταβλητή απάντηση και αποτελεί ένα δεδομένο εισόδου.

ΠΑΡΑΔΕΙΓΜΑ 1Χρησιμοποιώντας τη διαδικασία με είσοδο “τετράγωνο”, ζητάμε από το χρήστη να μας δώσει το

μήκος της πλευράς, και στη συνέχεια ζωγραφίζουμε το αντίστοιχο τετράγωνο.Ρώτησε “πόση είναι η πλευρά του τετραγώνου;” και περίμενετετράγωνο [απάντηση]

Μπορούμε να διαβάσουμε ένα δεδομένο εισόδου κάθε φορά. Αν χρησιμοποιούμε περισσότερα δεδο - μένα εισόδου, θα πρέπει να τα διαβάζουμε ένα-ένα και να τα αποθηκεύουμε σε μεταβλητές.ΠΑΡΑΔΕΙΓΜΑ 2

Χρησιμοποιώντας την διαδικασία με δύο εισόδους “πολύγωνο”, ζητάμε από το χρήστη τον αριθμό των γωνιών του πολυγώνου και το μήκος της πλευράς του και στη συνέχεια το ζωγραφίζουμε.

Ρώτησε “πόσες γωνίες έχει το πολύγωνο;” και περίμενεΌρισε γωνίες στο [απάντηση]Ρώτησε “πόση είναι η πλευρά του πολυγώνου;” και περίμενεΌρισε πλευρά στο [απάντηση]πολύγωνο γωνίες πλευρά

Δημιουργήθηκε από τον Κ.Χαριτόπουλο

απάντηση

απάντηση απάντηση

γωνίες = 5πλευρά = ; γωνίες = 5

πλευρά = 60

Page 14: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

"Ο προγραμματισμός στην πράξη” -2-γ. Εντολή εξόδου “πες”Η εντολή χρησιμοποιείται για να εμφανίσουμε ένα μήνυμα στην οθόνη. Τη συναντάμε στην

κατηγορία “όψεις”. Η σύνταξή της είναι:• πες “μήνυμα”, όπου “μήνυμα” μπορεί να είναι μια λέξη/πρόταση, μια αριθμητική παράσταση ή

συνδυασμός των δύο. Όταν βάλουμε αριθμητική παράσταση εμφανίζεται το αποτέλεσμά της.Πχ.πες “καλημέρα” -> καλημέραπες [21 – 6] -> 15Αν θέλουμε να συνδυάσουμε στο μήνυμά μας μια πρόταση με το αποτέλεσμα μιας παράστασης, τότε

θα πρέπει να χρησιμοποιήσουμε επιπλέον την εντολή “ένωσε” που συναντάμε στην κατηγορία “τελεστές”.Πχ πες [ένωσε “Το αποτέλεσμα είναι” [ 5 * 2] ] -> Το αποτέλεσμα είναι 10

ΠΑΡΑΔΕΙΓΜΑΟι επόμενες εντολές ζητούν από το χρήστη την τιμή μιας μεταβλητής κ και στην συνέχεια

υπολογίζεται και εμφανίζεται το αποτέλεσμα της παράστασης 2(κ +3) -7 ρώτησε “κ=;” και περίμενεόρισε κ στο [απάντηση]πες [ένωσε “Η παράσταση ισούται με “ [(2*(κ + 3)) -7] ]

Σημείωση: Στον “Οδηγό αναφοράς εντολών του ΒΥΟΒ”, θα βρείτε επιπλέον εντολές εξόδου, με ελαφρώς διαφορετική συμπεριφορά. δ. Μια απλή συνομιλία

Τα δεδομένα εισόδου μπορούν να είναι και λέξεις ή προτάσεις. Το παρακάτω πρόγραμμα πραγματοποιεί μια απλή συνομιλία μεταξύ χρήστη-υπολογιστή.

Δημιουργήθηκε από τον Κ.Χαριτόπουλο

Page 15: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -1-

Ενότητα 4. Επίλυση μαθηματικών προβλημάτων με το ΒΥΟΒα. Υπολογισμός δύναμης ακεραίωνΣε προηγούμενη ενότητα, είδαμε ότι το ΒΥΟΒ δεν γνωρίζει την πράξη της ύψωσης σε δύναμη μεταξύ

ακεραίων αριθμών. Μπορούμε όμως εύκολα να του διδάξουμε αυτή την πράξη, αφού όπως ξέρουμε από τα μαθηματικά, δεν είναι τίποτε άλλο από διαδοχικούς πολλαπλασιασμούς. Συγκεκριμένα:

Έστω “bash” και “ekthetis” οι μεταβλητές που παριστάνουν τη βάση και τον εκθέτη της δύναμης. Έστω επίσης “dynamh” η μεταβλητή στην οποία θα αποθηκευθεί το τελικό αποτέλεσμα(δηλ dynamh = bash ethetis).

Από την ενότητα 2.ια έχουμε δει ότι η εντολή “όρισε α στο (2 * α)” διπλασιάζει την τιμή της μεταβλητής “α”. Αν η “α” είχε αρχική τιμή 1, η διαδοχική εκτέλεση της παραπάνω εντολής θα είχε ως συνέπεια να πάρει τις τιμές : 2, 4, 8, 16 κ.ο.κ

Εκμεταλλευόμενοι αυτή την παρατήρηση, υπολογίζουμε τη δύναμη μέσω της επαναληπτικής εκτέλεσης της εντολής “όρισε dynamh στο (dynamh * bash)”, όσες φορές είναι η “ekthetis”. Θα πρέπει βέβαια στην αρχή, να εκτελέσουμε την “όρισε dynamh στο 1”, για να δώσουμε αρχική τιμή στη μεταβλητή. Ο κώδικας έχει ως εξής:----->Αρχικά διαβάζουμε τις μεταβλητές εισόδου <------ρώτησε “Βαση =;” και περίμενεόρισε bash στο [απάντηση]ρώτησε “Εκθέτης=;” και περίμενεόρισε ekthetis στο απάντηση----->Υπολόγισε τη dynamh <-----όρισε dynamh στο 1επανάλαβε ekthetisόρισε dynamh στο (dynamh * bash)τέλος επανάληψηςπες (ένωσε “Δύναμη=” [dynamh])

(*) Η μεταβλητή dynamh παίρνει αρχική τιμή το 1, επειδή την αυξάνουμε με διαδοχικούς πολλαπλασιασμούς(1=ουδέτερο στοιχείο του πολ/σμου). Αν μια μεταβλητή αυξάνεται με διαδοχικές προσθέσεις, της δίνουμε ως αρχική τιμή το 0(=ουδέτερο στοιχείο της πρόσθεσης).Η δύναμη ως “συνάρτηση”

Μπορούμε να κατασκευάσουμε μια δικιά μας εντολή που να κάνει τον παραπάνω υπολογισμό, ώστε να το χρησιμοποιούμε πλέον όπως όλες τις άλλες πράξεις. Οι εντολές που υπολογίζουν και επιστρέφουν τιμές ονομάζονται συναρτήσεις (“ρεπόρτερ” στη γλώσσα του BYOB). Ακολουθεί ο κώδικας της εντολής χωρίς επιπλέον εξηγήσεις, διότι το αντικείμενο είναι έξω από το σκοπό των σημειώσεων αυτών.

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

αβ = α * α * … *αβ φορές

Page 16: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -2-β. Λύση πρωτοβάθμιας εξίσωσης “αΧ+β=0”Η επίλυση της πρωτοβάθμιας εξίσωσης, είναι ήδη γνωστή από τα μαθηματικά της Β' γυμνασίου. Ο

αλγόριθμος, διαγραμματικά, φαίνεται αριστερά στην εικόνα, ενώ δεξιά βλέπουμε το αντίστοιχο πρόγραμμα.

Παρατηρούμε ότι για να την υλοποίηση του αλγορίθμου, χρησιμοποιήσαμε μια νέα εντολή, την “εάν..αλλιώς”. Πριν εξηγήσουμε λοιπόν τον αλγόριθμο, ας μάθουμε περισσότερα για αυτή.

Η εντολή “εάν ... αλλιώς”Συχνά, σε έναν αλγόριθμο χρειάζεται να επιλέξουμε ποιες εντολές θα πρέπει να εκτελέσουμε,

ανάλογα με κάποια συνθήκη. Οι ενέργειες που ακολουθούμε για να λύσουμε την πρωτοβάθμια εξίσωση για παράδειγμα, δεν είναι πάντα οι ίδιες, αλλά εξαρτώνται από τους τελεστές α και β.

Σε αυτή την περίπτωση, χρησιμοποιούμε την αλγοριθμική δομή της επιλογής. Διαγραμματικά, η δομή φαίνεται στη διπλανή εικόνα. Η δομή περιλαμβάνει μια συνθήκη και δύο σύνολα εντολών:

• Εντολές Α : που εκτελούνται όταν η <συνθήκη> ισχύει.• Εντολές Β : που εκτελούνται όταν η <συνθήκη> δεν ισχύει.

Η <συνθήκη> είναι μια ερώτηση, η απάντηση της οποίας μπορεί να είναι: • Αληθές, αν ισχύει• Λάθος, αν δεν ισχύει. (*)σε άλλες γλώσσες είναι Ψευδές

Οι τιμές “Αληθές” και “Λάθος”, ονομάζονται λογικές τιμές, ενώ η <συνθήκη> ονομάζεται λογική συνθήκη.

Η πιο συνηθισμένη μορφή λογικών συνθηκών είναι οι μαθηματικές συγκρίσεις. Το ΒΥΟΒ αναγνωρίζει τις παρακάτω:

Μεγαλύτερο;

Ίσο;

Μικρότερο;

Αριστερά και δεξιά μιας σύγκρισης βάζουμε οτιδήποτε παριστάνει μια αριθμητική τιμή: Αριθμούς, μεταβλητές ή αριθμητικές παραστάσεις. Πχ

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

αΧ + β = 0

α=0 ;

β=0 ;Χ=

−βαΑόριστη Αδύνατη

Ναι

Ναι

Όχι

Όχι

<συνθήκη>

Εντολές Β

Ναι Όχι

Εντολές Α

Page 17: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -3- "α<3”, είναι η τιμή της μεταβλητής “α” μικρότερη του 3;

"α=β+2”, είναι η τιμή της μεταβλητής “α”, ίση με “β+2”; όπου “β” μια άλλη μεταβλητή

"χ-2>0”, είναι η τιμή της αριθμητικής παράστασης “χ-2”, μεγαλύτερη του 0;

“Το υπόλοιπο της διαίρεση α : β είναι 0”; δηλαδή “το α διαιρείται ακριβώς με το β”;

"Το c διαιρείται ακριβώς με το 2”; δηλαδή “το c είναι ζυγός αριθμός”;

Μπορούμε να συνδυάσουμε συγκρίσεις, για να δημιουργήσουμε σύνθετες λογικές συνθήκες. Οι εκφράσεις αυτές σχηματίζονται χρησιμοποιώντας τρεις λογικούς τελεστές:

Λογικό ΚΑΙ, Η συνθήκη είναι Αληθής, μόνο όταν και τα δύο μέλη της είναι Αληθή.

Λογικό Ή, η συνθήκη είναι Αληθής, όταν τουλάχιστον ένα από τα δύο μέλη της είναι Αληθές.

Λογική Άρνηση, η συνθήκη είναι Αληθής, όταν το μέλος της είναι Λάθος και αντιστρόφως.

ΠΑΡΑΔΕΙΓΜΑΤΑ"α>-3 ΚΑΙ α<3”, Ισχύει όταν η τιμής της μεταβλητής “α” είναι μεταξύ -3 και 3(δηλ. όταν α ⋲ (-3,3) )

"β>0 Ή β=0”, είναι ισοδύναμο με β ≥ 0

"ΌΧΙ χ=0”, είναι ισοδύναμο με χ ≠ 0

Επιστρέφοντας στην εντολή “εάν ... αλλιώς”, η σύνταξή της έχει ως εξής:Εάν <συνθήκη>ΕντολέςΑαλλιώςΕντολέςΒτέλος εαν

Υπάρχει και μια εκδοχή της “εάν” που δεν περιλαμβάνει το σκέλος “αλλιώς”.Εάν <συνθήκη>ΕντολέςΑτέλος εαν

Οι “ΕντολέςΑ” και “ΕντολέςΒ”, μπορούν να είναι οποιεσδήποτε εντολές του ΒΥΟΒ. Σε αυτές συμπεριλαμβάνονται και εντολές επανάληψης ή ακόμα και άλλες εντολές “εάν ... αλλιώς”. Στη δεύτερη περίπτωση μιλάμε για δομή εμφωλευμένης επιλογής. Στον αλγόριθμο πχ της πρωτοβάθμιας εξίσωσης συναντάμε μια τέτοια περίπτωση:

Ρώτησε “Πόσο είναι το α;” και περίμενεΌρισε α στο [απάντηση]Ρώτησε “Πόσο είναι το β;” και περίμενεΌρισε β στο [απάντηση]Εάν (α=0)

Εάν (β=0) Πες “Η εξίσωση είναι αόριστη”αλλιώς Πες “Η εξίσωση είναι αδύνατη”τέλος εάν

αλλιώςΠες ( ένωσε “Η εξίσωση έχει λύση Χ=” [-1*(β/α)])

τέλος εάν

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Εμφωλευμένη „εάν“

Page 18: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -4-γ. Λύση δευτεροβάθμιας εξίσωσης της μορφής “αΧ2 +βΧ + γ =0”Το διάγραμμα ροής της επίλυσης δευτεροβάθμιας εξίσωσης, όπως το γνωρίσατε στα μαθηματικά

έχει ως εξής:

Η δημιουργία του αλγόριθμου, είναι άμεση υλοποίηση του παραπάνω διαγράμματος. Θα χρειαστούμε τέσσερις μεταβλητές: a, b, c που παριστάνουν τους συντελεστές της εξίσωσης και την D που παριστάνει τη “διακρίνουσα”. Έτσι έχουμε:

Στο χαρτί Στο ΒΥΟΒ---->Διάβασε τους συντελεστές της εξίσωσης <------Ρώτησε “α=;” και περίμενεΌρισε α στο απάντησηΡώτησε “β=;” και περίμενεΌρισε β στο απάντησηΡώτησε “γ=;” και περίμενεΌρισε γ στο απάντηση

---->Υπολόγισε τη διακρίνουσα <------Όρισε Δ στο (β^2) – (4*α*γ)---->Λύσε την εξίσωση <------Εάν Δ>0 Πες “Υπάρχουν δύο λύσεις” Πες (ένωσε “Χ1=” (-β + ΤετΡιζα(Δ))/(2*α)) Πες (ένωσε “Χ2=” (-β – ΤετΡιζα(Δ))/(2*α))αλλιώς Εάν Δ=0

Πες “Υπάρχει διπλή λύση”Πες (ένωσε “Χ1,2=” (-β)/(2*α) )

αλλιώςΠες “Η εξίσωση είναι ΑΔΥΝΑΤΗ”

τέλος εάντέλος εάν

(*) Στην έκφραση β^2, χρησιμοποιήσαμε τη συνάρτηση της “ύψωσης σε δύναμη” που δημιουργήσαμε στην ενότητα 4.α

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Δ=β2 -4*α*γ

Δ>0

Δ=0 Χ1=−β+√Δ

2∗α

Χ2=−β−√Δ

2∗α

Χ1,2=−β2∗α“Αδύνατη”

Ναι

Όχι Ναι

Όχι

Page 19: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -5-δ. Υπολογισμός “Ελάχιστου Κοινού Πολλαπλάσιου” δύο ακεραίωνΈστω “α” και “β” οι δύο αριθμοί. Η μαθηματική μέθοδος εύρεσης του Ε.Κ.Π απαιτεί την ανάλυση

των “α” και “β” σε γινόμενα πρώτων όρων. Ο αλγόριθμος που διαπιστώνει “αν ένας αριθμός είναι πρώτος”(δηλ. αν διαιρείται μόνο με τον εαυτό του και τη μονάδα), απαιτεί αρκετούς υπολογισμούς. Έτσι η μαθηματική προσέγγιση του προβλήματος, είναι δύσκολο να εφαρμοστεί στην πράξη.

Αντί γι' αυτήν, θα χρησιμοποιήσουμε μια άλλη μέθοδο. Συγκεκριμένα:

Αν α ο μεγαλύτερος των αριθμών, τότε το ΕΚΠ, είναι το μικρότερο πολλαπλάσιο του α που διαιρείται ακριβώς με το β. Το αντίστροφο ισχύει αν το β είναι ο μεγαλύτερος αριθμός.

Προγραμματιστικά:Έστω “ΕΚΠ”, η μεταβλητή του ελάχιστου κοινού πολλαπλάσιου.Αν α>β

Όρισε την ΕΚΠ στο αΑύξησε την ΕΚΠ κατά α, μέχρι η ΕΚΠ να διαιρείται ακριβώς με β(δηλ ΕΚΠ mod β = 0)

αλλιώς Όρισε την ΕΚΠ στο β

Αύξησε την ΕΚΠ κατά β, μέχρι η ΕΚΠ να διαιρείται ακριβώς με α(δηλ ΕΚΠ mod α = 0)

Το πρόγραμμα έχει ως εξής:

Στο χαρτί Στο ΒΥΟΒ---->Διάβασε τους δύο αριθμούς <------Ρώτησε “α=;” και περίμενεΌρισε α στο απάντησηΡώτησε “β=;” και περίμενεΌρισε β στο απάντηση

---->Υπολόγισε ΕΚΠ αν “α” ο μεγαλύτερος <------εάν α>βόρισε ΕΚΠ στο [α]επανάλαβε ώσπου ([ΕΚΠ mod β]=0)άλλαξε ΕΚΠ κατά [α]τέλος επανάληψης---->Υπολόγισε ΕΚΠ αν “β” ο μεγαλύτερος <------αλλιώςόρισε ΕΚΠ στο [β]επανάλαβε ώσπου ([ΕΚΠ mod α]=0)άλλαξε ΕΚΠ κατά [β]τέλος επανάληψηςτέλος εαν---->Εμφάνισε το τελικό αποτέλεσμα<------πες (ένωσε “ΕΚΠ=” [ΕΚΠ])

Η εντολή “επανάλαβε ώσπου ..”Στον αλγόριθμό μας, χρησιμοποιήσαμε μια νέα εντολή επανάληψης, την “επανάλαβε ώσπου ..”. Η

εντολή αυτή επαναλαμβάνει τις περικλειόμενες εντολές, μέχρι η συνθήκη που την ακολουθεί να γίνει ΑΛΗΘΗΣ (δηλαδή για όσο η συνθήκη είναι ΛΑΘΟΣ) . Η συνθήκη ελέγχεται πριν από κάθε επανάληψη.

Η εντολή “επανάλαβε ώσπου..”, χρησιμοποιείται όταν το πλήθος των επαναλήψεων είναι άγνωστο.

Συντάσσεται ως εξής:επανάλαβε ώσπου <συνθήκη><Εντολές>τέλος επανάληψης

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 20: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -6-ε. Υπολογισμός “Μέγιστου Κοινού Διαιρέτη” δύο ακεραίωνΓια τον υπολογισμό αυτό θα χρησιμοποιήσουμε τον “Αλγόριθμο του Ευκλείδη”. Έστω “α” και “β” οι ακέραιοι αριθμοί των οποίων αναζητούμε τον Μ.Κ.Δ. Έστω επίσης ότι “max” και

“min”, μεταβλητές που παριστάνουν τον μεγαλύτερο και το μικρότερο από αυτούς, αντίστοιχα. Σύμφωνα με τον Ευκλείδη, για κάθε ζευγάρι ακεραίων αριθμών ισχύει η σχέση:

max = min * Π + Υόπου “Π” και “Υ”, το πηλίκο και το υπόλοιπο της διαίρεσης μεταξύ των αριθμών. Ο αλγόριθμος του

Ευκλείδη, μας λέει ότι ο ΜΚΔ των αριθμών max και min, είναι επίσης ΜΚΔ και του υπολοίπου της διαίρεσής τους(Υ). Αν ο min διαιρεί ακριβώς τον max(δηλ. Υ=0), τότε ΜΚΔ=min. Ειδάλλως επαναλαμβάνουμε την έρευνά μας στο ζευγάρι αριθμών min και Υ,(δηλ βάζουμε στη θέση του max τον min, στην θέση του min το Υ και με βάση αυτές τις τιμές, υπολογίζουμε εκ' νέου το Υ της σχέσης max = min * Π + Υ). Ο αλγόριθμος επαναλαμβάνεται μέχρι να έχουμε Y=0, οπότε ΜΚΔ=min.

ΠΑΡΑΔΕΙΓΜΑ Στο χαρτί Στο ΒΥΟΒ

α β

18 30

max min Y

30 18 12

18 12 6

12 6 0

ΜΚΔ

---> Διάβασε τους αριθμούς α και β<--ρώτησε “α=;” και περίμενεόρισε α στο [απάντηση]ρώτησε “β=;” και περίμενεόρισε β στο [απάντηση]

---> Βρες το μεγαλύτερο και μικρότερο των α και β<--εάν α>β

όρισε max στο [α]όρισε min στο [β]

αλλιώςόρισε max στο [β]όρισε min στο [α]

τέλος εάν

----------> Υπολόγισε τον ΜΚΔ<--------------όρισε Υ στο [max MOD min]επανάλαβε ώσπου (Y = 0)όρισε max στο minόρισε min στο Υόρισε Υ στο [max MOD min]τέλος επανάληψηςόρισε ΜΚΔ στο [min]

----> Ανακοίνωσε το αποτέλεσμα<-------πες (ένωσε “ΜΚΔ=” [ΜΚΔ])

στ. Υπολογισμός “μεγίστου” και “ελαχίστου” ενός συνόλου αριθμώνΜπορούμε να βρούμε το μεγαλύτερο και το μικρότερο ενός συνόλου αριθμών, γνωρίζοντας μόνον

τον τελευταίο από τους αριθμούς αυτούς. Η μέθοδος χρησιμοποιείται για την καταγραφή των ρεκόρ στα διάφορα αθλήματα.

Το ρεκόρ ενός αθλήματος, είναι η μεγαλύτερη επίδοση σε αυτό. Κάθε φορά που η επίδοση ενός αθλητή ξεπερνάει το ρεκόρ εκείνης της στιγμής, τότε η επίδοση αυτή θεωρείται “νέο ρεκόρ”. Αν η επίδοση του αθλητή είναι μικρότερη, τότε το ρεκόρ δεν αλλάζει. Δηλαδή για τον υπολογισμό του ρεκόρ, χρειάζεται να ξέρουμε μόνο το τρέχων ρεκόρ και την τελευταία επίδοση ενός αθλητή. Αντίστοιχα ενεργούμε για την εύρεση του ελαχίστου, μόνο που καταγράφουμε την μικρότερη τιμή.

Έστω “arihtmos” η μεταβλητή που παριστάνει τον τελευταίο αριθμό που διαβάστηκε, και “max” και “min” η μεγαλύτερη και μικρότερη τιμή αντίστοιχα. Ο αλγόριθμος για ένα σύνολο 10 αριθμών, έχει ως εξής:

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

Page 21: Ο προγραμματισμός στην πράξη” Ενότητα1. Σύντομη περιγραφή ...ecourse.uoi.gr/pluginfile.php/98610/mod_resource/content/0/Spring2… ·

“Ο προγραμματισμός στην πράξη” -7-ΠΑΡΑΔΕΙΓΜΑ Στο χαρτί Στο ΒΥΟΒ

αριθμός max min

5 5 5

13 13 5

27 27 5

6 27 5

8 27 5

2 27 2

45 45 2

9 45 2

17 45 2

11 45 2

--> Διάβασε τον πρώτο αριθμό.Ο πρώτος αριθμός, αποτελεί την αρχική τιμή του μεγίστου και ελαχίστου <-------------------------------------ρώτησε “Αριθμός=;” και περίμενεόρισε arithmos στο [απάντηση]όρισε max στο [arithmos]όρισε min στο [arithmos]--> Επανάλαβε για τους υπόλοιπους εννέα αριθμούς <-επανάλαβε 9--> Διάβασε τον επόμενο αριθμό <--ρώτησε “Αριθμός=;” και περίμενεόρισε arithmos στο [απάντηση]

-> Έλεγξε αν ξεπερνάει το μεγαλύτερο<-εάν arithmos > maxόρισε max στο [arithmos]τέλος εάν

-> Έλεγξε αν υστερεί του μικρότερου<-εάν arithmos < minόρισε min στο [arithmos]τέλος εάντέλος επανάληψης

-> Εμφάνισε τα αποτελέσματα<-πες (ένωσε “Μέγιστος=” max)πες (ένωσε “Ελάχιστος= min)ζ. Οι φάσεις ενός προγράμματος

Παρατηρώντας προσεκτικά τα προγράμματα που κατασκευάσαμε σε αυτή την ενότητα, διαπιστώνουμε ότι περιλαμβάνουν τρεις φάσεις. Οι φάσεις αυτές απεικονίζουν τον “κύκλο επεξεργασίας των δεδομένων” που γνωρίσαμε στην Α' γυμνασίου.

Δημιουργήθηκε από τον Κ. Χαριτόπουλο

ΕίσοδοςΔεδομένων

ΕκτέλεσηΥπολογισμών

Εμφάνιση Αποτελεσμάτων

Ρώτησε ...

Όρισε, Επανάλαβε,

Εάν ... αλλιώς,κλπ

Πες ...