Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί Ενότητας Κατανόηση της έννοιας της δομής Ευχέρεια στην χρήση δομών σε προγράμματα 4
Περιεχόμενα Ορισμός δομής και δήλωση μεταβλητής τύπου δομής. Πλεονεκτήματα για τον προγραμματιστή. Δομές σαν παράμετροι συναρτήσεων. Πίνακες δομών και δείκτες. Χρησιμοποίηση δομών σε δομές δεδομένων. 5
Δομή (structure) Μια δομή είναι ένα «πακέτο» που περιέχει μεταβλητές διάφορων τύπων, οι οποίες αναφέρονται σε μια οντότητα. Μας επιτρέπει να συμπεριλάβουμε μέσα σε ένα «περίβλημα» πολλές μεταβλητές (που αναφέρονται στην ίδια οντότητα) και έτσι διευκολύνει τη συγγραφή προγραμμάτων. struct pelatis { char onoma[20], eponymo[30]; int ilikia; double poso_katathesis; float poso_daneiou; }; 6
Ορισμός δομής και δήλωση μεταβλητής τύπου δομής (1) Αρχικά δημιουργούμε το πρότυπο της δομής, στο οποίο: δίπλα από τη λέξη struct δηλώνουμε το όνομα της δομής μέσα στα άγκιστρα δηλώνουμε τους τύπους και τα ονόματα των μεταβλητών που περιέχει. Αυτά ονομάζονται πεδία της δομής. 7
Ορισμός δομής και δήλωση μεταβλητής τύπου δομής (2) Το πρότυπο μιας δομής δεν αποτελεί και δήλωση δομής. Δηλαδή, δεν μπορούμε να αποθηκεύσουμε τιμές χρησιμοποιώντας το πρότυπο. Το πρότυπο είναι σαν το int, το char, το double, κλπ. ΔΕΝ μπορούμε να αποθηκεύσουμε τιμή στο int ΠΡΕΠΕΙ πρώτα να δηλώσουμε μια μεταβλητή. struct pelatis p1, p2; 8
Ορισμός δομής και δήλωση μεταβλητής τύπου δομής (3) Όταν δηλώνουμε μια μεταβλητή δομής από το πρότυπο, δεσμεύεται μνήμη τουλάχιστον όσο το άθροισμα των μεγεθών των πεδίων που περιέχει. Η καταχώριση τιμών στα πεδία μιας δομής γίνεται με τον τελεστή τελεία. p1.poso_katathesis = 200.50; 9
Ορισμός δομής και δήλωση μεταβλητής τύπου δομής (4) Εναλλακτικά, μπορούμε να τα αρχικοποιήσουμε μαζί με την δήλωση. struct pelatis p1, p2 = { KOSTAS GEORGIOY, 200.50}; Μια δομή μπορεί να περιέχει δομή (ένθετη δομή ή φωλιασμένη δομή). Για να προσπελάσουμε ένα πεδίο ένθετης (φωλιασμένης) δομής χρησιμοποιούμε δύο φορές τον τελεστή τελεία. 10
Πίνακες δομών και δείκτες Μπορεί να δηλωθεί και δείκτης σε δομή. struct mathitis *m1; Προσπέλαση στα πεδία γίνεται είτε με την τελεία (και το γνωστό αστεράκι) (*m1).bathmos = 18.5; Είτε με τον τελεστή βελάκι -> m1->bathmos = 18.5; Μπορεί να δηλωθεί πίνακας δομών 11
Πλεονεκτήματα για τον προγραμματιστή Δομές σαν παράμετροι συναρτήσεων. Μπορούμε να έχουμε σαν παράμετρο συνάρτησης μια δομή. Μπορούμε να σχεδιάσουμε μια τέτοια συνάρτηση για κλήση κατ αξία ή κλήση κατ αναφορά. Προτείνεται η κλήση κατ αναφορά, γιατί έτσι το πρόγραμμα τρέχει γρηγορότερα. Χρησιμοποίηση δομών σε δομές δεδομένων. 12
Βιβλιογραφία Συνδουκάς Δημήτρης 2007, Εισαγωγή στη γλώσσα προγραμματισμού C, Εσωτερική έκδοση του ΤΕΙ Χατζηγιαννάκης Ν. Μ., Η Γλώσσα C σε βάθος (4η έκδοση), Εκδόσεις Κλειδάριθμος, 2012, ISBN: 978-960-461-498-1. Τσελίκης Γ. Σ., Τσελίκας Ν. Δ., C: Aπό τη Θεωρία στην Εφαρμογή, Εκδότης: Νικόλαος Τσελίκας, 2012, ISBN: 978-960-93-1961-4. Schildt H., Οδηγός της C (3η έκδοση), Εκδόσεις Χ. Γκιούρδα και ΣΙΑ, 2000, ISBN: 978-960-512-228-7. Zhang T., Μάθετε τη C σε 24 Ώρες, Εκδόσεις Χ. Γκιούρδα και ΣΙΑ, 2000, ISBN: 960-512-233-2. Aitken Jones, Πλήρες Εγχειρίδιο της C, Εκδόσεις Χ. Γκιούρδα και ΣΙΑ, 2006, ISBN: 978-960-512-491-5. 13
Τέλος Ενότητας
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 15
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 16