(Translated by https://www.hiragana.jp/)
Τύπος δεδομένων - Βικιπαίδεια Μετάβαση σしぐまτたうοおみくろん περιεχόμενο

Τύπος δεδομένων

Από τたうηいーた Βικιπαίδεια, τたうηいーたνにゅー ελεύθερη εγκυκλοπαίδεια

Σしぐまτたうοおみくろんνにゅー προγραμματισμό υπολογιστών, ένας τύπος δεδομένων (data type) είναι μία κατηγοριοποίηση πぱいοおみくろんυうぷしろん προσδιορίζει διαφορετικούς τύπους από δεδομένα, όπως κινητής υποδιαστολής (floating-point), ακεραίους (integer), ή τύπους δεδομένων αλήθειας (Boolean), ηいーた οποία καθορίζει τις πιθανές τιμές γがんまιいおたαあるふぁ αυτόν τたうοおみくろんνにゅー τύπο, τις λειτουργίες πぱいοおみくろんυうぷしろん μπορούν νにゅーαあるふぁ επιτελεστούν σしぐまεいぷしろん τιμές αυτού τたうοおみくろんυうぷしろん τύπου, τたうηいーたνにゅー σημασία τたうωおめがνにゅー δεδομένων κかっぱαあるふぁιいおた τたうοおみくろんνにゅー τρόπο πぱいοおみくろんυうぷしろん οおみくろんιいおた τιμές αυτού τたうοおみくろんυうぷしろん τύπου μπορούν νにゅーαあるふぁ αποθηκευτούν.[1][2] Οおみくろんιいおた τύποι δεδομένων χρησιμοποιούνται μέσα σしぐまεいぷしろん συστήματα τύπων (type systems), τたうαあるふぁ οποία προσφέρουν διάφορους τρόπους γがんまιいおたαあるふぁ τたうοおみくろんνにゅー ορισμό, τたうηいーたνにゅー υλοποίηση κかっぱαあるふぁιいおた τたうηいーたνにゅー χρήση τους. Διαφορετικά συστήματα τύπων εξασφαλίζουν διαφορετικούς βαθμούς ασφάλειας τύπων (type safety). Τυπικά, ένας τύπος μπορεί νにゅーαあるふぁ οριστεί ως "οποιαδήποτε ιδιότητα ενός προγράμματος τたうηいーたνにゅー οποία μπορούμε νにゅーαあるふぁ προσδιορίσουμε πぱいρろーιいおたνにゅー τたうηいーたνにゅー εκτέλεση τたうοおみくろんυうぷしろん προγράμματος".[3]

Επισκόπηση[Επεξεργασία | επεξεργασία κώδικα]

Σχεδόν όλες οおみくろんιいおた γλώσσες προγραμματισμού περιλαμβάνουν ρητά τたうηいーたνにゅー έννοια τたうοおみくろんυうぷしろん τύπου δεδομένων, παρόλο πぱいοおみくろんυうぷしろん διαφορετικές γλώσσες μπορεί νにゅーαあるふぁ χρησιμοποιούν διαφορετική ορολογία. Οおみくろんιいおた συνήθεις τύποι δεδομένων είναι:

Γがんまιいおたαあるふぁ παράδειγμα, σしぐまτたうηいーたνにゅー γλώσσα προγραμματισμού Java, οおみくろん τύπος "int" αναπαριστά τたうοおみくろん σύνολο τたうωおめがνにゅー 32-bit ακεραίων τたうοおみくろんυうぷしろん οποίου οおみくろんιいおた τιμές ανήκουν σしぐまτたうοおみくろん διάστημα από -2,147,483,648 έως 2,147,483,647, όπως κかっぱαあるふぁιいおた τις λειτουργίες πぱいοおみくろんυうぷしろん μπορούν νにゅーαあるふぁ εφαρμοστούν πάνω σしぐまεいぷしろん ακέραιους, όπως ηいーた πρόσθεση, ηいーた αφαίρεση κかっぱαあるふぁιいおた οおみくろん πολλαπλασιασμός. Τたうαあるふぁ χρώματα αφετέρου αναπαρίστανται από τρία bytes πぱいοおみくろんυうぷしろん υποδηλώνουν τたうηいーたνにゅー ποσότητα από κόκκινο, πράσινο κかっぱαあるふぁιいおた μみゅーπぱいλらむだεいぷしろん, κかっぱαあるふぁιいおた μία συμβολοσειρά πぱいοおみくろんυうぷしろん αναπαριστά τたうοおみくろん όνομα τたうοおみくろんυうぷしろん χρώματος. Οおみくろんιいおた επιτρεπτές λειτουργίες περιλαμβάνουν πρόσθεση κかっぱαあるふぁιいおた αφαίρεση, αλλά όχι πολλαπλασιασμό.

Οおみくろんιいおた περισσότερες γλώσσες προγραμματισμού επιτρέπουν επίσης σしぐまτたうοおみくろんνにゅー προγραμματιστή νにゅーαあるふぁ ορίσει επιπλέον τύπους δεδομένων, συνήθως συνδυάζοντας πολλαπλά στοιχεία από άλλους τύπους κかっぱαあるふぁιいおた ορίζοντας τις έγκυρες λειτουργίες τたうοおみくろんυうぷしろん νέου τύπου δεδομένων. Γがんまιいおたαあるふぁ παράδειγμα, ένας προγραμματιστής μπορεί νにゅーαあるふぁ δημιουργήσει έναν καινούργιο τύπο δεδομένων πぱいοおみくろんυうぷしろん θしーたαあるふぁ ονομάζεται "μιγαδικός αριθμός", οおみくろん οποίος θしーたαあるふぁ περιλάμβανε πραγματικά κかっぱαあるふぁιいおた φανταστικά μέρη.

Ένας τύπος δεδομένων αναπαριστά επίσης έναν περιορισμό σしぐまτたうηいーたνにゅー ερμηνεία τたうωおめがνにゅー δεδομένων σしぐまεいぷしろん ένα σύστημα τύπων, περιγράφοντας τたうηいーたνにゅー αναπαράσταση, τたうηいーたνにゅー ερμηνεία κかっぱαあるふぁιいおた τたうηいーたνにゅー δομή τたうωおめがνにゅー τιμών ή αντικειμένων πぱいοおみくろんυうぷしろん αποθηκεύονται σしぐまτたうηいーたνにゅー μνήμη τたうοおみくろんυうぷしろん υπολογιστή. Τたうοおみくろん σύστημα τύπων χρησιμοποιεί τたうηいーたνにゅー πληροφορία τたうοおみくろんυうぷしろん τύπου δεδομένων γがんまιいおたαあるふぁ νにゅーαあるふぁ ελέγξει τたうηいーたνにゅー ορθότητα τたうωおめがνにゅー προγραμμάτων τたうαあるふぁ οποία έχουν πρόσβαση ή χειρίζονται τたうαあるふぁ δεδομένα.

Κλάσεις τύπων δεδομένων[Επεξεργασία | επεξεργασία κώδικα]

Τύποι δεδομένων μηχανής[Επεξεργασία | επεξεργασία κώδικα]

Όλα τたうαあるふぁ δεδομένα στους υπολογιστές πぱいοおみくろんυうぷしろん βασίζονται σしぐまεいぷしろん ψηφιακά ηλεκτρονικά κυκλώματα αναπαρίστανται ως bit (εναλλακτικές 0 και 1) σしぐまτたうοおみくろん πぱいιいおたοおみくろん χαμηλό επίπεδο. Ηいーた μικρότερη μονάδα δεδομένων πぱいοおみくろんυうぷしろん μπορεί νにゅーαあるふぁ διευθυνσιοδοτηθεί είναι συνήθως μみゅーιいおたαあるふぁ ομάδα από bit πぱいοおみくろんυうぷしろん αποκαλούνται byte (συνήθως μία οκτάδα (octet), πぱいοおみくろんυうぷしろん είναι 8 bit). Ηいーた μονάδα πぱいοおみくろんυうぷしろん μπορεί νにゅーαあるふぁ επεξεργαστεί από εντολές γλώσσας μηχανής ονομάζεται λέξη (word) (ηいーた οποία από τたうοおみくろん 2011 είναι τυπικά 32 ή 64 bit). Οおみくろんιいおた περισσότερες εντολές ερμηνεύουν τたうηいーたνにゅー λέξη ως έναν δυαδικό αριθμό, έτσι ώστε ένας 32 bit αριθμός νにゅーαあるふぁ μπορεί νにゅーαあるふぁ αναπαραστήσει μみゅーηいーた προσημασμένες ακέραιες τιμές από 0 έως ή προσημασμένες ακέραιες τιμές από έως . Λόγω τたうοおみくろんυうぷしろん συμπληρώματος ως προς 2, ηいーた μηχανή κかっぱαあるふぁιいおた ηいーた γλώσσα μηχανής ως επί τたうοおみくろん πλείστον δでるたεいぷしろんνにゅー χρειάζεται νにゅーαあるふぁ διακρίνουν τους μみゅーηいーた προσημασμένους από τους προσημασμένους τύπους δεδομένων.

Υπάρχει ένα συγκεκριμένο σύνολο εντολών αριθμητικών πράξεων, οおみくろんιいおた οποίες χρησιμοποιούν διαφορετική ερμηνεία τたうωおめがνにゅー bit μίας λέξης σしぐまαあるふぁνにゅー έναν αριθμό κινητής υποδιαστολής.

Οおみくろんιいおた τύποι δεδομένων μηχανής είναι αναγκαίο νにゅーαあるふぁ εκτίθενται ή είναι διαθέσιμοι σしぐまεいぷしろん συστήματα ή χαμηλού επιπέδου γλώσσες προγραμματισμού ώστε νにゅーαあるふぁ επιτρέπουν τたうοおみくろんνにゅー ευέλικτο έλεγχο τたうοおみくろんυうぷしろん υλικού (hardware). Ηいーた γλώσσα προγραμματισμού C γがんまιいおたαあるふぁ παράδειγμα είναι εφοδιασμένη μみゅーεいぷしろん τύπους δεδομένων διαφόρων μεγεθών, όπως οおみくろん short κかっぱαあるふぁιいおた οおみくろん long. Αあるふぁνにゅー ένας αντίστοιχος εγγενής (native) τύπος δでるたεいぷしろんνにゅー υπάρχει σしぐまτたうηいーたνにゅー πλατφόρμα στόχο, οおみくろん μεταγλωττιστής θしーたαあるふぁ τたうοおみくろんνにゅー "σπάσει" σしぐまεいぷしろん κώδικα πぱいοおみくろんυうぷしろん χρησιμοποιεί τύπους πぱいοおみくろんυうぷしろん υπάρχουν. Γがんまιいおたαあるふぁ παράδειγμα, αあるふぁνにゅー ζητείται ένας ακέραιος τたうωおめがνにゅー 32 bit σしぐまεいぷしろん μία πλατφόρμα τたうωおめがνにゅー 16 bit, οおみくろん μεταγλωττιστής θしーたαあるふぁ τたうοおみくろんνにゅー αντιμετωπίσει σιωπηρά ως έναν πίνακα από δύο ακεραίους τたうωおめがνにゅー 16 bit.

Πολλές γλώσσες επιτρέπουν δυαδικά κかっぱαあるふぁιいおた δεκαεξαδικά λεκτικά (literals), γがんまιいおたαあるふぁ τたうοおみくろんνにゅー εύκολο χειρισμό δεδομένων μηχανής.

Σしぐまεいぷしろん υψηλότερου επιπέδου προγραμματισμό, οおみくろんιいおた τύποι δεδομένων μηχανής είναι συνήθως κρυμμένοι ή αφηρημένοι (abstracted) ως μία λεπτομέρεια της υλοποίησης πぱいοおみくろんυうぷしろん θしーたαあるふぁ καθιστούσε τたうοおみくろんνにゅー κώδικα λιγότερο μεταφέρσιμο αあるふぁνにゅー ήταν φανερή σしぐまτたうοおみくろんνにゅー χρήστη. Γがんまιいおたαあるふぁ παράδειγμα, μπορεί νにゅーαあるふぁ παρέχεται ένας γενικευμένος αριθμητικός τύπος αντί ενός τύπου συγκεκριμένου μεγέθους.

Οおみくろん τύπος δεδομένων αληθείας[Επεξεργασία | επεξεργασία κώδικα]

Κύριο: Τύπος δεδομένων αλήθειας

Οおみくろん τύπος δεδομένων αληθείας αναπαριστά τις τιμές: αληθές κかっぱαあるふぁιいおた ψευδές. Παρότι μόνο δύο τιμές είναι πιθανές, σπάνια αναπαρίστανται στους υπολογιστές μみゅーεいぷしろん ένα μόνο δυαδικό ψηφίο γがんまιいおたαあるふぁ λόγους αποδοτικότητας. Πολλές γλώσσες προγραμματισμού δでるたεいぷしろんνにゅー είναι εφοδιασμένες μみゅーεいぷしろん ρητό τύπο αληθείας. Αντί αυτού ερμηνεύουν τたうοおみくろん 0 (γがんまιいおたαあるふぁ παράδειγμα) ως ψευδές κかっぱαあるふぁιいおた τις υπόλοιπες τιμές ως αληθείς.

Αριθμητικοί τύποι δεδομένων[Επεξεργασία | επεξεργασία κώδικα]

Κάποια παραδείγματα αριθμητικών τύπων δεδομένων είναι:

  • Οおみくろん ακέραιος (integer) τύπος δεδομένων, ή ολόκληρος αριθμός. Μπορεί νにゅーαあるふぁ έχει υποτύπους ανάλογα μみゅーεいぷしろん τたうηいーたνにゅー ικανότητά τους νにゅーαあるふぁ συμπεριλαμβάνουν αρνητικές τιμές (γがんまιいおたαあるふぁ παράδειγμα unsigned σしぐまτたうηいーたνにゅー γλώσσα C κかっぱαあるふぁιいおた C++). Μπορεί επίσης νにゅーαあるふぁ έχει έναν μικρό αριθμό από προκαθορισμένους υποτύπους (όπως οおみくろん short κかっぱαあるふぁιいおた οおみくろん long σしぐまτたうηいーたνにゅー C/C++) ή νにゅーαあるふぁ επιτρέπουν στους χρήστες νにゅーαあるふぁ ορίσουν ελεύθερα υποτμήματα όπως τたうοおみくろん 1..12 (γがんまιいおたαあるふぁ παράδειγμα οおみくろんιいおた Pascal/Ada).
  • Οおみくろん τύπος δεδομένων κινητής υποδιαστολής (floating point), οおみくろん οποίος αποκαλείται κάποιες φορές παραπλανητικά πραγματικός, περιέχει κλασματικές τιμές. Συνήθως έχουν προκαθορισμένα όρια σしぐまτたうηいーたνにゅー μέγιστη τιμή τους κかっぱαあるふぁιいおた τたうηいーたνにゅー ακρίβειά τους.
  • Οおみくろん τύπος δεδομένων σταθερής υποδιαστολής (fixed point), πぱいοおみくろんυうぷしろん προσφέρεται γがんまιいおたαあるふぁ τたうηいーたνにゅー αναπαράσταση νομισματικών τιμών. Συνήθως αναπαρίσταται εσωτερικά ως ακέραιος, γεγονός πぱいοおみくろんυうぷしろん οδηγεί σしぐまεいぷしろん προκαθορισμένες τιμές.
  • Οおみくろん αριθμητικός τύπος μεγάλων αριθμών (Bignum) ή αριθμών μεταβλητής ακρίβειας (arbitrary precision) πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー έχουν προκαθορισμένη ακρίβεια. Δでるたεいぷしろんνにゅー είναι πρωταρχικοί τύποι κかっぱαあるふぁιいおた χρησιμοποιούνται μみゅーεいぷしろん φειδώ γがんまιいおたαあるふぁ λόγους αποδοτικότητας.

Συμβολοσειρές κかっぱαあるふぁιいおた τύποι δεδομένων κειμένου[Επεξεργασία | επεξεργασία κώδικα]

Όπως:

  • Αλφαριθμητικός χαρακτήρας (alphanumeric character). Ένα γράμμα της αλφαβήτου, ένα ψηφίο, ένα κενό, ένα σημείο στίξης κかっぱτたうλらむだ.
  • Αλφαριθμητική συμβολοσειρά (string), δηλαδή μία ακολουθία χαρακτήρων. Χρησιμοποιούνται συνήθως γがんまιいおたαあるふぁ νにゅーαあるふぁ αναπαραστήσουν λέξεις ή κείμενο.

Οおみくろんιいおた χαρακτήρες κかっぱαあるふぁιいおた οおみくろんιいおた συμβολοσειρές αποθηκεύουν ακολουθίες από ένα σύνολο χαρακτήρων (character sets) όπως οおみくろん κώδικας ASCII. Επειδή τたうαあるふぁ περισσότερα σύνολα χαρακτήρων περιλαμβάνουν κかっぱαあるふぁιいおた τたうαあるふぁ ψηφία, είναι δυνατό νにゅーαあるふぁ έχουμε μία αριθμητική συμβολοσειρά, όπως ηいーた "1234". Ωστόσο πολλές γλώσσες θεωρούν ότι ανήκει σしぐまεいぷしろん διαφορετικό τύπο από τたうοおみくろんνにゅー αυτόν της αριθμητικής τιμής 1234.

Οおみくろんιいおた τύποι τたうωおめがνにゅー χαρακτήρων κかっぱαあるふぁιいおた τたうωおめがνにゅー συμβολοσειρών μπορεί νにゅーαあるふぁ έχουν διαφορετικούς υποτύπους σύμφωνα μみゅーεいぷしろん τたうοおみくろん απαιτούμενο "μέγεθος" τたうοおみくろんυうぷしろん χαρακτήρα. Οおみくろん αρχικός κώδικας ASCII μεγέθους 7-bit αποδείχθηκε ανεπαρκής κかっぱαあるふぁιいおた αντικαταστάθηκε από 8 και 16-bit σύνολα χαρακτήρων, τたうαあるふぁ οποία μπορούν νにゅーαあるふぁ κωδικοποιήσουν ένα ευρύ φάσμα από μみゅーηいーた λατινικά αλφάβητα (Εβραϊκά, Κινέζικα) κかっぱαあるふぁιいおた άλλα σύμβολα.

Οおみくろんιいおた συμβολοσειρές μπορεί νにゅーαあるふぁ είναι σταθερού είτε επεκτατού μεγέθους, ακόμα κかっぱαあるふぁιいおた μέσα σしぐまτたうηいーたνにゅー ίδια γλώσσα. Μπορεί νにゅーαあるふぁ έχουν υποτύπους ανάλογα μみゅーεいぷしろん τたうοおみくろん μέγιστο μέγεθός τους.

Σημείωση: οおみくろんιいおた συμβολοσειρές δでるたεいぷしろんνにゅー είναι πρωταρχικοί τύποι σしぐまεいぷしろん όλες τις γλώσσες. Γがんまιいおたαあるふぁ παράδειγμα σしぐまτたうηいーたνにゅー C αποτελούνται από πίνακες (arrays) χαρακτήρων.

Απαριθμήσεις[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた απαριθμήσεις. Αυτές έχουν τιμές πぱいοおみくろんυうぷしろん διαφέρουν μεταξύ τους, οおみくろんιいおた οποίες μπορούν νにゅーαあるふぁ συγκριθούν κかっぱαあるふぁιいおた νにゅーαあるふぁ ανατεθούν, αλλά δでるたεいぷしろんνにゅー έχουν απαραίτητα κάποια συγκεκριμένη αναπαράσταση σしぐまτたうηいーたνにゅー μνήμη τたうοおみくろんυうぷしろん υπολογιστή. Οおみくろんιいおた μεταγλωττιστές κかっぱαあるふぁιいおた οおみくろんιいおた διερμηνευτές τις αναπαριστούν αυθαίρετα. Γがんまιいおたαあるふぁ παράδειγμα, τたうαあるふぁ τέσσερα χαρτιά σしぐまεいぷしろん μία τράπουλα θしーたαあるふぁ μπορούσαν νにゅーαあるふぁ είναι τέσσερις απαριθμητές μみゅーεいぷしろん ονόματα ΣしぐまΠぱいΑあるふぁΘしーたΙいおた, ΚかっぱΑあるふぁΡろーΩおめが, ΜΠΑΣΤΟΥΝΙ, ΚかっぱΟおみくろんΥうぷしろんΠぱいΑあるふぁ, πぱいοおみくろんυうぷしろん θしーたαあるふぁ ανήκουν σしぐまεいぷしろん μία απαρίθμηση μみゅーεいぷしろん όνομα τράπουλα. Αあるふぁνにゅー ηいーた μεταβλητή V δηλωθεί νにゅーαあるふぁ έχει τράπουλα γがんまιいおたαあるふぁ τύπο, μπορούμε νにゅーαあるふぁ αναθέσουμε οποιαδήποτε από αυτές τις τιμές σしぐまεいぷしろん αυτή τたうηいーたνにゅー μεταβλητή. Κάποιες υλοποιήσεις επιτρέπουν σしぐまτたうοおみくろんνにゅー προγραμματιστή νにゅーαあるふぁ αναθέσει ακέραιες τιμές στις τιμές απαρίθμησης, ή ακόμα κかっぱαあるふぁιいおた νにゅーαあるふぁ τις αντιμετωπίζει ως τυπικά ισοδύναμες (type-equivalent) μみゅーεいぷしろん τους ακεραίους.

Επαγόμενοι Τύποι[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた επαγόμενοι τύποι μπορούν νにゅーαあるふぁ βασίζονται, ή νにゅーαあるふぁ προέρχονται από τους βασικούς τύπους πぱいοおみくろんυうぷしろん εξηγήθηκαν παραπάνω.

Σしぐまεいぷしろん κάποια γλώσσα σしぐまαあるふぁνにゅー τたうηいーたνにゅー C, οおみくろんιいおた συναρτήσεις (functions) έχουν τύπο πぱいοおみくろんυうぷしろん προέρχεται από τたうοおみくろんνにゅー τύπο της τιμής επιστροφής (return value) τους.

Δείκτες κかっぱαあるふぁιいおた Αναφορές[Επεξεργασία | επεξεργασία κώδικα]

Δείτε επίσης: Δείκτης (πληροφορική), Αναφορά (επιστήμη υπολογιστών)

Οおみくろん βασικότερος μみゅーηいーた σύνθετος επαγόμενος τύπος είναι οおみくろん δείκτης, ένας τύπος δεδομένων τたうοおみくろんυうぷしろん οποίου ηいーた τιμή αναφέρεται ευθέως σしぐまεいぷしろん (ή "δείχνει σしぐまεいぷしろん") μία άλλη τιμή ηいーた οποία είναι αποθηκευμένη κάπου αλλού σしぐまτたうηいーたνにゅー μνήμη τたうοおみくろんυうぷしろん υπολογιστή χρησιμοποιώντας τたうηいーたνにゅー διεύθυνση μνήμης της. Είναι μία πρωταρχική μορφή αναφοράς. (Σしぐまεいぷしろん καθημερινή ορολογία, ένας αριθμός σελίδας σしぐまεいぷしろん ένα βιβλίο θしーたαあるふぁ μπορούσε νにゅーαあるふぁ θεωρηθεί ένα κομμάτι δεδομένων πぱいοおみくろんυうぷしろん αναφέρεται σしぐまεいぷしろん ένα άλλο). Οおみくろんιいおた δείκτες αποθηκεύονται συχνά σしぐまεいぷしろん μία μορφή παρόμοια μみゅーεいぷしろん έναν ακέραιο. Ωστόσο, σしぐまτたうηいーたνにゅー προσπάθειά μας νにゅーαあるふぁ δούμε τたうαあるふぁ περιεχόμενα πぱいοおみくろんυうぷしろん δείχνει ένας δείκτης (dereference) τたうοおみくろんυうぷしろん οποίου ηいーた τιμή δでるたεいぷしろんνにゅー είναι κάποια έγκυρη διεύθυνση μνήμης τたうοおみくろん πρόγραμμα θしーたαあるふぁ μπορούσε νにゅーαあるふぁ τερματιστεί βίαια (crash). Γがんまιいおたαあるふぁ τたうηいーたνにゅー βελτίωση αυτού τたうοおみくろんυうぷしろん πιθανού προβλήματος, οおみくろんιいおた δείκτες θεωρούνται διαφορετικού τύπου από τたうοおみくろんνにゅー τύπο τたうωおめがνにゅー δεδομένων πぱいοおみくろんυうぷしろん δείχνουν, ακόμα κかっぱαあるふぁιいおた αあるふぁνにゅー ηいーた υποκείμενη αναπαράσταση είναι ηいーた ίδια.

Σύνθετοι τύποι[Επεξεργασία | επεξεργασία κώδικα]

Οおみくろんιいおた σύνθετοι τύποι παράγονται από περισσότερους από έναν πρωταρχικούς τύπους. Αυτό μπορεί νにゅーαあるふぁ γίνει μみゅーεいぷしろん πολλούς τρόπους. Οおみくろんιいおた διαφορετικοί τρόποι μみゅーεいぷしろん τους οποίους μπορούμε νにゅーαあるふぁ τους συνδυάσουμε ονομάζονται δομές δεδομένων. Ηいーた κατασκευή ενός σύνθετου τύπου από πρωταρχικούς τύπους οδηγεί σしぐまτたうηいーた δημιουργία ενός νέου τύπου, γがんまιいおたαあるふぁ παράδειγμα οおみくろん τύπος πίνακας-ακεραίων είναι διαφορετικός τύπος από τたうοおみくろんνにゅー τύπο ακέραιος.

  • Ένας πίνακας (array) αποθηκεύει έναν αριθμό από στοιχεία ιδίου τύπου σしぐまεいぷしろん μία συγκεκριμένη σειρά. Προσπελαύνονται χρησιμοποιώντας έναν ακέραιο γがんまιいおたαあるふぁ νにゅーαあるふぁ δείξουμε πぱいοおみくろんιいおたοおみくろん στοιχείο απαιτείται (παρόλο πぱいοおみくろんυうぷしろん τたうαあるふぁ στοιχεία μπορεί νにゅーαあるふぁ είναι οποιουδήποτε σχεδόν τύπου). Οおみくろんιいおた πίνακες μπορεί νにゅーαあるふぁ είναι σταθερού μεγέθους ή επεκτάσιμοι.
  • Εγγραφή (επίσης γνωστή ως δυάδα (tuple) ή δομή (struct)). Οおみくろんιいおた εγγραφές είναι από τις απλούστερες δομές δεδομένων. Μία εγγραφή είναι μία τιμή πぱいοおみくろんυうぷしろん περιέχει άλλες τιμές, συνήθως μみゅーεいぷしろん σταθερό πλήθος κかっぱαあるふぁιいおた σειρά κかっぱαあるふぁιいおた δεικτοδοτημένες μみゅーεいぷしろん ονόματα. Τたうαあるふぁ στοιχεία μίας εγγραφής αποκαλούνται συνήθως πεδία ή μέλη.
  • Ένωση. Μία δήλωση τύπου ένωσης καθορίζει πぱいοおみくろんιいおたοおみくろんιいおた από ένα πλήθος πρωταρχικών τύπων θしーたαあるふぁ αποθηκευτούν σしぐまτたうαあるふぁ στιγμιότυπά τたうοおみくろんυうぷしろん, γがんまιいおたαあるふぁ παράδειγμα "float ή long integer". Σしぐまεいぷしろん σύγκριση μみゅーεいぷしろん μία εγγραφή, ηいーた οποία θしーたαあるふぁ μπορούσε νにゅーαあるふぁ περιέχει μία τιμή κινητής υποδιαστολής κかっぱαあるふぁιいおた έναν ακέραιο, ηいーた ένωση περιέχει μόνο μία από τις δύο τιμές κάθε φορά.
  • Ηいーた ένωση μみゅーεいぷしろん ετικέτα (γνωστή κかっぱαあるふぁιいおた ως παραλλαγή (variant), παραλλαγμένη εγγραφή (variant record), διακεκριμένη ένωση (discriminated union), ή διαχωρισμένη ένωση (disjoint union)) περιέχει ένα επιπλέον πεδίο τたうοおみくろん οποίο υποδεικνύει τたうοおみくろんνにゅー τρέχοντα τύπο, γがんまιいおたαあるふぁ περισσότερη ασφάλεια τύπων.
  • Τたうοおみくろん σύνολο είναι ένας αφηρημένος τύπος δεδομένων πぱいοおみくろんυうぷしろん μπορεί νにゅーαあるふぁ αποθηκεύει συγκεκριμένες τιμές, χωρίς κάποια συγκεκριμένη διάταξη κかっぱαあるふぁιいおた χωρίς επαναλαμβανόμενες τιμές. Οおみくろんιいおた τιμές δでるたεいぷしろんνにゅー ανακτώνται από τたうοおみくろん σύνολο, αλλά οおみくろん προγραμματιστής μπορεί νにゅーαあるふぁ ρωτήσει τたうοおみくろん κατά πόσο μία τιμή περιέχεται σしぐまτたうοおみくろん σύνολο, παίρνοντας ως απάντηση ένα λογικό "νにゅーαあるふぁιいおた" ή "όχι".
  • Ένα αντικείμενο περιέχει έναν αριθμό από πεδία δεδομένων, όπως οおみくろんιいおた εγγραφές, κかっぱαあるふぁιいおた έναν αριθμό από κομμάτια κώδικα γがんまιいおたαあるふぁ νにゅーαあるふぁ τたうηいーたνにゅー προσπέλασή τους κかっぱαあるふぁιいおた τたうηいーたνにゅー τροποποίησή τους. Οおみくろんιいおた δομές δεδομένων πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー περιέχουν κώδικα, όπως οおみくろんιいおた παραπάνω, ονομάζονται απλές δομές δεδομένων (plain old data structures).

Πολλοί άλλοι σύνθετοι τύποι είναι δυνατοί, αλλά τείνουν νにゅーαあるふぁ είναι περαιτέρω παραλλαγές κかっぱαあるふぁιいおた συνθέσεις τたうωおめがνにゅー παραπάνω.

Αφηρημένοι τύποι[Επεξεργασία | επεξεργασία κώδικα]

Κύριο: Αφηρημένος τύπος δεδομένων

Κάθε τύπος πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー περιλαμβάνει κάποια υλοποίηση είναι ένας αφηρημένος τύπος δεδομένων. Γがんまιいおたαあるふぁ παράδειγμα, μία στοίβα (ηいーた οποία είναι ένας αφηρημένος τύπος δεδομένων) μπορεί νにゅーαあるふぁ υλοποιηθεί μみゅーεいぷしろん έναν πίνακα (ένα συνεχές κομμάτι μνήμης πぱいοおみくろんυうぷしろん περιέχει πολλαπλές τιμές), ή μみゅーεいぷしろん μία συνδεδεμένη λίστα (ένα σύνολο από μみゅーηいーた συνεχόμενα κομμάτια μνήμης πぱいοおみくろんυうぷしろん συνδέονται μみゅーεいぷしろん δείκτες).

Οおみくろんιいおた αφηρημένοι τύποι δεδομένων μπορούν νにゅーαあるふぁ χειριστούν από κώδικα πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー γνωρίζει ή "ενδιαφέρεται" γがんまιいおたαあるふぁ τους τύπους πぱいοおみくろんυうぷしろん περιέχονται σしぐまεいぷしろん αυτούς. Οおみくろん προγραμματισμός πぱいοおみくろんυうぷしろん δでるたεいぷしろんνにゅー γνωρίζει τους υποκείμενους συγκεκριμένους τύπους πぱいοおみくろんυうぷしろん θしーたαあるふぁ χρησιμοποιηθούν ονομάζεται γενικευμένος προγραμματισμός. Οおみくろんιいおた πίνακες κかっぱαあるふぁιいおた οおみくろんιいおた εγγραφές μπορεί νにゅーαあるふぁ περιέχουν επίσης υποκείμενους τύπους, αλλά θεωρούνται συγκεκριμένοι επειδή προσδιορίζουν τたうοおみくろん πως τたうαあるふぁ περιεχόμενα ή τたうαあるふぁ στοιχεία τους αποθηκεύονται σしぐまτたうηいーたνにゅー μνήμη.

Παραδείγματα:

  • Ένας έξυπνος δείκτης (smart pointer) είναι τたうοおみくろん αφηρημένο αντίστοιχο τたうοおみくろんυうぷしろん δείκτη. Κかっぱαあるふぁιいおた οおみくろんιいおた δύο είναι ήδη αναφορών.
  • Ένας πίνακας κατακερματισμού (hash table) ή λεξικό (dictionary) ή χάρτης/συσχετιστικός πίνακας (map/associative array) είναι μία πぱいιいおたοおみくろん ευέλικτη παραλλαγή της εγγραφής, σしぐまτたうηいーたνにゅー οποία ζευγάρια κλειδιού-τιμής μπορούν νにゅーαあるふぁ εισαχθούν κかっぱαあるふぁιいおた νにゅーαあるふぁ διαγραφούν ελεύθερα.
  • Σしぐまεいぷしろん μία ουρά (queue) όποιος εισέλθει πρώτος εξέρχεται πρώτος. Παραλλαγές είναι ηいーた δύο-άκρων ουρά (deque) κかっぱαあるふぁιいおた ηいーた ουρά προτεραιότητας (priority queue).
  • Ένα σύνολο (set) μπορεί νにゅーαあるふぁ αποθηκεύει συγκεκριμένες τιμές, χωρίς κάποια συγκεκριμένη διάταξη κかっぱαあるふぁιいおた χωρίς επαναλαμβανόμενες τιμές.
  • Σしぐまεいぷしろん μία στοίβα (stack) όποιος εισέλθει τελευταίος εξέρχεται πρώτος.
  • Ένα δέντρο (tree) είναι μία ιεραρχική δενδρική δομή.
  • Γράφος (graph).

Βοηθητικοί τύποι[Επεξεργασία | επεξεργασία κώδικα]

Γがんまιいおたαあるふぁ ευκολία, πολλές γλώσσες προγραμματισμού υψηλού επιπέδου είναι εφοδιασμένες μみゅーεいぷしろん χρήσιμους σしぐまτたうηいーたνにゅー πράξη τύπους, όπως γがんまιいおたαあるふぁ παράδειγμα χρονικές, ημερολογιακές κかっぱαあるふぁιいおた νομισματικές τιμές, ακόμα κかっぱαあるふぁιいおた στις περιπτώσεις πぱいοおみくろんυうぷしろん ηいーた γλώσσα επιτρέπει τたうηいーたνにゅー κατασκευή τους από πρωταρχικούς τύπους.

Συστήματα τύπων[Επεξεργασία | επεξεργασία κώδικα]

Κύριο λήμμα: Σύστημα τύπων

Ένα σύστημα τύπων συσχετίζει τύπους μみゅーεいぷしろん κάθε υπολογισμένη τιμή. Εξετάζοντας τたうηいーたνにゅー ροή αυτών τたうωおめがνにゅー τιμών, ένα σύστημα τύπων προσπαθεί νにゅーαあるふぁ αποδείξει ότι δでるたεいぷしろんνにゅー μπορούν νにゅーαあるふぁ συμβούν σφάλματα τύπων. Τたうοおみくろん εいぷしろんνにゅー λόγω σύστημα τύπων καθορίζει τたうιいおた αποτελεί ένα σφάλμα τύπου, αλλά τたうαあるふぁ συστήματα τύπων προσπαθούν γενικά νにゅーαあるふぁ εγγυηθούν ότι λειτουργίες πぱいοおみくろんυうぷしろん αναμένουν ένα συγκεκριμένο είδος τιμών δでるたεいぷしろんνにゅー χρησιμοποιούνται σしぐまεいぷしろん τιμές γがんまιいおたαあるふぁ τις οποίες αυτές δでるたεいぷしろんνにゅー έχουν νόημα.

Ένας μεταγλωττιστής ενδέχεται νにゅーαあるふぁ χρησιμοποιήσει τたうοおみくろんνにゅー στατικό τύπο μιας τιμής γがんまιいおたαあるふぁ νにゅーαあるふぁ βελτιστοποιήσει τたうηいーたνにゅー αποθήκευση πぱいοおみくろんυうぷしろん χρειάζεται κかっぱαあるふぁιいおた τたうηいーたνにゅー επιλογή τたうωおめがνにゅー αλγορίθμων γがんまιいおたαあるふぁ λειτουργίες πάνω σしぐまτたうηいーたνにゅー τιμή. Σしぐまεいぷしろん πολλούς μεταγλωττιστές της γλώσσας προγραμματισμού C οおみくろん τύπος δεδομένων float, γがんまιいおたαあるふぁ παράδειγμα, αναπαρίσταται μみゅーεいぷしろん 32 bit, σύμφωνα μみゅーεいぷしろん τたうοおみくろん πρότυπο της IEEE γがんまιいおたαあるふぁ αριθμούς κινητής υποδιαστολής απλής ακρίβειας. Έτσι θしーたαあるふぁ χρησιμοποιήσουν εντολές τたうοおみくろんυうぷしろん μικροεπεξεργαστή ειδικές γがんまιいおたαあるふぁ αριθμούς κινητής υποδιαστολής πάνω σしぐまεいぷしろん αυτές τις τιμές (πρόσθεση κινητής υποδιαστολής, πολλαπλασιασμό, κかっぱτたうλらむだ).

Τたうοおみくろん βάθος τたうωおめがνにゅー περιορισμών τたうωおめがνにゅー τύπων κかっぱαあるふぁιいおた οおみくろん τρόπος αποτίμησής τους επηρεάζουν τたうηいーたνにゅー τυποποίηση (typing) της γλώσσας. Μία γλώσσα προγραμματισμού μπορεί νにゅーαあるふぁ συσχετίσει περαιτέρω μία λειτουργία μみゅーεいぷしろん διαφορετικούς συγκεκριμένους αλγορίθμους γがんまιいおたαあるふぁ κάθε τύπο σしぐまτたうηいーたνにゅー περίπτωση τたうοおみくろんυうぷしろん πολυμορφισμού υποτύπων. Θεωρία τύπων είναι ηいーた μελέτη τたうωおめがνにゅー συστημάτων τύπων, μολονότι τたうαあるふぁ συγκεκριμένα (concrete) συστήματα τύπων γλωσσών προγραμματισμού προέρχονται από πρακτικά θέματα αρχιτεκτονικής υπολογιστών, υλοποίησης μεταγλωττιστών κかっぱαあるふぁιいおた σχεδιασμού γλωσσών.

Τたうαあるふぁ συστήματα τύπων μπορεί νにゅーαあるふぁ είναι στατικά ή δυναμικά, αυστηρά ή ασθενή κかっぱτたうλらむだ.

Δείτε επίσης[Επεξεργασία | επεξεργασία κώδικα]

Αναφορές[Επεξεργασία | επεξεργασία κώδικα]

  1. http://multimedia.dictionary.reference.com/browse/data+type[νεκρός σύνδεσμος]
  2. Shaffer, C.A. Data Structures and Algorthms, 1.2
  3. Programming Languages: Application and Interpretation, Shriram Krishnamurthi, Brown University

Περαιτέρω διάβασμα[Επεξεργασία | επεξεργασία κώδικα]