Αποστολέας Θέμα: Διαφορά μεταξύ Εμφωλευμένων Επιλογών  (Αναγνώστηκε 4223 φορές)

blackadder

  • Οπαδός
  • **
  • Μηνύματα: 10
Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« στις: 18 Δεκ 2006, 01:14:25 πμ »
Καλημέρα (ή νύχτα, δεν είμαι σίγουρος).

Ήθελα να κάνω μια ερώτηση σχετικά με τις δομές επιλογής και την διαφορά μεταξύ της μορφής ΑΝ.. ΤΟΤΕ.. ΑΛΛΙΩΣ...ΑΝ...ΤΟΤΕ...ΤΕΛΟΣ_ΑΝ και της μορφής ΑΝ..ΤΟΤΕ..ΑΛΛΙΩΣ_ΑΝ...ΤΕΛΟΣ_ΑΝ.

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

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

ΔΙΑΒΑΣΕ Β
ΑΝ Β >= 0 ΚΑΙ Β < 9.5 ΤΟΤΕ
   ΓΡΑΨΕ ‘ΑΠΟΡΡΙΠΤΕΤΑΙ’
ΑΛΛΙΩΣ
ΑΝ Β >= 9.5 ΚΑΙ Β < 12 ΤΟΤΕ
      ΓΡΑΨΕ ‘ΜΕΤΡΙΑ’
ΑΛΛΙΩΣ
      ΑΝ Β >= 12 ΚΑΙ Β < 15 ΤΟΤΕ
         ΓΡΑΨΕ ‘ΚΑΛΑ’
      ΑΛΛΙΩΣ
         ΑΝ Β >= 15 ΚΑΙ Β < 18.5 ΤΟΤΕ
            ΓΡΑΨΕ ‘ΠΟΛΥ ΚΑΛΑ’
         ΑΛΛΙΩΣ
            ΑΝ Β >= 18.5 ΚΑΙ Β <= 20 ΤΟΤΕ
            ΓΡΑΨΕ ‘ΑΡΙΣΤΑ’
            ΑΛΛΙΩΣ
               ΓΡΑΨΕ ‘ΛΑΘΟΣ ΒΑΘΜΟΣ’
            ΤΕΛΟΣ_ΑΝ
         ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ


ΔΙΑΒΑΣΕ Β
ΑΝ Β >= 0 ΚΑΙ Β < 9.5 ΤΟΤΕ
   ΓΡΑΨΕ ‘ΑΠΟΡΡΙΠΤΕΤΑΙ’
ΑΛΛΙΩΣ_ΑΝ Β >= 9.5 ΚΑΙ Β < 12 ΤΟΤΕ
   ΓΡΑΨΕ ‘ΜΕΤΡΙΑ’
ΑΛΛΙΩΣ_ΑΝ Β >= 12 ΚΑΙ Β < 15 ΤΟΤΕ
   ΓΡΑΨΕ ‘ΚΑΛΑ’
ΑΛΛΙΩΣ_ΑΝ Β >= 15 ΚΑΙ Β < 18.5 ΤΟΤΕ
   ΓΡΑΨΕ ‘ΠΟΛΥ ΚΑΛΑ’
ΑΛΛΙΩΣ_ΑΝ Β >= 18.5 ΚΑΙ Β <= 20 ΤΟΤΕ
   ΓΡΑΨΕ ‘ΑΡΙΣΤΑ’
ΑΛΛΙΩΣ
   ΓΡΑΨΕ ‘ΛΑΘΟΣ ΒΑΘΜΟΣ’
ΤΕΛΟΣ_ΑΝ

Ευχαριστώ πολύ,
καλό ξημέρωμα!

nikosx

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 359
  • ___
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #1 στις: 18 Δεκ 2006, 12:21:16 μμ »
Καλημέρα,

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

ΠΠ <-- 0
ΠΑ <-- 0
ΔΙΑΒΑΣΕ Β
ΑΝ Β >= 0 ΚΑΙ Β < 9.5 ΤΟΤΕ
   ΠΑ <-- ΠΑ + 1
   ΓΡΑΨΕ ‘ΑΠΟΡΡΙΠΤΕΤΑΙ’
ΑΛΛΙΩΣ
  ΠΠ <-- ΠΠ + 1
  ΑΝ Β >= 9.5 ΚΑΙ Β < 12 ΤΟΤΕ
       ΓΡΑΨΕ ‘ΜΕΤΡΙΑ’
  ΑΛΛΙΩΣ
      ΑΝ Β >= 12 ΚΑΙ Β < 15 ΤΟΤΕ
         ΓΡΑΨΕ ‘ΚΑΛΑ’
      ΑΛΛΙΩΣ
         ΑΝ Β >= 15 ΚΑΙ Β < 18.5 ΤΟΤΕ
            ΓΡΑΨΕ ‘ΠΟΛΥ ΚΑΛΑ’
         ΑΛΛΙΩΣ
            ΑΝ Β >= 18.5 ΚΑΙ Β <= 20 ΤΟΤΕ
            ΓΡΑΨΕ ‘ΑΡΙΣΤΑ’
            ΑΛΛΙΩΣ
               ΓΡΑΨΕ ‘ΛΑΘΟΣ ΒΑΘΜΟΣ’
            ΤΕΛΟΣ_ΑΝ
         ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

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

Νίκος Ξ.
Νίκος Ξένος
nkxenos@yahoo.gr

EleniK

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 708
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #2 στις: 18 Δεκ 2006, 12:59:14 μμ »
Συνάδελφε είναι ακριβώς το ίδιο. Προσωπικά θα προτιμούσα τη δεύτερη με την πολλαπλή διότι η πρώτη θα μπέρδευε περισσότερο τα παιδιά και θα ξεχνούσαν και καποια τελος_αν ή θα τα εβαζαν σε λάθος σημείο. Σε τέτοιου είδους ασκήσεις ενθαρρύνω την πολλαπλή.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2448
  • I 'm not young enough to know everything
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #3 στις: 18 Δεκ 2006, 02:14:11 μμ »
Ίσως έχει ενδιαφέρον να πούμε 2 λόγια για την ιστορία της πολλαπλής επιλογής ...αλλιώς_αν...

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


ΔΙΑΒΑΣΕ Β
ΑΝ Β >= 0 ΚΑΙ Β < 9.5 ΤΟΤΕ
   ΓΡΑΨΕ ‘ΑΠΟΡΡΙΠΤΕΤΑΙ’
ΑΛΛΙΩΣ ΑΝ Β >= 9.5 ΚΑΙ Β < 12 ΤΟΤΕ
      ΓΡΑΨΕ ‘ΜΕΤΡΙΑ’
ΑΛΛΙΩΣ ΑΝ Β >= 12 ΚΑΙ Β < 15 ΤΟΤΕ
      ΓΡΑΨΕ ‘ΚΑΛΑ’
ΑΛΛΙΩΣ ΑΝ Β >= 15 ΚΑΙ Β < 18.5 ΤΟΤΕ
      ΓΡΑΨΕ ‘ΠΟΛΥ ΚΑΛΑ’
ΑΛΛΙΩΣ ΑΝ Β >= 18.5 ΚΑΙ Β <= 20 ΤΟΤΕ
      ΓΡΑΨΕ ‘ΑΡΙΣΤΑ’
ΑΛΛΙΩΣ
      ΓΡΑΨΕ ‘ΛΑΘΟΣ ΒΑΘΜΟΣ’
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

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

Με όλα αυτά θέλω να πω πως οι 2 κώδικες εξ'ορισμού είναι ισοδύναμοι. Η "αλλώς_αν" ορίστηκε για να κάνει αυτό που κάνει η εμφωλευμένη με τον παραπάνω τρόπο. Φυσικά όλα τα παραπάνω είναι σε ορολογία ψευδογλώσσας για να γίνουν κατανοητά και όχι κάποιας αληθινής γλώσσας προγραμματισμού.
Συνηθίζω να λέω αυτή την ιστορία την τάξη όταν μιλάω για μετατροπές μεταξύ πολλαπλής και εμφωλευμένης. Όποιος την καταλάβει κάνει τις μετατροπές απλά βάζοντας ή βγάζοντας χαρακτήρες "_" και αλλάζοντας τη στοίχιση.

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2198
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #4 στις: 18 Δεκ 2006, 04:03:42 μμ »
Πάντως, να σχολιάσουμε πως δεν είναι καλό οποιαδήποτε εμφωλευμένη επιλογή να μετατρέπεται σε "Αν..Αλλιώς_αν"
Υπάρχουν πολλές περιπτώσεις στις οποίες η εμφωλευμένη επιλογή είναι πιο εύκολα κατανοητή στην λογική ροή της, όσο βαθιά κι αν φτάνει η διακλάδωση της
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2448
  • I 'm not young enough to know everything
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #5 στις: 21 Δεκ 2006, 08:33:55 πμ »
Συμφωνώ απόλυτα. Είναι η δομή του προβλήματος που θα υπαγορέψει αν θα χρησιμοποιήσουμε εμφωλευμένη, πολλαπλή ή σύνθετη συνθήκη με λογικούς τελεστές. Ένα κλασσικό παράδειγμα που το πρόβλημα περιγράφεται  καλύτερα με εμφωλευμένη από ότι με πολλαπλή είναι η λύση της πρωτοβάθμιας εξίσωσης αχ+β=0. Λύνεται ασφαλώς και με πολλαπλή αλλά δεν περιγράφεται το πρόβλημα με φυσικό τροπο.

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2198
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #6 στις: 21 Δεκ 2006, 11:59:13 πμ »
Ακριβώς αυτό είχα κι εγώ στον νου μου
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

michalis

  • Οπαδός
  • **
  • Μηνύματα: 15
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #7 στις: 09 Ιαν 2007, 11:21:13 πμ »
τελικά βάζουμε τόσα Τελος_αν όσα είναι και τα Αν

EleniK

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 708
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #8 στις: 09 Ιαν 2007, 01:30:12 μμ »
@michalis

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

Προσωπική τακτική είναι να διδάσκω τις δομές επιλογής όπως αυτές παρουσιάζονται στο κεφάλαιο 8, δλδ όσα Αν τόσα τέλος_αν κλπ.

Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

EleniK

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 708
Απ: Διαφορά μεταξύ Εμφωλευμένων Επιλογών
« Απάντηση #9 στις: 09 Ιαν 2007, 01:36:08 μμ »
Επίσης προσοχή μην μπερδέψεις τα αλλιώς_αν,  όσα Αν τόσα τέλος_αν και όχι όσα αλλιώς_αν. Είναι ένα κοινό λάθος που κάνουν αρχικά οι μαθητές.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19