Απορία στην ΕΠΙΛΕΞΕ

Ξεκίνησε από George Eco, 20 Ιουν 2021, 07:53:56 ΜΜ

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

George Eco

Σωστά Άλκη!

    ΠΕΡΙΠΤΩΣΗ <= 1, >= 100

Αυτό ήρθε κατά νου και σ΄εμένα. Αλλά να, πώς να το πω τώρα κομψά; Όταν διδάσκω τους κανόνες σωστής σύνταξης σύνθετων λογικών εκφράσεων κι έρχεται μετά μια ΕΠΙΛΕΞΕ και κάνει ζογκλερικά... περισσότερο κακό παρά καλό κάνει σε μερικά παιδιά.

alkisg

#1
Παράθεση από: George Eco στις 20 Ιουν 2021, 06:28:55 ΜΜ
Επίσης, με ρωτά μαθήτρια:
Αν έχουμε ακέραιο στο κλειστό 1 ως εκατό [1,100] λέμε ΠΕΡΙΠΤΩΣΗ 1..100.
Αν θέλουμε πραγματικό αριθμό, μεταξύ ανοικτό 1 ως εκατό ανοικτό (1,100) πώς θα το γράψω σε ΕΠΙΛΕΞΕ;

Τέταρτη κουκίδα στο https://alkisg.mysch.gr/ΓΛΩΣΣΑ/ΕΠΙΛΕΞΕ/

Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ ΑνοικτόΔιάστημα
ΑΡΧΗ
  ΕΠΙΛΕΞΕ 1.1
    ΠΕΡΙΠΤΩΣΗ <= 1, >= 100
      ΓΡΑΨΕ "Ο αριθμός ανήκει στο (-∞..1] ∪ [100..∞)"
    ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
      ΓΡΑΨΕ "Ο αριθμός ανήκει στο (1..100)"
  ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Παράθεση από: George Eco στις 20 Ιουν 2021, 07:53:56 ΜΜ
Σωστά Άλκη!

    ΠΕΡΙΠΤΩΣΗ <= 1, >= 100

Αυτό ήρθε κατά νου και σ΄εμένα. Αλλά να, πώς να το πω τώρα κομψά; Όταν διδάσκω τους κανόνες σωστής σύνταξης σύνθετων λογικών εκφράσεων κι έρχεται μετά μια ΕΠΙΛΕΞΕ και κάνει ζογκλερικά... περισσότερο κακό παρά καλό κάνει σε μερικά παιδιά.

Αυτό μπορεί να σπάσει και σε δύο περιπτώσεις, δεν είναι υποχρεωτικό να μπει σε μία.

ΠΕΡΙΠΤΩΣΗ <= 1
ΠΕΡΙΠΤΩΣΗ >= 100
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ  ! δηλαδή (1..100)

petrosp13

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


Γιαννούλης Γιώργος

Παράθεση από: petrosp13 στις 20 Ιουν 2021, 11:25:05 ΜΜ
Η επίλεξε μπορεί να έχει σύνθετες λογικές εκφράσεις;;;

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

Π.χ.
ΕΠΙΛΕΞΕ χ>0 ΚΑΙ ψ>0
ΠΕΡΙΠΤΩΣΗ ΑΛΗΘΗΣ
  ΓΡΑΨΕ 'ΚΑΙ ΟΙ ΔΥΟ ΘΕΤΙΚΟΙ'
ΠΕΙΠΤΩΣΗ ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'ΟΧΙ ΚΑΙ ΟΙ ΔΥΟ ΘΕΤΙΚΟΙ'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ

alkisg

Εεε αν λέμε για ΕΠΙΛΕΞΕ με τελεστή λογικού τύπου, τότε προφανώς επιτρέπονται οποιεσδήποτε λογικές τιμές στις εντολές ΠΕΡΙΠΤΩΣΗ, συμπεριλαμβανομένων και των σύνθετων.
Το παρακάτω πρόγραμμα είναι συντακτικά σωστό (αν και δεν βγάζει νόημα, είναι μόνο για επίδειξη του συντακτικού):

Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ Δοκιμή
ΑΡΧΗ
  ΕΠΙΛΕΞΕ 1 > 0 ΚΑΙ 2 > 1
    ΠΕΡΙΠΤΩΣΗ 1 > 0 Η 2 > 1
      ΓΡΑΨΕ 'Ισχύει'
  ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

oldBugman

Ερώτηση άσχετου:
Με δεδομένο ότι στις περιπτώσεις μπορούμε να βάζουμε συνθήκες πχ:
ΠΕΡΙΠΤΩΣΗ > 20
Αν είχαμε τύπο στην Επίλεξε Λογικό τότε δεν θα μπορούσαμε να βάλουμε συνθήκες αφού τα >  <  δεν ισχύουν στους λογικούς (στη ΓΛΩΣΣΑ). Πχ το ΑΛΗΘΗΣ>ΨΕΥΔΗΣ δεν ισχύει. Εκτός αν ισχύει, οπότε ενημερώστε με!

Γιαννούλης Γιώργος

Παράθεση από: alkisg στις 27 Ιουν 2021, 03:59:24 ΜΜ
Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ Δοκιμή
ΑΡΧΗ
  ΕΠΙΛΕΞΕ 1 > 0 ΚΑΙ 2 > 1
    ΠΕΡΙΠΤΩΣΗ 1 > 0 Η 2 > 1
      ΓΡΑΨΕ 'Ισχύει'
  ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Έχω την εντύπωση Άλκη ότι ο παραπάνω κώδικας είναι σωστός με βάση το Διερμηνευτή της Γλώσσας άλλα όχι με βάση το βιβλίο. 

Στο βιβλίο αναφέρει ότι στο ΕΠΙΛΕΞΕ δεξιά μπορεί να μπει μια έκφραση (άρα τα πάντα), αλλά στην ΠΕΡΙΠΤΩΣΗ αναφέρει χαρακτηριστικά 3 πράγματα που μπορούν να μπουν :
<λίστα_τιμών_Ν>:
οι τιμές που μπορεί να πάρει μια έκφραση. Οι τιμές αυτές μπορεί να είναι διακριτές τιμές,
περιοχή τιμών από...έως ή να υπακούν σε μια συνθήκη.

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

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

Γιαννούλης Γιώργος

Παράθεση από: oldBugman στις 27 Ιουν 2021, 05:30:18 ΜΜ
Ερώτηση άσχετου:
Με δεδομένο ότι στις περιπτώσεις μπορούμε να βάζουμε συνθήκες πχ:
ΠΕΡΙΠΤΩΣΗ > 20
Αν είχαμε τύπο στην Επίλεξε Λογικό τότε δεν θα μπορούσαμε να βάλουμε συνθήκες αφού τα >  <  δεν ισχύουν στους λογικούς (στη ΓΛΩΣΣΑ). Πχ το ΑΛΗΘΗΣ>ΨΕΥΔΗΣ δεν ισχύει. Εκτός αν ισχύει, οπότε ενημερώστε με!
θα μπορούσαμε όμως να βάλουμε = (αν και θα ήταν σαν να μην το βάλαμε) ή <>.

alkisg

Παράθεση από: Γιαννούλης Γιώργος στις 27 Ιουν 2021, 05:36:04 ΜΜ
<λίστα_τιμών_Ν>:
οι τιμές που μπορεί να πάρει μια έκφραση. Οι τιμές αυτές μπορεί να είναι διακριτές τιμές,
περιοχή τιμών από...έως ή να υπακούν σε μια συνθήκη.

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

Στα πλαίσια του βιβλίου, τιμή σημαίνει έκφραση. Σελίδα 131 βιβλίου μαθητή: `Όταν μια τιμή προκύπτει από υπολογισμό, τότε αναφερόμαστε σε εκφράσεις (expressions)`.

Π.χ. ο ορισμός της ΓΙΑ στη σελίδα 150 του βιβλίου είναι: `ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ ΒΗΜΑ τιμή3`. Αν εκεί θεωρήσουμε ότι το "τιμή" ΔΕΝ σημαίνει "έκφραση", τότε βγαίνουν λάθος οι μισές ασκήσεις του βιβλίου και των πανελλαδικών που έχουν εκφράσεις στη ΓΙΑ.

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

Γιαννούλης Γιώργος

Απλά Άλκη στο συγκεκριμένο σημείο κάνει επιπλέον προσπάθεια να αποτρέψει πράξεις στις Περιπτώσεις. Αλλιώς γιατί να γραφεί : " Οι τιμές αυτές μπορεί να είναι διακριτές τιμές,". Θα ήταν σαν να έλεγε οι τιμές είναι τιμές.

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

alkisg

> μία ή περισσότερες διακριτές τιμές, περιοχή τιμών από - έως ή (τιμές που) να υπακούουν σε μια συνθήκη

Διακριτές τιμές: 1, 3+8, Τ_Ρ(23)
Περιοχή τιμών: 1..3+8
(τιμές που υπακούουν σε) συνθήκη: >= 3+8

Το "διακριτές" δεν είναι για να αποτρέψει τις πράξεις. Είναι σε αντιπαράθεση με τις άλλες 2 περιπτώσεις, τις περιοχές και τις συνθήκες.

Αλλιώς θα έπρεπε να λέει και "διακριτές περιοχές τιμών" και "διακριτές συνθήκες" για να αποτρέψει τις πράξεις και στις άλλες δύο περιπτώσεις.

Κανένας

Τι τυπώνει το παρακάτω πρόγραμμα;

ΠΡΟΓΡΑΜΜΑ ΑΠΡΟΣΔΙΟΡΙΣΤΟ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ:Χ
ΑΡΧΗ
Χ<--1.5
ΕΠΙΛΕΞΕ Χ
ΠΕΡΙΠΤΩΣΗ 1..10
  ΓΡΑΨΕ 'ΠΡΙΤΣ'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'ΟΚ'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Νικηφόρος Μανδηλαράς
ΓΕΛ Νάξου "Μανώλης Γλέζος"
https://blogs.sch.gr/nobody/

alkisg

Γιατί είναι απροσδιόριστο; Η περιοχή τιμών `από .. έως` δεν ορίζεται κάπου ως ακέραια, σωστά;
Στον Διερμηνευτή πάντως, τυπώνει ΠΡΙΤΣ... :)

Γιαννούλης Γιώργος

Παράθεση από: alkisg στις 27 Ιουν 2021, 07:58:19 ΜΜ
> μία ή περισσότερες διακριτές τιμές, περιοχή τιμών από - έως ή (τιμές που) να υπακούουν σε μια συνθήκη

Διακριτές τιμές: 1, 3+8, Τ_Ρ(23)
Περιοχή τιμών: 1..3+8
(τιμές που υπακούουν σε) συνθήκη: >= 3+8

Το "διακριτές" δεν είναι για να αποτρέψει τις πράξεις. Είναι σε αντιπαράθεση με τις άλλες 2 περιπτώσεις, τις περιοχές και τις συνθήκες.

Αλλιώς θα έπρεπε να λέει και "διακριτές περιοχές τιμών" και "διακριτές συνθήκες" για να αποτρέψει τις πράξεις και στις άλλες δύο περιπτώσεις.

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

Κανένας

Παράθεση από: alkisg στις 25 Οκτ 2021, 06:42:04 ΜΜ
Γιατί είναι απροσδιόριστο; Η περιοχή τιμών `από .. έως` δεν ορίζεται κάπου ως ακέραια, σωστά;
Στον Διερμηνευτή πάντως, τυπώνει ΠΡΙΤΣ... :)
Μετά από αρκετά χρόνια κολύμπι στην ασάφεια, στις οδηγίες διδασκαλίας 2020-2021 στη σελίδα 7-8, μαθαίνουμε πώς να γράφουμε τους τύπους υποπεριοχής (Από..έως) στην εντολή ΕΠΙΛΕΞΕ. (δηλαδή τις δύο τελείες (..))
Παραθέτω αυτούσιο το παράδειγμα:
Διευκρινίζεται ότι μια έγκυρη σύνταξη της εντολής ΕΠΙΛΕΞΕ στη ΓΛΩΣΣΑ είναι και η ακόλουθη:
Επίλεξε τιμή
Περίπτωση 0..100 ! 0 <= τιμή <= 100
<εντολές1>
Περίπτωση 101..1000 ! 101 <= τιμή <= 1000
<εντολές2>
Περίπτωση Αλλιώς ! 1000 < τιμή
<εντολές3>
Τέλος__επιλογών
όπου <τιμή>: ακέραια μεταβλητή. 


Όλα καλά, επιτέλους πήραμε απάντηση.
Η τελευταία γραμμή όμως μας ξαναπετάει στη θάλασσα της αμφιβολίας. Γιατί σώνει και καλά ακέραια η μεταβλητή <τιμή>;

Υπόθεση-ερμηνεία:
Μήπως γίνεται μια προσπάθεια να συμμαζέψουμε τα ασυμμάζευτα σχετικά με την ΕΠΙΛΕΞΕ;
Μήπως προσπαθούμε να ευθυγραμμιστούμε με σχεδόν όλες τις Γλώσσες προγραμματισμού που απαιτούν βαθμωτούς τύπους (scalar types) στις αντίστοιχες εντολές τους; (case της Pascal, switch της C και Java κλπ). (Δηλαδή απλά δεν δουλεύουν με πραγματικές τιμές)
Βέβαια το πράγμα δεν συμμαζεύεται αν έχεις αυτό το απίθανο: π.χ. ΠΕΡΙΠΤΩΣΗ  > 100 
Ο ρόλος της εντολής σ' όλες τις γλώσσες είναι βέβαια άλλος, να συμπληρώνει τις εντολές if-then-else κυρίως για τις περιπτώσεις ελέγχου πολλών διαφορετικών τιμών. Γι' αυτό βέβαια ελέγχουν μόνο ισότητες.

Στους μαθητές μου συνιστώ εφ' όσον δεν τους επιβάλλεται, να μην χρησιμοποιούν την EΠΙΛΕΞΕ με πραγματικούς αριθμούς και να ελέγχουν μόνο ισότητες (δηλαδή όχι συγκριτικούς τελεστές στις ΠΕΡΙΠΤΩΣΕΙΣ)

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

Υ.Γ.
Κάποιοι συνάδελφοι στο παρελθόν κάτι ήξεραν και την πέταξαν εκτός ύλης. Με το μπλέ βιβλίο δόθηκε η ευκαιρία να διορθωθεί αλλά είχαμε Το δις εξαμαρτείν.
Νικηφόρος Μανδηλαράς
ΓΕΛ Νάξου "Μανώλης Γλέζος"
https://blogs.sch.gr/nobody/