Προφανώς δεν καταλαβαινόμαστε.
αφού το 20 είναι ακέραιος. αυτό άλλωστε δεν ήταν και το πρόβλημα εξαρχής?
Δεν ήταν αυτό το πρόβλημα εξαρχής.
Ο KinigosBekatswn γράφει «…μια ακέραια μεταβλητή δηλωμένη στις ΠΡΑΓΜΑΤΙΚΕΣ μεταβλητές τρέχει μια χαρά σε πρόγραμμα στον υπολογιστή (μέσω ΓλωσσοΜάθειας, Διερμηνευτή της Γλώσσας κτλπ).» (προσοχή γράφει μια ακέραια μεταβλητή δηλωμένη στις ΠΡΑΓΜΑΤΙΚΕΣ μεταβλητές, όχι μια ακέραια τιμή που μπορεί να εκχωρηθεί ως τιμή σε μια πραγματική μεταβλητή)
Δηλαδή αναρωτιέται τι τους θέλουμε τους 2 τύπους αριθμών (ακέραιες και πραγματικές) και δεν έχουμε μόνο έναν τύπο, τις πραγματικές μεταβλητές; Ή πιο συγκεκριμένα: είναι λάθος αν κάποιος στο τμήμα δηλώσεων μεταβλητών δεν κάνει ποτέ δήλωση ακεραίων μεταβλητών και τις δηλώνει όλες ως πραγματικές;
Θα περιοριστούμε στα πλαίσια του βιβλίου πάντα. Απάντηση άμεση γιατί υπάρχουν οι δύο τύποι δεν δίνει το βιβλίο, όμως με την παρατήρηση που έχει στο πλαίσιο της σελ. 128 αναφέρει ότι ο κάθε τύπος δεδομένων καταλαμβάνει συγκεκριμένα bytes, άρα με κριτική σκέψη βγαίνει το συμπέρασμα ότι οι διαφορετικοί τύποι υπάρχουν για εξοικονόμηση μνήμης, όπου αυτό είναι δυνατό.
Είναι κακή προγραμματιστική πρακτική κατά τη γνώμη σου.
Με το ίδιο σκεπτικό αν ξέρω ότι μια τιμή είναι πολύ μικρή και δεν τη δηλώσω short αλλά int είναι καλή πρακτική? Μήπως τα ψειρίζουμε περισσότερο από όσο πρέπει?
Δηλαδή αν αυτό είναι κακή πρακτική αν κάποιος κάνει σειριακή αναζήτηση σε ταξινομημένο πίνακα δεν θα πρέπει να του κόψουμε?
θα του έδειχνα ένα πρόγραμμα σε Python.
Το να αναφερόμαστε σε short και long int κτλ, δεν έχει νόημα, αφού κάτι τέτοιο δεν αναφέρεται στο βιβλίο. Επίσης το να έδειχνε κάποιος σε έναν μαθητή ένα πρόγραμμα σε Python (αντικειμενοστραφής γλώσσα όπου οι μεταβλητές είναι αντικείμενα( ; )), χωρίς επεξηγήσεις, μάλλον θα του δημιουργούσε περισσότερες απορίες, παρά θα του έλυνε την αρχική απορία «γιατί η ΓΛΩΣΣΑ έχει δύο τύπους αριθμητικών δεδομένων;»
Για να έχουν οι διάφορες γλώσσες προγραμματισμού διαφορετικούς τύπους σε ακεραίους και πραγματικούς, προφανώς δεν είναι για να ικανοποιείται η δική μου γνώμη περί καλής και κακής προγραμματιστικής πρακτικής.
Όπως ανέφερα και παραπάνω: «Βέβαια, κάποιες πρακτικές κακού προγραμματισμού δεν βαθμολογούνται αρνητικά στις πανελλαδικές»
Το μεγάλο ερώτημα είναι όμως, θα έπρεπε να κόψουμε βαθμούς σε κάποιον που κάνει σειριακή αναζήτηση σε ταξινομημένο πίνακα ή όχι;
Φαντάζομαι ότι συμφωνούμε όλοι ότι ναι μεν θα δουλέψει, αλλά γενικά είναι κακή πρακτική να το κάνει αυτό, αφού υπάρχει καλύτερος τρόπος αναζήτησης. (Παρακαλώ, μην ψάχνουμε εξαιρέσεις του τύπου είναι μικρό το μέγεθος του πίνακα κτλ).
Μαθησιακά θα μπορούσε να υποστηρίξει κάποιος ότι ο παραπάνω μαθητής δεν έχει κατανοήσει ότι η σειριακή αναζήτηση εφαρμόζεται σε μη ταξινομημένους πίνακες, ενώ στους ταξινομημένους πίνακες εφαρμόζεται η δυαδική αναζήτηση που έχει διδαχθεί ως πιο γρήγορη, ή ότι δεν μπορούσε να εφαρμόσει την δυαδική αναζήτηση είτε γιατί δεν την θυμάται είτε γιατί του έρχεται πιο δύσκολο να την υλοποιήσει. Άρα, ναι θα έπρεπε να κοπούν μονάδες. Το πόσες; Σίγουρα θα εξαρτιόταν από το σύνολο του προβλήματος.
Όσον αφορά το θέμα της μνήμης νομίζω ότι σήμερα δεν έχει τόση σημασία. Μάλλον έχει περισσότερο ενδιαφέρον να συζητήσουμε τη διαφορά στους τρόπους αναπαράστασης (floating point) παρά στο θέμα του χώρου.
Στον προγραμματισμό κάποιων μικροελεγκτών ακόμα και σήμερα το μέγεθος μνήμης παίζει ρόλο.
και με βάση τη σημείωση που υπάρχει στο βιβλίο του μαθητή σελ. 132 (παράγραφος 7.8. Εντολή Εκχώρησης) σε κόκκινο πλαίσιο (!!!) αναφέρει ότι
Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου.
Εδώ πραγματικά θα έπρεπε να συμπληρωθεί ότι σε μια πραγματική μεταβλητή μπορεί να εκχωρηθεί μια ακέραια τιμή.
προφανώς και θέλει τη μεταβλητή στην εκχώρηση Χ <- 4 να τη δηλώσουμε ως ακέραια και αν όχι να αφαιρεθούν οι αντίστοιχες μονάδες.
καθόλου προφανές! Αποτελεί προσωπική σου άποψη.
Εκτός αν μπορέσεις να μας πείσεις ότι το 4 είναι μόνο ακέραιος και όχι πραγματικός!
Εδώ είναι κάτι που θα έπρεπε να διευκρινίζει το βιβλίο και δεν το κάνει. Θα έπρεπε δηλαδή το βιβλίο να διευκρινίζει ότι, ναι μεν μαθηματικά ισχύει το
4 = 4,0 = 4,00 = 4,000 κτλ
Αλλά για την πληροφορική (μαθηματικά είναι και εδώ) άλλο 4 (ακέραιος) και άλλο 4.0 (πραγματικός)
(όπως και στις μετρήσεις φυσικών-τεχνικών μεγεθών, μαθηματικά είναι και εδώ, άλλο 10, άλλο 10,0. Περίεργο; Καθόλου. Το 10,0 δεν αναφέρεται στον φυσικό αριθμό 10, αλλά σε κάποιον αριθμό που έχει προκύψει από στρογγυλοποίηση στο πρώτο δεκαδικό ψηφίο)