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

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

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

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

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

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

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

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

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

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

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

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

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

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

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

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

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

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

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

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

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

scanf() scanf() stdin scanf() printf() int float double %lf float

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

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

Μεθόδων Επίλυσης Προβλημάτων

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

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

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΑΤΙΣΜΟΣ Α (C++) ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΤΩΝ Δρ. Νικόλαος Ζ. Ζάχαρης

Τυχαίοι αριθμοί Αλφαριθμητικά και χαρακτήρες

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Μεθόδων Επίλυσης Προβλημάτων

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

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

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

Επεξεργασία Αρχείων Κειµένου

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

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

Transcript:

Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου

Δομές Δεδομένων και Κυρίως Πρόγραμμα Δομές δεδομένων εκτός από πίνακες: Structs Unions Enums Κυρίως πρόγραμμα Παράμετροι που περνιούνται από το λειτουργικό σύστημα

Δομές Δεδομένων Structs Για υλοποίηση βάσεων δεδομένων Unions Για μείωση του χώρου αποθήκευσης Για ηθελημένη διττή ερμηνεία του ίδιου αντικειμένου Enums Για ακολουθίες σταθερών

Δομές Τύπου struct Οι βασικές δομές για δημιουργία εγγραφών βάσεων δεδομένων Μπορούν να έχουν όνομα (σε ειδικό χώρο ονομάτων) ή να είναι ανώνυμες Στην ουσία είναι ένθετες εμβέλειες στις μεταβλητές των οποίων η αναφορά γίνεται με συνδυασμό των ονομάτων της εμβέλειας και της μεταβλητής

Δηλώσεις Δομών struct Η λέξη-κλειδί struct, προαιρετικό όνομα και μια λίστα μεταβλητών σε άγκιστρα struct product { int code; char name[30]; float price; }; προσοχή στο ;

Μεταβλητές Τύπου struct Η δήλωση μιας δομής δεν δημιουργεί μεταβλητές του τύπου της δομής Μεταβλητές ενός τύπου δομής δηλώνονται μετά τη δήλωση της δομής: struct product p1,p2,p3; Προσέξτε ότι η δήλωση απαιτεί και τη λέξη-κλειδί struct! Η δήλωση της δομής και των μεταβλητών της μπορούν να συμπτυχθούν σε Η κοινή γλώσσα προγραμματισμού δήλωση C

Αρχικοποίηση Δομών struct Όπως και στους πίνακες, απλά εδώ έχουμε διαφορετικούς τύπους στοιχείων struct product p1 = { 3569, milk, 1.56 }; struct product p2 = { 3801, lobster };

Αναφορά σε Πεδία struct Με τη βοήθεια του τελεστή. Ένα πεδίο δομής struct λειτουργεί όπως όλες οι μεταβλητές p2.price = 72.5; printf( Price of product %d \"%s\" = %f\n, p1.code, p1.name, p1.price); scanf( %d, &p3.code);

Αναφορά σε Ολόκληρη Δομή Είναι δυνατή η χρήση ολόκληρης δομής ως ένα ενιαίο σύνολο τιμών Σε αναθέσεις: p3 = p2; Σε ορίσματα συναρτήσεων: void print_name(struct product); Σε επιστροφές συναρτήσεων: struct product new_product(int, char[]);

Δείκτες σε Δομές struct Πρακτικοί για κλήσεις συναρτήσεων Κυρίως όταν θέλουμε να τροποποιήσουμε κάποιο πεδίο της δομής παραμέτρου Το προηγούμενο παράδειγμα δεν επιδέχεται τροποποίηση στη δομή όρισμα! void increase_price(struct product*, float); Αλλά και στην επιστροφή συνάρτησης Αντιγραφή δείκτη αντί ολόκληρης δομής! struct product * new_product(int, char[]);

Αναφορά σε Πεδία struct Όταν η μεταβλητή δομής είναι δείκτης, η αναφορά γίνεται με τον τελεστή -> a->b αποτελεί σύντμηση του (*a).b void increase_price(struct product* p, float x) { } p->price += x; και όχι του *a.b Αν το p δεν ήταν δείκτης, η τροποποίηση θα παρέμενε τοπικά στη συνάρτηση!

Πίνακες Δομών struct struct product products[100]; void inflation(float x) { int i; for (i=0; i<100; i++) products[i].price *= 1.0+x; }

Ένθετες Δομές Ένα πεδίο δομής μπορεί να είναι τύπου δομής! struct s1 { int d,m; }; struct s2 { char name[30]; struct s1 birthday; };

Αρχικοποίηση Ένθετων Δομών Με ή χωρίς ένθετα άγκιστρα struct s2 friend = { nikos, {13, 7} }; struct s2 friend = { nikos, 13, 7 };

Πεδία Ένθετων Δομών Διαδοχικοί τελεστές. και -> χωρίς περιορισμό: friend.birthday.d = 20; friend.birthday.m = 3;

Ανώνυμες Δομές Συνήθως σε ένθετες δομές τις οποίες δε χρησιμοποιούμε αλλού struct s2 { char name[30]; struct { int d,m; } birthday; }; Ή σε συνδυασμό με δήλωση typedef

Δήλωση typedef και Δομές Με δήλωση typedef το όνομα της δομής γίνεται περιττό, αφού δίνεται συνώνυμο σε όλο τον τύπο και δε χρειάζεται έτσι δήλωση μεταβλητής με τη λέξη-κλειδί struct! typedef struct { int d,m; } Bday; Bday b_yours = { 20, 3 };

Δομές Τύπου union Ιδιαίτερες δομές της C, όμοιας σύνταξης με τις δομές struct, όπου όμως όλα τα πεδία μοιράζονται τον ίδιο χώρο στη μνήμη Ίδια αρχική διεύθυνση αν πρόκειται για πεδία με τύπους διαφόρων μεγεθών Δίνοντας τιμή σε ένα πεδίο, δίνουμε τιμή σε όλα τα πεδία Όμως αν τα υπόλοιπα πεδία είναι άλλου τύπου, η ανάθεση τιμής δεν έχει νόημα γι αυτά!

Δηλώσεις Δομών union Όμοιες με τις δηλώσεις των δομών struct union u { int akeraios; char xarakthres[4]; }; union u u1, u2;

Χρήση Δομών union Κατά λάθος ή επίτηδες; u1.akeraios = -1; printf( akeraios = %d\n, u1.akeraios); -1 u1.xarakthres[0] = a ; printf( akeraios = %d\n, u1.akeraios); -159 όχι πάντα Πώς μπορούμε να θυμόμαστε τι τύπο έχουμε αποθηκεύσει;

Χρήση Δομών union Συνήθως ένθετες δομές σε struct struct s1 { int is_integer; union { }; int akeraios; πεδίο ελέγχου της δομής union char xarakthres[4]; ανώνυμη δομή union }; Επιτυγχάνεται εξοικονόμηση Ανάπτυξη και Σχεδίαση χώρου! Λογισμικού

Δομές Τύπου enum Ένας τρόπος να δώσουμε ονόματα σε ακολουθίες σταθερών Για παράδειγμα μέρες της εβδομάδας enum days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; enum days d = Tuesday;

Δομές Τύπου enum Ο τύπος enum είναι ακέραιος τύπος, οι δε σταθερές που δηλώνονται θεωρούνται πως έχουν διαδοχικές τιμές από το 0, εκτός αν υπάρχει αρχικοποίηση enum days { Monday = 1, Tuesday, Wednesday, Thursday, Friday = 10, Saturday, Sunday }; enum days d = Sunday; 12

Κυρίως Πρόγραμμα Προαιρετικές παράμετροι της συνάρτησης main() int argc = Πλήθος ορισμάτων char *argv[] = Πίνακας ονομάτων ορισμάτων Το πρώτο όνομα ορίζεται πάντα και είναι το όνομα του προγράμματος, άρα argc > 0 Συνήθως τα υπόλοιπα ονόματα είναι ονόματα αρχείων εισόδου/εξόδου Πιο γενικά όμως είναι αλφαριθμητικά που η main() διαχειρίζεται με οποιονδήποτε τρόπο

Τι Μάθαμε Σήμερα Τύπος struct Δήλωση και αρχικοποίηση Αναφορά στα πεδία μιας δομής Δείκτες σε δομές και πίνακες δομών Ένθετες δομές Τύπος union Τύπος enum Παράμετροι εισόδου/εξόδου της main()