ερώτηση για τα 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 Β
Εδώ μιλάμε για καραμπινάτη πράξη ακεραίων μεταξύ τους, οπότε προφανώς και η μεταβλητή Γ θα δηλωθεί ως ακέραια

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

evry

ένα λεπτάκι
δηλαδή η παρακάτω έκφραση είναι σωστή ή λάθος?

x <- α div 5 + 0.1

δηλαδή οι πράξεις μεταξύ ακεραίων και πραγματικών απαγορεύονται ?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

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

όπως επίσης τι γίνεται με αυτές τις εκφράσεις; Είναι λάθος ή σωστές;

y ← 9 mod 10 / Τ_Ρ(81) - 1

y ← Α_Τ(2 - 12 div 2 / 2 / 3)

y ← Τ_Ρ(400) - 2) div 10

y ← Α_Τ(4 - 8) div 2 mod (6/3)

evry

#17
νομίζω ότι η 3η και 4η είναι λάθος ούτως ή άλλως
στην 3η εκτός της παρένθεσης που λείπει έχει πραγματικό με div
και στην τελευταία πάλι έχει πραγματικό με mod.

Βασικά δεν συζητάμε αν στη θέση ακεραίου μπορείς να βάλεις πραγματικό. Αυτό εννοείται πως δε γίνεται για προφανείς λόγους.
Λέμε για το αντίθετο όπου δεν υπάρχει απώλεια πληροφορίας.

Παράθεση από: sdoukakis στις 03 Απρ 2012, 02:56:40 ΜΜ
όπως επίσης τι γίνεται με αυτές τις εκφράσεις; Είναι λάθος ή σωστές;

y ← 9 mod 10 / Τ_Ρ(81) - 1

y ← Α_Τ(2 - 12 div 2 / 2 / 3)

y ← Τ_Ρ(400) - 2) div 10

y ← Α_Τ(4 - 8) div 2 mod (6/3)

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

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

Ας ξαναδούμε λίγο πιο προσεκτικά τις δύο εκφράσεις:

y ← (Τ_Ρ(400) - 2) div 10

y ← Α_Τ(4 - 8) div 2 mod (6/3)


από που προκύπτει ότι είναι λάθος σε επίπεδο αλγοριθμικής και μαθηματικών;

Σε πρόσφατη εργασία που δημοσίευσα σε συνέδριο της ΠΕΚΑΠ (http://sdoukakis.files.wordpress.com/2011/04/sd_pekap2011.pdf) υποστήριξα ότι:

"Η ψευδογλώσσα δεν κάνει διάκριση μεταξύ ακέραιων και πραγματικών. Αντίθετα, η χρήση της ΓΛΩΣΣΑΣ περιορίζει την ανάπτυξη του αλγόριθμου, αφού ο μαθητής/τρια θα πρέπει να ασχοληθεί εκτός των άλλων με τα χαρακτηριστικά και τις δυνατότητες της ΓΛΩΣΣΑΣ. Σε αλγοριθμικό επίπεδο, η έκφραση (Τ_Ρ(400) - 2) έχει την τιμή 18, ενώ σε επίπεδο ΓΛΩΣΣΑΣ, η τιμή της έκφρασης (Τ_Ρ(400) - 2) έχει την τιμή 18.0 (η συνάρτηση Τ_Ρ επιστρέφει πραγματική τιμή). Έτσι, σε επίπεδο ΓΛΩΣΣΑΣ είναι αμφισβητούμενη η εντολή: y ← (Τ_Ρ(400) - 2) div 10, με πιθανότερο αποτέλεσμα να μην είναι δυνατή η πράξη div, αφού επιχειρείται να εκτελεστεί μεταξύ πραγματικού και ακεραίου."

Δουκάκης, Σ. (2011). Πανελλαδικές Εξετάσεις στο Μάθημα Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον, Πρακτικά 5ου Πανελληνίου Συνεδρίου Καθηγητών Πληροφορικής Δευτεροβάθμιας Εκπαίδευσης με θέμα: «Η Πληροφορική στην Πρωτοβάθμια και Δευτεροβάθμια Εκπαίδευση – Ο ρόλος του καθηγητή Πληροφορικής στο νέο σχολείο», 1-3 Απριλίου 2011, Ιωάννινα, σελ. 190-197.

evry

Δηλαδή μπορούμε να χρησιμοποιούμε πραγματικούς αριθμούς με τους τελεστές div και mod?

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

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

ok.

Η πράξη 6/3 πόσο κάνει;

evry

2.0

αλλά το πρόβλημα δεν είναι εκεί. Το πρόβλημα είναι στους τελεστές div,mod. Στη σελίδα 46 του βιβλίου που αναφέρει όλες τις εντολές της ψευδογλώσσας
στους τελεστές δεν έχει τα div/mod. γιατί άραγε? Φυσικά τα χρησιμοποιεί στον πολλαπλασιασμό αλά ρωσικά.
Τα div/mod είναι ουσιαστικά τελεστές της ΓΛΩΣΣΑΣ και όχι της ψευδογλώσσας. (με βάση το βιβλίο πάντα)
Αν θέλεις να τα χρησιμοποιήσεις στην ψευδογλώσσα θα πρέπει να δεχτείς και τους περιορισμούς που φέρνουν μαζί τους, ότι δηλαδή οι τελεστέοι πρέπει να είναι ακέραιοι
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Νίκος Αδαμόπουλος

Χωρίς να είμαι σίγουρος, έχω την εντύπωση ότι στη νέα έκδοση του βιβλίου στη σελ. 46 αναφέρει και τους div/mod ...

Αντίθετα, στον αλγόριθμο αλά ρωσικά, στην παλιότερη έκδοση του βιβλίου δεν είχε div/mod... αλλά το ακέραιο μέρος:  [ ]

evry

#23
Νίκο έχεις απόλυτο δίκιο, έχω την παλιά έκδοση. Λογικά το έβαλαν εκεί όταν άλλαξαν και τον πολλαπλασιασμό αλά ρωσικά. Μάλλον έχει σχέση.
Ωστόσο στην παλιά έκδοση του βιβλίου στον αλά ρωσικά το είχε το mod. Απλά στην θέση του div είχε το ακέραιο μέρος. Δεν ξέρω γιατί αλλά το mod το είχε σίγουρα.
Πάντως και πάλι αυτό δεν αλλάζει τίποτα. Τα div/mod από μόνα τους κουβαλάνε τον περιορισμό των ακέραιων τελεστέων αφού αναφέρονται σε ευκλείδεια διαίρεση.

Παράθεση από: Νίκος Αδαμόπουλος στις 04 Απρ 2012, 01:15:13 ΠΜ
Χωρίς να είμαι σίγουρος, έχω την εντύπωση ότι στη νέα έκδοση του βιβλίου στη σελ. 46 αναφέρει και τους div/mod ...

Αντίθετα, στον αλγόριθμο αλά ρωσικά, στην παλιότερη έκδοση του βιβλίου δεν είχε div/mod... αλλά το ακέραιο μέρος:  [ ]
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

maria.k.

Παράθεσηένα λεπτάκι
δηλαδή η παρακάτω έκφραση είναι σωστή ή λάθος?

x <- α div 5 + 0.1

δηλαδή οι πράξεις μεταξύ ακεραίων και πραγματικών απαγορεύονται ?

Εννοείται πως δεν απαγορεύονται, αφού το αποτέλεσμα ολόκληρης της έκφρασης που υπάρχει στο αριστερό μέλος είναι πραγματικός αριθμός (με δεδομένο ότι το α είναι ακεραιος), άρα και η μεταβλητή χ είναι πραγματική.
Το θέμα είναι το εξής:
Η εντολή α <- 1 με το α δηλωμένο ως πραγματικό είναι σωστή, ενώ
η εντολή α<- 1.0 με το α δηλωμένο ως ακέραιο είναι λανθασμένη.
Δηλαδή η γλώσσα μπορεί να μετατρέψει έναν ακέραιο σε πραγματικό ενώ το αντίθετο όχι γιατι χάνει δεδομένα.
Όλο αυτό όμως πώς συνάδει με το "σε μια εντολή εκχώρησης η έκφραση και η μεταβλητή πρέπει να είναι του ίδου τύπου"?
Πως θα το εξηγήσουμε στους μαθητές?
Δε συμπαθούν που δε συμπαθούν τη δήλωση μεταβλητών, μετά θα τις δηλώνουν όλες πραγματικές εκτός αν κάνουν πράξεις με το mod και το div...

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

Η έκφραση:
y ← Α_Τ(4 - 8) div 2 mod (6/3)


περιέχει την πράξη 6/3. Το αποτέλεσμα της πράξης είναι 2 ή 2,0 ή 2,00 ή 2,000 και ας βάλει ο καθένας όσα μηδενικά ψηφία επιθυμεί. Αυτά στο μυαλό μας.

Στα μαθηματικά η διαίρεση δύο ακεραίων π.χ. η διαίρεση 6/3 έχει πηλίκο 2 και υπόλοιπο μηδέν. Είναι δλδ τέλεια διαίρεση.

Συνεπώς, για τα μαθηματικά (βλέπε http://digitalschool.minedu.gov.gr/modules/ebook/show.php/DSGL-B100/133/971,3492/ ή (βλέπε http://en.wikipedia.org/wiki/Division_%28mathematics%29) η διαίρεση 6/2 έχει πηλίκο 2.

Άρα, αφού είναι ακέραιο το πηλίκο της διαίρεσης, μπορεί να γίνει στη συνέχεια η πράξη με mod και div.

Συνεπώς η έκφραση
y ← Α_Τ(4 - 8) div 2 mod (6/3)

σε επίπεδο αλγοριθμικής έχει αποτέλεσμα μηδέν (0).

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

Σε επίπεδο ΓΛΩΣΣΑΣ είναι αμφισβητούμενη αν είναι σωστή ή έκφραση. Ωστόσο δεν με απασχολεί, γιατί μου δίνει την δυνατότητα να αναφερθώ στους περιορισμούς που έχουν οι ίδιες οι γλώσσες προγραμματισμού (πίνακες, πράξεις με div και mod, παραγοντικό κ.α. περισσότερα στο άρθρο http://sdoukakis.files.wordpress.com/2011/04/sd_pekap2011.pdf).

Συνάδελφοι το έχουμε ξαναπεί. Οι περιορισμοί της ΓΛΩΣΣΑΣ δεν μπορεί να οδηγούν σε περιορισμό την σκέψη.

Παράθεση από: evry στις 04 Απρ 2012, 12:52:20 ΠΜ
2.0

αλλά το πρόβλημα δεν είναι εκεί. Το πρόβλημα είναι στους τελεστές div,mod. Στη σελίδα 46 του βιβλίου που αναφέρει όλες τις εντολές της ψευδογλώσσας
στους τελεστές δεν έχει τα div/mod. γιατί άραγε? Φυσικά τα χρησιμοποιεί στον πολλαπλασιασμό αλά ρωσικά.
Τα div/mod είναι ουσιαστικά τελεστές της ΓΛΩΣΣΑΣ και όχι της ψευδογλώσσας. (με βάση το βιβλίο πάντα)
Αν θέλεις να τα χρησιμοποιήσεις στην ψευδογλώσσα θα πρέπει να δεχτείς και τους περιορισμούς που φέρνουν μαζί τους, ότι δηλαδή οι τελεστέοι πρέπει να είναι ακέραιοι

Καρκαμάνης Γεώργιος

Διαβάζοντας από την αρχή όλο το θέμα, πραγματικά έχω μπερδευτεί:
Ποίο είναι το πρόβλημα που τίθεται;

α) αν μπορούμε να πραγματοποιήσουμε πράξεις μεταξύ ακεραίων και πραγματικών αριθμών;
β) αν σε μία πραγματική μεταβλητή μπορούμε να τοποθετήσουμε το αποτέλεσμα μιας πράξης που παράγει ακέραιο αποτέλεσμα;

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

Η μεταβλητή και η έκφραση πρέπει να είναι ιδίου τύπου στην εντολή εκχωρησης.




alkisg

Παράθεση από: sdoukakis στις 04 Απρ 2012, 10:55:33 ΠΜ
Συνεπώς, για τα μαθηματικά (βλέπε http://digitalschool.minedu.gov.gr/modules/ebook/show.php/DSGL-B100/133/971,3492/ ή (βλέπε http://en.wikipedia.org/wiki/Division_%28mathematics%29) η διαίρεση 6/3 έχει πηλίκο 2.

Άρα, αφού είναι ακέραιο το πηλίκο της διαίρεσης, μπορεί να γίνει στη συνέχεια η πράξη με mod και div.

Το δεύτερο link που παράθεσες δεν συμφωνεί με αυτά που λες.
Αναφέρει ότι η διαίρεση μεταξύ ακεραίων μπορεί να οριστεί με τέσσερις τρόπους.
Εσύ ουσιαστικά λες ότι η ψευδογλώσσα υλοποιεί την περίπτωση 1 (partial function), ενώ ο Διερμηνευτής υλοποιεί την περίπτωση 2 (decimal fraction), η οποία "is the approach usually taken in mathematics."

evry

Παράθεση από: sdoukakis στις 04 Απρ 2012, 10:55:33 ΠΜ
Η έκφραση:
y ← Α_Τ(4 - 8) div 2 mod (6/3)


περιέχει την πράξη 6/3. Το αποτέλεσμα της πράξης είναι 2 ή 2,0 ή 2,00 ή 2,000 και ας βάλει ο καθένας όσα μηδενικά ψηφία επιθυμεί.
Το αποτέλεσμα της πράξης στην ΓΛΩΣΣΑ είναι 2.0 και αυτό γίνεται γιατί πρέπει σε compile-time να αποφασίσει αυτή η έκφραση τι τύπου είναι.
Σύμφωνα με το δικό σου σκεπτικό η έκφραση α/β είναι ακέραια αν η διαίρεση είναι τέλεια και πραγματική αν δεν είναι.

Δηλαδή σύμφωνα με το δικό σου σκεπτικό οι παρακάτω εντολές

Διάβασε α,β
υ <- α/β
Εμφάνισε υ

για α=6 και β=3 θα εμφανίσουν 2 (ακέραια τιμή)
ενώ για α=3 και β =2 θα εμφανίσουν 1.5 (πραγματική)

Αλήθεια τι τύπου είναι η μεταβλητή, ακέραια ή πραγματική? ή μήπως αλλάζει τύπο ανάλογα με την εκτέλεση?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

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

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

δεν ξέρω αν συμφωνείς με το παραπάνω σκεπτικό ή διαφωνείς

Παράθεση από: Καρκαμάνης Γεώργιος στις 04 Απρ 2012, 11:21:24 ΠΜ
Διαβάζοντας από την αρχή όλο το θέμα, πραγματικά έχω μπερδευτεί:
Ποίο είναι το πρόβλημα που τίθεται;
α) αν μπορούμε να πραγματοποιήσουμε πράξεις μεταξύ ακεραίων και πραγματικών αριθμών;
β) αν σε μία πραγματική μεταβλητή μπορούμε να τοποθετήσουμε το αποτέλεσμα μιας πράξης που παράγει ακέραιο αποτέλεσμα;
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

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

Συνάδελφοι,

δεν με απασχολούν πρώτιστα οι γλώσσες προγραμματσιμού στο επίπεδο του μαθήματος. Το αντίθετο! Με τις γλώσσες (Διερμηνευτής του Άλκη ή ψευδογλώσσα του Στάθη) αναδεικνύονται οι διαφορές στο σχεδιασμό και στην υλοποίηση μιας τεχνητής γλώσσας και οι περιορισμοί που έχουν, κάτι που πιθανώς να μην αφορά τον μαθητή σε αυτό το στάδιο.

Θα επικεντρωθώ στο ερώτημα της διαίρεσης ακεραίων όταν το αποτέλεσμα είναι ακέραιο, το οποίο προσδιορίζεται σαφώς από τα μαθηματικά του Λυκείου αλλά και από την wikipedia στο σημείο που αναφέρθηκε ο Άλκης με ειδική μνεία. Πόσο κάνει 6/3; Αυτό είναι κομβικό σημείο κατά την γνώμη μου.

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

maria.k.

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

Το πρόβλημα όμως αυτό, το συναντάμε και στη ΓΛΩΣΣΑ που ως "γλώσσα προγραμματισμού" περιλαμβάνει δηλώσεις μεταβλητών...

P.Tsiotakis

κατά τη γνώμη μου το 6/3 είναι το ίδιο με το α/β
δηλαδή κοιτώ το σύμβολο της διαίρεσης και αγνοώ τους εμπλεκόμενους στην πράξη
και βέβαια είναι πραγματική η έκφραση

evry

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

  3.6 div 1.2

Παράθεση από: sdoukakis στις 04 Απρ 2012, 11:40:07 ΠΜ
Υπενθυμίζω ότι στην ψευδογλώσσα δεν έχω δηλώσεις μεταβλητών και διαχωρισμό ακεραίων και πραγματικών, αφού δεν έχουμε θέμα μνήμης μιας και δεν υπάρχει υπολογιστής...

Με αυτά θέλω να πω ότι η ψευδογλώσσα δεν είναι κάτι αφηρημένο στο οποίο μπορούμε να γράφουμε ότι θέλουμε χωρίς κανέναν περιορισμό. Για παράδειγμα απαγορεύουμε στους μαθητές την αλλαγή του μετρητή της Για μέσα στην επανάληψη στην ψευδογλώσσα. Γιατί? αφού είναι ψευδογλώσσα. Εκεί δεν περιορίζουμε την σκέψη των μαθητών?
Άρα έχει κάποιους περιορισμούς, άρα είναι σχεδιασμένη για κάποιο υπολογιστικό μοντέλο το οποίο την εκτελεί.

Ουσιαστικά η ψευδογλώσσα είναι μια γλώσσα προγραμματισμού με χαλαρή σύνταξη έτσι ώστε να επικεντρωνόμαστε στον αλγόριθμο και όχι σε τεχνικές λεπτομέρειες όπως είναι η σύνταξη. Αυτό όμως δε σημαίνει ότι μπορούμε να φτάνουμε στο άλλο άκρο.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Gnirut

Παράθεση από: evry στις 04 Απρ 2012, 01:17:38 ΜΜ
οι αλγόριθμοι που γράφουμε σε ψευδογλώσσα δεν έχουν σαν στόχο να εκτελεστούν από υπολογιστή??? από τι εκτελούνται?
επίσης αφού δεν έχουμε δηλώσεις μεταβλητών γιατί έχουμε τύπους αλφαριθμητικούς και λογικούς? εκεί γιατί έχουμε διαχωρισμό?
τέλος με βάση το σκεπτικό αυτό η παρακάτω έκφραση στην ψευδογλώσσα είναι σωστή ή λάθος?

  3.6 div 1.2

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

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

βασικά το πρόβλημα είναι το ότι ούτε η ψευδογλώσσα και το σπουδαιότερο ούτε η ΓΛΩΣΣΑ δεν είναι πουθενά επισήμως ορισμένες.
μια απλή ελληνοποίηση της ISO-PASCAL ίσως να ήταν τελικά ο φθηνότερος και γρηγορότερος τρόπος να καλυπτονταν οι ανάγκες του μαθήματος.


evry

πολύ καλή προσέγγιση από άλλη οπτική

Παράθεση από: Gnirut στις 04 Απρ 2012, 01:49:41 ΜΜ
στο συγκεκριμένο παράδειγμα, από τη στιγμή που το div δεν είναι αυστηρά καθορισμένο το πως λειτουργεί με ορίσματα πραγματικούς, όλος ο αλγόριθμος που το χρησιμοποιεί δεν πληροί το κριτήριο της καθοριστικότητας.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

sstergou

Μπορεί να μου πει κάποιος από που συμπεραίνει ότι το 6/3 δίνει πραγματικό αριθμό στην ψευδογλώσσα;

Νίκος Αδαμόπουλος

Πώς σας φαίνεται το παρακάτω: (σελ. 189 του βιβλίου)

ΑΝ Ν MOD 2 =0 TOTE
   Διάμεσος <- (X[N/2]+X[N/2+1])/2
ΑΛΛΙΩΣ
   Διάμεσος <- X[(N+1)/2]
ΤΕΛΟΣ_ΑΝ

όπου Ν ακέραιος...

evry

Νίκο το συγκεκριμένο είναι στη ΓΛΩΣΣΑ αν θυμάμαι καλά
και πάω στοίχημα ότι είναι από τα λάθη του βιβλίου που δεν έχουν διορθωθεί ακόμα :D

Παράθεση από: Νίκος Αδαμόπουλος στις 28 Απρ 2012, 09:41:44 ΜΜ
Πώς σας φαίνεται το παρακάτω: (σελ. 189 του βιβλίου)

ΑΝ Ν MOD 2 =0 TOTE
   Διάμεσος <- (X[N/2]+X[N/2+1])/2
ΑΛΛΙΩΣ
   Διάμεσος <- X[(N+1)/2]
ΤΕΛΟΣ_ΑΝ

όπου Ν ακέραιος...
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

andreas_p

ΑΝ Ν MOD 2 =0 TOTE
   Διάμεσος <- (X[N DIV 2]+X[N DIV 2+1])/2
ΑΛΛΙΩΣ
   Διάμεσος <- X[(N+1) DIV 2]
ΤΕΛΟΣ_ΑΝ