Προγραμματισμός ΙΙ. Ενότητα 1: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σχετικά έγγραφα
Προγραμματισμός ΙΙ Ενότητα 5:

Προγραμματισμός ΙΙ. Ενότητα 2: Διαχείριση μνήμης. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 7: Βιβλιοθήκες - Μέρος 2. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 8: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 1 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 4:

Προγραμματισμός ΙΙ. Ενότητα 1: Προαπαιτούμενα. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 9: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 2 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 4: Διαχείριση μνήμης. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 9: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 1 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 6: Βιβλιοθήκες - Μέρος 1. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 3:

Προγραμματισμός ΙΙ. Ενότητα 7: Βιβλιοθήκες - Μέρος 1. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 5:

Προγραμματισμός ΙΙ. Ενότητα 8: Βιβλιοθήκες - Μέρος 2. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 2: Επανάληψη στον Προγραμματισμό Ι. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 3: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Προγραμματισμός ΙΙ. Ενότητα 10: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 2 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Δομές Δεδομένων Ενότητα 1

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Δομές Δεδομένων. Ενότητα 1: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Εισαγωγή στους Αλγορίθμους

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Δομές Δεδομένων. Ενότητα 2: Περισσότερα για τους δείκτες. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Διοικητική Λογιστική

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός ΙΙ Ενότητα 6:

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

ΑΝΑΛΥΣΗ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ

Προγραμματισμός H/Y Ενότητα 7: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Ηλεκτρονικοί Υπολογιστές

ΑΝΤΙΡΡΥΠΑΝΤΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΑΙΩΡΟΥΜΕΝΩΝ ΣΩΜΑΤΙΔΙΩΝ Ενότητα 2: Αιωρούμενα σωματίδια & Απόδοση συλλογής Αν. Καθ. Δρ Μαρία Α. Γούλα Τμήμα Μηχανικών

Συστήματα Αναμονής. Ενότητα 5: Ανέλιξη Poisson. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Οικονομετρία Ι. Ενότητα 10: Διαγνωστικοί Έλεγχοι. Δρ. Χαϊδώ Δριτσάκη Τμήμα Λογιστικής & Χρηματοοικονομικής

Συστήματα Αναμονής. Ενότητα 3: Στοχαστικές Ανελίξεις. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Διαδικτύου

Μηχανολογικό Σχέδιο Ι

Οικονομετρία Ι. Ενότητα 3: Θεώρημα των Gauss Markov. Δρ. Χαϊδώ Δριτσάκη Τμήμα Λογιστικής & Χρηματοοικονομικής

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Οργάνωση και Διοίκηση Πωλήσεων Ενότητα 1: Ο ΡΟΛΟΣ ΤΩΝ ΠΩΛΗΣΕΩΝ ΣΤΟ ΠΛΑΙΣΙΟ ΤΗΣ ΣΤΡΑΤΗΓΙΚΗΣ ΜΑΡΚΕΤΙΝΓΚ

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Συστήματα Αναμονής. Ενότητα 7: Ουρά Μ/Μ/1. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Οργάνωση και Διοίκηση Πωλήσεων

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ιστορία της μετάφρασης

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Τεχνολογία Πολυμέσων. Ενότητα 8: Pool Table. Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Βάσεις Περιβαλλοντικών Δεδομένων

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Ηλεκτροτεχνία ΙΙ. Ενότητα 2: Ηλεκτρικά κυκλώματα συνεχούς ρεύματος. Δημήτρης Στημονιάρης, Δημήτρης Τσιαμήτρος Τμήμα Ηλεκτρολογίας

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Συστήματα Αναμονής. Ενότητα 9: Ανέλιξη Γέννησης - Θανάτου. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΑΝΤΙΡΡΥΠΑΝΤΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΑΙΩΡΟΥΜΕΝΩΝ ΣΩΜΑΤΙΔΙΩΝ Ενότητα 6: Ηλεκτροστατικά Φίλτρα

Transcript:

Προγραμματισμός ΙΙ Ενότητα 1: Βασικοί τύποι δεδομένων Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Βασικοί τύποι δεδομένων

Σκοποί ενότητας Σε αυτή την ενότητα παρουσιάζονται οι βασικοί τύποι δεδομένων. 5

Περιεχόμενα ενότητας (1/2) Οι βασικοί τύποι δεδομένων. Ακέραιοι. Αριθμοί κινητής υποδιαστολής. Float. Double. Long double. 6

Περιεχόμενα ενότητας (2/2) Δείκτες. Σύνθετοι τύποι. Μέγεθος τύπων και μεταβλητών. Βιβλιογραφία. 7

Οι βασικοί τύποι δεδομένων Οι βασικοί τύποι δεδομένων που υποστηρίζονται από τη γλώσσα προγραμματισμού C που θα χρησιμοποιήσετε στο εργαστήριο χωρίζονται στις εξής κατηγορίες: Ακέραιοι. Αριθμοί κινητής υποδιαστολής. Δείκτες. Σύνθετοι τύποι (δομές - structures). 8

Ακέραιοι (1/6) Οι αριθμοί αυτοί, όπως υποδηλώνει και το όνομά τους, δεν έχουν δεκαδικό μέρος. Ωστόσο, στην κατηγορία αυτή περιλαμβάνονται και οι φυσικοί αριθμοί. Οι μεταβλητές που δηλώνουμε και ανήκουν σε αυτήν την κατηγορία μπορούν να έχουν μέγεθος 8, 16, 32, ή 64 δυαδικά ψηφία (δ.ψ.), να έχουν πρόσημο (ακέραιοι) ή όχι (φυσικοί). 9

Ακέραιοι (2/6) Η γενική μορφή της δήλωσής τους είναι: [δήλωση προσήμου] [μεταβολή μεγέθους] τύπος_δεδομένων όνομα_μεταβλητής;. Η δήλωση του προσήμου είναι προαιρετική. Mπορεί να είναι είτε signed (ακέραιος) είτε unsigned (φυσικός). Όταν δεν υπάρχει, υπονοείται το signed. 10

Ακέραιοι (3/6) Η μεταβολή του μεγέθους είναι προαιρετική, και μπορεί να είναι short ή long. Στη περίπτωση των Windows μπορεί να είναι και long long. Όταν δεν υπάρχει, τότε ο ακέραιος έχει μέγεθος 32 bit. Ο πίνακας που ακολουθεί συνοψίζει τις εκδοχές, τα μεγέθη, καθώς και τα διαστήματα τιμών των ακεραίων. 11

Ακέραιοι (4/6) Πίνακας 1: Ακέραιοι. Πηγή: Διδάσκων (2015). Τύπος Μέγεθος Διάστημα Διάστημα τιμών τιμών (2 ** ) int 32-bit -2 31.. 2 31-1 -2.147.483.648 ως 2.147.483.647 signed int 32-bit -2 31.. 2 31-1 -2.147.483.648 ως 2.147.483.647 unsigned 32-bit 0.. 2 32-1 0 ως 4.294.967.295 int short [int] 16-bit -2 15.. 2 15-1 -32.768 ως 32.767 signed 16-bit -2 15.. 2 15-1 -32.768 ως 32.767 short [int] unsigned 16-bit 0.. 2 16-1 0.. 65.535 short [int] long [int] 32- ή 64- bit -2 31.. 2 31-1, ή -2 63.. 2 63-1 -2.147.483.648 ως 2.147.483.647, ή -9.223.372.036.854.775.808 ως 9.223.372.036.854.775.807 12

Ακέραιοι (5/6) Πίνακας 2: Ακέραιοι (Συνέχεια). Πηγή: Διδάσκων (2015). Τύπος Μέγεθος Διάστημα Διάστημα τιμών τιμών (2 ** ) signed long [int] 32- ή 64- bit -2 31.. 2 31-1, ή -2 63.. 2 63-1 -2.147.483.648 ως 2.147.483.647, ή -9.223.372.036.854.775.808 ως 9.223.372.036.854.775.807 unsigned 32- ή 64-0.. 2 32-1, ή 0 ως 4.294.967.295, ή 0 ως long [int] bit 0.. 2 64-1 18.446.744.073.709.551.615 char 8-bit 0.. 2 8-1, ή -2 7.. 2 7-1, ανάλογα με 0 ως 255, ή -128 ως 127, ανάλογα με την υλοποίηση την υλοποίηση unsigned 8-bit 0.. 2 8-1 0 ως 255 char bool 8-bit Δ.Υ. 0 = false/ψευδές ή 0 = true/αληθές 13

Ακέραιοι (6/6) Η υλοποίηση του long κάτω από Windows σε περιβάλλον 32- ή 64-bit απαιτεί την προσοχή του αναγνώστη. Δεν είναι και στις δύο περιπτώσεις 64- bit. 14

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

Αριθμοί κινητής υποδιαστολής (2/2) Δύο από αυτούς ακολουθούν το πρότυπο IEEE 754 ενός ο τρίτος μόνο σε συγκεκριμένες υλοποιήσεις. Αυτό σημαίνει ότι η δυαδική μορφή αυτών που ακολουθούν το πρότυπο IEEE 754 είναι η ίδια σε διαφορετικές υλοποιήσεις επεξεργαστών (Intel/AMD, IBM Power, Sun UltraSPARC, κ.α.), ενώ αυτών που δεν ακολουθούν κάποιο πρότυπο δεν είναι συμβατοί. 16

Float Οι τρεις τύποι αριθμών κινητής υποδιαστολής είναι οι εξής: float. double. long double. 17

Double Διπλή ακρίβεια. Ο αριθμός αυτός έχει μέγεθος 64-bit. Τα δ.ψ. 0-51 αναπαριστούν τη βάση του αριθμού, τα 52-62 τον εκθέτη, και το 63 το πρόσημο (0 = θετικός, 1 = αρνητικός). Όταν όλα τα δ.ψ. είναι 0, τότε ο αριθμός είναι ο 0. Το διάστημα τιμών είναι της τάξης του 10-308 ως 10 308, με ακρίβεια 15 ως 16 δεκαδικά ψηφία. 18

Long double (1/3) Εκτεταμένη ή τετραπλή ακρίβεια. Στην προκειμένη περίπτωση υπάρχει ζήτημα συμβατότητας με τους επεξεργαστές των προσωπικών υπολογιστών (Intel/AMD), οι οποίοι επί του παρόντος δεν ακολουθούν το πρότυπο IEEE 754. 19

Long double (2/3) Έτσι αυτοί οι αριθμοί στην υλοποίηση των προσωπικών υπολογιστών έχουν εύρος 80-bit. Τα δ.ψ. 0-62 αναπαριστούν τη βάση, το 63 έχει ειδική χρήση, τα 64-78 αναπαριστούν τον εκθέτη, και το 79 το πρόσημο. Το διάστημα τιμών είναι της τάξης του 10-4951 ως 10 4932, με ακρίβεια 19 ως 20 δεκαδικά ψηφία. Μερικοί μεταγλωττιστές χειρίζονται αυτούς τους αριθμούς των 80-bit ως απλούς double, για λόγους συμβατότητας. 20

Long double (3/3) Στην περίπτωση που κάποια υλοποίηση ακολουθεί το εν λόγω πρότυπο (SPARC V8/V9, IBM Power), οι αριθμοί αυτοί έχουν μέγεθος 128-bit. Τα δ.ψ. 0-111 αναπαριστούν τη βάση, τα 112-126 τον εκθέτη, και το τελευταίο (127) το πρόσημο (0 = θετικός, 1 = αρνητικός). Η ακρίβεια των αριθμών αυτών είναι 33-37 δεκαδικά ψηφία. 21

Δείκτες (1/3) Οι δείκτες στην ουσία είναι φυσικοί αριθμοί που αποθηκεύουν εικονικές διευθύνσεις μνήμης. Μπορούμε να έχουμε δείκτη οποιουδήποτε τύπου δεδομένων. Ωστόσο, όλοι οι δείκτες έχουν το ίδιο μέγεθος (αφού αναφέρονται σε διευθύνσεις μνήμης), άσχετα με το μέγεθος του μπλοκ μνήμης στο οποίο δείχνουν. 22

Δείκτες (2/3) Στο ίδιο πρόγραμμα δεν μπορούμε να έχουμε 32-bit και 64-bit δείκτες ταυτόχρονα. Το μέγεθος των δεικτών σχετίζεται με τις δυνατότητες του υπολογιστή και του λειτουργικού του συστήματος. Τα όρια ενός 32-bit ΛΣ περιορίζουν μια εφαρμογή σε λιγότερο από 2GB στο σύνολο (π.χ. 1,75 GB). Στην περίπτωση ενός 64-bit ΛΣ τα όρια είναι πολύ μεγαλύτερα, και σχετίζονται με την αρχιτεκτονική του επεξεργαστή και την έκδοση του ΛΣ. 23

Δείκτες (3/3) Γενικά, όμως, για να δοκιμάσουμε 64-bit εκτελέσιμο κώδικα από τα προγράμματά μας, πρέπει να ισχύουν όλες οι ακόλουθες προϋποθέσεις: Ο επεξεργαστής να είναι 64-bit. Το BIOS του υπολογιστή να είναι συμβατό με 64-bit. Το Λειτουργικό Σύστημα (ΛΣ) να είναι 64-bit. Το λογισμικό ανάπτυξης εφαρμογών να μπορεί να παράγει (όχι κατ' ανάγκη να είναι το ίδιο) 64-bit. Να έχουμε ρυθμίσει το λογισμικό ανάπτυξης εφαρμογών να παράγει 64-bit εκτελέσιμο. 24

Σύνθετοι τύποι Δομές - structures. Πέρα από τους βασικούς τύπους έχουμε και τους σύνθετους. Αυτοί αποτελούνται από συλλογές απλούστερων ή άλλων σύνθετων τύπων. Έτσι, για παράδειγμα, μπορούμε να ορίσουμε τη δομή της εγγραφής των δεδομένων ενός φοιτητή. 25

Μέγεθος τύπων και μεταβλητών (1/2) Αργότερα στο μάθημα, όταν θα θέλουμε να δεσμεύσουμε μνήμη, και ειδικά για μια δομή (σύνθετο τύπο δεδομένων), χρειάζεται να υπολογίσουμε το μέγεθος της μνήμης που χρειαζόμαστε προς δέσμευση. Αυτό μπορεί να επιτευχθεί με τον τελεστή sizeof(...). Σημειώνουμε ότι το sizeof είναι τελεστής και δεν αντιπροσωπεύει κλήση συνάρτησης. 26

Μέγεθος τύπων και μεταβλητών (2/2) Ο μεταγλωττιστής μετατρέπει το sizeof και το όρισμά του στην αντίστοιχη ποσότητα μνήμης (η οποία πρέπει, ασφαλώς, να είναι φυσικός αριθμός). Το όρισμα του sizeof μπορεί να είναι ένα από τα εξής τέσσερα: Τύπος μεταβλητής (C). Μεταβλητή (C). Κλάση (C++) ή δομή (C). Στιγμιότυπο κλάσης (C++) ή μεταβλητή τύπου δομής (C). 27

Βιβλιογραφία (1/10) 1. Alexandrescu A. (2001) Modern C++ design: generic programming and design patterns applied. USA, Addison-Wesley Publishing Company. 323 pp. ISBN-13 978-0-201-70431-0. ( 22.85, 27,42). 2. Bennett S, McRobb S and R Farmer. (2002) Object-oriented systems analysis and design using UML. 2nd Edition. McGraw- Hill Education. ISBN 0-07-709864-1. 3. Booch G, Maksimchuk RA, Engle MW, Young BJ, Conallen J and Houston KA. (2007) Object-oriented analysis and design with applications. 3rd ed. USA, Addison-Wesley. 691 pp. ISBN10 0-201-89551-X. ISBN13 978-0-201-89551-3. ( 43.44, 52.56). 28

Βιβλιογραφία (2/10) 4. Carrano FM and Henry T. (2013) Data abstraction and problem solving with C++: walls and mirrors. 6th ed. UK, Pearson Education Limited. 833 pp. ISBN10 0-273-76841-7, ISBN13 978-0-76841-8. 5. Deitel HM and Deitel PJ. (2010) C++ προγραμματισμός. 6η Έκδοση. Ελλάδα, Εκδόσεις Μ. Γκιούρδα. 1448 σελ. ISBN13 978-960-512-591-2. 6. Fowler M. (1999) Refactoring: improving the design of existing code. USA, Addison Wesley Longman, Inc. 431 pp. ISBN13 978-0-201-48567-7. ( 38.62, 49.05). 29

Βιβλιογραφία (3/10) 7. Fowler M. (2004) UML distilled: a brief guide to the standard object modeling language. 3rd ed. USA, Pearson Education, Inc. 175 pp. ISBN13 978-0-321-19368-1. ( 30.10, 38.23). 8. Kruse RL and Ryba AJ. (1999) Data structures and program design in C++. USA, Prentice Hall. 717 pp. ISBN 0-13- 082640-5. ( 40.74). 9. Lafore R. (2006) Αντικειμενοστρεφής προγραμματισμός με τη C++. Ελλάδα, Εκδόσεις Κλειδάριθμος. 1040 σελ. ISBN10 960-209-904-6. 30

Βιβλιογραφία (4/10) 10. Lafore, R. (2002) Object-oriented programming in C++. 4th ed. USA, Sams Publishing. 1012 pp. ISBN-10 0-672-32308-7. ISBN-13 978-0-672-32308-9. ( 29.60, 33.35). 11. Lakos, J. (1996) Large-Scale Software Design in C++. USA, Addison-Wesley. 852 pp. ISBN-10 0-201-63362-0. ISBN-13 978-0-201-63362-7. ( 26.26, 30.20). 12. MacLennan BJ. (1987) Principles of programming languages: design, evaluation, and implementation. 2nd ed. USA, CBS College Publishing. 568 pp. ISBN 0-03-021999-X. ( 8.00). 31

Βιβλιογραφία (5/10) 13. Martin RC. (2012) Agile software development: principles, patterns, and practices. USA, Pearson Education, Inc. 529 pp. ISBN10 0-13-276068-4. ISBN13 978-0-13-276058-4. ( 54.21, 65.59). 14. McConnell S. (1993) Code complete: a practical handbook of software construction. USA, Microsoft Press. 857 pp. ( 25.99). 15. McConnell S. (1996) Rapid development: taming wild software schedules. USA, Microsoft Press. 647 pp. ISBN 1-55615-900-5. ( 25.99). 32

Βιβλιογραφία (6/10) 16. McConnell S. (2004) Professional software development: shorter schedules, higher quality products, more successful projects, enhanced careers. USA, Addison-Wesley. 243 pp. ISBN 0-321-19367-9. ( 19.79, 29.08). 17. McDermid J, ed. (1991) Software engineer s reference book. Great Britain, Butterworth-Heinemann Ltd. 1140 pp. ISBN 0-7506-0813-7. ( 40.00). 18. Meyers S. (1996) More effective C++: 35 new ways to improve your programs and designs. USA, Addison-Wesley. 318 pp. ISBN 0-201-63371-X. ( 25.29, 36.90). 33

Βιβλιογραφία (7/10) 19. Meyers S. (2005) Effective C++: 55 specific ways to improve your programs and designs. 3rd ed. USA, Pearson Education, Inc. 297 pp. ISBN 0-321-33487-6. ( 18.52, 27.01). 20. Pressman RS. (2005) Software engineering: a practitioner s approach. 6th int. ed. Singapore, McGraw-Hill. 912 pp. ISBN 007-123840-9. ( 45.06, 65.83). 21. Reddy M. (2011) API design for C++. USA, Morgan Kaufmann Publishers. 441 pp. ISBN13 978-0-12-385003-4. ( 28.01, 32.21). 22. Sahni S. (2004) Δομές δεδομένων, αλγόριθμοι, και εφαρμογές στη C++. Ελλάδα/ΗΠΑ, Εκδόσεις Τζιόλα/McGraw-Hill. 852 σελ. ISBN10 960-418-030-4. ( 66.56). 34

Βιβλιογραφία (8/10) 23. Savitch W and Mock K. (2013) Πλήρης C++. 4η Έκδοση. Ελλάδα, Εκδόσεις Τζιόλα. 1024 σελ. ISBN13 978-960-418-358-6. ( 76.14). 24. Savitch W. (2015) Java: and introduction to problem solving and programming. 7th ed. USA, Pearson Education, Inc. 989 pp (+204 pp web chapters). ISBN10 0-13-376626-8. ISBN13 978-0- 376626-4. ( 83.99, 97.85 104.75, $122.68). 25. Schildt H. (2000) Ο οδηγός της C++. 3η Έκδοση, Εκδόσεις Μ. Γκιούρδα. 748 σελ. ISBN10 960-512-229-4. ( 29.00). 26. Schildt H. (2004) Μάθετε τη C++ από το μηδέν. 3η Έκδοση. Ελλάδα, Εκδόσεις Κλειδάριθμος. 660 σελ. ISBN10 960-209-731-0. ( 46.90). 35

Βιβλιογραφία (9/10) 27. Sommerville I. (2004) Software Engineering. 7th ed. USA, Addison-Wesley. 759 pp. ISBN 0-321-21026-3. ( 40.95, 60.17). 28. Stroustrup B. (2000) The C++ programming language. Special Edition. USA, Addison-Wesley Longman, Inc. 1020 pp. ISBN 0-201-70073-5. ( 37.20, 54.26). 29. Sutter H and Alexandrescu A. (2005) C++ coding standards: 101 rules, guidelines, and best practices. USA, Pearson Education, Inc. 220 pp. ISBN10 0-321-11358-6. ISBN13 978-0-321-11358-0. ( 19.71, 22.67). 36

Βιβλιογραφία (10/10) 30. Sutter H. (2000) Exceptional C++: 47 engineering puzzles, programming problems, and solutions. USA, Addison- Wesley Longman, Inc. 215 pp. ISBN10 0-201-61562-2. ISBN13 978-0-201-61562-3. ( 24.32, 27.97). 31. Sutter H. (2002) More exceptional C++: 40 new engineering puzzles, programming problems, and solutions. USA, Pearson Education, Inc. 279 pp. ISBN10 0-201-70434-X. ISBN13 978-0-201-70434-1. ( 28.05, 32.26). 32. Χατζηγιαννάκης ΝΜ. (2014) Η γλώσσα C++ σε βάθος. 2η αναθεωρημένη έκδοση. Ελλάδα, Εκδόσεις Κλειδάριθμος. 974 σελ. ISBN13 978-960-461-620-6. ( 89.00). 37

Τέλος Ενότητας

Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Σίσιας Γεώργιος. «Προγραμματισμός ΙΙ». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: 39

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 40

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 41