Δομές.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δομές στην C (επανάληψη)
Advertisements

Το αλφαριθμητικό (string)
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Πολυδιάστατοι Πίνακες, Δομές, Ενώσεις
Πινακες (Arrays) Σημασια Συνταξη Αρχικοποιηση Προσβαση Παραμετροι
Δείκτες, Πίνακες και Δείκτες, Δείκτες σε Συναρτήσεις
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Ολυμπιάδα Πληροφορικής
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Is-like-a inheritance. Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private -
ΣΥΝΑΡΤΗΣΕΙΣ.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 Δείκτες σε συναρτήσεις Δείκτης σε συνάρτηση – Περιέχει τη διεύθυνση του κώδικα της συνάρτησης – Ό π ως ένας.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
Δομές Δεδομένων και Αρχεία Ενότητα 7: Η δομή Στοίβα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
TEXNΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΜΑΘ106/3122 – Γλώσσα Προγραμματισμού Ξ. Ζαμπούλης ΜΑΘ106/3122 Γλώσσα Προγραμματισμού Δομές Δεδομένων.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 8: Δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών Πληροφορικής,
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
ΔΟΜΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΕ C 1.Σχόλια 2.Οδηγίες προεπεξεργαστή 3.Ορισμοί τύπων 4.Δηλώσεις συναρτήσεων (πρωτότυπα) 5.Ορισμός της main 6.Ορισμοί συναρτήσεων.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Προτάσεις, εκφράσεις, τελεστές Βασικά στοιχεία ελέγχου προγράμματος
Επανάληψη.
Ασκήσεις στην Java-XML
Βασικές Έννοιες Εισόδου-Εξόδου Πίνακες και Δείκτες
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Προγραμματισμός ΗΥ Ενότητα 11: Header Files. Διδάσκων: Ηλίας Κ Σάββας,
Ενισχυτική διδασκαλία
Ενισχυτική διδασκαλία
Τύποι Μεταβλητών.
Τεχνολογία και Προγραμματισμός Υπολογιστών
Εισαγωγή στον Προγ/μό Υπολογιστών
Είσοδος/έξοδος χαμηλού επιπέδου
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
ΑΣΚΗΣΕΙΣ C.
ΑΣΚΗΣΕΙΣ.
Μεταγράφημα παρουσίασης:

Δομές

Απλές Δομές Δομή: ομάδα μιας ή περισσότερων μεταβλητών Έχει ένα όνομα Μπορεί να έχει μεταβλητές διαφορετικών τύπων

Ορισμός Δομής Δήλωση μεταβλητών: struct coord { int x; int y; }; }first, second;

Δήλωση μεταβλητών (συνέχεια) struct coord { int x; int y; }; /*Πρόσθετος κώδικας*/ struct coord first, second;

Απόδοση τιμών struct coord first, second; first.x = 50; first.y = 100; second = first; /* Τα first και second είναι στιγμιότυπα (instances) της δομής coord. Το coord είναι το πρότυπο */

Παραδείγματα struct date { char day[2]; char month[2]; char year[4]; } current_date; struct time { int hours; int minutes; int seconds; } birth_time = {3, 50, 12};

Πιο Πολύπλοκες Δομές struct rectangle { struct coord topleft; struct coord bottomright; } mybox; mybox.topleft.x = 0; mybox.topleft.y = 10; mybox.bottomright.x = 100; mybox.bottomright.y = 200;

Άσκηση Σχεδιάστε και υλοποιήστε ένα πρόγραμμα σε C το οποίο να διαβάζει από το πληκτρολόγιο τις δύο αντιδιαμετρικές κορυφές ενός ορθογωνίου, να υπολογίζει και να εμφανίζει στην οθόνη το εμβαδόν του.

Δομή με στοιχεία πίνακες struct data { int x[4]; char y[10]; } record; record.x record.y[8] record

Άσκηση Σχεδιάστε και υλοποιήστε ένα πρόγραμμα σε C το οποίο να διαβάζει από το πληκτρολόγιο το όνομα, το επώνυμο και τον αριθμό μητρώου, να τα αποθηκεύει σε μια δομή και στη συνέχεια να τα εμφανίζει στην οθόνη

Πίνακας με στοιχεία δομές struct entry { char first_name[10]; char surname[20]; char phone[15]; } record; struct entry list[1000]; list1[1] = list[5]; strcpy(list[1].phone, list[5].phone); list[1].phone[1] = list[5].phone[3];

Παράδειγμα (1/2) /* Demonstrates using arrays of structures. */ #include <stdio.h> /* Define a structure to hold entries. */ struct entry { char fname[20]; char lname[20]; char phone[10]; }; /* Declare an array of structures. */ struct entry list[4]; int i;

Παράδειγμα (2/2) main() { /* Loop to input data for four people. */ for (i = 0; i < 4; i++) { printf("\nEnter first name: "); scanf("%s", list[i].fname); printf("Enter last name: "); scanf("%s", list[i].lname); printf("Enter phone in 123-4567 format: "); scanf("%s", list[i].phone); } /* Print two blank lines. */ printf("\n\n"); /* Loop to display data. */ printf("Name: %s %s", list[i].fname, list[i].lname); printf("\t\tPhone: %s\n", list[i].phone);

Άσκηση Σχεδιάστε και υλοποιήστε μια συνάρτηση σε C το οποίο να διαβάζει τον προηγούμενο πίνακα και να αλλάζει το πρόθεμα του τηλεφώνου από 0* σε 2*

Προσοχή Μη ξεχνάτε το όνομα στιγμιοτύπου και τον τελεστή μέλους (.) Μη ξεχνάτε το όνομα στιγμιοτύπου και τον τελεστή μέλους (.) Μη μπερδεύετε την ετικέτα μιας δομής με τα στιγμιότυπά της Μη ξεχνάτε τη λέξη κλειδί struct όταν δηλώνετε ένα στιγμιότυπο από μια δομή που έχει οριστεί προηγουμένως

Αρχικοποίηση δομών struct entry { char first_name[10]; char surname[20]; int amount; } record = { "Jorge", "Gonzales", 1000 };

Ασκήσεις Ορίστε μια δομή που να περιλαμβάνει τα προσωπικά στοιχεία ενός ατόμου Ορίστε δομές που να χρησιμοποιούν τη προηγούμενη δομή και να ορίζουν δύο νέες δομές: αυτή του πελάτη και αυτή του υπαλλήλου. Η δομή του πελάτη έχει επιπλέον πεδίο που αντιστοιχεί σε όριο συναλλαγών και του υπαλλήλου αριθμό μητρώου

Δομές ως ορίσματα συναρτήσεων struct entry { char first_name[10]; char surname[20]; int amount; } my_entry; void print_entry(struct entry x); /* … και η κλήση … */ print_entry(my_entry);

Ορισμός Δομής με χρήση typedef typedef struct { int x; int y; } coord; Δήλωση μεταβλητών: coord topleft, bottomright;

Ενώσεις union data { int x; char ch1; } record; union data data1 = {'@'};

Παράδειγμα (1/3) /* Example of a typical use of a union */ #include <stdio.h> #define CHARACTER `C' #define INTEGER `I' #define FLOAT `F' struct generic_tag{ char type; union shared_tag { char c; int i; float f; } shared; }; void print_function( struct generic_tag generic );

Παράδειγμα (2/3) main(){ struct generic_tag var; var.type = CHARACTER; var.shared.c = `$'; print_function( var ); var.type = FLOAT; var.shared.f = (float) 12345.67890; var.type = `x'; var.shared.i = 111; return 0; }

Παράδειγμα (3/3) void print_function(struct generic_tag generic){ printf("\n\nThe generic value is..."); switch(generic.type) { case CHARACTER: printf("%c", generic.shared.c); break; case INTEGER: printf("%d", generic.shared.i); case FLOAT: printf("%f", generic.shared.f); default: printf("an unknown type: %c\n", generic.type); }