Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: Νίκος Αδαμόπουλος στις 20 Μαΐου 2011, 12:03:47 ΠΜ

Τίτλος: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: Νίκος Αδαμόπουλος στις 20 Μαΐου 2011, 12:03:47 ΠΜ
Άνοιξα ξεχωριστό θέμα με αυτόν τον τίτλο επειδή καλό είναι να υπάρχει...
Και αντέγραψα/μετακίνησα κάποια σχετικά μηνύματα...


Παράθεση από: papaluk στις 19 Μαΐου 2011, 08:53:23 ΜΜ
Αν και λίγο καθυστερημένα θεωρώ ότι η προτεινόμενη λύση στο τελευταίο θέμα έχει ένα προβληματάκι..
ΠΛ[Στοά] <-- Μήκος DIV 10, επειδή όμως πουθενά δεν αναφέρεται ότι το Μήκος είναι ακέραιος πιο σωστό θα ήταν
ΠΛ[Στοά] <-- Α_Μ( Μήκος / 10)

Παράθεση από: Stefevan στις 19 Μαΐου 2011, 09:03:56 ΜΜ
O διερμηνευτής δεν δέχεται το  <<μήκος div 10>> όταν το μήκος είναι πραγματικός, άρα αναγκαστικά με / και Α_Μ()

Παράθεση από: papaluk στις 19 Μαΐου 2011, 10:25:23 ΜΜ
Δεν είναι το θέμα ο διερμηνευτής μόνο... αλλά το γεγονός ότι οι τελεστές mod και div λειτουργούν μόνο με ακέραιες τιμές με βάση το σχολικό

Βάσει του σκεπτικού του papaluk, δεν φτάνει να βάλουμε την εντολή:

ΠΛ[Στοά] <-- Α_Μ( Μήκος / 10)

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

Στην προτεινόμενη λύση του θέματος το μήκος είναι δηλωμένο ακέραιο:

ΑΚΕΡΑΙΕΣ: Μήκος
...

ΠΛ[Στοά] <- Μήκος DIV 10

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

Η άσκηση αναφέρει απλώς ότι το πρόγραμμα πρέπει να... διαβάζει το μήκος της στοάς σε μέτρα, ελέγχοντας ώστε να είναι από 20 έως 500 μέτρα. Αποτελεί αυθαιρεσία αυτού που καλείται να λύσει το πρόβλημα να υποθέσει σιωπηλά ότι τα μέτρα αυτά μπορούν να δίνονται με ακρίβεια μόνο ακέραιων ψηφίων, αφού έτσι κι αλλιώς χρησιμεύουν μόνο στον υπολογισμό των λαμπτήρων, έχοντας έναν ανά 10 μέτρα; Και γενικότερα, επειδή σε ένα πρόβλημα μπορεί να μην έχουν καθοριστεί εξαντλητικά όλοι οι περιορισμοί και οι προδιαγραφές, αν σε μία λύση γίνονται τέτοιου είδους (σιωπηλές) υποθέσεις, τι στάση κρατάμε;

Θεωρώ ότι αυτός ο προβληματισμός είναι πολύ σημαντικός και η όποια απάντηση θα δίναμε θα έπρεπε ουσιαστικά να αποτελεί μέρος του διδακτικού συμβολαίου του μαθήματος της ΑΕΠΠ, όπως έχει αναφερθεί και για άλλες περιπτώσεις...
Τίτλος: Απ: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: kpde στις 20 Μαΐου 2011, 12:18:29 ΠΜ
Το μήκος είναι πραγματικό δεδομένο εκτός αν ανφέρεται αλλιώς στην εκφώνηση (για διευκόλυνση της λύσης)

Αν δεν υπάρχει τέτοια παραδοχή στην εκφώνηση, ο λύτης ΚΑΚΩΣ επέλεξε να το δηλώσει ακέραιο.

ΛΑΘΟΣ
Τίτλος: Απ: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: papaluk στις 20 Μαΐου 2011, 12:47:12 ΠΜ
Θεώρησα ότι είναι δεδομένο ότι το μήκος θα δηλωθεί ως πραγματικός... διαφορετικά για να παίξει το DIV θα έπρεπε στον έλεγχο εγκυρότητας να προσθέσουμε A_M( μήκος)= μήκος οπότε αναγκάζουμε το χρήστη να δώσει ακέραια τιμή ώστε να συνεχίσει ο κώδικας
άλλα νομίζω ότι όταν σκάβουν στοές δεν σταματάνε όταν το μήκος είναι ακέραιο.. εκτός και αν κάποιος έχει εμπειρία από σκάψιμο και έχει άλλη άποψη :P
Τίτλος: Απ: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: Νίκος Αδαμόπουλος στις 20 Μαΐου 2011, 01:09:37 ΠΜ
Εγώ πιστεύω ότι το μήκος το μετράς με την ακρίβεια που κάθε φορά θέλεις ή απαιτείται... Π.χ. βρήκα στο web ότι η περίμετρος της γης είναι 40.076.594 μέτρα. Προφανώς δεν είναι τόσο! Αποκλείεται να έτυχε να είναι ακέραια η τιμή αυτή. Θα μπορούσε να είναι: 40.076.594,1234567897864521378 μέτρα αν το όργανο μέτρησης ήταν πολύ ακριβές! Αν σε ένα πρόγραμμα ο χρήστης θα έδινε τις περιμέτρους των πλανητών, θα έπρεπε να πληκτρολογεί και τα δεκαδικά ψηφία; Εξαρτάται! Αν γνωρίζαμε πού θα χρησιμεύσουν τότε μπορεί να έπρεπε, μπορεί και όχι... Δεν νομίζω, λοιπόν, ότι μπορούμε να δώσουμε έτσι απλά μια απάντηση στο αρχικό ερώτημα...!

Πάντως και άσχετα με τα παραπάνω, αν τη μεταβλητή Μήκος την έχεις δηλώσει ως πραγματική, τότε νομίζω το DIV δεν θα έπαιζε καθόλου, ακόμα κι αν υπήρχε ο έλεγχος A_M( μήκος)= μήκος. Δεν θα ήταν συντακτικό λάθος; Δεν θα το χτυπούσε ο μεταγλωττιστής;
Τίτλος: Απ: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: kpde στις 20 Μαΐου 2011, 06:44:33 ΠΜ
Παράθεση από: Νίκος Αδαμόπουλος στις 20 Μαΐου 2011, 01:09:37 ΠΜ
Εγώ πιστεύω ότι το μήκος το μετράς με την ακρίβεια που κάθε φορά θέλεις ή απαιτείται...

Συμφωνώ και γω.  Σε αυτή την περίπτωση όμως, η εκφώνηση (και όχι ο λύτης) θα έπρεπεπ να κάνει τη σχετική παραδοχή, π.χ.: ..να θεωρήσετε πως το μήκος μετρείται με ακρίβεια μέτρου και δεν έχει δεκαδικά ψηφία.., οπότε ο  λύτης θα "νομιμοποιούταν" να το δηλώσει στους ακέραιους.

Παράθεση από: Νίκος Αδαμόπουλος στις 20 Μαΐου 2011, 01:09:37 ΠΜ
Πάντως και άσχετα με τα παραπάνω, αν τη μεταβλητή Μήκος την έχεις δηλώσει ως πραγματική, τότε νομίζω το DIV δεν θα έπαιζε καθόλου, ακόμα κι αν υπήρχε ο έλεγχος A_M( μήκος)= μήκος. Δεν θα ήταν συντακτικό λάθος; Δεν θα το χτυπούσε ο μεταγλωττιστής;

Σωστό και αυτό.  Όμως θα έπαιζε το Α_Μ(μήκος) DIV 10.  Βέβαια δε βλέπω το λόγο να δηλωθεί το μήκος στους πραγματικούς αν Η ΕΚΦΩΝΗΣΗ προσδιόριζε πως θα δίνεται με ακρ΄βεια μέτρου ΧΩΡΙΣ δεκαδικά ψηφία.

Παράθεση από: Νίκος Αδαμόπουλος στις 20 Μαΐου 2011, 01:09:37 ΠΜ
Δεν νομίζω, λοιπόν, ότι μπορούμε να δώσουμε έτσι απλά μια απάντηση στο αρχικό ερώτημα...!

Πιστεύω πώς ΕΙΝΑΙ ζητούμενο να μπορεί ο μαθητής να μπορεί ο μαθητής να αντιλαμβάνεται σωστά τους τύπους των δεδομένων.  Δεδομένα που παριστάνουν ποσότητες (βάρος, όγκος, μήκος, τιμή, ηλικία κ.λπ) είναι πραγματικές εκτός εαν η εκφώνηση (για δικούς της λόγους) ορίζει διαφορετικά.  Αντίθετα, δεδομένα όπως: έτος_γέννησης, αριθμός_παιδιών, όροφοι, θέσεις, μερίδες είναι ακέραιες.  Γενικά μπορούμε να πούμε πως ξεκινάμε με τη σκέψη: αριθμός => ΠΡΑΓΜΑΤΙΚΟΣ και συνεχίζουμε με τη σκέψη: αν αποκλείεται να έχει δεκαδικά => ΑΚΕΡΑΙΟΣ.  Το μήκος ΔΕΝ αποκλείεται να έχει δεκαδικά.
Τίτλος: Απ: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: Νίκος Αδαμόπουλος στις 20 Μαΐου 2011, 12:50:07 ΜΜ
Μου φαίνονται λίγο υπερβολικά αυτά! Με το ίδιο σκεπτικό αν μια άσκηση (η ιδέα προέρχεται από το περσινό διαγώνισμα του Στεκιού) έλεγε:

"... να διαβάζει το χρόνο που απομένει για την εκτόξευση σε δευτερόλεπτα, και να απεικονίζει τη διαδικασία της αντίστροφης μέτρησης ως εξής: για κάθε δευτερόλεπτο να εμφανίζει το χρόνο που απομένει σε μορφή ώρες-λεπτά-δευτερόλεπτα (Ω:Λ:Δ)  μέχρι το 0:0:0"

...πάλι για τα δευτερόλεπτα που θα διαβάζαμε θα βάζαμε πραγματικό τύπο;! Το ότι η άσκηση δεν αναφέρει ρητά όλους τους περιορισμούς σημαίνει ότι ο προγραμματιστής δεν μπορεί να κάνει μόνος του κάποιες παραδοχές;
Τίτλος: Απ: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: kpde στις 20 Μαΐου 2011, 01:27:28 ΜΜ
Υπό κανονικές συνθήκες ο προγραμματιστής κάνει παραδοχές μόνο μετά από συνεννόηση με τον πελάτη (μικρή αναφορά ίσως και στα ανοικτά - κλειστά προβλήματα που έχει αναφερθεί αλλού ο sdoukakis)

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

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

Αυτή είναι η γνώμη μου
Τίτλος: Απ: Επιλογή Ακέραιου ή Πραγματικού Τύπου
Αποστολή από: kpde στις 20 Μαΐου 2011, 01:42:52 ΜΜ
Να προσθέω πως, ακόμα και σε θέματα εξετάσεων στα οποία αναφέρονται μόνο ακέραιες σταθερές τιμές για πληροφορίες οι οποίες έχουν "πραγματικό χαρακτήρα" (π.χ. τιμή στο ξενοδοχείο του 2009) προτρέπω τους μαθητές μου να δηλώσουν τις αντίσρτοιχες μεταβλητές στις πραγματικές κάνοντας αναφορά ΚΑΙ στη διαδικασία συντήρησης του προγράμματός τους αφού κάποια από τα σταθερά (?) δεδομένα ενός προβλήματος συχνά αλλάζουν συν τω χρόνω.  Η λογική όμως βάση της οποίας επιλέγεται ο τύπος της μεταβλητής ΔΕΝ αλλάζει τόσο εύκολα