Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

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

16. Πίνακεσ και Συναρτήςεισ

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

17. Πολυδιάςτατοι πίνακεσ

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων. 18. Αλφαριθμητικά. Ιωάννθσ Κατάκθσ. ΕΡΛ 032: Ρρογραμματιςμόσ Μεκόδων Επίλυςθσ Ρροβλθμάτων

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

22. Ασκήσεις Επανάληψης

8 ΥΜΒΟΛΟΕΙΡΕ - STRINGS

Οντοκεντρικόσ Προγραμματιςμόσ

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

Εργαςτιριο Πικανοτιτων Σθμειϊςεισ προγραμματιςμοφ: βαςικζσ γνϊςεισ ανάπτυξθσ εφαρμογϊν. Κϊςτασ Αρβανιτάκθσ

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

Διαδικασία Δημιοσργίας Ειδικών Λογαριασμών. (v.1.0.7)

Οντοκεντρικόσ Ρρογραμματιςμόσ

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

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

ΟΝΟΜΑΣΟΛΟΓΙΑ ΠΑΡΑΜΕΣΡΩΝ ΓΙΑ ΠΡΟΑΡΜΟΜΕΝΕ ΑΝΑΦΟΡΕ. παραμζτρου> (Εμφανίηεται ςαν Caption ςτθν φόρμα των φίλτρων).

Η γλώςςα προγραμματιςμού C

1 ΕΙΣΑΓΩΓΗ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Ειδικά Θζματα Βάςεων Δεδομζνων

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

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

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

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

Οντοκεντρικόσ Προγραμματιςμόσ

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Τύποι Δεδομένων Είσοδος/Έξοδος

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

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

Γομέρ Γεδομένων (Data Structures) Χαπμανδάπηρ Δςάγγελορ, Τμήμα Δθαπμοζμένων Μαθημαηικών, Δαπινό Δξάμηνο 2010/11. Διζαγωγή: Σύνηομη Δπιζκόπηζη ηηρ C++

9 ΕΞΑΙΡΕΕΙ - EXCEPTIONS

Joomla! - User Guide

Ψθφιακά Ηλεκτρονικά. Ενότθτα 5 : Ανάλυςθ κυκλώματοσ με D και JK FLIP- FLOP Φώτιοσ Βαρτηιώτθσ

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

Προγραμματισμός Δομές Δεδομένων

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

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

Multi Logo. Προγραμματιςμόσ Η/Υ με Multi Logo. Σχεδίαςη και ανάπτυξη εφαρμογήσ κίνηςησ αντικειμζνου

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

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

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

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

Η γλώσσα προγραμματισμού C Δομές (structures) στη C

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

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

Αςφάλεια και Προςταςία Δεδομζνων

Διαχείριςη Αριθμοδεικτών (v.1.0.7)

Πωσ δημιουργώ μάθημα ςτο e-class του ΠΣΔ [επίπεδο 1]

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

Ποσοτικές Μέθοδοι Δρ. Χάϊδω Δριτσάκη

Οδηγίεσ για την πρόςβαςη των δικαιοφχων ςτο ΟΠΣΑΑ

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

ΟΔΗΓΙΕ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΡΤΘΜΙΗ ΔΩΡΕΑΝ ΗΛΕΚΣΡΟΝΙΚΟΤ ΣΑΧΤΔΡΟΜΕΙΟΤ ΣΟ GOOGLE (G-MAIL)

Τφποι δεδομζνων MPI. Κώςτασ Διαμαντάρασ Τμιμα Πλθροφορικισ ΤΕΙ Θεςςαλονίκθσ

Εργαςτιριο Βάςεων Δεδομζνων

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Η γλώσσα προγραμματισμού C

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

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

Εισαγωγικές έννοιες. Αντώνησ Κ Μαώργιώτησ

Είςοδοσ/Εγγραφή ςτη διαχειριςτική ςελίδα του Σχολείου

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Εγκατάσταση & Διαχείριση Joomla στο Π.Σ.Δ. ΣΥΜΒΟΥΛΟ ΡΛΗΟΦΟΙΚΗΣ Ν. ΣΕΩΝ & ΚΕ.ΡΛΗ.ΝΕ.Τ. Ν. ΣΕΩΝ

343 Ειςαγωγι ςτον Προγραμματιςμό

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

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

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

Τίτλος Μαθήματος: Εισαγωγή στον Προγραμματισμό

Στατιςτικζσ δοκιμζσ. Συνεχι δεδομζνα. Γεωργία Σαλαντι

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

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

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

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

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

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

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

Η γλώσσα προγραμματισμού C

Οδηγίεσ ρφθμιςησ Cisco ATA186. Υπηρεςία Επικοινωνίασ & υνεργαςίασ

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ. Φιλιοποφλου Ειρινθ

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

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

Βάρειπ Δεδξμέμωμ. Επγαστήπιο ΙΙ. Τμήμα Πλεπουοπικήρ ΑΠΘ

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Ιδιότθτεσ πεδίων Γενικζσ.

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

Modellus 4.01 Συ ντομοσ Οδηγο σ

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

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

Transcript:

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 21. Δομζς Ιωάννθσ Κατάκθσ Διαφάνειεσ: Βαςικζσ Αρχζσ Προγραμματιςμοφ Α.Π.Θ. Δθμιτρθσ Βράκασ

Τφποι Δεδομζνων Οριηόμενοι από το Χριςτθ o Πζρα από τουσ απλοφσ τφπουσ δεδομζνων και τουσ πίνακεσ, θ C παρζχει πζντε τρόπουσ για τθ δθμιουργία άλλων τφπων από τον προγραμματιςτι o Οι τφποι αυτοί ανικουν ςτισ ακόλουκεσ κατθγορίεσ: Δομζσ (structures) Πεδία bit (bit fields) Ενώςεισ (unions) Απαρικμιςεισ (Enumerations) Μετονομαςία με τθν typedef

Δομζσ o Μία δομή είναι μια ςυλλογι από μεταβλθτζσ διάφορων τφπων δεδομζνων οι οποίεσ καλοφνται πεδία (fields) o Ζςτω για παράδειγμα ζνα πρόγραμμα το οποίο κα διαχειρίηεται τα ςτοιχεία ενόσ τθλεφωνικοφ καταλόγου Για κάκε καταχώρθςθ πρζπει να κρατάμε διάφορα ςτοιχεία (όνομα, τθλζφωνο, φφλλο) τα οποία ςχετίηονται μεταξφ τουσ Οι δομζσ μασ επιτρζπουν να ομαδοποιιςουμε όλα αυτά τα ςτοιχεία ςε μία μεταβλθτι ώςτε να γίνεται ευκολότερθ θ διαχείριςθ τουσ

Οριςμόσ Δομισ o Για να ορίςουμε μια δομι χρθςιμοποιοφμε τθν πρόταςθ struct o Η γενικι μορφι διλωςθσ μιασ δομισ είναι θ ακόλουκθ: struct όλοκα ηύπος πεδίο1; ηύπος πεδίο2;... ηύπος πεδίον; [κεηαβιεηή1, κεηαβιεηή2,..,κεηαβιεηήν];

Παραδείγματα Δομών o Ζςτω ότι κζλουμε ζνα πρόγραμμα διαχείριςθσ τθλεφωνικοφ καταλόγου, όπου για κάκε καταχώρθςθ χρειαηόμαςτε τα ακόλουκα: Ονοματεπώνυμο Διεφκυνςθ Τθλζφωνο Ηλικία o Μία δομι που περιζχει τα παραπάνω πεδία: struct person char name[30]; char addr[20]; char phone[15]; int age; ; Με τθν παραπάνω διλωςθ δθλώνεται ζνασ νζοσ τφποσ δεδομζνων (όπωσ για παράδειγμα το double ι το char) Το person δεν είναι μεταβλθτι αλλά τφποσ δεδομζνων και τα name,addr κ.τ.λ. είναι πεδία του τφπου person

Οριςμόσ μεταβλθτών από τφπο struct #include<stdio.h> struct person ; main() char name[30]; char addr[20]; char phone[15]; int age; int k, m; // Ορίδοληαη οη κεηαβιεηές k,m ηοσ ηύποσ int struct person principle, student1, student2; //Ορίδοληαη οη κεηαβιεηές principle, student1,student2 //ηοσ ηύποσ person

Οριςμόσ μεταβλθτών μαηί με τον τφπο struct #include<stdio.h> struct person char name[30]; char addr[20]; char phone[12]; int age; principle; main() struct person student1, student2; o Οι principle, student1 και student2 είναι όλεσ μεταβλθτζσ του τφπου struct person Στθν παραπάνω περίπτωςθ βζβαια θ principle είναι κακολικι μεταβλθτι κακώσ δθλώνεται ζξω από τθ main o sizeof(person) 66 (30+20+12+4)

Διλωςθ Κακολικοφ τφπου struct #include<stdio.h> struct person //Ο person είλαη θαζοιηθός ηύπος δεδοκέλωλ ; char name[30]; char addr[20]; char phone[12]; int age; void print_data() struct person p; main() struct person myperson;

Διλωςθ Τοπικοφ τφπου struct #include<stdio.h> void print_data() struct person //Ο person είλαη ηοπηθός ηύπος δεδοκέλωλ //ηες print_data char name[30]; char addr[20]; char phone[12]; int age; ; struct person p;... main()... // Η main δελ κπορεί λα δειώζεη κεηαβιεηές struct //person

Αναφορά ςτα πεδία μιασ δομισ Η αναφορά ςε ζνα πεδίο μιασ μεταβλθτισ τφπου δομισ γίνεται γράφοντασ το όνομα τθσ μεταβλθτισ, τον τελεςτι τελεία. και το όνομα του πεδίου #include<stdio.h> #include<string.h> struct person ; main() char name[30]; char addr[20]; char phone[12]; int age; struct person myperson; myperson.age=30; strcpy(myperson.name, Dimitris ); printf( %d\n, myperson.age);

Τελεςτζσ ανάκεςθσ & ςφγκριςθσ struct point int x; int y; char name[10]; ; int main() struct point a,b; strcpy(a.name,"pointa"); a.x=5; a.y=3; 5, 3, PointA Same point Press any key to continue... b=a; // Οη ηηκές ηωλ κειώλ ηοσ a αληηγράθοληαη ζηα κέιε ηοσ b printf("%d, %d, %s\n",b.x,b.y,b.name); if (a.x==b.x && a.y==b.y && strcmp(a.name,b.name)==0)// Ότη a==b printf("same point\n"); system("pause"); return 0;

Πίνακεσ δομών o Με τον ίδιο τρόπο που δθλώνεται ζνασ πίνακασ οποιουδιποτε απλοφ τφπου δεδομζνων, μπορεί να δθλωκεί και ζνασ πίνακασ από δομζσ o struct όνομα_δομισ μεταβλθτι*ν]; o Π.χ. struct point int x; int y; char name[10]; ; main() struct point a[100]; // πίλαθας 100 ζέζεωλ από struct point a[73].x=10; strcpy(a[5].name, Z );

Χειριςμόσ πινάκων δομών struct person char name[20]; int age; ; int main() int i; struct person friends[10]; for (i=0;i<3;i++) printf("give name: "); gets(friends[i].name); printf("give age: "); scanf("%d",&friends[i].age); fflush(stdin);//αθαίρεζε ηοσ //ταραθηήρα \n από ηο Give name: Kostas Give age: 27 Give name: Mary Give age: 24 Give name: Dimitris Give age: 30 Kostas -> 27 Mary -> 24 Dimitris -> 30 Press any key to continue... printf("\n"); //input stream for (i=0;i<3;i++) printf("%s -> %d\n",friends[i].name,friends[i].age); system("pause"); return 0;

Μεταβίβαςθ πεδίων δομών ςε ςυναρτιςεισ struct vector double x; double y; double length; ; double find_length(double a, double b) return sqrt(pow(a,2) + pow(b,2)); int main() int i; struct vector vec[10]; for (i=0;i<10;i++) printf("give coordinates of vector: "); scanf("%lf %lf",&vec[i].x, &vec[i].y); vec[i].length = find_length(vec[i].x, vec[i].y); system("pause"); return 0;

Μεταβίβαςθ δομών ςε ςυναρτιςεισ struct vector double x; double y; double length; ; double find_length(struct vector k) return sqrt(pow(k.x,2) + pow(k.y,2)); Η μεηαβίβαζη δομών ζε ζςναπηήζειρ γίνεηαι με ηιμή (by value) οπόηε η ζςνάπηηζη δεν μποπεί να αλλάξει ηα πεπιεσόμενα ηηρ δομήρ int main() int i; struct vector vec[10]; for (i=0;i<10;i++) printf("give coordinates of vector: "); scanf("%lf %lf",&vec[i].x, &vec[i].y); vec[i].length = find_length(vec[i]); system("pause"); return 0;

Συναρτιςεισ που επιςτρζφουν δομι struct vector double x; double y; double length; ; struct vector find_length(struct vector k) k.length = sqrt(pow(k.x,2) + pow(k.y,2)); return k; int main() int i; struct vector vec[10]; for (i=0;i<2;i++) printf("give coordinates of vector: "); scanf("%lf %lf",&vec[i].x, &vec[i].y); vec[i]= find_length(vec[i]); system("pause"); return 0;

Δομζσ μζςα ςε δομζσ o Ζνα πεδίο μιασ δομισ μπορεί να είναι οποιουδιποτε τφπου δεδομζνων: απλοφ (int, char, float) πίνακα άλλθσ δομισ κ.α. struct address char road[20]; short number; int zipcode; struct person char name[30]; struct address addr; char phone[12]; int age; me; me.age=18; me.addr.number=21;

Τζλοσ διάλεξθσ