Σύνθετοι Τύποι εδοµένων. Προγραµµατισµός Ι 1
|
|
- Σίβύλ Κουντουριώτης
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Σύνθετοι Τύποι εδοµένων Προγραµµατισµός Ι 1
2 Σύνθετοι τύποι δεδοµένων Συχνά τα δεδοµένα ενός προγράµµατος δεν είναι απλά κάποιοι µεµονωµένοι αριθµοί ή χαρακτήρες. Χρειάζεται να οµαδοποιήσουµε περισσότερα δεδοµένα διαφορετικού τύπου σε µια οντότητα για την πιο εύκολη και αποδοτική διαχείριση τους. Π.χ. 3 ακέραιες µεταβλητές που χρησιµοποιούµε για να καταγράψουµε τηµέρα, το µήνα και το έτος µιας ηµεροµηνίας. Με την βοήθεια των σύνθετων τύπων δεδοµένων, οπρογραµµατιστής µπορεί να ορίσει δικούς του τύπους µε βάση τους υπάρχοντες τύπους δεδοµένων. Προγραµµατισµός Ι lalis@inf.uth.gr 2
3 οµή - struct Η δοµή (struct) οµαδοποιεί δεδοµένα διαφορετικών τύπων σε µια µεγαλύτερη και εννιαία οντότητα. Τα επιµέρους δεδοµένα της δοµής ονοµάζονται πεδία. Το µέγεθος της δοµής καθορίζεται (αυτόµατα) από τον µεταφραστή, έτσι ώστε να υπάρχει χώρος για την αποθήκευση τιµών των πεδίων. Η µνήµη µιας δοµής δεσµεύεται συνολικά, ως ένα κοµµάτι, όµως τα πεδία δεν καταλαµβάνουν πάντα συνεχόµενες θέσεις µέσα σε αυτό το κοµµάτι. Προσοχή: η αποθήκευση των δεδοµένων που αντιστοιχούν στα διάφορα πεδία στη µνήµη της δοµής γίνεται από τον µεταφραστή χωρίς εµείς να γνωρίζουµε τιςλεπτοµέρειες. Προγραµµατισµός Ι lalis@inf.uth.gr 3
4 struct xxx { /* δήλωση πεδίων */ }; struct xxx var1,var2; όνοµα τύπουδοµής ονόµατα µεταβλητών struct xxx { /* δήλωση πεδίων */ } var1; struct xxx var2; όνοµα τύπουδοµής ονόµατα µεταβλητών struct { /* δήλωση µεταβλητών */ ανώνυµος τύπος δοµής } var1,var2; ονόµατα µεταβλητών Προγραµµατισµός Ι lalis@inf.uth.gr 4
5 διεύθυνση περιεχόµενα struct abc { char a,b,c; }; struct abc v; v.a='a'; v.b='b'; v.c='c'; v.a v.b v.c Προγραµµατισµός Ι lalis@inf.uth.gr 5
6 Προγραµµατισµός µε struct Αναφορά στα πεδία µιας µεταβλητής struct γίνεται µέσω του τελεστή. που τοποθετείται ανάµεσα στο όνοµα της µεταβλητής και το όνοµα του πεδίου. Ηανάθεσητιµών σε µεταβλητές struct γίνεται είτε σε συνολικό επίπεδο δοµής, όπως για κανονικές µεταβλητές, είτε σε επίπεδο επιµέρους πεδίων. Αν δύο µεταβλητές έχουν τον ίδιο τύπο struct T τότε µπορεί να γίνει απ ευθείας ανάθεση της τιµής της µιας µεταβλητής στην άλλη. Γίνεται αντιγραφή ολόκληρης της περιοχής της µνήµης (δεν γίνεται αντιγραφή πεδίο προς πεδίο). Προγραµµατισµός Ι lalis@inf.uth.gr 6
7 struct date { int day /* αριθµός ηµέρας: */ int month; /* αριθµός µήνα: */ int year; /* αριθµός έτους */ }; struct date d1,d2,d3; /* µεταβλητές struct date */ int main(int argc, char *argv[]) { d1.day = 25; d1.month = 12; d1.year = ; d2.day = d1.day; d2.month = d1.month; d2.year = d1.year; } d3 = d1; d3.year++; Προγραµµατισµός Ι lalis@inf.uth.gr 7
8 Σύγκριση struct εν υποστηρίζεται η σύγκριση των περιεχοµένων (συµβατών) struct σε συνολικό επίπεδο δοµής. Ο λόγος είναι ότι ο µεταφραστής δεν µπορεί να γνωρίζει την σηµασία που δίνει ο προγραµµατιστής στα επιµέρους πεδία της δοµής. Η «προφανής» σύγκριση byte προς byte µπορεί να δώσει µη επιθυµητά αποτελέσµατα. Ο προγραµµατιστής πρέπει να υλοποιήσει δικές του µεθόδους σύγκρισης µε βάσητην«σηµασία» των επιµέρους πεδίων της δοµής. Αντιστοιχία: σύγκριση πινάκων που περιέχουν αλφαριθµητικά (π.χ. µέσω της συνάρτησης strcmp). Προγραµµατισµός Ι 8
9 struct date { int day; int month; int year; }; int datecmp(struct date d1, struct date d2) { if (d1.year<d2.year) { return(-1); } else if (d1.year>d2.year) { return(1); } else if (d1.month<d2.month) { return(-1); } else if (d1.month>d2.month) { return(1); } else if (d1.day<d2.day) { return(-1); } else if (d1.day>d2.day) { return(1); } else return(0); } Προγραµµατισµός Ι lalis@inf.uth.gr 9
10 Πίνακες από struct Όπως και για τους βασικούς τύπους δεδοµένων, µπορεί να οριστούν πίνακες από struct. εσµεύεται ένας συνεχόµενος χώρος στην µνήµη για την αποθήκευση όλων των στοιχείων του πίνακα. Η πρόσβαση στα στoιχεία του πίνακα γίνεται ακριβώς µε τον ίδιο τρόπο, δηλαδή προσδιορισµός θέσης του στοιχείου στον πίνακα µέσα στα επιτρεπτά όρια. Από τη στιγµή προσδιοριστεί ένα συγκεκριµένο στοιχείο του πίνακα, πρόσβαση στα επιµέρους πεδία του struct γίνεται κανονικά µέσω του τελεστή. Προγραµµατισµός Ι 10
11 διεύθυνση περιεχόµενα struct s { char a,b; }; struct s a[3]; a[0].a='a'; a[0].b='b'; a[1].a='c'; a[1].b='d'; a[2].a='e'; a[2].b='f'; a[0] a[0].a a[0].b a[1] a[1].a a[1].b a[2] a[2].a a[2].b Προγραµµατισµός Ι lalis@inf.uth.gr 11
12 Πεδία bits Στα πεδία µιας δοµής που ορίζονται ως int µπορεί προαιρετικάναοριστούνταbits που χρειάζονται για την αποθήκευση των τιµών αν φυσικά µπορεί να περιοριστεί το πεδίο τιµών τους εκ των προτέρων. Ο µεταφραστής µπορεί να εκµεταλλευτεί αυτή την πληροφορία για να συµπιέσει τα δεδοµένα της δοµής. Αυτό δεν είναι απαραίτητο να γίνει, και σε κάθε περίπτωση η µέθοδος συµπίεσης εξαρτάται από τον µεταφραστή πιθανό πρόβληµα ασυµβατότητας. Η κωδικοποίηση και ερµηνεία των πεδίων bits είναι αποκλειστική υπόθεση του προγραµµατιστή. Προγραµµατισµός Ι 12
13 struct date { int day; int month; int year; }; struct compact_date { int day:5; /* 31 διαφορετικές τιµές */ int month:4; /* 12 διαφορετικές τιµές */ int year; /* δεν υπάρχει περιορισµός */ }; Προγραµµατισµός Ι lalis@inf.uth.gr 13
14 Ενώσεις - union Η ένωση(union) οµαδοποιεί δεδοµένα διαφορετικών τύπων για την αποθήκευση των οποίων δεσµεύεται κοινός χώρος στη µνήµη. Το µέγεθος της ένωσης καθορίζεται έτσι ώστε να µπορεί να αποθηκευτεί το µεγαλύτερο πεδίο της. Ο προγραµµατιστής είναι υπεύθυνος για την σωστή χρήση των περιεχοµένων µιας ένωσης καθώς δεν υπάρχει τρόπος να διαπιστωθεί η εγκυρότητα των τιµών των πεδίων (π.χ. σε πιο πεδίο έγινε η τελευταία ανάθεση τιµής). Συνήθως, η ένωσηχρησιµοποιείται σε συνδυασµό µε την δοµή ένα πεδίο της δοµής καθορίζει το πως χρησιµοποιείται η ένωση ανά πάσα χρονική στιγµή. Προγραµµατισµός Ι lalis@inf.uth.gr 14
15 διεύθυνση περιεχόµενα union abc { char a; short int b; int c; }; union abc v; v.a v.b v.c Προγραµµατισµός Ι lalis@inf.uth.gr 15
16 διεύθυνση περιεχόµενα union abc { char a; short int b; int c; }; union abc v; v.a='a'; v.a v.b v.c Προγραµµατισµός Ι lalis@inf.uth.gr 16
17 διεύθυνση περιεχόµενα union abc { char a; short int b; int c; }; union abc v; v.a='a'; v.b=0x6162; v.a v.b v.c Προγραµµατισµός Ι lalis@inf.uth.gr 17
18 διεύθυνση περιεχόµενα union abc { char a; short int b; int c; }; union abc v; v.a='a'; v.b=0x6162; v.c=256; v.a v.b v.c Προγραµµατισµός Ι lalis@inf.uth.gr 18
19 διεύθυνση περιεχόµενα union abc { char a; short int b; int c; }; union abc v; v.a='a'; v.b=0x6162; v.c=256; v.a v.b v.c v.a=0x01; Προγραµµατισµός Ι lalis@inf.uth.gr 19
20 /* δοµή που αποθηκεύει τιµή σε µορφή int ή float */ struct val { int vtype; /* 0 ή 1 αν ισχύει val.i ή val.f */ }; union { int i; /* η τιµή σε µορφή int */ float f; /* η τιµή σε µορφή float */ } val; void inc_value(struct val v) { switch (v.vtype) { case 0: { /* δούλεψε µε s.val.i */ } case 1: { /* δούλεψε µε s.val.f */ } } } Προγραµµατισµός Ι lalis@inf.uth.gr 20
21 Απαριθµήσεις - enum Με την enum αντιστοιχίζονται διαδοχικές ακέραιες τιµές σε ονόµατα, χωρίς να ενδιαφέρει (απαραίτητα) ητιµή που δίνεται στο κάθε όνοµα. Χρησιµοποιείται σε περιπτώσεις που µια µεταβλητή µπορεί να λάβει περιορισµένες τιµές, ιδίως όταν δεν έχει παίζει ρόλο η «απόλυτη» τιµή τηςµεταβλητής. Τα ονόµατα αντιστοιχίζονται σε διαδοχικές τιµές που αυξάνουν µε την σειρά που έχουν δοθεί τα ονόµατα. Ηαρίθµηση αρχίζει από το 0 εκτός και αν για κάποιο όνοµα προσδιοριστεί συγκεκριµένη τιµή που οδηγεί σε διαφορετικές τιµές για τα ονόµατα της απαρίθµησης. Μια εναλλακτική λύση είναι να οριστούν από τον προγραµµατιστή σταθερές µέσω define. Προγραµµατισµός Ι lalis@inf.uth.gr 21
22 enum boolean {false,true}; enum boolean b=true; if (b) { } if (!b) { } enum weekdays {Mon=1,Tue,Wed,Thu,Fri,Sat,Sun}; enum weekdays d; for (d=mon; d<=sun; d++) { } Προγραµµατισµός Ι lalis@inf.uth.gr 22
23 Παρένθεση (βάση δεδοµένων µε πίνακααπόδοµές) Προγραµµατισµός Ι 23
24 Πρόβληµα Ζητούµενο: επιθυµούµε να διαχειριστούµε τα περιεχόµενα της τηλεφωνικής µας αντζέντας, µε βάση λειτουργίες προσθήκης, αποµάκρυνσης και αναζήτησης. Προσέγγιση ορίζουµε δοµή κατάλληλη για την οµαδοποίηση των δεδοµένων που ανήκουν σε µια «εισαγωγή» κρατάµε ταδεδοµένα σε πίνακα από δοµές Οι λειτουργίες πρέπει να υλοποιηθούν σύµφωνα µε βάση τις εσωτερικές συµβάσεις διαχείρισης των στοιχείων του πίνακα. Προγραµµατισµός Ι 24
25 Ελεύθερα και υπό χρήση στοιχεία Πρέπει να γίνεται κατάλληλη διαχείριση των «υπό χρήση» / «ελεύθερων» στοιχείων, σε συνδυασµό µε τις πράξεις προσθήκης, αποµάκρυνσης, αναζήτησης. Προσέγγιση Α: όλαταυπόχρήση(και άρα όλα τα ελεύθερα στοιχεία) βρίσκονται σε συνεχόµενες θέσεις του πίνακα και υπάρχει µεταβλητή που υποδεικνύει το σηµείο διαχωρισµού (επόµενο ελεύθερο στοιχείο). Προσέγγιση Β: κάθε στοιχείο έχει ένα επιπλέον πεδίο µέσω του οποίου σηµειώνεται κατά πόσο το στοιχείο είναι υπό χρήση ή ελεύθερο. Η προσέγγιση Α επιταχύνει την αναζήτηση ενώ η προσέγγιση Β αποφεύγει εντελώς την αντιγραφή δεδοµένων κατά την αποµάκρυνση. Προγραµµατισµός Ι lalis@inf.uth.gr 25
26 Προσέγγιση Α αποµάκρυνση i επόµενο στοιχείο προς αποθήκευση νέων δεδοµένων προσθήκη... στοιχεία υπό χρήση ελεύθερα στοιχεία Προγραµµατισµός Ι lalis@inf.uth.gr 26
27 Προσέγγιση Β αποµάκρυνση προσθήκη επόµενο στοιχείο προς αποθήκευση νέων δεδοµένων... στοιχεία υπό χρήση ελεύθερα στοιχεία Προγραµµατισµός Ι 27
28 void phonebook_init(); /* αρχικοποιεί τις καθολικές µεταβλητές ή/και δοµές δεδοµένων του προγράµµατος */ int phonebook_find(const char name[], char phone[]); /* δέχεται σαν πρώτη παράµετρο ένα αλφαριθµητικό όνοµα και αποθηκεύει στην δεύτερη παράµετρο το αντίστοιχο τηλέφωνο, επιστρέφοντας 1 για επιτυχία και 0 για αποτυχία */ void phonebook_rmv(const char name[]); /* δέχεται σαν παράµετρο ένα αλφαριθµητικό όνοµα και "αποµακρύνει" την αντίστοιχη εγγραφή, αν υπάρχει */ int phonebook_add(const char name[], const char phone[]); /* επιχειρεί να εισάγει µια νέα εγγραφή µε το όνοµα και τηλέφωνο που δίνονται σαν παράµετροι, και επιστρέφει 1 για επιτυχία, 0 για αποτυχία λόγω έλλειψης χώρου και -1 για αντικατάσταση υπάρχουσας εγγραφής */ int main(int argc, char *argv[]); /* διάλογος µε το χρήστη */ Προγραµµατισµός Ι lalis@inf.uth.gr 28
29 int main(int argc, char *argv[]) { int s,res; char name[64],phone[64]; phonebook_init(); do { printf("1. Add\n"); printf("2. Remove\n"); printf("3. Find\n"); printf("4. Exit\n"); printf("> "); scanf("%d",&s); switch (s) { case 1: { printf("name & phone:"); scanf("%63s %63s",name,phone); res=phonebook_add(name,phone); printf("res=%d\n",res); break; } case 2: { printf("name:"); scanf("%63s",name); phonebook_rmv(name); break; } case 3: { printf("name:"); scanf("%63s",name); res=phonebook_find(name,phone); printf("res=%d\n",res); if (res) { printf("phone: %s\n",phone); } break; } } Προγραµµατισµός Ι lalis@inf.uth.gr 29 } while (s!=4); }
30 #include <stdio.h> #include <string.h> #define N 100 struct entry { char used; /* 1 υπό χρήση, 0 ελεύθερο */ char name[64]; /* όνοµα ως αλφαριθµητικό */ char phone[64]; /* τηλέφωνο ως αλφαριθµητικό */ }; struct entry entries[n]; void phonebook_init() { int i; for (i=0; i<n; i++) { entries[i].used=0; } } Προγραµµατισµός Ι lalis@inf.uth.gr 30
31 int internal_find(const char name[]) { int i; for (i=0; (i<ν) && ((!entries[i].used) (strcmp(entries[i].name,name))); i++); return(i); } int phonebook_find(const char name[], char phone[]) { int i; } i=internal_find(name); if (i==n) { return(0); } else { strcpy(phone,entries[i].phone); return(1); } void phonebook_rmv(const char name[]) { int i; } i=internal_find(name); if (i<n) { entries[i].used=0; } Προγραµµατισµός Ι lalis@inf.uth.gr 31
32 int phonebook_add(const char name[], const char phone[]) { int i; } i=internal_find(name); if (i<n) { strcpy(entries[i].phone,phone); return(-1); /* replace */ } for (i=0; (i<n) && (entries[i].used); i++); if (i==n) { return(0); /* no free space */ } strcpy(entries[i].name,name); strcpy(entries[i].phone,phone); entries[i].used=1; return(1); /* done */ Προγραµµατισµός Ι lalis@inf.uth.gr 32
33 Παρένθεση (βάση δεδοµένων µε πίνακα) Προγραµµατισµός Ι 33
34 Μέγεθος αντικειµένων - sizeof Η συνάρτηση sizeof επιστρέφει το µέγεθος σε bytes που καταλαµβάνει η µεταβλητήήοτύπος δεδοµένων που δίνουµε σαν παράµετρο. εν επιστρέφει απαραίτητα την ίδια τιµή για διαφορετικούς µεταφραστές ή διαφορετικές αρχιτεκτονικές επεξεργαστών! Μπορεί να υιοθετούνται διαφορετικές προσεγγίσεις για την δέσµευση µνήµης δοµών struct και union ή/και να διαφέρει το µέγεθος των βασικών τύπων. Με το sizeof µπορούν να ορισθούν παραµετρικές εκφράσεις ως προς το µέγεθος των τύπων (σύνθετων και µη) που χρησιµοποιεί το πρόγραµµα. Προγραµµατισµός Ι lalis@inf.uth.gr 34
35 #include <stdio.h> struct entry { char used; /* 1 υπό χρήση, 0 ελεύθερο */ char name[64]; /* όνοµα ως αλφαριθµητικό */ char phone[64]; /* τηλέφωνο ως αλφαριθµητικό */ }; int main(int argc, char *argv[]) { struct entry e; } printf("size of struct entry is %d\n",sizeof(struct entry)); printf("size of variable e is %d\n",sizeof(e)); Προγραµµατισµός Ι lalis@inf.uth.gr 35
36 Ηχρήσητηςtypedef Με την typedef δηλώνονται συµβολικά ονόµατα για τύπους που κατασκευάζει ο προγραµµατιστής. Το συντακτικό είναι πανοµοιότυπο µε τον τρόπο που δηλώνονται µεταβλητές, βάζοντας το προσδιορισµό typedef στην αρχή της δήλωσης το όνοµα που αφορά η δήλωση είναι το όνοµα του νέου τύπου. Χρησιµοποιούµε τηνtypedef κυρίως για να διευκολύνουµε την αναγνωσιµότητα του κώδικα. Η typedef µπορεί να χρησιµοποιηθεί και για την (συντακτική) «απόκρυψη» της υλοποίησης ενός τύπου δεδοµένων έτσι ώστε ο προγραµµατιστής να χρησιµοποιεί αντικείµενα ενός τύπου την υλοποίηση τουοποίουδεν(είναι απαραίτητο να) γνωρίζει. Προγραµµατισµός Ι 36
37 int a; /* µεταβλητή int */ int *b; /* µεταβλητή δείκτης σε int */ typedef int *IntPtr; /* τύπος δείκτης σε int */ IntPtr c; /* µεταβλητή IntPtr */ a = 10; b = &a; *b = 11; c = b; *c = 12; Προγραµµατισµός Ι lalis@inf.uth.gr 37
38 struct date { /* τύπος struct date */ int day; int month; int year; }; typedef struct date Date; /* τύπος Date */ struct date d1; /* µεταβλητή struct date */ Date d2; /* µεταβλητή Date */ d1.day = 30; d1.month = 11; d1.year = 2006; d2 = d1; d2.day++; d2.month++; Προγραµµατισµός Ι lalis@inf.uth.gr 38
39 είκτες σε δοµές δεδοµένων Η έννοια του δείκτη εφαρµόζεται και σε σύνθετους τύπους µια µεταβλητή µπορεί να οριστεί ως δείκτης σε struct ή δείκτης σε union. Πρόσβαση στα πεδία των αντικειµένων τύπου struct και union µέσω µεταβλητής δείκτη επιτυγχάνεται µέσω του τελεστή -> Ένας πίνακας από αντικείµενα struct/union θεωρείται σταθερός δείκτης στο πρώτο στοιχείο του πίνακα, και ένας δείκτης σε struct/union µπορεί να θεωρηθεί ως η αρχή ενός τέτοιου πίνακα. Ισχύουν οι παρατηρήσεις που έχουν γίνει για δείκτες σε βασικούς τύπους: µη ελεγχόµενη πρόσβαση µνήµης, αριθµητικές πράξεις µε δείκτες κλπ. Προγραµµατισµός Ι 39
40 struct date { int day,month,year; }; typedef struct date *dateptr; struct date d[2]; dateptr dp; d[0].day = 1; d[0].month = 1; d[0].year = 2007; d[1] = d[0]; d[1].day = 31; dp = d; /* dp is address of d[0] */ dp->year++; /* d[0].year is 2008 */ (*dp).month = 12; /* d[0].month is 12 */ dp++; /* dp is address of d[1] */ dp->year++; /* d[1].year is 2008 */ (*dp).year++; /* d[1].year is 2009 */ Προγραµµατισµός Ι lalis@inf.uth.gr 40
41 #include <stdio.h> #include <string.h> #define N 100 typedef struct { char used; char name[64]; char phone[64]; } Entry; typedef Entry *EntryPtr; Entry book[n]; void phonebook_init() { EntryPtr p; } for (p=book; p<book+n; p++) { p->used=0; } Προγραµµατισµός Ι lalis@inf.uth.gr 41
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 13: Σύνθετοι Τύποι Δεδομένων (Δομές) Σύνθετοι τύποι δεδομένων Συχνά τα δεδομένα ενός προγράμματος δεν είναι απλά κάποιοι μεμονωμένοι αριθμοί ή χαρακτήρες. Χρειάζεται να
Προγραµµατισµός Ι 1
υναµική µνήµη Προγραµµατισµός Ι lalis@inf.uth.gr 1 υναµική µνήµη προγράµµατος Πολλές φορές, δεν γνωρίζουµε εκ των προτέρων πόση µνήµη θα χρειαστεί το πρόγραµµα µας. Αν δεσµεύσουµε περισσότερη µνήµη από
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 14: Δυναμική Μνήμη Δυναμική μνήμη προγράμματος Πολλές φορές, δεν γνωρίζουμε εκ των προτέρων πόση μνήμη θα χρειαστεί το πρόγραμμα μας. Αν δεσμεύσουμε περισσότερη μνήμη
Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1
Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια
Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός
Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις
Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων (union) τι και γιατί Συσκευές με μικρή μνήμη => ανάγκη εξοικονόμησης πόρων Παρατήρηση: αχρησιμοποίητη μνήμη. Έστω
int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009
Προγραµµατισµός Ι (ΗΥ10) ιάλεξη : Πίνακες, Αλφαριθµητικά Πίνακες Ο πίνακας είναι µια ειδική δοµή για την αποθήκευση µιας σειράς από δεδοµένα του ίδιου τύπου. Η δήλωσηενός πίνακα γίνεται όπως για µια κανονική
Δομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών
Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011
Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include
οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.
οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Παράδειγµα Πρόβληµα: Να γράψετε
Προγραμματισμό για ΗΜΥ
ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #5 2 Γενικά Στο Τετράδιο #5 του Εργαστηρίου θα ασχοληθούμε με πιο προχωρημένα θέματα υλοποίησης
Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Δομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη
Γλώσσα Προγραμματισμού C
Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I Θεσσαλίας Email: savvas@teilar.gr Γλώσσα Προγραμματισμού C Εισήγηση #10
Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2
Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.
Ενδεικτική περιγραφή μαθήματος
ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.
Ανάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών
Ανάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δομές Δεδομένων και Κυρίως Πρόγραμμα Δομές δεδομένων εκτός από πίνακες: Structs Unions Enums Κυρίως πρόγραμμα Παράμετροι που
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 5: Απαριθμητές (enums) Δομές (structures)και Ενώσεις (unions) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Απαριθμητές - Δομές, φωλιασμένες δομές, τρόποι δήλωσης
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ Αρχές
Η γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα. Η συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας τον τελεστή
είκτες και Πίνακες (2)
είκτες και Πίνακες (2) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πολυδιάστατοι πίνακες Πέρασµα παραµέτρων σε προγράµµατα C ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1-1 Πίνακες εικτών Πίνακας δεικτών είναι
Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών
Δομές & Ενώσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι 1 Δομές (Structures) Δομή (structure) στη C είναι μία συλλογή από μεταβλητές οποιουδήποτε
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 11: Δείκτες & Πίνακες Δείκτες και πίνακες Μια μεταβλητή «μονοδιάστατος πίνακας από αντικείμενα τύπου Τ» μπορεί να θεωρηθεί ως (είναι συντακτικά συμβατή με) μια μεταβλητή
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 8: Αρχεία και Δομές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν
C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο
C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός
Προγραµµατισµός Ι (ΗΥ120)
Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών ΑΝΑΚΟΙΝΩΣΕΙΣ 2 Από την επόµενη εβδοµάδα αλλάζουν οι ώρες των εργαστηρίων. Οι νέες ώρες θα ανακοινωθούν σήµερα στη
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,
Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Αντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Ανάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές
Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II (Κεφάλαια 25.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132
Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)
Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct) Αρχεία Το γενικό πλαίσιο: data stream (ρεύμα δεδομένων). stdin, stdout, stderr data stream ως προς τα δεδομένα βάσει προσπέλασης
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 6 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών
ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες
Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη
FILE *fopen(const char *fname, const char *mode) void fclose(file *f) void fflush(file *f)
Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 19: Αρχεία Μόνιµη αποθήκευση δεδοµένων Η µνήµη (RAM) του Η/Υ κρατά δεδοµένα µόνο όσο της δίνεται µια ικανοποιητική παροχή ρεύµατος. Τα περιεχόµενα της µνήµης χάνονται (αµέσως)
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ
ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 10 Τύποι Δεδομένων και Εγγραφές Θέματα Διάλεξης Στην ενότητα
οµές (structures) και Eνώσεις (unions)
οµές (structures) και Eνώσεις (unions) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: οµές, φωλιασµένες δοµές, τρόποι δήλωσης δοµών, δοµές ως παράµετροι σε συναρτήσεις, δείκτες σε δοµές, χρήση
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός
Εισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών
Προγραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #5 εκτέλεση υπό συνθήκη 1 Σπύρος Λάλης Ροή εκτέλεσης Μέχρι στιγμής η ροή εκτέλεσης του κώδικα είναι αυστηρά γραμμική Οι εντολές που γράφουμε στον κώδικα μας εκτελούνται μια προς
Προεπεξεργαστής C. Προγραμματισμός Ι 1
Προεπεξεργαστής C Προγραμματισμός Ι lalis@inf.uth.gr 1 Βασική ιδέα Ο προεπεξεργαστής (pre-proccesor) της C είναι ένα πρόγραμμα που εκτελείται και μετασχηματίζει τον πηγαίο κώδικα πριν αυτός δοθεί στον
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Δείκτες Δείκτες Υπάρχουν περιπτώσεις που δεν ενδιαφέρει το περιεχόμενο αλλά η μιας μεταβλητής. Χρειάζεται κατάλληλος μηχανισμός αναφοράς και επεξεργασίας τιμών που
Περιεχόμενα. Πρόλογος... 21
Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31
Επεξεργασία Αρχείων Κειµένου
Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά
Διαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή
Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης
Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Δομές Δεδομένων
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο. Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΣΙΝΑΤΚΑΣ Ι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων Εισαγωγή Οι βασικοί τύποι δεδομένων στην C είναι char, int, float και double Το επόμενο βήμα δεδομένων
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 11 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών
Προγραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή
Εισαγωγή στον Προγραµµατισµό «C»
Εισαγωγή Στον Προγραµµατισµό «C» Δείκτες Πανεπιστήµιο Πελοποννήσου Τµήµα Επιστήµης & Τεχνολογίας Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Μνήµη Υπολογιστή Η µνήµη RAM (Random Access Memory) ενός υπολογιστή
Προγραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων
Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση
6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ
6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε
scanf() scanf() stdin scanf() printf() int float double %lf float
Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία
Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"
Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό
Η γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα: είδαμε ότι συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Δεδομένα, Τύποι και Τιμές
Προγραμματισμός Η/Υ Ι Δεδομένα, Τύποι και Τιμές ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Οι περισσότερες προγραμματιστικές εργασίες περιλαμβάνουν χειρισμό
Στοιχειώδης προγραμματισμός σε C++
Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.
Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Εισαγωγικές Έννοιες σε Strings - Πίνακες από Strings - Συναρτήσεις
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Έβδοµη ιάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι
Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι
Δομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση
Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Παρατηρήσεις
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Έννοια της
ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες
Εισαγωγή στον Προγραμματισμό (με. τη C)
Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr
Προγραμμαηιζμός Ι ( ΗΥ120 )
Προγραμμαηιζμός Ι ( ΗΥ120 ) Δηάιεμε 15: Δπλακηθή Μλήκε Δσναμική μνήμη προγράμμαηος Πνιιέο θνξέο, δελ γλσξίδνπκε εθ ησλ πξνηέξσλ πόζε κλήκε ζα ρξεηαζηεί ην πξόγξακκα καο. Αλ δεζκεύζνπκε πεξηζζόηεξε κλήκε
Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών
Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους
Προγραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #4 κυριολεκτικά & μετατροπή τύπων 1 Σπύρος Λάλης Κυριολεκτικά (literals) Συχνά θέλουμε να αρχικοποιήσουμε μεταβλητές του προγράμματος με μια συγκεκριμένη τιμή υπάρχει επίσης η
ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Τελεστές - Κατηγορίες Εκφράσεις - Κατηγορίες Υπολογισμός εκφράσεων Προτάσεις - Κατηγορίες
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 6: Δομές Ελέγχου Δομές ελέγχου 2 Με τις εντολές εισόδου, εξόδου και επεξεργασίας των τιμών των μεταβλητών μπορεί να γραφτούν απλά προγράμματα. Οι δυνατότητες είναι περιορισμένες.
Δομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα 1 : Εισαγωγή Κώστας Κουκουλέτσος, Καθηγητής Τμήμα Η.Υ.Σ Άδειες Χρήσης Το παρόν εκπαιδευτικό
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δείκτες Τι είναι ένας δείκτης (pointer); Όταν δηλώνoυμε μια μεταβλητή σε ένα πρόγραμμα
Αρχεία εδοµένων. Προγραµµατισµός Ι 1
Αρχεία εδοµένων Προγραµµατισµός Ι lalis@inf.uth.gr 1 Μόνιµη αποθήκευση δεδοµένων Η µνήµη (RAM) του Η/Υ κρατάδεδοµένα µόνο όσο της δίνεται µια ικανοποιητική παροχή ρεύµατος. Τα περιεχόµενα της µνήµης χάνονται
Επανάληψη για τις Τελικές εξετάσεις
Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού