ΜΕΤΑΤΡΟΠΗ ΕΝΟΣ ΑΛΓΟΡΙΘΜΟΥ ΜΕ ΕΝΤΟΛΕΣ ΆΛΜΑΤΟΣ ΣΕ ΔΟΜΗΜΕΝΟ ΑΛΓΟΡΙΘΜΟ: ΜΙΑ ΔΙΔΑΚΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ

Σχετικά έγγραφα
Μια ιδακτική Προσέγγιση των Εντολών Άλµατος

ΑΕΠΠ Ερωτήσεις θεωρίας

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

Εισαγωγή στον προγραμματισμό

Ψευδογλώσσας και Διαγράμματα Ροής

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Σχέδιο Μαθήματος - "Ευθεία Απόδειξη"

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

ΠΡΟΣ: Τηλέφωνο: Ινστιτούτο Εκπαιδευτικής Πολιτικής ΚΟΙΝ.:

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων...

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Η Δομή Επανάληψης. Εισαγωγή στην δομή επανάληψης Χρονική διάρκεια: 3 διδακτικές ώρες

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΔΙΑΓΩΝΙΣΜΑ ΣΤΟ ΜΑΘΗΜΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 15 / 01 / 2012

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

Πληροφορική 2. Αλγόριθμοι

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

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

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

- Επιστημονικός Υπεύθυνος Ενεργείας: Θεόδωρος Γ. Εξαρχάκος Καθηγητής του Πανεπιστημίου Αθηνών Πρόεδρος του Παιδαγωγικού Ινστιτούτου «Αναμόρφωση / εκ

του προγράμματος diagrama_rohs.zip )

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

6. Εισαγωγή στον προγραµµατισµό

ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΟΣΟ ΣΥΝΘΗΚΗ ΕΠΑΝΑΛΑΒΕ.ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ. Κοκκαλάρα Μαρία ΠΕ19

ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ: Προγραμματιστικό Περιβάλλον, Αλγοριθμικές Δομές, Ψευδοκώδικας, Πρόγραμμα

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Επιµέλεια Θοδωρής Πιερράτος

ττιαογή και επανάληψη

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Συντάχθηκε απο τον/την Administrator Δευτέρα, 22 Φεβρουάριος :11 - Τελευταία Ενημέρωση Παρασκευή, 26 Φεβρουάριος :52

Προτεινόμενος τρόπος διδασκαλίας του μαθήματος με ενδεικτικό χρονοπρογραμματισμό. Α/Α Ενότητες Περιγραφή Ώρες 1 Εισαγωγικό μάθημα 1

Αλγοριθμική Δομή Επανάληψης

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Παλλατίδειο ΓΕΛ Σιδηροκάστρου

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1. ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦ.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού

Ημερομηνία: Τρίτη 27 Δεκεμβρίου 2016 Διάρκεια Εξέτασης: 3 ώρες ΕΚΦΩΝΗΣΕΙΣ

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

Γκύζη 14-Αθήνα Τηλ :

Σε καθεμιά από τις παρακάτω περιπτώσεις, να μετατρέψετε τη δομή επανάληψης ΟΣΟ στην δομή ΑΠΑΝΤΗΣΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ Α<-54

Γ ΤΑΞΗ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Επαναληπτικές Διαδικασίες

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Διδακτική της Πληροφορικής ΙΙ

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων...

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΦΡΟΝΤΙΣΤΗΡΙΟ ΦΑΣΜΑ 21/4/2013

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

ΘΕΜΑ 1ο Α. 1-6 Σωστό Λάθος Μονάδες 12 Β. Στήλης Στήλης Β Στήλης Α Στήλης Β).

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Αρχές Προγραμματισμού Υπολογιστών

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

ΘΕΜΑΤΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 1/12/2013

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗ, Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Άξονας ανάπτυξης του µαθήµατος 3. Γενικός σκοπός του µαθήµατος. Το µάθηµα της Πληροφορικής στο Γυµνάσιο

Λογισμικό διδασκαλίας των μαθηματικών της Γ Τάξης Γυμνασίου

Ψευδοκώδικας. November 7, 2011

ΙΑΓΩΝΙΣΜΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΛΥΚΕΙΟΥ

Α.1 Τι γνωρίζετε για τον διερμηνευτή, τον μεταγλωττιστή και ποιες οι διαφορές τους. 15 ΜΟΝΑΔΕΣ

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

ΠΡΟΣΟΜΟΙΩΣΗ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γʹ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΤΡΙΤΗ 18 ΑΠΡΙΛΙΟΥ 2017 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ (7)

Ανάπτυξη εφαρμογών Σχετικά με την εντολή επανάληψης «Για από μέχρι με_βήμα»

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Ι. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Της Γ τάξης Ημερησίου Γενικού Λυκείου

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον. τελική επανάληψη /4/2015 1

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

Transcript:

3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ-ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ 195 ΜΕΤΑΤΡΟΠΗ ΕΝΟΣ ΑΛΓΟΡΙΘΜΟΥ ΜΕ ΕΝΤΟΛΕΣ ΆΛΜΑΤΟΣ ΣΕ ΔΟΜΗΜΕΝΟ ΑΛΓΟΡΙΘΜΟ: ΜΙΑ ΔΙΔΑΚΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ Βραχνός Ευριπίδης Καθηγητής Πληροφορικής ΤΕΕ Μήλου evrachnos@gmail.com http://www.db-net.aueb.gr/evry/ ΠΕΡΙΛΗΨΗ Η εντολή άλματος goto έχει εδώ και πολλά χρόνια τεθεί στο περιθώριο του προγραμματισμού τόσο σε εκπαιδευτικό όσο και σε επαγγελματικό επίπεδο. Ωστόσο υπάρχουν κάποια διδακτικά οφέλη που μπορούμε να αποκομίσουμε από αυτήν. Η εργασία αυτή ασχολείται με την μετατροπή αλγορίθμων με εντολή άλματος σε δομημένα ισοδύναμά τους. Θα δείξουμε ότι η μετατροπή αυτή έχει σημαντική εκπαιδευτική αξία, αφού δίνει στον καθηγητή πληροφορικής ένα ακόμη εργαλείο για την κατανόηση από τον μαθητή της ροής του ελέγχου σε ένα πρόγραμμα. Επίσης ο μαθητής θα καταλάβει την ανάγκη για τη χρήση δομών επιλογής και επανάληψης όπως επίσης και τη σημασία του δομημένου προγραμματισμού. Για το σκοπό αυτό κάνουμε χρήση της διαγραμματικής αναπαράστασης του αλγορίθμου, σχεδιάζοντας το αντίστοιχο διάγραμμα ροής ώστε να γίνει φανερή η αντιστοιχία της εντολής άλματος με κάποια από τις δομές επιλογής ή επανάληψης. Με κατάλληλη αντικατάσταση προκύπτει ο δομημένος αλγόριθμος. ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ: εντολή άλματος, goto, διάγραμμα ροής, δομημένος προγραμματισμός, ανάπτυξη εφαρμογών ΕΙΣΑΓΩΓΗ Η εντολή άλματος goto έχει ως αποτέλεσμα την αλλαγή της ροής του προγράμματος, δηλαδή τη μεταφορά του ελέγχου σε οποιοδήποτε σημείο του προγράμματος. Ουσιαστικά παραβιάζει τη δομή της ακολουθίας αφού ο έλεγχος μπορεί να μεταβεί σε οποιοδήποτε σημείο του προγράμματος κάνοντας πολύ δύσκολη την κατανόηση και τη συντήρησή του. Η εντολή άλματος JMP είναι η αντίστοιχη εντολή στις συμβολικές γλώσσες (assembly languages) που υλοποιεί την αλλαγή στη ροή του ελέγχου. Δηλαδή όλες οι δομές επιλογής και επανάληψης που ξέρουμε όταν μετατρέπονται σε γλώσσα μηχανής υλοποιούνται με ισοδύναμες εντολές άλματος. Έτσι η εντολή αυτή διαδόθηκε και στις πρώτες γλώσσες προγραμματισμού υψηλού επιπέδου όπως οι Fortran, COBOL και έγινε δημοφιλής μέσα από τη διάδοση της Basic η οποία έγινε συνώνυμο της εντολής άλματος και γενικότερα του μη δομημένου προγραμματισμού. Μάλιστα παρ όλα τα εμφανή προβλήματα της εντολής, πολλοί προγραμματιστές υποστήριζαν τη χρήση της με επιχείρημα ότι στα σωστά χέρια μπορεί να αποδειχθεί ένα πολύ σημαντικό εργαλείο για τον προγραμματιστή. Όσο όμως αυξανόταν ο όγκος των προγραμμάτων στα οποία γινόταν αλόγιστη χρήση της εντολής goto, η εκσφαλμάτωση, συντήρηση και επέκταση των προγραμμάτων αυτών γινόταν όλο και πιο δύσκολη και σε κάποιες περιπτώσεις πρακτικά αδύνατη. Η πρώτη αντίδραση της επιστημονικής κοινότητας ήταν η θεωρητική δουλειά των Bohm και Jacopini (Bohm 1966), που αποτελούσε βελτίωση μιας δημοσίευσης που είχαν ήδη κάνει το 1964 σε ένα συνέδριο στο Ισραήλ. Ωστόσο η δουλειά αυτή έτυχε αναγνώρισης από όλο τον κόσμο κυρίως μετά τη φημισμένη πρόταση Go to statement considered harmful του E.W. Dijkstra

196 3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ (Dijkstra 1968). Ο Dijkstra δεν είχε κάποια θεωρητική απόδειξη όπως οι Bohm και Jacopini, είχε όμως πειστικά επιχειρήματα ότι η αλόγιστη χρήση της εντολής goto μπορεί να δημιουργήσει μεγάλα προβλήματα τα οποία αυξάνονται όσο αυξάνεται το μέγεθος του προγράμματος. Τη δεκαετία του 70 με την εξάπλωση γλωσσών που προήγαγαν τον δομημένο προγραμματισμό όπως η ALGOL και αργότερα η PASCAL, άρχισε να περιορίζεται σημαντικά η χρήση της εντολής goto. Σήμερα εντολές άλματος δεν χρησιμοποιούνται σχεδόν καθόλου εκτός από εξαιρετικές περιπτώσεις και κυρίως για λόγους συμβατότητας. Στη Java μάλιστα δεν υπάρχει η εντολή goto αλλά τα υποκατάστατά της break και continue τα οποία δεν προκαλούν τα ίδια προβλήματα, όπως επίσης και οι εξαιρέσεις (exceptions) για τον χειρισμό σφαλμάτων. Η εργασία αυτή πραγματεύεται έναν τρόπο αφαίρεσης της εντολής άλματος από ένα τμήμα αλγορίθμου και τη μετατροπή του στο δομημένο ισοδύναμό του, στα πλαίσια του μαθήματος Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον της τεχνολογικής κατεύθυνσης της Γ Λυκείου. Στο σχολικό βιβλίο δίνεται ο ορισμός του δομημένου προγραμματισμού και γίνεται μια αναφορά στην εντολή goto. Στο τετράδιο μαθητή όμως υπάρχουν ασκήσεις όπου δίνεται ένα τμήμα μη δομημένου προγράμματος και ζητείται από τον μαθητή να σχεδιάσει αλγόριθμο με τις αρχές του δομημένου προγραμματισμού που να εκτελεί τις ίδιες λειτουργίες. Εμείς θα προτείνουμε έναν τρόπο διδασκαλίας για την απαλοιφή της εντολής άλματος. Στόχος μας δεν είναι η σωστή επίλυση αντίστοιχων ασκήσεων, αλλά η κατανόηση της ροής του ελέγχου σε ένα πρόγραμμα από τον μαθητή. Όπως θα δούμε παρακάτω μια εντολή goto μπορεί να μετασχηματιστεί σε δομή επιλογής ή δομή επανάληψης. Με αυτόν τον τρόπο ο μαθητής θα καταλάβει καλύτερα πως λειτουργούν οι δομές επανάληψης και επιλογής και πως αυτές μετατρέπονται σε εντολές άλματος JMP όταν ο μεταγλωττιστής μετατρέπει ένα πρόγραμμα από γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής. Η ΔΙΑΓΡΑΜΜΑΤΙΚΗ ΑΝΑΠΑΡΑΣΤΑΣΗ Υπάρχουν πολλές τεχνικές για την μετατροπή ενός αδόμητου τμήματος αλγορίθμου σε δομημένο. Οι τεχνικές αυτές χρησιμοποιούνται για τον σχεδιασμό των γνωστών decompilers. Αυτά τα προγράμματα εκτελούν την αντίστροφη εργασία από αυτήν ενός μεταγλωττιστή. Δηλαδή δέχονται ως είσοδο ένα πρόγραμμα σε γλώσσα μηχανής και το μετατρέπουν σε μια γλώσσα υψηλού επιπέδου. Κατά τη μετατροπή αυτή θα πρέπει να απαλείψουν όλες τις εντολές άλματος και να τις αντικαταστήσουν με τα δομημένα ισοδύναμά τους. Αντίστοιχες τεχνικές χρησιμοποιούνται επίσης και για την παραλληλοποίηση προγραμμάτων έτσι ώστε αυτά να μπορούν να εκτελεστούν από περισσότερους από έναν επεξεργαστές. Όταν ένα πρόγραμμα είναι σχεδιασμένο με τις αρχές του δομημένου προγραμματισμού είναι πολύ πιο εύκολο να χωριστεί σε τμήματα ανεξάρτητα μεταξύ τους τα οποία θα μπορούν να εκτελεστούν παράλληλα από διαφορετικούς επεξεργαστές. Το πρόβλημα με όλες αυτές τις τεχνικές είναι ότι δεν μπορούν να χρησιμοποιηθούν σε ένα μάθημα όπως αυτό της Γ Λυκείου λόγω της πολυπλοκότητάς τους, που θα τις κάνει δυσνόητες για τους μαθητές. Συνήθως η γεωμετρική μορφή ενός προβλήματος υπερέχει αισθητά από την αλγεβρική του όσον αφορά τη διδακτική τους αξία, δηλαδή την ευκολία κατανόησής τους από τον μαθητή. Η γεωμετρική αναπαράσταση για το πρόβλημα που εξετάζουμε είναι η διαγραμματική αναπαράσταση του αλγορίθμου. Θα χρησιμοποιήσουμε τα διαγράμματα ροής, μια και είναι η διαγραμματική αναπαράσταση που χρησιμοποιείται στο σχολικό βιβλίο (Βακάλη 1999). Μάλιστα, αυτή η αναπαράσταση ταιριάζει απόλυτα με το πρόβλημα που εξετάζουμε διότι είναι σχεδιασμένη για να δείχνει αυτό που είναι το ζητούμενο για μας, δηλαδή τη ροή του ελέγχου σε ένα πρόγραμμα.

3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ-ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ 197 Ο Scanlan στην εργασία του (Scanlan 1989), μετά από εκτενή σύγκριση της αναπαράστασης ενός αλγορίθμου με διαγράμματα ροής και με ψευδοκώδικα, φτάνει στο συμπέρασμα ότι τα διαγράμματα ροής έχουν μεγαλύτερη διδακτική αξία. Ειδικά για την περίπτωση της κατανόησης της ροής του ελέγχου ενός προγράμματος είναι ιδανικά. Στη συνέχεια θα μελετήσουμε τμήματα αλγορίθμων που δεν θα έχουν λειτουργίες εισόδου-εξόδου. Έτσι θα κάνουμε χρήση μόνο των δυο παρακάτω διαγραμματικών συμβόλων: Σχήμα 1. Το ορθογώνιο δηλώνει την εκτέλεση μιας ή περισσότερων πράξεων και ο ρόμβος μια εντολή διακλάδωσης ανάλογα με την τιμή της Συνθήκης. Να σημειώσουμε ότι οι αλγοριθμικές δομές λόγω της σκοπιάς από την οποία τις εξετάζουμε, είναι οι ίδιες είτε αναφερόμαστε σε αλγόριθμο είτε σε πρόγραμμα. Για αυτό οι όροι αλγόριθμος και πρόγραμμα θα χρησιμοποιούνται σε αυτό το κείμενο χωρίς διάκριση. Επίσης όταν λέμε ότι δυο αλγόριθμοι, προγράμματα ή διαγράμματα ροής είναι ισοδύναμα θα εννοούμε ότι για όλες τις δυνατές εισόδους, όλες οι εκτελέσεις επιστρέφουν το ίδιο αποτέλεσμα. Τέλος η σημειολογία που χρησιμοποιούμε για τα διαγράμματα ροής έχει κάποιες μικροδιαφορές με αυτή του βιβλίου, όμως η συζήτηση με τους μαθητές έδειξε ότι τους βοηθάει καλύτερα να καταλάβουν τη λειτουργία της εντολής άλματος και την αντιστοιχία της με τις δομές επιλογής και επανάληψης κατά περίπτωση. ΑΝΑΛΥΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ Ας δούμε ένα παράδειγμα μη δομημένου προγράμματος: GOTO Ετικέτα Εντολή_3 Ετικέτα: Εντολή_4 Η εκτέλεση της εντολής GOTO έχει σαν αποτέλεσμα τη μεταφορά του ελέγχου στην Ετικέτα και την εκτέλεση της εντολής Εντολή_4. Δηλαδή οι εντολές, Εντολή_3 παρακάμπτονται και δεν εκτελούνται ποτέ. Άρα το αντίστοιχο δομημένο πρόγραμμα θα περιέχει μόνο τις εντολές που θα εκτελεστούν με τη συγκεκριμένη σειρά, δηλαδή τις εντολές 1,4. Υπάρχουν δυο περιπτώσεις: (1) η εντολή άλματος και η ετικέτα προορισμού να βρίσκονται στην ίδια ομάδα(μπλοκ) εντολών και (2) να βρίσκονται σε διαφορετική ομάδα εντολών. Όταν η εντολή άλματος και η ετικέτα είναι και οι δυο στην ίδια ομάδα εντολών η απάλειψη της εντολής άλματος είναι πολύ απλή και για αυτό θα ασχοληθούμε κυρίως με την περίπτωση αυτή. Ωστόσο θα δώσουμε στη συνέχεια και παραδείγματα της δεύτερης περίπτωσης. Στην πρώτη περίπτωση υπάρχουν δυο πιθανότητες: η εντολή άλματος (α) να οδηγεί σε επόμενη εντολή (β) να οδηγεί σε προηγούμενη εντολή. ΔΟΜΗ ΕΠΙΛΟΓΗΣ Ας ξεκινήσουμε με ένα παράδειγμα όπου η εντολή άλματος οδηγεί σε επόμενη εντολή.

198 3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ Στην πρώτη επαφή που θα έχει ο μαθητής με μια εντολή άλματος ο σχεδιασμός ένος βέλους που οδηγεί στην εντολή που θα εκτελεστεί όπως φαίνεται παραπάνω ίσως θα ήταν καλή ιδέα. Θα τον βοηθήσει να σχεδιάσει το αντίστοιχο διάγραμμα ροής, αφού καταλάβει ότι μια εντολή άλματος ισοδυναμεί με μεταφορά της ροής του ελέγχου σε άλλο σημείο του προγράμματος. Στη συνέχεια η κατασκευή του αντίστοιχου διαγράμματος ροής δεν είναι δύσκολη υπόθεση. Αφού ο μαθητής κατασκευάσει το διάγραμμα ροής του ζητάμε στη συνέχεια να το μετατρέψει σε τμήμα αλγορίθμου χωρίς να χρησιμοποιήσει την εντολή goto. Η μετατροπή είναι εξαιρετικά απλή και φαίνεται στο παρακάτω σχήμα. Σχήμα 2. Μετά την κατασκευή του διαγράμματος ροής (αριστερά) η μετατροπή του σε τμήμα αλγορίθμου γίνεται κατ ευθείαν (δεξιά) με χρήση της δομής Αν...Τότε. Μέσα από την παραπάνω διαδικασία είναι πολύ πιο εύκολο για τον μαθητή να κατανοήσει αλλά και να ανακαλύψει μόνος του τον τρόπο λειτουργίας της εντολής επιλογής Αν...τότε και του τρόπου με τον οποίο αλλάζει τη σειρά της εκτέλεσης των εντολών στο πρόγραμμα. Η εντολή goto είναι απλά το μέσο. Στο παραπάνω παράδειγμα θα πρέπει να σημειώσουμε ότι το βέλος καταλήγει πάνω στην Εντολή 3 και όχι στη γραμμή ελέγχου που οδηγεί σε αυτήν όπως συμβαίνει στο σχολικό βιβλίο (Βακάλη 1999). Η διαφορά φαίνεται στο παρακάτω σχήμα:

3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ-ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ 199 Σχήμα 3. Αριστερά φαίνεται ο τρόπος σχεδιασμού που χρησιμοποιούμε σε αυτήν την εργασία και δεξιά ο τρόπος του σχολικού βιβλίου Για να μη δημιουργηθεί κάποια παρεξήγηση να πούμε ότι ο τρόπος του σχολικού βιβλίου είναι ο σωστός και ο ευρέως αποδεκτός τρόπος. Ο λόγος που κάναμε αυτή τη μικρή αλλαγή ήταν η επιμονή των μαθητών να μεταφράζουν την εντολή άλματος με αυτόν τον τρόπο στο διάγραμμα ροής και είναι απόλυτα λογικό αφού το σημείο προορισμού είναι μια άλλη εντολή. Ας δούμε τώρα και ένα παράδειγμα για την περίπτωση που η εντολή άλματος οδηγεί σε προηγούμενη εντολή. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Ας δούμε τώρα και ένα παράδειγμα για την περίπτωση που η εντολή άλματος οδηγεί σε προηγούμενη εντολή. Σε αυτή την περίπτωση οι περισσότεροι μαθητές θα καταλάβουν ότι πρόκειται για εντολή επανάληψης, όμως δεν θα μπορέσουν να διακρίνουν εύκολα το είδος της επανάληψης. Η μετατροπή του προηγούμενου τμήματος αλγορίθμου σε ισοδύναμο διάγραμμα ροής θα δώσει τη λύση απλά και εύκολα όπως φαίνεται στο παρακάτω σχήμα. Από το διάγραμμα ροής είναι πλέον φανερό ότι η δομή επανάληψης για τη συγκεκριμένη περίπτωση είναι μια δομή της μορφής Επανάλαβε...Όσο (Συνθήκη=Αληθής )(υπάρχει στις γλώσσες C++ και Java ως do{ }while (Συνθήκη)). Η αντίστοιχη δομή επανάληψης που προτείνει το σχολικό βιβλίο είναι η Αρχή_Επανάληψης...Μέχρις_ότου (Συνθήκη=Ψευδής). Σχήμα 4. Μετά την κατασκευή του διαγράμματος ροής (αριστερά) η μετατροπή του σε τμήμα αλγορίθμου γίνεται κατ ευθείαν (δεξιά) με χρήση της δομής Αρχή_επανάληψης...Μέχρις_ότου. Αυτή η αλλαγή της συνθήκης σε ψευδή στη δομή Μέχρις_ότου μπορεί να προκαλέσει σύγχυση στους μαθητές. Αν υποθέσουμε ότι οι περισσότεροι μαθητές δεν είχαν διδαχθεί καμία από τις δομές επανάληψης του σχολικού βιβλίου (Όσο...επανάλαβε, Αρχή_επανάληψης...Μέχρις_ότου) το πιθανότερο είναι ότι θα χρησιμοποιούσαν τη δομή επανάληψης Επανάλαβε...Όσο (Συνθήκη=Αληθής). Η μετατροπή όμως αυτής της δομής σε

200 3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ Αρχή_επανάληψης...Μέχρις_ότου επιβάλλει τη λογική άρνηση της συνθήκης όπως φαίνεται και στο παραπάνω σχήμα. Η ΜΕΘΟΔΟΛΟΓΙΑ Αν θέλουμε λοιπόν να συνοψίσουμε τα βήματα που θα πρέπει να ακολουθήσει ο μαθητής για να απαλείψει μια εντολή άλματος για τις παραπάνω απλές περιπτώσεις έχουμε: 1. Συνδέουμε με μια γραμμή-βέλος την εντολή άλματος με την εντολή στην οποία οδηγεί. 2. Σχεδιάζουμε το αντίστοιχο διάγραμμα ροής. 3. Διακρίνουμε αν πρόκειται για δομή επιλογής ή επανάληψης από την κατεύθυνση της ροής του ελέγχου. 4. Γράφουμε το αντίστοιχο τμήμα αλγορίθμου. Τα βήματα αυτά δεν αποτελούν πανάκεια ούτε λύνουν με εξίσου εύκολο τρόπο όλα τα προβλήματα. Όμως πιστεύουμε ότι είναι ένας πολύ ομαλός και κατανοητός τρόπος για μια πρώτη επαφή του μαθητή με την εντολή άλματος GOTO και την απαλοιφή της από ένα πρόγραμμα έτσι ώστε αυτό να πληροί τις βασικές αρχές του δομημένου προγραμματισμού. Ένας άλλος τρόπος επίλυσης τέτοιων ασκήσεων είναι η καταγραφή όλων των σεναρίων εκτέλεσης για κάθε περίπτωση και η δημιουργία από αυτά, του δομημένου προγράμματος. Κάτι τέτοιο όμως δεν ενδείκνυται, κατά τη γνώμη μας, για μια πρώτη επαφή με το αντικείμενο. ΠΕΠΛΕΓΜΕΝΕΣ ΕΝΤΟΛΕΣ ΑΛΜΑΤΟΣ Στην προηγούμενη ενότητα αναφερθήκαμε σε απλές περιπτώσεις όπου η εντολή άλματος και η εντολή προορισμού βρίσκονται στην ίδια ομάδα εντολών. Ο σκοπός ήταν να δει ο μαθητής ένα παράδειγμα μη δομημένου προγραμματισμού, έτσι ώστε να κατανοήσει καλύτερα τις βασικές αρχές του και όχι να μπορεί να μετατρέπει πολύπλοκα αδόμητα προγράμματα σε δομημένα ισοδύναμά τους. Ωστόσο στο τετράδιο του μαθητή υπάρχουν δυο ασκήσεις στις οποίες η εντολή άλματος οδηγεί σε διαφορετικό ή και εμφωλευμένο μπλοκ εντολών. Για λόγους πληρότητας θα περιγράψουμε στη συνέχεια δυο τέτοια παραδείγματα αδόμητων προγραμμάτων όπως περιγράφονται στο (Zhang et. al. 2004). Στην εργασία αυτή, ο αναγνώστης μπορεί να δει και τις σχετικές αποδείξεις σχετικά την ορθότητα του μετασχηματισμού. ΠΕΠΛΕΓΜΕΝΗ ΔΟΜΗ ΕΠΙΛΟΓΗΣ Η περίπτωση που θα εξετάσουμε εδώ είναι η απλούστερη από τις τρεις. Εδώ ο μαθητής θα μπορούσε να αναλύσει όλα τα πιθανά σενάρια εκτέλεσης που προκύπτουν από τους συνδυασμός των τιμών των δυο συνθηκών. Έτσι θα μπορούσε να προκύψει το παρακάτω δομημένο πρόγραμμα.

3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ-ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ 201 Σχήμα 5. Αριστερά δίνεται ένα πρόγραμμα με πεπλεγμένες εντολές άλματος και δεξιά το δομημένο ισοδύναμό του ΠΕΠΛΕΓΜΕΝΗ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Στο σχήμα 6 που δίνεται παρακάτω, η μια εκ των δυο εντολών άλματος επιστρέφει τον έλεγχο σε προηγούμενη εντολή, οπότε εδώ θα χρησιμοποιήσουμε επανάληψη. Αυτό που θέλουμε είναι η πρώτη εντολή άλματος να μην οδηγεί σε εντολή μέσα στην επανάληψη ώστε να απλοποιήσουμε τα πράγματα. Έτσι, αντί να χρησιμοποιήσουμε τη δομή Μέχρις_ότου θα χρησιμοποιήσουμε την Όσο...επανάλαβε. Στο σχήμα.7 δείχνουμε πως μετατρέπουμε μια δομή Μέχρις_ότου σε ισοδύναμη δομή Όσο...επανάλαβε. Η αντιγραφή της ομάδας εντολών της επανάληψης έξω από αυτήν είναι επιτακτική έτσι ώστε το μπλοκ αυτό να εκτελείται τουλάχιστον μια φορά. Σχήμα 6. Ένα πιο σύνθετο παράδειγμα με άλμα σε προηγούμενη εντολή. Αρχή_Επανάληψης Μέχρις_ότου (Συνθήκη=Ψευδής) Όσο επανάλαβε Τέλος_επανάληψης Σχήμα 7. Ισοδυναμία μεταξύ των δυο δομών επαναλήψεων (Συνθήκη=Ψευδής) Οπότε χρησιμοποιώντας τη δομή Όσο...επανάλαβε παίρνουμε το παρακάτω ισοδύναμο πρόγραμμα. Η απαλοιφή και της άλλης εντολής goto είναι πλέον απλή υπόθεση αφού αναλύθηκε στην προηγούμενη ενότητα. Έτσι προκύπτει το τελικό πρόγραμμα όπως φαίνεται στο παραπάνω σχήμα. Αν (Συνθήκη1=Αληθής) τότε GOTO E3 E3: Εντολή_3 Όσο επανάλαβε Εντολή_3 (Συνθήκη2=Ψευδής) Αν (Συνθήκη1=Ψευδής) τότε Τέλος_αν E3: Εντολή_3 Όσο επανάλαβε Εντολή_3 Τέλος_επανάληψης (Συνθήκη2=Ψευδής) Τέλος_επανάληψης Σχήμα 8. Αριστερά φαίνεται το πρόγραμμα που προκύπτει μετά τον πρώτο μετασχηματισμό και δεξιά φαίνεται το δομημένο πρόγραμμα μετά την απαλοιφή και της δεύτερης εντολής goto. ΣΥΜΠΕΡΑΣΜΑΤΑ Στην εργασία αυτή παρουσιάσαμε μια πρόταση διδασκαλίας για τη μετατροπή ενός προγράμματος/αλγορίθμου με εντολές άλματος στο δομημένο ισοδύναμό του. Ισχυριζόμαστε ότι ο

202 3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ μετασχηματισμός αυτός έχει σημαντική διδακτική αξία στα πλαίσια ενός εισαγωγικού μαθήματος στον προγραμματισμό. Αποτελεί έναν ακόμα εναλλακτικό τρόπο για να κατανοήσει ο μαθητής τον τρόπο λειτουργίας των τριών δομών ακολουθίας, επιλογής και επανάληψης του δομημένου προγραμματισμού. Χρησιμοποιήσαμε την εμπειρία που έχουμε από το μάθημα Ανάπτυξη Εφαρμογών της Γ Λυκείου, για να βρούμε έναν τρόπο παρουσίασης που να είναι κατανοητός στους μαθητές. Καταλήξαμε στη διαγραμματική αναπαράσταση όπου φαίνεται καλύτερα η αλλαγή στην ροή του προγράμματος, σαν συνέπεια μιας εντολής άλματος. Τέλος πιστεύουμε ότι αξίζει μια αναφορά στην εντολή goto όχι μόνο για ιστορικούς λόγους, αλλά και επειδή οι δομές επιλογής και επανάληψης υλοποιούνται σε χαμηλό επίπεδο από την εντολή άλματος JMP. ΒΙΒΛΙΟΓΡΑΦΙΑ 1. ACM, 11:147-148. 2. Bohm C. and Jacopini G. (1966), Flow diagrams, Turing machines and languages with only two formation rules, Communications of the ACM, 9(5):366-371. 3. Dijkstra E.W. (1968) Go to statement considered harmful. Communications of the ACM, 11:147-148. 4. Scanlan D.A. (1989) Structured flowcharts outperform pseudocode: An experimental comparison. IEEE Software, 6(5), 28-36. 5. Williams M.H. and Ossher H.L. (1978), Conversion of unstructured flow diagrams to structured. Comput. J, 21(2). 6. Zhang F. and D Hollander E.H. (2004), Using Hammock Graphs to Structure Programs, IEEE Transactions on Software Engineering, Vol 30, No 4. 7. Βακάλη Α. et. al. (1999), Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον, ΥΠΕΠΘ, Παιδαγωγικό Ινστιτούτο, Αθήνα.