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

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

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

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

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure).

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

Διάλεξη 6: Δείκτες και Πίνακες

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2α: Εισαγωγή στη C (Μέρος Πρώτο)

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

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

ΕΠΛ131 Αρχές Προγραμματισμού

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Συντακτικό Γλώσσας. Αλφάβητο. #2.. Εισαγωγή στη C (Μέρος Πρώτο)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

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

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

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

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

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

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

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

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

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

Κεφάλαιο 8.6. Πίνακες ΙI (Διάλεξη 17)

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

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

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

ΕΓΓΡΑΦΟ ΕΡΓΑΣΙΑΣ ΤΩΝ ΥΠΗΡΕΣΙΩΝ ΤΗΣ ΕΠΙΤΡΟΠΗΣ. Εκθεση χώρας - Κύπρος {COM(2015) 85 final}

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

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

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

Προγραμματισμός I. Θεματική ενότητα 7: Δομές απαριθμητικοί τύποι δεδομένων

Εισαγωγή στην πληροφορική

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

Υπολογισμός - Εντολές Επανάληψης

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

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

Περιεχόµενα. 1. Γενικό πλαίσιο. 2. Η ΚΑΠ σήµερα. 3. Γιατί χρειαζόµαστε τη µεταρρύθµιση; 4. Νέοι στόχοι, µελλοντικά εργαλεία και πολιτικές επιλογές

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

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

Προγραμματισμός σε C. Πράξεις με bits (bitwise operators)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

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

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

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

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Αρχές Προγραμματισμού

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Κεφάλαιο 8.6. Πίνακες ΙI ( ιάλεξη 16) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

8. Συνθήκες ελέγχου, λογικοί τελεστές

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

Εισαγωγή στη γλώσσα προγραμματισμού C++

Βασικές Αρχές Προγραμματισμού

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

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

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

είκτες και Πίνακες (2)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

Προγραμματισμός II (Γλώσσα C)

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

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

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

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

Transcript:

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy

Κεφάλαιο 10 Τύποι Δεδομένων και Εγγραφές

Θέματα Διάλεξης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εντολή typedef Απαριθμητικοι τύποι δεδομένων Εγγραφές και σύνθετοι τύποι δεδομένων

Εντολή typedef Σύνταξη: typedef type new_type; π.χ. typedef float temperature; temperature t; Σημασία: new_type είναι νέο όνομα για τον τύπο με όνομα type. Χρήσιμο για αποφυγή μεγάλων ονομάτων τύπων και πιο ακριβή περιγραφή του τι αντιπροσωπεύει μια μεταβλητή (δέστε πιο κάτω εφαρμογή του στους σύνθετους τύπους δεδομένων π.χ. εγγραφές)

Χρήση Πολλών Ονομάτων typedef float temperature; typedef temperature oset; oset func(temperature x, float y, ID_t z){...}

Απαριθμητοί Τύποι Δεδομένων (Enumerated Types) enum boolean {FALSE, TRUE}; enum boolean x; /* η μεταβλητή x είναι τύπου enum boolean */ if (x == FALSE){ } enumeratated type

Εναλλακτική Δήλωση typedef enum {FALSE, TRUE} boolean_e; boolean_e x; /* η μεταβλητή x είναι τύπου boolean_e */ if (x == FALSE){ } enumeratated type: enum {FALSE, TRUE}

Σύνταξη και Σημασιολογία Σύνταξη: typedef enum {NAME0, NAME1,, NAMEn} enum_onoma; Σημασία: ένα σύνολο ακεραίων σταθερών πρώτη σταθερά απαρίθμησης αναπαριστάται ως 0, η δεύτερη ως 1, η τρίτη ως 2 κτλ Ορισμός μεταβλητής τύπου απαρίθμησης enum_onoma onoma; π.χ.: boolean_e x; Σταθερές απαρίθμησης Μεταβλητή τύπου απαρίθμησης

Σταθερές Απαρίθμησης Σταθερές απαρίθμησης είναι ένα σύνολο ακεραίων σταθερών Ορίζονται συνήθως μετά τις σταθερές (καθολική εμβέλεια) Μεταβλητές τύπου απαρίθμησης μεταχειρίζονται σαν ακέραιες μεταβλητές Δε γίνεται έλεγχος για τις τιμές ανάθεσης (ΠΡΟΣΟΧΗ)....

Παραδείγματα typedef enum {NAME0=<σταθερός ακέραιος>, NAME1,..} onoma; typedef enum {JAN=1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC} month_e; JAN 1, FEB 2 κτλ for(i=jan; i<=dec; ++i){printf( %d\n, i;} typedef enum {NONE=0, IN1=1, IN2=2, IN3=3, OUT=4, NEW1=10, NEW2} incase_e;

Παράδειγμα #include <stdio.h> typedef enum {SUN, MON, TUE, WED, THU, FRI, SAT} day_e; int main() { day_e today, tomorrow; int i; for (i=sun; i<=sat; i++) printf("%d\n", i); today = MON; if (today == SAT) tomorrow = SUN; else tomorrow = (day_e)(today + 1); printf("\ntomorrow = %d\n", tomorrow); return 0; }

ΠΡΟΣΟΧΗ Επιτρέπεται η χρήση κάποιου ονόματος μόνο σε ένα enum (όχι σε άλλο enum ούτε και #define) Δεν επιτρέπεται: typedef enum {SUN, MON, TUE, WED, THU, FRI, SAT} day_e; typedef enum {MON, TUE, WED, THU, FRI} weekday_e;....

Σύνταξη typedef struct { μέλος; μέλος; } <νέο όνομα τύπου> ; ή struct <όνομα τύπου> { μέλος; μέλος; }; Μέλος: δήλωση οποιουδήποτε τύπου μεταβλητής (μπορεί να είναι struct, δείκτης, κλπ)....

Σημασία Το typedef struct επιτρέπει τον ορισμό ενός καινούργιου σύνθετου τύπου δεδομένων. Το typedef struct δεν είναι μεταβλητή Άρα δεν δεσμεύει χώρο στη μνήμη.....

struct: Ορισμός Μεταβλητής typedef struct { int id; float vathmoi[3]; } student_t; ή struct student_s { int id; float vathmoi[3]; }; σύνθετος τύπος δεδομένων student_t student; ή struct student_s student; Χρήσιμο το typedef για αποφυγή μεγάλων ονομάτων τύπων Σημασία: δεσμεύει χώρο για ΟΛΑ τα μέλη της δομής. Στο παράδειγμα πόσα bytes δεσμεύονται για το student;

struct: Ορισμός Μεταβλητής και Πίνακα student_t student, student_a, student_b; student_t student_table[student_num]; Eάν το STUDENT_NUM είναι 100, πόσα bytes δεσμεύονται για το student_table;....

struct: Αναφορά σε Μέλη student.id = 123456; student.vathmoi[0] = 8; student.vathmoi[1] = 5; student.vathmoi[2] = 9.5; printf( %6d %5.2f %5.2f %5.2f\n, student.id, student.vathmoi[0], student.vathmoi[1], student.vathmoi[2]); τελεστής επιλογής (μέλους) Τελεστής με την πιο ψηλή προτεραιότητα επίσης [] και f( ) scanf(%d%f%f%f, &student.id, &student.vathmoi[0], &student.vathmoi[1], &student.vathmoi[2]); ή scanf(%d, &student.id); for(i=0; i<size;i++) scanf(%f, &student.vathmoi[i]);

Αναφορά σε Πίνακα με structs if (student_table[i].id == find_id) ++in_table; for(i=0; i<student_num; ++i) { printf( Student%d stats:\n, i+1); printf( %6d, student_table [i].id); for (j=0; j<vathmoi_num; ++j) printf( %5.2f, student_table [i]. vathmoi[j]); printf( \n ); }

struct: Σαν Παράμετρος void display_student(student_t s){ printf( %6d %5.2f %5.2f%5.2f\n, s.id, s.vathmoi[0],s.vathmoi[1], s.vathmoi[2]); } Πόσος χώρος δεσμεύεται για το s; for(i=0; i<student_num; ++i) display_student(student_table[i]);

struct: Ανάθεση Επιτρέπεται ανάθεση μεταξύ μεταβλητών τύπου struct student_a = student_b; student_table[i] = student_table[j]; αντιγράφει την τιμή κάθε μέλους - π.χ. student_a = {1234, 5, 3, 7}; /* συντακτικά ορθό*/ - student_b = {7654, 5, 5, 9}; - student_a = student_b; Τι περιέχουν τα δύο structs; Προσοχή: Δεν επιτρέπεται σύγκριση μεταξύ μεταβλητών τύπου structs (αν χρειάζεται, τότε πρέπει να γίνει ανά μέλος)....

Ανακεφαλαίωση typedef Δίνει νέο όνομα σε κάποιο τύπο δεδομένων. π.χ. typedef float temperature; temperature t; typedef struct Επιτρέπει τον ορισμό σύνθετων τύπων δεδομένων.....

Δύο βήματα για ορισμό μεταβλητής (Α) Ορίζουμε τον νέο τύπο typedef struct { int id; } student_t; float vathmoi[3]; (Β) Μπορούμε να δηλώσουμε μεταβλητές του τύπου student_t student; Σημασία: δεσμεύει χώρο για ΟΛΑ τα μέλη της δομής....

Χρήση Πίνακες με struct αντί παράλληλοι πίνακες Πιο αφαιρετική προσέγγιση ομαδοποίηση συγγενικών μεταβλητών Πχ. Πληροφορίες μιας ταινίας DVD Κωδικός DVD Τίτλος ταινίας Κατηγορία ταινίας Είδος ταινίας Διάρκεια ταινίας Ονοματεπώνυμα πρωταγωνιστών

Άσκηση Σας δίνεται η πιο κάτω συνάρτηση float apostasi (float xa, float ya, float xb, float yb){ } return (xa-xb)*(ya-yb); Ξαναγράψετε την συνάρτηση συμπληρώνοντας τα πιο κάτω αλλά αυτή την φορά μόνο με δύο παραμέτρους. Οι δύο παράμετροι πρέπει να είναι του ιδίου τύπου και να είναι εγγραφές (structs). typedef struct {..... } point_t; float apostasi (.,. ){ }.........

Περίληψη Εντολή typedef Σύνταξη και σημασιολογία Απαριθμητοί Τύποι (Enumerated Types) Σύνταξη και σημασιολογία Σταθερές απαρίθμησης Μεταβλητές τύπου απαρίθμησης Εγγραφές (Structs) Σύνταξη και σημασιολογία Ορισμός μεταβλητών σύνθετων τύπων δεδομένων Αναφορά σε μέλη εγγραφών Εγγραφές και συναρτήσεις Εγγραφές και πίνακες Χρήση εγγραφών

Τέλος Κεφαλαίου 10