Διάλεξη 19η: Δομές δεδομένων

Σχετικά έγγραφα
Προγραμματισμός Δομές Δεδομένων

Διδάσκων: Παναγιώτης Ανδρέου

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

οµές (structures) και Eνώσεις (unions)

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Διάλεξη 22η: Επιπλέον στοιχεία της C

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Εισαγωγή στον Προγραμματισμό

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Δομημένος Προγραμματισμός (ΤΛ1006)

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Διάλεξη 11η: Δείκτες, μέρος 1

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

ιαφάνειες παρουσίασης #9 (α)

Διάλεξη 9η: Πίνακες (arrays)

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 15η: Αναδρομή, μέρος 1ο

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Δομές δεδομένων (2) Αλγόριθμοι

Προγραμματισμός Η/Υ. Ενότητα 9: Ειδικά θέματα Δομών Δεδομένων

Προγραμματισμός ΙI (Θ)

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διδάσκων: Παναγιώτης Ανδρέου

Εισαγωγή στον δομημένο προγραμματισμό

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στον Προγραμματισμό με C++

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Δομές δεδομένων (Structures) Εισαγωγή στη C++

Διάλεξη 5: Δείκτες και Συναρτήσεις

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο. Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ιαφάνειες παρουσίασης #5 (β)

Πρόλογος Εισαγωγικά Στοιχεία... 13

Ενδεικτική περιγραφή μαθήματος

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές.

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

Προγραμματισμό για ΗΜΥ

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

Δομές Δεδομένων Εισαγωγή παράγωγους τύπους δομών δεδομένων Ορισμός και συζήτηση της έννοιας μέλη ετικέτα Τρόπος δήλωσης και ορισμού

Εισαγωγή στον Προγραμματισμό (με. τη C)

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Προγραµµατιστικές τεχνικές

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Προγραμματισμός Ι (ΗΥ120)

Διδάσκων: Παναγιώτης Ανδρέου

Ανάπτυξη και Σχεδίαση Λογισμικού

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών. ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δομές

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός (ΤΛ1006)

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Ι (HY120)

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Προγραμματισμός Ι (ΗΥ120)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

Προγραµµατιστικές τεχνικές

Δομημένος Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Δομημένος Προγραμματισμός

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

Mεταβλητές (variables) και Σταθερές (constants)

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Προγραμματισμός Υπολογιστών με C++

Δεδομένα, Τύποι και Τιμές

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

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

Διάλεξη 5η: Εντολές Επανάληψης

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3

Διάλεξη 18η: Διαχείρηση Αρχείων

Προγραμματισμός ΙI (Θ)

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Προγραμματιστικές τεχνικές

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Transcript:

Διάλεξη 19η: Δομές δεδομένων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Δομές CS100, 2016-2017 1 / 13

Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που δεν μπορεί να αποθηκευτεί σε μία μόνο μεταβλητή από τους δοσμένους τύπους της C Συλλογή μη διατεταγμένων και ομοιογενών τιμών Πλεονέκτημα: Καλύτερη οργάνωση και διαχείριση πληροφορίας, πιο ευέλικτος σχεδιασμός Παράδειγμα Όνομα Τίτλος ΑΤ Μισθός Χρόνια Γιώργος A Διευθυντής A123123 1500 4 Χάρης Λ Υπάλληλος Δ424344 1000 3 Μαρία Σ Υπάλληλος Ζ824344 1000 2 Νίκος Κ Υπάλληλος Α848239 750 1 Πρατικάκης (CSD) Δομές CS100, 2016-2017 2 / 13

Ορισμός δομών Ορισμός νέου τύπου δομής struct employee { char *name; char title[20]; char id[8]; double salary; int years; }; Τα name, title, id, salary, years ονομάζονται τα μέλη ή πεδία της δομής To employee ονομάζεται η ετικέτα της δομής Πρατικάκης (CSD) Δομές CS100, 2016-2017 3 / 13

Δήλωση μεταβλητών Δηλώνονται όπως οι άλλες μεταβλητές Ο τύπος της μεταβλητής είναι πχ, struct employee Παράδειγμα struct employee e1, e2; struct employee *pe; struct employee manager = { AB, manager, A11111, 2000, 2}; struct employee e3 = {0}; Πρατικάκης (CSD) Δομές CS100, 2016-2017 4 / 13

Πρόσβαση στα Περιεχόμενα της ομής Με τον τελεστή (τελεία) αποκτούμε πρόσβαση στα μέλη της δομής struct point { int x; int y; } p; px = 10; py = 20; Πρατικάκης (CSD) Δομές CS100, 2016-2017 5 / 13

Φωλιασμένες δομές Δομές ως μέλη άλλων δομών επιτρέπονται Παράδειγμα struct point { int x; int y; }; struct rectangle { struct point topleftcorner; struct point bottomrightcorner; } rect1; Πρόσβαση με διαδοχικές τελείες () rect1topleftcornerx = 10; Παίρνουμε το πεδίο x του πεδίου topleftcorner της μεταβλητής rect1 Πρατικάκης (CSD) Δομές CS100, 2016-2017 6 / 13

Πίνακες από ομές Όπως και για κάθε άλλο τύπο Παράδειγμα struct point { int x; int y; }; struct point points[100]; points[2]x = 10; Πρατικάκης (CSD) Δομές CS100, 2016-2017 7 / 13

Χρήση ομών Σαν κανονικές μεταβλητές για την αποθήκευση πληροφορίας Σαν ορίσματα σε Συναρτήσεις: void printemployee(struct employee e); Σαν επιστρεφόμενες τιμές από συναρτήσεις: struct employee newemployee(char *name, char *pos, char *id, double sal, int y); Σαν επιστρεφόμενες τιμές από συναρτήσεις ως δείκτες: struct employee *newemployee(char *name, char *pos, char *id, double sal, int y); Πρατικάκης (CSD) Δομές CS100, 2016-2017 8 / 13

είκτες σε ομές Δήλωση struct employee { char *name; char title[20]; char id[8]; double salary; int years; }; ήλωση της μεταβλητής d ως δομή και της e ως δείκτη σε δομή struct employee d, *e; e = &d; Δείκτης σε πίνακα από 100 δομές employee e = (struct employee *) malloc(100 * sizeof(struct employee)); e[0]salary = 1000; Πρατικάκης (CSD) Δομές CS100, 2016-2017 9 / 13

Δείκτες σε Δομές (2) Έστω ο δείκτης struct employee *e; Πρόσβαση στα περιεχόμενα του δείκτη *e: τα περιεχόμενα του δείκτη είναι η δομή (*e)title το πεδίο title της δομής που δείχνει ο δείκτης e e->title: συνώνυμο του παραπάνω e[0]title: συνώνυμο του παραπάνω Προσοχή στις προτεραιότητες των τελεστών: (*e)title σημαίνει e->title Το *etitle είναι ισοδύναμο με *(etitle) που δεν είναι αποδεκτό για την συγκεκριμένη δήλωση του e Πρατικάκης (CSD) Δομές CS100, 2016-2017 10 / 13

Πράξεις σε Δομές Έστω οι δομές: struct point { int x; int y; } p1, p2; Αντιγραφή: p1 = p2 τα περιεχόμενα του p1 παίρνουν τις τιμές που έχουν στο p2 Απόδοση τιμής: p1 = {42, 5} ταυτόχρονη ανάθεση στα πεδία της δομής Διεύθυνση: &p1 η διεύθυνση της δομής, δείκτης σε δομή Προσπέλαση ενός πεδίου: &p1x ανάγνωση του πεδίου x της δομής Δεν επιτρέπεται η σύγκριση δομών Πρατικάκης (CSD) Δομές CS100, 2016-2017 11 / 13

typedef Ορισμός νέου ονόματος για ένα τύπο Γενική μορφή typedef type name; Δημιουργεί το name ως συνώνυμο του τύπου type Παράδειγμα typedef unsigned long int seconds_t; Το όνομα seconds_t είναι συνώνυμο του unsigned long int Αντί να δηλώσουμε μεταβλητές unsigned long int x; μπορούμε να δηλώσουμε seconds_t x; Πρατικάκης (CSD) Δομές CS100, 2016-2017 12 / 13

Παράδειγμα typedef Δήλωση τύπου δομής, και μετά δήλωση ψευδώνυμου typedef1c struct employee { char* name; char title[20]; } typedef struct employee employee_t; Ταυτόχρονη δήλωση τύπου δομής και ψευδόνυμου Δημιουργεί το name ως συνώνυμο του τύπου type typedef2c typedef struct employee { char* name; char title[20]; } employee_t; Πρατικάκης (CSD) Δομές CS100, 2016-2017 13 / 13 Ισοδύναμο με το παραπάνω