ερώτηση για τα div/mod

Ξεκίνησε από Πανάγος94, 31 Μαρ 2012, 08:39:57 ΜΜ

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

Πανάγος94

επιτρέπεται η έκφραση: α <- γ mod β ή α <- γ div β
με β,γ να είναι πραγματικοί αριθμοί???? στον διερμηνευτή είδα οτι δεν το δέχεται και προβληματίστηκα...

busy_bee

Τα div και mod ορίζονται ως το  πηλίκο και το υπόλοιπο  μόνο στο πεδίο των ακεραίων αριθμών. Δες την σελίδα 153 στο βιβλίο του μαθητή. Δεν μπορούν οι τελεστέοι να είναι πραγματικοί αριθμοί.
Με τους πραγματικούς αριθμούς χρησιμοποιείται η πραγματική διαίρεση " / ".

Πανάγος94

τότε όμως στα θέματα του ΟΕΦΕ 2011 Α5 την ερώτηση " Στην εντολή α ← β mod γ η μεταβλητή α μπορεί να είναι πραγματικού τύπου" γιατί την θεωρούν σωστή????

noname

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


petrosp13

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

maria.k.

ΠαράθεσηΗ μεταβλητή που είναι αριστερά του βέλους και η τιμή που της αποδίδεται δεν πρέπει να είναι ίδιου τύπου;

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



P.Tsiotakis

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

α <- 5 (όπου α πραγματική μεταβλητή)

βέβαια δε μπορούμε να δηλώνουμε πραγματικές μεταβλητές όλες τις αριθμητικές, διότι πχ ο δείκτης ενός πίνακα πρέπει απαραίτητα να είναι ακέραια έκφραση/μεταβλητή/τιμή!!!
όμοια οι μεταβλητές που εμπλέκονται σε μια πράξη div/mod

Laertis

Βιβλίο μαθητή σελ. 155 στο σχόλιο (προσοχή) :
Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι ίδιου τύπου

Η εξέταση γίνεται με βάση το βιβλίο οπότε δεν τίθεται ζήτημα.
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

sstergou

δηλαδή αυτό που λέει ο Παναγιώτης είναι λάθος;
π.χ.

Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ π1
ΜΕΤΑΒΛΗΤΕΣ
    ΠΡΑΓΜΑΤΙΚΕΣ: α
    ΑΚΕΡΑΙΕΣ: β,γ
ΑΡΧΗ
    α <- 5 ! λάθος;
    α <- 5.0 ! σωστό;
    α <- β + γ ! λάθος;
    α <- β + γ + 0.0 ! σωστό;


και τα δύο είναι σωστά, δεν γίνεται διαφορετικά!!

Laertis

Δεν πρόκειται να βγει άκρη έτσι ...
Άρα καταλήγουμε στο να γίνεται χρήση των ακεραίων μεταβλητών μόνο σε δείκτες πινάκων και σε πράξεις div και mod . Όλες οι άλλες πραγματικές και τελειώνουμε. Σωστά ;

Η σπατάλη μνήμης πάει περίπατο ή δεν το θεωρούμε χρήσιμο αφού είναι σωστή η δήλωση ;
Αφού το δεχόμαστε σωστό ας τα απλοποιήσουμε όλα.
Η ίδια λογική με τη βίαιη διακοπή της Για .... Και αυτή δουλεύει γιατί να μη το πάρουμε σωστό ;

Ο ορισμός της υπεραπλούστευσης για μένα .... Λυπάμαι αλλά διαφωνώ με τη λογική προσέγγισης.
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

evry

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

α) 1 + 2.0 + 3 + 6/2   
β) ΦΠΑ <- 0.18 * 100

Αφού δεν μπορούμε να εκχωρήσουμε ακέραια σε πραγματική τότε σίγουρα δεν μπορούμε να κάνουμε και πράξεις μεταξύ ακεραίων και πραγματικών.

ΥΓ. Στάθη μόλις τώρα είδα το μήνυμά σου. Μου φαίνεται το ίδιο λέμε
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Laertis

#11
Ωραία ... και που καταλήγουμε  με αυτή την ωραία συζήτηση; Σε μια ακόμη διαπίστωση ..
Σε αυτό που όλοι γνωρίζουμε απο τα μαθηματικά.
Ποιός διαφώνησε με αυτό που λέει ο Παναγιώτης και ο Στάθης ;
Ποιος διαφωνεί για το αν μια συνάρτηση μπορεί να εισάγει δεδομένα ;
Ποιος βαθμολογεί λάθος τη διακοπή της Για ; Γιατί ;
Το 32,0 είναι πραγματική ή ακέραια ;
Το να δηλώσεις πραγματική μια μεταβλητή που πέρνει ακέραιες τιμές γίνεται, αλλά ποιος ο λόγος ; Έτσι , γιατί γίνεται ...
Μπορώ να συνεχίσω με πολλά που γίνονται αλλά καλό είναι να μη γίνονται. Μόνο κουβέντα να γίνεται ...  ;)
Φτου κι απ' την αρχή ..
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

P.Tsiotakis

εγώ είπα το αναποδο Γιώργο
απλούστευση είναι η απόδοση όλων των αριθμητικών μεταβλητών ως πραγματικές

Laertis

Kι εγώ αυτό ανέφερα Παναγιώτη, θεωρώ (υπερ)απλούστευση να αποδίδονται όλες οι τιμές ως πραγματικές.
Αλλά απλά δεν το θεωρώ σωστή προσέγγιση εφόσον υπάρχει ανάγκη  διαφοροποίησης στον προγραμματισμό ενώ στα μαθηματικά δεν υπάρχει.
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

petrosp13

1. ΑΚΕΡΑΙΕΣ: Α,Β

Γ <-- Α + Β

Το Γ δηλώνεται ως ακέραιο γιατί μόνο τέτοιο μπορεί να είναι (εκτός αν με άλλη εντολή μπορεί να αλλάξει)

2. ΑΚΕΡΑΙΕΣ: Α
ΠΡΑΓΜΑΤΙΚΕΣ: Β

Γ <-- Α + Β

Το Γ δηλώνεται ως πραγματικό λόγω του Β

3. ΠΡΑΓΜΑΤΙΚΕΣ: Α,Β

Γ <-- Α + Β

Αυτονόητα το Γ είναι πραγματικό

Τα παραδείγματα που φέρνετε μιλάνε για πράξεις πραγματικών και ακεραίων μεταξύ τους


Γ <-- Α mod Β
Εδώ μιλάμε για καραμπινάτη πράξη ακεραίων μεταξύ τους, οπότε προφανώς και η μεταβλητή Γ θα δηλωθεί ως ακέραια

Υποτίθεται πώς όταν παραδίδουμε στους μαθητές το κομμάτι με τους τύπους μεταβλητών, αναφέρουμε ότι οι ακέραιες μεταβλητές υπάρχουν για οικονομία στην μνήμη και θα πρέπει να χρησιμοποιούνται στο μάθημα μας όταν υπάρχουν κραυγαλέες περιπτώσεις ακέραιας τιμής (πλήθος μαθητών, αριθμός επιβατών κτλ.), δηλαδή όταν γνωρίζουμε ΣΙΓΟΥΡΑ ότι η τιμή είναι ακέραια
Αν εδώ θεωρήσουμε ότι το Γ μπορεί να θεωρηθεί ως πραγματικό, ανοίγουμε (και πάλι) τους ασκούς του Αιόλου...
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής