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

Ξεκίνησε από Vagelis, 27 Δεκ 2002, 12:16:37 ΜΜ

« προηγούμενο - επόμενο »

Vagelis

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

Sergio

#1
Συνάδελφοι γειά σας,

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

ΑΝ συνθήκη_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
      ..
      εντολή-ν]
ΤΕΛΟΣ_ΑΝ

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

Όμως τώρα;


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


Σέργιος
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

alkisg

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

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

Sergio

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

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

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

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

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

Σπύρος Δουκάκης

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

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

Θανάσης Φλώρος

Συνάδελφοι θα ήθελα την άποψή σας για το θέμα του "ΕΠΙΛΕΞΕ" στη ΓΛΩΣΣΑ. Στο βιβλίο αναφέρει στο γενικό τύπο παρ.8.1.2, οτι δέχεται "λιστα τιμών" με περιοχή τιμών από-έως. Πως αντιμετωπίζεται η περίπτωση διπλής ανισότητας;

π.χ.
α) ΕΠΙΛΕΞΕ ηλικία
           ΠΕΡΙΠΤΩΣΗ ηλικία >= 18 ΚΑΙ ηλικία <= 40
           .....
β) ΕΠΙΛΕΞΕ ηλικία
           ΠΕΡΙΠΤΩΣΗ  18 .. 40
           .....
  
ή κάπως αλλιώς;

Περιμένω τις απαντήσεις σας, σύμφωνα πάντα με το βιβλίο.

pfan

#6
Σύμφωνα με το βιβλίο δεν μπορώ να δώσω απάντηση γιατί δεν έχω βρει κάποιο παράδειγμα με περιοχή τιμών ή τουλάχιστον την γενική σύνταξη της ΕΠΙΛΕΞΕ. Αν κάποιος συνάδελφος έχει δει, καλό θα είναι να το αναφέρει.
Η περίπτωση της περιοχής τιμών μπήκε φέτος στην σελ 37 του βιβλίου ενώ μέχρι πέρσι ήταν μόνο στις διορθώσεις από το παιδαγωγικό. Άσε βέβαια που υποτίθεται ότι διόρθωσαν το βιβλίο και στο παράδειγμα της Επίλεξε στην σελ 37 πάλι έχουν συντακτικό λάθος (τους λείπει η μεταβλητή age από την Επίλεξε).
Έτσι σύμφωνα με δικιά μου ερμηνεία και περιμένοντας τους συναδέλφους να διορθώσουν θα απέρριπτα την α περίπτωση
α) ΕΠΙΛΕΞΕ ηλικία
      ΠΕΡΙΠΤΩΣΗ ηλικία >= 18 ΚΑΙ ηλικία <= 40  
γιατί με τον τρόπο αυτό αφήνεις ενδεχόμενο να χρησιμοποιήσει και άλλους λογικούς τελεστές στην «λίστα τιμών», πράγμα που δεν αναφέρεται καθόλου στο βιβλίο.
πχ ΠΕΡΙΠΤΩΣΗ Μ<0 Ή Μ>20
Επίσης αν βάλεις το όνομα της μεταβλητής (έκφρασης) στην περίπτωση αφήνεις το περιθώριο στο μαθητή να εμπλέξει και άλλες μεταβλητές αν θέλει, το οποίο όμως δεν αναφέρεται ούτε αυτό στο βιβλίο.
πχ ΠΕΡΙΠΤΩΣΗ ηλικία >=18 Ή βάρος <80
Την β περίπτωση θα την έβλεπα με ποιο καλό μάτι, αν και θα προτιμούσα να χρησιμοποιήσω τις λέξεις από και έως όπως τις αναφέρει και το βιβλίο στην σελ. 37 και όχι τις δύο τελείες δηλαδή θα πρότεινα :
ΠΕΡΙΠΤΩΣΗ ΑΠΟ 18 ΕΩΣ 40
Πύρζα Φανή
Καθηγήτρια Πληροφορικής

P.Tsiotakis

Αγαπητοί φίλοι,
Στη σελίδα 37 του βιβλίου παρουσιάζεται  το παράδειγμα 5. Πριν την διόρθωση του βιβλίου είχε την παράκάτω μορφή :


Επίλεξε age
     Περίπτωση age < 0
          εντολές
     Περίπτωση 0 <= age < 5
          εντολές
     Περίπτωση 5 < age < 60
          εντολές
     Περίπτωση 60 <= age < 100
          εντολές
     Περίπτωση age > 100
          εντολές
Τέλος_Επιλογών

Μετά τις διορθώσεις το παράδειγμα πήρε την παρακάτω μορφή (αν και δεν έχει τοποθετηθεί η age μετά το επίλεξε):


Επίλεξε age
     Περίπτωση < 0
          εντολές
     Περίπτωση < 5
          εντολές
     Περίπτωση < 60
          εντολές
     Περίπτωση < 100
          εντολές
     Περίπτωση αλλιώς
          εντολές
Τέλος_Επιλογών

Καταγράφουμε λοιπόν το συμπέρασμα ΚΑΙ με βάση το παράδειγμα 74 του τετραδίου μαθητή που είναι πανομοιότυπο (παραβλέπω το =< που έχουν βάλει και το ΤΟΤΕ !!!!!) τα εξής :

1.  Το όνομα της μεταβλητής καταγράφεται ΜΟΝΟ μετά το "Επίλεξε", ΟΧΙ σε άλλο σημείο
2.  Δεν καταγράφεται π.χ. στο δεύτερο "περίπτωση" το κομμάτι της συνθήκης 0 <=. Και πως να γίνει αυτό άλλωστε ? Με τη μορφή 0 <= < 5 ????

Υπάρχει και το παράδειγμα στη σελίδα 173

ΕΠΙΛΕΞΕ αριθμός
     ΠΕΡΙΠΤΩΣΗ 0
          εντολές
     ΠΕΡΙΠΤΩΣΗ 1, 3, 5, 7, 9
          εντολές
     ΠΕΡΙΠΤΩΣΗ 2, 4, 6, 8
          εντολές
     ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
          εντολές
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ

Άρα για διακριτές τιμές (ισότητα με τιμές) καταγράφονται οι τιμές χωρισμένες με κόμμα ","

Επιπρόσθετα στη σελίδα 37 στο πλαίσιο δεξιά λέει οτι "στο σχήμα επίλεξε...τέλος_επιλογών εξετάζεται μια έκφραση (όχι ΄μονο μια μεταβλητή) ανάλογα με την τιμή της"

Συνεπώς αγαπητή Φανή το ακόλουθο παράδειγμα ΔΕΝ είναι αποδεκτό
πχ ΠΕΡΙΠΤΩΣΗ ηλικία >=18 Ή βάρος <80

σύμφωνα δε, με το βιβλίο ΟΥΤΕ τα ακόλουθα είναι αποδεκτά

α) ΕΠΙΛΕΞΕ ηλικία
      ΠΕΡΙΠΤΩΣΗ ηλικία >= 18 ΚΑΙ ηλικία <= 40  
      .....
β) ΕΠΙΛΕΞΕ ηλικία
      ΠΕΡΙΠΤΩΣΗ  18 .. 40
      .....

(αν και ορθώς επισημαίνει ο Σπύρος Δουκάκης οτι ο αλγόριθμος επιτάσσει ελευθερία κινήσεων - αλλά πρέπει να τεθούν κάποιοι κανόνες)

ΣΩΣΤΟ ΕΙΝΑΙ το παράδειγμα

ΕΠΙΛΕΞΕ 2 * τιμή + 3
   ΠΕΡΙΠΤΩΣΗ < 3
      εντολές
...

Στο ερώτημα που θέτει ο ΘΑΝΑΣΗΣ ΦΛΩΡΟΣ το βιβλίο λέει οτι η ΕΠΙΛΕΞΕ καλύπτει το θέμα "τιμή ΑΠΟ...ΕΩΣ..." αλλά δεν υπάρχει ούτε ένα παράδειγμα στο βιβλίο !! Ποιος απο μας λοιπόν μπορεί να προτείνει τη σύνταξη? ΚΑλύτερη πρόταση δείχνει η σύνταξη

ΕΠΙΛΕΞΕ ηλικία
    ΠΕΡΙΠΤΩΣΗ  18 .. 40
      .....

αλλά τι γίνεται με το
ΕΠΙΛΕΞΕ ηλικία
    ΠΕΡΙΠΤΩΣΗ  18 .. 40
      .....
    ΠΕΡΙΠΤΩΣΗ  10 .. 50
      .....


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

Με εκτίμηση,