Γενικό Λύκειο > Δομή επιλογής

Συζήτηση για τις δομές επιλογής

(1/2) > >>

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

Sergio:
Συνάδελφοι γειά σας,

ας κάνω την αρχή με έναν προβληματισμό μου όσον αφορά στη δομή πολλαπλής επιλογής:

ΑΝ συνθήκη_1 ΤΟΤΕ
     εντολή-1
     εντολή-2
     ..
     εντολή-ν
ΑΛΛΙΩΣ_ΑΝ συνθήκη_2 ΤΟΤΕ
     εντολή-1
     εντολή-2
     ..
     εντολή-ν
..
ΑΛΛΙΩΣ
     εντολή-1
     εντολή-2
     ..
     εντολή-ν
ΤΕΛΟΣ_ΑΝ

Το βιβλίο δεν προσδιορίζει πουθενά κατα πόσον 'επιτρέπεται' η παράλειξη του τελευταίου ΑΛΛΙΩΣ.

Για παράδειγμα, σε εκφώνηση της μορφής:
.... αν οι όροφοι ξεπερνούν τους 10 το κόστος επιβαρύνεται με το ποσό των 1500 ευρώ διαφορετικά η επιβάρυνση γίνεται 1000 ευρώ αλλά μόνο για οικοδομές με περισσότερους από 4 ορόφους ...

υπάρχουν σίγουρα πολλές λύσεις.  Μία είναι να χρησιμοποιηθεί απλή επιλογή εμφωλευμένη σε σύνθετη, δηλαδή:
.
.
ΑΝ αριθμός_ορόφων >10  ΤΟΤΕ
 κόστος <-- κόστος + 1500
ΑΛΛΙΩΣ
 ΑΝ αριθμός_ορόφων > 4 ΤΟΤΕ
   κόστος <-- κόστος + 1000
 ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
.
.
Το ερώτημα είναι..., θα μπορούσε ο μαθητής να δώσει λύση χρησιμοποιώντας τη δομή πολλαπλής επιλογής, αλλά παραλείποντας το καταληκτικό ΑΛΛΙΩΣ, όπως φαίνεται στη συνέχεια ???
.
.
ΑΝ αριθμός_ορόφων >10  ΤΟΤΕ
 κόστος <-- κόστος + 1500
ΑΛΛΙΩΣ_ΑΝ αριθμός_ορόφων > 4 ΤΟΤΕ
 κόστος <-- κόστος + 1000
ΤΕΛΟΣ_ΑΝ
.
.

Η λογική λέει οτι θα μπορούσε!

Και αν ήθελε να είναι και αυστηρά σύμφωνος με το συντακτικό θα μπορούσε να γράψει το καταληκτικό ΑΛΛΙΩΣ αλλά να το αφήσει ΚΕΝΟ:
.
.
ΑΝ αριθμός_ορόφων >10  ΤΟΤΕ
 κόστος <-- κόστος + 1500
ΑΛΛΙΩΣ_ΑΝ αριθμός_ορόφων > 4 ΤΟΤΕ
 κόστος <-- κόστος + 1000
ΑΛΛΙΩΣ
! ΤΙΠΟΤΑ
ΤΕΛΟΣ_ΑΝ
.
.
Όμως θα μπορούσε να θεωρηθεί λάθος κατα τη γνώμη σας το ΝΑ ΠΑΡΑΛΕΙΨΕΙ ΕΝΤΕΛΩΣ ΤΟ ΑΛΛΙΩΣ ?

Το βιβλίο δεν αναφέρει πουθενά τίποτα για optionality (προεραιτική χρήση κάποιου clause, κάποιου 'όρου' μίας εντολής, στην προκείμενη περίπτωση... του 'όρου' ΑΛΛΙΩΣ).

Εάν είχε εισάγει στο συντακτικό τη σημασία του '[]' (BNF symbol for 0 or 1 occurences) για να δηλώσει προεραιτικά συντακτικά μέρη και είxε ορίσει την πολλαπλή επιλογή σαν:
ΑΝ συνθήκη_1 ΤΟΤΕ
     εντολή-1
     εντολή-2
     ..
     εντολή-ν
ΑΛΛΙΩΣ_ΑΝ συνθήκη_2 ΤΟΤΕ
     εντολή-1
     εντολή-2
     ..
     εντολή-ν
..
{ΑΛΛΙΩΣ_ΑΝ συνθήκη_i ΤΟΤΕ
     εντολή-1
     εντολή-2
     ..
     εντολή-ν}
[ΑΛΛΙΩΣ
     εντολή-1
     εντολή-2
     ..
     εντολή-ν]
ΤΕΛΟΣ_ΑΝ

τότε θα ήταν κανείς 'ασφαλής' να παραλείψει το ΑΛΛΙΩΣ.

Όμως τώρα;


Τι λέτε και σείς;


Σέργιος

alkisg:
Σέργιο για τους BNF συμβολισμούς συμφωνώ κι επαυξάνω, είναι απαραίτητοι σε κάθε γλώσσα. Φυσικά δεν λέω να διδάσκονται στους μαθητές, αλλά θα μπορούσαν για την διευκόλυνση των καθηγητών να υπάρχουν σε ένα παράρτημα ή στο βιβλίο του καθηγητή. Όσον αφορά το ΑΛΛΙΩΣ_ΑΝ, να ξεκαθαρίσουμε κάτι: άλλο το ΑΛΛΙΩΣ_ΑΝ και άλλο το ΑΛΛΙΩΣ ΑΝ. Το πρώτο είναι κομμάτι της εντολής ΑΝ ... ΤΟΤΕ ... [ΑΛΛΙΩΣ_ΑΝ] ... [ΑΛΛΙΩΣ] ... ΤΕΛΟΣ_ΑΝ. Το δεύτερο είναι μία δεύτερη ΑΝ που περιέχεται στο σκέλος ΤΟΤΕ, και κάθε φορά που χρησιμοποιείται πρέπει να προστίθεται ένα ακόμα ΤΕΛΟΣ_ΑΝ. Επομένως στους κώδικες που γράφεις παραπάνω λείπουν πολλά ΤΕΛΟΣ_ΑΝ.

Για την προαιρετικότητα το βιβλίο δεν είδα να αναφέρει τίποτα, δίνει όμως 3 διαφορετικούς τρόπους σύνταξης της ΑΝ, το οποίο είναι κάτι παραπλήσιο με το να ορίζεις κάτι σαν προαιρετικό. Δηλαδή λέει ότι υποστηρίζεται η σύνταξη χωρίς το ΑΛΛΙΩΣ και το ΑΛΛΙΩΣ_ΑΝ. Δεν αναφέρει (από ότι είδα) αν επιτρέπεται μια ΑΛΛΙΩΣ_ΑΝ να μην ακολουθείται από ΑΛΛΙΩΣ, αλλά πιστεύω ότι είναι λογικότατο να ισχύει κάτι τέτοιο.

Sergio:
Άλκη, σωστή η διευκρύνιση για τη διαφορά πολλαπλής και εμφωλευμένης επιλογής!  Ο δαίμων κάπου 'έφαγε' κάποια underscore (_).  Καλά που το πρόσεξες γιατί το λάθος που φαινόταν από τον κώδικα ήταν σοβαρό.  Έκανα ήδη τις απαραίτητες διορθώσεις στον κώδικα του προηγούμενου μηνύματος για να είναι αυτό που εννοούσα.  Δεν έλειπαν τέλος_αν, αλλά '_' όπως (έμμεσα) φαινόταν από το indentation του κώδικα.

Πολύ καλή η παρατήρησή σου για την 'έμμεση' διαδασκαλία της προεραιτικότητας μέσα από την παρουσίαση τριών μορφών!!!!  Δεν το είχα δεί έτσι.  Τώρα όμως που το λές έτσι πρέπει να είναι!  Εξάλλου παρουσιάζοντας 3 εναλλακτικές μορφές, ουσιαστικά ορίζεις ότι κάπου ενυπάρχει η έννοια της διάζευξης (αυτή τη μορφή ή αυτή ή αυτή.... κ.ο.κ.) επομένως της προεραιτικότητας των επιπλέον όρων της κάθε μορφής.... Πολύ σωστά!  Όμως, ακόμα και με αυτό το ...'μάτι' για να μπορεί να παραλειφθεί 'με ασφάλεια' το 'αλλιώς' στην πολλαπλή επιλογή θα έπρεπε να υπάρχει προηγούμενα ορισμένη και μία πολλαπλή χωρίς 'αλλιώς' (όπως δηλαδή η απλή επιλογή δικαιολογεί την παράλειψη του 'αλλιώς' της σύνθετης επιλογής).

Όλα αυτά βέβαια, χωρίς καμμία διάθεση ... 'τυπολατρείας'.  Εξ'άλλου, ας μην ξεχνάμε όλοι ότι ο σκοπός του μαθήματος δεν είναι η αυστηρή εκμάθηση κάποιας γλώσσας προγραμματισμού, όπως προσδιορίζεται και από το αναλυτικό πρόγραμμα και το πρόγραμμα σππουδών αλλά:
"....έχει γενικό σκοπό, οι μαθητές:
· να αναπτύξουν αναλυτική και συνθετική σκέψη
· να αποκτήσουν ικανότητες μεθοδολογικού χαρακτήρα
· να μπορούν να επιλύουν απλά προβλήματα σε προγραμματιστικό περιβάλλον
...."

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

Μήπως θα έπρεπε τέτοιες ερωτήσεις με κάποιο τρόπο να παίρνουν και επίσημη απάντηση;  Καλοί οι προβληματισμοί μας αλλά πόσο θα βοηθήσουν τα παιδιά εάν ένα τέτοιο λεπτό ζήτημα προκύψει σε κάποιο θέμα εξετάσεων :( (ακούει κανένας ΠΛΗΝΕΤ;; - συνάδελφοι ΠΛΗΝΕΤ... βάλτε κανένα χεράκι..)

Σπύρος Δουκάκης:
Συνάδελφοι, το βιβλίο φαίνεται να υποστηρίζει τη δομή που λέτε στη ΓΛΩΣΣΑ. Όσο για την ψευδογλώσσα είναι προφανές ότι το επιτρέπει (και με ποιο δικαίωμα άλλωστε να το απαγορέψει, αφού είναι ψευδογλώσσα;)
Για την ψευδογλώσσα, δείτε το βιβλίο του καθηγητή στη σελίδα 55 (λύση άσκησης ΔΤ7), στη σελίδα 56 (λύση άσκησης ΔΤ9) στη σελίδα 67 στην απάντηση γ στο πρόβλημα 3.
Όσο για τη ΓΛΩΣΣΑ το χρησιμοποιούν οι ίδιοι οι συγγραφείς σε λύση άσκησης. Δείτε τη λύση της άσκησης ΔΤ3 στο βιβλίο του καθηγητή στη σελίδα 176.

http://users.ntua.gr/sdoukakis/

Πλοήγηση

[0] Λίστα μηνυμάτων

[#] Επόμενη σελίδα

Μετάβαση στην πλήρη έκδοση