Ερώτηση για μεταβλητές.

Ξεκίνησε από KinigosBekatswn, 18 Νοε 2018, 03:03:55 ΜΜ

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

KinigosBekatswn

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

Laertis

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

junior

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

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

Άρα σωστά σου απάντησε ο καθηγητής σου.

petrosp13

Παράθεση από: junior στις 18 Νοε 2018, 10:03:42 ΜΜ

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


;;;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

evry

Δεν ισχύει αυτό που λες! Προφανώς και δεν κόβουμε για κάτι τέτοιο γιατί πολύ απλά ΕΙΝΑΙ ΟΛΟΣΩΣΤΟ διότι ως γνωστόν οι ακέραιοι είναι υποσύνολο των πραγματικών!
Άρα κάθε ακέραιος είναι και πραγματικός!

Παράθεση από: junior στις 18 Νοε 2018, 10:03:42 ΜΜ
Αυτό τώρα που ενδιαφέρει το μάθημα είναι ότι, εξ όσων γνωρίζω, στις πανελλαδικές εξετάσεις, στην διόρθωση των γραπτών, στο τμήμα δηλώσεων μεταβλητών που συνήθως βαθμολογείται με 2 μονάδες, αν μια μεταβλητή η οποία παίρνει μόνο ακέραιες τιμές δηλωθεί ως πραγματική, χάνεται η μία μονάδα. Οπότε προσοχή.

Επίσης για να το πω ευγενικά όταν δεν γνωρίζουμε κάτι καλό είναι να είμαστε προσεκτικοί όταν απαντάμε σε μαθητές!

Όσον αφορά το θέμα της μνήμης νομίζω ότι σήμερα δεν έχει τόση σημασία. Μάλλον έχει περισσότερο ενδιαφέρον να συζητήσουμε τη διαφορά στους τρόπους αναπαράστασης (floating point) παρά στο θέμα του χώρου.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

Ρώτησε τον καθηγητή σου πως εξηγεί το γεγονός ότι στη σελίδα 59 του τετραδίου μαθητή εκχωρείται η ακέραια τιμή 20 στην πραγματική μεταβλητή Vo

Παράθεση από: KinigosBekatswn στις 18 Νοε 2018, 03:03:55 ΜΜ
Καλησπέρα σε όλους, μια απλή και σύντομη ερώτηση θα ήθελα να κάνω. Αν μια μεταβλητή γνωρίζουμε ότι είναι 5 και την καταχωρίσουμε στις ΠΡΑΓΜΑΤΙΚΕΣ θεωρείται λάθος? Ρωτώ διότι οι ΠΡΑΓΜΑΤΙΚΕΣ μεταβλητές υποτίθεται ότι δέχονται όλους τους αριθμούς και επίσης μια ακέραια μεταβλητή δηλωμένη στις ΠΡΑΓΜΑΤΙΚΕΣ μεταβλητές τρέχει μια χαρά σε πρόγραμμα στον υπολογιστή (μέσω ΓλωσσοΜάθειας, Διερμηνευτή της Γλώσσας κτλπ). Ωστόσο ο καθηγητής στο σχολείο μου είπε ότι είναι λάθος. Ρωτώ καθαρά πληροφοριακά και από περιέργεια. Ευχαριστώ
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

junior

#6
@evry

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

Επίσης γράφεις ότι «...διότι ως γνωστόν οι ακέραιοι είναι υποσύνολο των πραγματικών! Άρα κάθε ακέραιος είναι και πραγματικός!». Προφανώς αυτό είναι αληθές, αλλά δεν αίρει το γεγονός ότι είναι κακή προγραμματιστική πρακτική να δηλώνουμε ως πραγματικές, μεταβλητές που παίρνουν μόνο ακέραιες τιμές.
Αν σε ρωτούσε ο μαθητής «τότε γιατί η ΓΛΩΣΣΑ κάνει διάκριση ανάμεσα σε ακέραιες και πραγματικές μεταβλητές και δεν έχει μόνο έναν τύπο, τις πραγματικές, αφού ως γνωστόν οι ακέραιοι είναι υποσύνολο των πραγματικών! Άρα κάθε ακέραιος είναι και πραγματικός!;» τι θα απαντούσες;

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

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


P.Tsiotakis

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

Στο βαθμολογικό ως διορθωτής και συντονιστής κάθε χρονιά λέγαμε ότι στις δηλώσεις μεταβλητών ακόμη κι αν ξεχάσει να δηλώσει μια μεταβλητή, στις περιπτώσεις που το τμήμα δηλώσεων λαμβάνει 1-2 μονάδες και πρέπει να δηλωθούν 8-10 μεταβλητές, μπορεί και να μην κόψουμε τίποτα σε ένα γραπτό με λύση.
Γενικά, υπήρχε η προσέγγιση "να δουλεύει" και όχι η προσέγγιση "να κάνουμε οικονομία στη μνήμη".

evry

Παράθεση από: junior στις 19 Νοε 2018, 12:01:24 ΠΜ
Το γνωρίζεις καλά και υπεύθυνα μπορούμε να πούμε στον μαθητή ότι σε κανένα εξεταστικό κέντρο δεν κόβουν βαθμό;
Γνωρίζω καλά και υπεύθυνα ότι δεν υπάρχει καμία τέτοια οδηγία από πουθενά. Ήμουν πολλά χρόνια βαθμολογητής σε δυο από τα μεγαλύτερα βαθμολογικά και συντονιστής στο ένα και δεν έχω ακούσει πουθενά αυτό που λες.
Επίσης αυτό που λέει ο Παναγιώτης είναι σωστό. Από τη στιγμή που σε μια δήλωση υπάρχουν πίνακες δεν θα κόψεις από τις μεταβλητές ακόμα και αν έχει ξεχάσει κάποια που δεν είναι σημαντική όπως π.χ. το i μιας δομής επανάληψης.

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

Παράθεση
Επίσης γράφεις ότι «...διότι ως γνωστόν οι ακέραιοι είναι υποσύνολο των πραγματικών! Άρα κάθε ακέραιος είναι και πραγματικός!». Προφανώς αυτό είναι αληθές, αλλά δεν αίρει το γεγονός ότι είναι κακή προγραμματιστική πρακτική να δηλώνουμε ως πραγματικές, μεταβλητές που παίρνουν μόνο ακέραιες τιμές.
Είναι κακή προγραμματιστική πρακτική κατά τη γνώμη σου.
Με το ίδιο σκεπτικό αν ξέρω ότι μια τιμή είναι πολύ μικρή και δεν τη δηλώσω short αλλά int είναι καλή πρακτική? Μήπως τα ψειρίζουμε περισσότερο από όσο πρέπει?
Δηλαδή αν αυτό είναι κακή πρακτική αν κάποιος κάνει σειριακή αναζήτηση σε ταξινομημένο πίνακα δεν θα πρέπει να του κόψουμε?

Παράθεση
Αν σε ρωτούσε ο μαθητής «τότε γιατί η ΓΛΩΣΣΑ κάνει διάκριση ανάμεσα σε ακέραιες και πραγματικές μεταβλητές και δεν έχει μόνο έναν τύπο, τις πραγματικές, αφού ως γνωστόν οι ακέραιοι είναι υποσύνολο των πραγματικών! Άρα κάθε ακέραιος είναι και πραγματικός!;» τι θα απαντούσες;
θα του έδειχνα ένα πρόγραμμα σε Python.

Παράθεση
Για την σελίδα 59 του τετραδίου μαθητή θα απαντούσα ότι:
1. το κάνει για να είναι καλυμμένος και για την περίπτωση που η αρχική ταχύτητα που θα ανατεθεί στην μεταβλητή V0 δεν είναι ακέραιος αριθμός, διότι κανείς δεν εξασφαλίζει ότι η αρχική ταχύτητα θα είναι ακέραιος αριθμός και για να μην διορθώσει τότε στο τμήμα δηλώσεων μεταβλητών την V0 από ακέραια σε πραγματική.
Δεν κατάλαβες τι είπα. Με το δικό σου σκεπτικό θα έπρεπε η εκχώρηση να είναι:
Κώδικας: pascal
Vo <-- 20.00

και όχι
Κώδικας: pascal
Vo <-- 20

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

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

ssimaiof

Νομίζω ότι έχει πάντα να κάνει με το τι ζητάει το ερώτημα.
Όταν πρωτοέκανα συντονιστής της ΑΕΠΠ ο πρόεδρος του βαθμολογικού κέντρου στην ενημέρωση που μας είχε είπε ότι θα πρέπει πάντα να έχουμε στο μυαλό μας το τι θέλει να εξετάσει ο θεματοδότης με το συγκεκριμένο θέμα.
Αν θέλουμε να δούμε αν μπορεί να ξεχωρίσει τους διάφορους τύπους μεταξύ τους πρέπει να το λάβουμε υπόψη μας και να κόψουμε αντίστοιχες μονάδες. Π.χ. στις πανελλαδικές 2012 θέμα Α2:
Να μεταφέρετε στο τετράδιό σας τον παρακάτω πίνακα συμπληρώνοντάς τον με τον κατάλληλο τύπο και το περιεχόμενο της μεταβλητής.   
Εντολή εκχώρησης         Τύπος μεταβλητής Χ         Περιεχόμενο μεταβλητής Χ
Χ <- 'ΑΛΗΘΗΣ'      
Χ <- 11.0 - 13.0      
Χ <- 7 > 4      
Χ <- ΨΕΥΔΗΣ      
Χ <- 4      
και με βάση τη σημείωση που υπάρχει στο βιβλίο του μαθητή σελ. 132 (παράγραφος 7.8. Εντολή Εκχώρησης) σε κόκκινο πλαίσιο (!!!) αναφέρει ότι
Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου.
προφανώς και θέλει τη μεταβλητή στην εκχώρηση Χ <- 4 να τη δηλώσουμε ως ακέραια και αν όχι να αφαιρεθούν οι αντίστοιχες μονάδες.
ΠΡΟΣΟΧΗ είπα το τι νομίζω ότι θέλει να εξετάσει ο θεματοδότης και όχι την προσωπική μου άποψη. Για το συγκεκριμένο θέμα άλλωστε υπάρχει και η σχετική συζήτηση στο στέκι.

Προφανώς σε μια άλλη άσκηση (υλοποίηση ενός αλγορίθμου) μια μεταβλητή ΑΘΡ για τον υπολογισμό του αθροίσματος κάποιων πραγματικών τιμών να πρέπει να δηλωθεί ως πραγματική. Η αρχική τιμή θα μπορούσε να είναι με την εντολή ΑΘΡ <- 0 χωρίς αυτό να θεωρηθεί λάθος. Υπάρχουν άλλωστε και αντίστοιχα παραδείγματα στα σχολικά εγχειρίδια.

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

evry

Παράθεση από: ssimaiof στις 19 Νοε 2018, 12:47:53 ΜΜ
Π.χ. στις πανελλαδικές 2012 θέμα Α2:
Να μεταφέρετε στο τετράδιό σας τον παρακάτω πίνακα συμπληρώνοντάς τον με τον κατάλληλο τύπο και το περιεχόμενο της μεταβλητής.   
Εντολή εκχώρησης         Τύπος μεταβλητής Χ         Περιεχόμενο μεταβλητής Χ
Χ <- 'ΑΛΗΘΗΣ'      
Χ <- 11.0 - 13.0      
Χ <- 7 > 4      
Χ <- ΨΕΥΔΗΣ      
Χ <- 4      
Δεν κατάλαβα πως ξέρουμε ότι το 4 είναι ακέραιος και όχι πραγματικός! Το 4 δεν είναι πραγματικός αριθμός?
Το θέμα αυτό από ότι θυμάμαι καλά είχε τεράστιο πρόβλημα, ήταν κακοδιατυπωμένο και ειλικρινά δεν κατάλαβα τι στο καλό εξετάζει ειδικά με το ερώτημα που ζήταγε το περιεχόμενο της μεταβλητής Χ όταν έχει την τιμή 'ΑΛΗΘΗΣ' (είναι ΑΛΗΘΗΣ ή 'ΑΛΗΘΗΣ'?)

Παράθεση
προφανώς και θέλει τη μεταβλητή στην εκχώρηση Χ <- 4 να τη δηλώσουμε ως ακέραια και αν όχι να αφαιρεθούν οι αντίστοιχες μονάδες.
καθόλου προφανές! Αποτελεί προσωπική σου άποψη.
Εκτός αν μπορέσεις να μας πείσεις ότι το 4 είναι μόνο ακέραιος και όχι πραγματικός!

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

ssimaiof

Προσωπική άποψη: θεωρώ και εγώ ΚΑΚΟ το συγκεκριμένο θέμα.
Νομίζω όμως ότι κατάλαβα τι θέλει να εξετάσει ο θεματοδότης (προσωπική άποψη: δεν το καταφέρνει καλά).
Αν θα έβαζα εγώ τέτοιο θέμα: ΟΧΙ. Όμως έπεσε.

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

  • η Γλώσσα δεν έχει ενιαίο τύπο για τους αριθμούς και τους διαφοροποιεί σε ακέραιους και πραγματικούς
  • στις γλώσσες προγραμματισμού δεν μπορούμε να έχουμε μεταβλητές οι οποίες να ανήκουν ταυτόχρονα σε διαφορετικούς τύπους δεδομένων
  • λαμβάνοντας υπόψη η Γλώσσα έχει 20 χρόνια που βγήκε υποθέτω (προσωπική άποψη) ότι έχει επηρεαστεί από Pascal και από C
  • ότι ο θεματοδότης χρησιμοποιεί παραπάνω την έκφραση Χ <- 11.0 - 13.0
υποθέτω (προσωπική άποψη) ότι υπάρχει διαφοροποίηση (στη Γλώσσα) μεταξύ του 4 και του 4.0 όχι ως προς την αξία αλλά ως προς τον τύπο.
Από κει και πέρα (αν δεχτούμε τα παραπάνω) το 4 είναι τύπου ακεραίου και το 4.0 τύπου πραγματικού.

ΥΓ1. Η Γλώσσα (πρόσφερε - δεν πρόσφερε) έκανε τον κύκλο της. Είναι επιτακτικό να προχωρήσουμε σε πραγματική (άρα αυστηρά καθορισμένη) γλώσσα για να αποφεύγουμε τέτοιου είδους καταστάσεις.
ΥΓ2. Θα πρέπει και οι θεματοδότες να είναι ιδιαίτερα προσεκτικοί στην επιλογή των θεμάτων.
Σταύρος Σημαιοφορίδης

junior

Προφανώς δεν καταλαβαινόμαστε.

Παράθεση από: evry στις 19 Νοε 2018, 12:36:59 ΜΜ
αφού το 20 είναι ακέραιος. αυτό άλλωστε δεν ήταν και το πρόβλημα εξαρχής?

Δεν ήταν αυτό το πρόβλημα εξαρχής.

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

Δηλαδή αναρωτιέται τι τους θέλουμε τους 2 τύπους αριθμών (ακέραιες και πραγματικές) και δεν έχουμε μόνο έναν τύπο, τις πραγματικές μεταβλητές; Ή πιο συγκεκριμένα: είναι λάθος αν κάποιος στο τμήμα δηλώσεων μεταβλητών δεν κάνει ποτέ δήλωση ακεραίων μεταβλητών και τις δηλώνει όλες ως πραγματικές;

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

Παράθεση από: evry στις 19 Νοε 2018, 12:36:59 ΜΜ
Είναι κακή προγραμματιστική πρακτική κατά τη γνώμη σου.
Με το ίδιο σκεπτικό αν ξέρω ότι μια τιμή είναι πολύ μικρή και δεν τη δηλώσω short αλλά int είναι καλή πρακτική? Μήπως τα ψειρίζουμε περισσότερο από όσο πρέπει?
Δηλαδή αν αυτό είναι κακή πρακτική αν κάποιος κάνει σειριακή αναζήτηση σε ταξινομημένο πίνακα δεν θα πρέπει να του κόψουμε?
θα του έδειχνα ένα πρόγραμμα σε Python.

Το να αναφερόμαστε σε short και long int κτλ, δεν έχει νόημα, αφού κάτι τέτοιο δεν αναφέρεται στο βιβλίο. Επίσης το να έδειχνε κάποιος σε έναν μαθητή ένα πρόγραμμα σε Python (αντικειμενοστραφής γλώσσα όπου οι μεταβλητές είναι αντικείμενα( ; )), χωρίς επεξηγήσεις, μάλλον θα του δημιουργούσε περισσότερες απορίες, παρά θα του έλυνε την αρχική απορία «γιατί η ΓΛΩΣΣΑ έχει δύο τύπους αριθμητικών δεδομένων;»

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

Όπως ανέφερα και παραπάνω: «Βέβαια, κάποιες πρακτικές κακού προγραμματισμού δεν βαθμολογούνται αρνητικά στις πανελλαδικές»

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

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

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


Παράθεση από: evry στις 18 Νοε 2018, 11:07:00 ΜΜ
Όσον αφορά το θέμα της μνήμης νομίζω ότι σήμερα δεν έχει τόση σημασία. Μάλλον έχει περισσότερο ενδιαφέρον να συζητήσουμε τη διαφορά στους τρόπους αναπαράστασης (floating point) παρά στο θέμα του χώρου.

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

Παράθεση από: ssimaiof στις 19 Νοε 2018, 12:47:53 ΜΜ
και με βάση τη σημείωση που υπάρχει στο βιβλίο του μαθητή σελ. 132 (παράγραφος 7.8. Εντολή Εκχώρησης) σε κόκκινο πλαίσιο (!!!) αναφέρει ότι
Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου.

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

Παράθεση από: ssimaiof στις 19 Νοε 2018, 12:47:53 ΜΜ
προφανώς και θέλει τη μεταβλητή στην εκχώρηση Χ <- 4 να τη δηλώσουμε ως ακέραια και αν όχι να αφαιρεθούν οι αντίστοιχες μονάδες.


Παράθεση από: evry στις 19 Νοε 2018, 02:48:44 ΜΜ
καθόλου προφανές! Αποτελεί προσωπική σου άποψη.
Εκτός αν μπορέσεις να μας πείσεις ότι το 4 είναι μόνο ακέραιος και όχι πραγματικός!

Εδώ είναι κάτι που θα έπρεπε να διευκρινίζει το βιβλίο και δεν το κάνει. Θα έπρεπε δηλαδή το βιβλίο να διευκρινίζει ότι, ναι μεν μαθηματικά ισχύει το
4 = 4,0 = 4,00 = 4,000 κτλ
Αλλά για την πληροφορική (μαθηματικά είναι και εδώ)  άλλο 4 (ακέραιος) και άλλο 4.0 (πραγματικός)
(όπως και στις μετρήσεις φυσικών-τεχνικών μεγεθών, μαθηματικά είναι και εδώ, άλλο 10, άλλο 10,0. Περίεργο; Καθόλου. Το 10,0 δεν αναφέρεται στον φυσικό αριθμό 10, αλλά σε κάποιον αριθμό που έχει προκύψει από στρογγυλοποίηση στο πρώτο δεκαδικό ψηφίο)


bugman

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

Αρχικοποίηση πραγματικής με ακέραια τιμή γίνεται εφόσον το επιτρέπει ο διερμηνευτής. Με βάση το βιβλίο δεν γίνεται. Για σταθερή τιμή θα δώσουμε στο τύπο που χρειάζεται. Για μεταβλητή, πχ κ<-Χ μετατρέπουμε σε πραγματική με ύψωση στο 1.0, και σε ακέραια με Α_Μ().

junior

#14
Παράθεση από: bugman στις 19 Νοε 2018, 11:25:10 ΜΜ
Δείτε τι επιστρέφει η ύψωση σε δύνανη. Αν δηλώσουμε ακέραια μεταβλητή με ύψωση σε 1.0 (πραγματική) θα πάρουμε πραγματική.
Αν ο εκθέτης είναι ακέραιος θετικός θα πάρουμε  ότι είναι η μεταβλητή.(στις οδηγίες περί τελεστών αναφέρει ότι επιστρέφει ακέραιο μόνο όταν έχουμε θετικό εκθέτη ακέραιο)

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

Κατάλαβα ότι αναφέρεσαι στον Διερμηνευτή της ΓΛΩΣΣΑΣ. Αν και επίσημο βοήθημα, ωστόσο δεν αποτελεί πηγή επίλυσης ασαφειών του Βιβλίου.