Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT"

Transcript

1 Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Οκτώβριος /28

2 1 (implicit) μετατροπές 2 (Functions) 3 (Pointers) 4 (Arrays) 2/28

3 (implicit) μετατροπές 1 #include <iostream> 2 #include <iomanip> // για τη συνάρτηση setprecision 3 using namespace std; 4 5 int main(){ 6 double d= ; // (1) 7 cout << setprecision(12); // (2) 8 9 cout << "d = " << d << endl; // (3) float f = d; 12 cout << "f = " << f << endl; // (4) int i = d; 15 cout << "i = " << i << endl; // (5) unsigned short int j = i; // (6) 18 cout << "j = " << j << endl; // (7) return 0; 21 } (1) Ορισμός του double d με πολλά ψηφία. (2) Το cout θα τυπώνει 12 σημαντικά ψηφία. (3) Οθόνη: d = (4) Οθόνη: f = Η τιμή του d δεν μπορεί να αναπαρασταθεί ακριβώς από τον f, που έχει τύπο float και συνεπώς μικρότερη ακρίβεια. (5) Οθόνη: i = -1 Το δεκαδικό μέρος του αριθμού έχει απορριφθεί. (6) Ο ακέραιος j ορίζεται ως unsigned short, και αρχικοποιείται στην τιμή του i. (7) Οθόνη: j = i Η μετατροπή του i κατά την αρχικοποίηση του j (signed unsigned) οδηγεί σε ανεπιθύμητο αποτέλεσμα 3/28

4 (implicit) μετατροπές Αναβάθμιση ακεραίου: Ένας char ή int (είτε εμπρόσημος είτε όχι) μπορεί να χρησιμοποιηθεί οπουδήποτε απαιτείται η χρήση ενός ακεραίου. Αν λοιπόν μία τιμή ενός αρχικού τύπου μπορεί να αναπαρασταθεί από έναν int (long int), τότε ο αρχικός τύπος μετατρέπεται σε int (long int). Σε αντίθετη περίπτωση, μετατρέπεται σε unsigned int (unsigned long int). Μετατροπή ακεραίου: Κατά τη μετατροπή unsigned signed, αν η τιμή βρίσκεται εντός της περιοχής τιμών του τύπου signed, τότε αυτή διατηρείται. Διαφορετιμκά το αποτέλεσμα της μετατροπης είναι απροσδιόριστο! Στην περίπτωση της μετατροπής signed unsigned, χρησιμοποιείται μία μέθοδος αποκοπής bits ή προσθήκης επιπλέον μηδενικών bits στις αναπαραστάσεις συμπλήρώματος ως προς 2 (όταν ο τύπος unsigned έχει μεγαλύτερο εύρος). Μπορεί έτσι να οδηγήσει σε ανεπιθύμητα αποτελέσματα. 4/28

5 (implicit) μετατροπές Μετατροπή δεκαδικού σε ακέραιο: Κατά τη μετατροπή αυτή, απορρίπτεται το δεκαδικό μέρος του αριθμού. Αν η τιμή που προκύπτει δεν μπορεί να αναπαρασταθεί από τον ακέραιο τύπο, τότε το αποτέλεσμα είναι απροσδιόριστο! Μετατροπή ακεραίου σε δεκαδικό: Κατά τη μετατροπή αυτή, η τιμή του δεκαδικού αριθμού που προκύπτει μπορεί να είναι η αμέσως μεγαλύτερη ή μικρότερη τιμή που μπορεί να αναπαρασταθεί. Π.χ. ο αριθμός unsigned int , αν μετατραπεί σε float θα είναι ίσος με , ενώ αν μετατραπεί σε double θα είναι ίσος με μεταξύ δεκαδικών: Όταν ένας λιγότερο ακριβής τύπος μετατρέπεται σε έναν ακριβέστερο τύπο (π.χ. float double), η τιμή διατηρείται αμετάβλητη. Στην αντίθετη περίπτωση (π.χ. double float), το αποτέλεσμα θα αντιστοιχηθεί στην αμέσως μεγαλύτερη ή μικρότερη τιμή που μπορεί να αναπαρασταθεί. Αν όμως η τιμή είναι εκτός των ορίων του λιγότερο ακριβούς τύπου, τότε το αποτέλεσμα είναι απροσδιόριστο! 5/28

6 (implicit) μετατροπές Αναβάθμιση τελεστέων κατά την εκτέλεση αριθμητικών πράξεων: Αν ο ένας τελεστέος είναι long double, τότε ο άλλος τελεστέος μετατρέπεται σε long double. Διαφορετικά, αν ο ένας τελεστέος είναι double, τότε ο άλλος τελεστέος μετατρέπεται σε double. Διαφορετικά, αν ο ένας τελεστέος είναι float, τότε ο άλλος τελεστέος μετατρέπεται σε float. Διαφορετικά (όταν δηλαδή οι τελεστέοι είναι ακέραιοι), πραγματοποιείται αναβάθμιση ακεραίου και για τους δύο τελεστέους, και έπειτα: Αν ο ένας τελεστέος είναι unsigned long int, τότε ο άλλος τελεστέος μετατρέπεται σε unsigned long int. Διαφορετικά, αν ο ένας τελεστέος είναι long int και ο άλλος unsigned int, τότε το αποτέλεσμα εξαρτάται από το αν ο long int μπορεί να αναπαραστήσει όλες τις τιμές ενός unsigned int: Αν ναι, τότε ο τελέστέος τύπου unsigned int μετατρέπεται σε long int. Αν όχι, μετατρέπονται και οι δύο τελεστέοι σε unsigned long int. Διαφορετικά, αν ο ένας τελεστέος είναι long int, τότε ο άλλος τελέστέος μετατρέπεται σε long int. Διαφορετικά, αν ο ένας τελεστέος είναι unsigned int, τότε ο άλλος τελέστέος μετατρέπεται σε unsigned int. Διαφορετικά, και οι δύο τελέστέοι είναι τύπου int. 6/28

7 (implicit) μετατροπές 1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 5 int main(){ 6 cout << setprecision(23); 7 for (int n : {12, 13, 14, 21, 23, 8 26, 35, 171, 1754, 1755}) { 9 int ip=1; 10 unsigned int uip=1; 11 long int lip=1; 12 unsigned long int ulip=1; 13 float fp=1; 14 double dp=1; 15 long double ldp=1; for ( int c=1 ;(int)c<=n ;c++) ip*=c; 18 for ( unsigned int c=1 ;(int)c<=n ;c++) uip*=c; 19 for ( long int c=1 ;(int)c<=n ;c++) lip*=c; 20 for (unsigned long int c=1 ;(int)c<=n ;c++) ulip*=c; 21 for ( float c=1 ;(int)c<=n ;c++) fp*=c; 22 for ( double c=1 ;(int)c<=n ;c++) dp*=c; 23 for ( long double c=1 ;(int)c<=n ;c++) ldp*=c; cout << endl; 26 cout << n << "! = ip = " << ip << endl; 27 cout << n << "! = uip = " << uip << endl; 28 cout << n << "! = lip = " << lip << endl; 29 cout << n << "! = ulip = " << ulip << endl; 30 cout << n << "! = fp = " << fp << endl; 31 cout << n << "! = dp = " << dp << endl; 32 cout << n << "! = ldp = " << ldp << endl; 33 } 34 } Άσκηση: Να υπολογιστεί το n! για n {12, 13, 14, 21, 23, 26, 35, 171, 1754, 1755} χρησιμοποιώντας για το αποτέλεσμα αριθμούς int, unsigned int, long int, unsigned long int, float, double και long double. Συγκρίνετε τα αποτελέσματα. Τι συμπέρασμα βγάζετε; Δημιουργία του φακέλου ~/erg3 (μία φορά): mkdir ~/erg3 Μετάβαση στον φάκελο που δημιουργήθηκε: cd ~/erg3 Άνοιγμα και επεξεργασία αρχείου cpp με emacs: emacs ask1.cpp & Μεταγλώττιση (αφού σωθεί το αρχείο): g++ -std=c++11 ask1.cpp -o ask1.exe Εκτέλεση του προγράμματος που προκύπτει:./ask1.exe 7/28

8 Οι συναρτήσεις βελτιώνουν τον διαδικασιακό προγραμματισμό, συμβάλλουν στην άνετη ανάγνωση του κώδικα και στην ευκολότερη συντήρησή του. Μπορούν να ομαδοποιηθούν σε βιβλιοθήκες, που καλούνται από προγράμματα. 8/28

9 Οι συναρτήσεις βελτιώνουν τον διαδικασιακό προγραμματισμό, συμβάλλουν στην άνετη ανάγνωση του κώδικα και στην ευκολότερη συντήρησή του. Μπορούν να ομαδοποιηθούν σε βιβλιοθήκες, που καλούνται από προγράμματα. 1 // δήλωση της συνάρτησης 2 return_type myfunc(arg1_type, arg2_type,... ); 3 4 int main(){ arg1_type x=... ; 7 arg2_type y=... ; 8 return_type z; 9 z=myfunc(x,y); // κλήση της συνάρτησης return 0; 12 } // ανάπτυξη της συνάρτησης 15 return_type myfunc(arg1_type A, arg2_type B,... ) { return_type theresult=... ; // χρήση των Α, Β,... σε εκφράσεις return theresult; 22 } Μία συνάρτηση πρέπει να δηλωθεί εντός του κώδικα πριν χρησιμοποιηθεί. Η δήλωση αυτή καθορίζει την υπογραφή της συνάρτησης. 8/28

10 Οι συναρτήσεις βελτιώνουν τον διαδικασιακό προγραμματισμό, συμβάλλουν στην άνετη ανάγνωση του κώδικα και στην ευκολότερη συντήρησή του. Μπορούν να ομαδοποιηθούν σε βιβλιοθήκες, που καλούνται από προγράμματα. 1 // δήλωση της συνάρτησης 2 return_type myfunc(arg1_type, arg2_type,... ); 3 4 int main(){ arg1_type x=... ; 7 arg2_type y=... ; 8 return_type z; 9 z=myfunc(x,y); // κλήση της συνάρτησης return 0; 12 } // ανάπτυξη της συνάρτησης 15 return_type myfunc(arg1_type A, arg2_type B,... ) { return_type theresult=... ; // χρήση των Α, Β,... σε εκφράσεις return theresult; 22 } Η χρήση της γίνεται μέσω κλήσεών της (function calls) εντός άλλων συναρτήσεων, όπως π.χ. εντός της main. 8/28

11 Οι συναρτήσεις βελτιώνουν τον διαδικασιακό προγραμματισμό, συμβάλλουν στην άνετη ανάγνωση του κώδικα και στην ευκολότερη συντήρησή του. Μπορούν να ομαδοποιηθούν σε βιβλιοθήκες, που καλούνται από προγράμματα. 1 // δήλωση της συνάρτησης 2 return_type myfunc(arg1_type, arg2_type,... ); 3 4 int main(){ arg1_type x=... ; 7 arg2_type y=... ; 8 return_type z; 9 z=myfunc(x,y); // κλήση της συνάρτησης return 0; 12 } // ανάπτυξη της συνάρτησης 15 return_type myfunc(arg1_type A, arg2_type B,... ) { return_type theresult=... ; // χρήση των Α, Β,... σε εκφράσεις return theresult; 22 } Η ανάπτυξή της υλοποιείται οπουδήποτε μετά τη δήλωσή της (όχι όμως εντός άλλης συνάρτησης). Πρέπει να έχει την ίδια ακριβώς υπογραφή με αυτή της δήλωσης (ίδιο τύπο επιστροφής, ίδιους τύπους ορισμάτων, ίδια διάταξή τους). Τα ορίσματα αποκτούν πλέον και αναγνωριστικά, που χρησιμοποιούνται σε εκφράσεις εντός της συνάρτησης. 8/28

12 Οι συναρτήσεις βελτιώνουν τον διαδικασιακό προγραμματισμό, συμβάλλουν στην άνετη ανάγνωση του κώδικα και στην ευκολότερη συντήρησή του. Μπορούν να ομαδοποιηθούν σε βιβλιοθήκες, που καλούνται από προγράμματα. 1 // δήλωση της συνάρτησης 2 return_type myfunc(arg1_type, arg2_type,... ); 3 4 int main(){ arg1_type x=... ; 7 arg2_type y=... ; 8 return_type z; 9 z=myfunc(x,y); // κλήση της συνάρτησης return 0; 12 } // ανάπτυξη της συνάρτησης 15 return_type myfunc(arg1_type A, arg2_type B,... ) { return_type theresult=... ; // χρήση των Α, Β,... σε εκφράσεις return theresult; 22 } Μία συνάρτηση πρέπει να δηλωθεί εντός του κώδικα πριν χρησιμοποιηθεί. Η δήλωση αυτή καθορίζει την υπογραφή της συνάρτησης. Η χρήση της γίνεται μέσω κλήσεών της (function calls) εντός άλλων συναρτήσεων, όπως π.χ. εντός της main. Η ανάπτυξή της υλοποιείται οπουδήποτε μετά τη δήλωσή της (όχι όμως εντός άλλης συνάρτησης). Πρέπει να έχει την ίδια ακριβώς υπογραφή με αυτή της δήλωσης (ίδιο τύπο επιστροφής, ίδιους τύπους ορισμάτων, ίδια διάταξή τους). Τα ορίσματα αποκτούν πλέον και αναγνωριστικά, που χρησιμοποιούνται σε εκφράσεις εντός της συνάρτησης. 8/28

13 Τα ορίσματα περνούν στις συναρτήσεις ως τιμές (call by value), δηλαδή: Δημιουργείται στη μνήμη ένα αντίγραφο για κάθε αρχικό (πραγματικό) όρισμα, όπως αυτό εμφανίζεται στην αντίστοιχη εντολής κλήσης της συνάρτησης. Τα αντίγραφα αυτα χρησιμοποιούνται στις όποιες εκφράσεις εντός της συνάρτησης, και μπορούν να τροποποιηθούν εντός αυτής. Τα αρχικά (πραγματικά) ορίσματα παραμένουν αμετάβλητα, ανεξαρτήτως του τι συμβαίνει στα αντίγραφά τους εντός της συνάρτησης. Υπάρχουν δύο περιπτώσεις (που θα μελετηθούν αργότερα) οι οποίες δίνουν τη δυνατότητα χειρισμού/μεταβολής των αρχικών (πραγματικών) ορισμάτων της συνάρτησης. Κλήση συναρτήσεων χρησιμοποιώντας ορίσματα με δείκτες. Κλήση συναρτήσεων χρησιμοποιώντας ορίσματα με αναφορές. 9/28

14 1 #include <iostream> 2 using namespace std; 3 // // δήλωση της συνάρτησης fmodulo 5 int fmodulo(int, int); 6 // int main(){ 8 9 int i=133; 10 int j=5; cout << "i=" << i 13 << ", j=" << j << endl; int k=fmodulo(i,3*j); cout << "i=" << i 18 << ", j=" << j 19 << ", k=" << k <<endl; return 0; 22 } 23 // // ανάπτυξη της συνάρτησης fmodulo 25 int fmodulo(int i, int m) { i=i%m; return i; } 32 // Δήλωση της συνάρτησης fmodulo 10/28

15 1 #include <iostream> 2 using namespace std; 3 // // δήλωση της συνάρτησης fmodulo 5 int fmodulo(int, int); 6 // int main(){ 8 9 int i=133; 10 int j=5; cout << "i=" << i 13 << ", j=" << j << endl; int k=fmodulo(i,3*j); cout << "i=" << i 18 << ", j=" << j 19 << ", k=" << k <<endl; return 0; 22 } 23 // // ανάπτυξη της συνάρτησης fmodulo 25 int fmodulo(int i, int m) { i=i%m; return i; } 32 // Ανάπτυξη της συνάρτησης fmodulo. Τα αντίγραφα των ορισμάτων κλήσης ονομάζονται εντός της ανάπτυξης i και j. 10/28

16 1 #include <iostream> 2 using namespace std; 3 // // δήλωση της συνάρτησης fmodulo 5 int fmodulo(int, int); 6 // int main(){ 8 9 int i=133; 10 int j=5; cout << "i=" << i 13 << ", j=" << j << endl; int k=fmodulo(i,3*j); cout << "i=" << i 18 << ", j=" << j 19 << ", k=" << k <<endl; return 0; 22 } 23 // // ανάπτυξη της συνάρτησης fmodulo 25 int fmodulo(int i, int m) { i=i%m; return i; } 32 // Η τιμή του i μεταβάλλεται. 29 Η τιμή του i επιστρέφεται από τη συνάρτηση. 10/28

17 1 #include <iostream> 2 using namespace std; 3 // // δήλωση της συνάρτησης fmodulo 5 int fmodulo(int, int); 6 // int main(){ 8 9 int i=133; 10 int j=5; cout << "i=" << i 13 << ", j=" << j << endl; int k=fmodulo(i,3*j); cout << "i=" << i 18 << ", j=" << j 19 << ", k=" << k <<endl; return 0; 22 } 23 // // ανάπτυξη της συνάρτησης fmodulo 25 int fmodulo(int i, int m) { i=i%m; return i; } 32 // Η συνάρτηση καλείται με ορίσματα i και 3*j. Έτσι, η μεταβλητή αντίγραφο i της συνάρτησης παίρνει την τιμή του i της main, και η μεταβλητή αντίγραφο m της συνάρτησης παίρνει την τιμή 3*j. Η συνάρτηση επιστρέφει την τιμή του αντιγράφου i,η οποία αποδίδεται στη μεταβλητή k. 10/28

18 1 #include <iostream> 2 using namespace std; 3 // // δήλωση της συνάρτησης fmodulo 5 int fmodulo(int, int); 6 // int main(){ 8 9 int i=133; 10 int j=5; cout << "i=" << i 13 << ", j=" << j << endl; int k=fmodulo(i,3*j); cout << "i=" << i 18 << ", j=" << j 19 << ", k=" << k <<endl; return 0; 22 } 23 // // ανάπτυξη της συνάρτησης fmodulo 25 int fmodulo(int i, int m) { i=i%m; return i; } 32 // Οθόνη: i=133, j= Οθόνη: i=133, j=5, k=13 10/28

19 Υπερφόρτωση συναρτήσεων (function overloading): Οι συναρτήσεις επιτρέπεται να έχουν το ίδιο όνομα, αρκεί να έχουν διαφορετική λίστα ορισμάτων (διαφορετικούς τύπους ή αριθμό ορισμάτων). 11/28

20 Υπερφόρτωση συναρτήσεων (function overloading): Οι συναρτήσεις επιτρέπεται να έχουν το ίδιο όνομα, αρκεί να έχουν διαφορετική λίστα ορισμάτων (διαφορετικούς τύπους ή αριθμό ορισμάτων). Ο μεταγλωττιστής επιλέγει την κατάλληλη κάθε φορά συνάρτηση, ανάλογα με τον τρόπο κλήσης της (ορίσματα, τύποι ορισμάτων). 11/28

21 Υπερφόρτωση συναρτήσεων (function overloading): Οι συναρτήσεις επιτρέπεται να έχουν το ίδιο όνομα, αρκεί να έχουν διαφορετική λίστα ορισμάτων (διαφορετικούς τύπους ή αριθμό ορισμάτων). Ο μεταγλωττιστής επιλέγει την κατάλληλη κάθε φορά συνάρτηση, ανάλογα με τον τρόπο κλήσης της (ορίσματα, τύποι ορισμάτων). double fcn () ; Ορίσματα: κανένα Επιστρέφει: double 11/28

22 Υπερφόρτωση συναρτήσεων (function overloading): Οι συναρτήσεις επιτρέπεται να έχουν το ίδιο όνομα, αρκεί να έχουν διαφορετική λίστα ορισμάτων (διαφορετικούς τύπους ή αριθμό ορισμάτων). Ο μεταγλωττιστής επιλέγει την κατάλληλη κάθε φορά συνάρτηση, ανάλογα με τον τρόπο κλήσης της (ορίσματα, τύποι ορισμάτων). double fcn () ; double fcn ( int ) ; Ορίσματα: κανένα Επιστρέφει: double Ορίσματα: int Επιστρέφει: double 11/28

23 Υπερφόρτωση συναρτήσεων (function overloading): Οι συναρτήσεις επιτρέπεται να έχουν το ίδιο όνομα, αρκεί να έχουν διαφορετική λίστα ορισμάτων (διαφορετικούς τύπους ή αριθμό ορισμάτων). Ο μεταγλωττιστής επιλέγει την κατάλληλη κάθε φορά συνάρτηση, ανάλογα με τον τρόπο κλήσης της (ορίσματα, τύποι ορισμάτων). double fcn () ; double fcn ( int ) ; Ορίσματα: κανένα Επιστρέφει: double Ορίσματα: int Επιστρέφει: double int fcn ( int, int ) ; Ορίσματα: int και int Επιστρέφει: int 11/28

24 Υπερφόρτωση συναρτήσεων (function overloading): Οι συναρτήσεις επιτρέπεται να έχουν το ίδιο όνομα, αρκεί να έχουν διαφορετική λίστα ορισμάτων (διαφορετικούς τύπους ή αριθμό ορισμάτων). Ο μεταγλωττιστής επιλέγει την κατάλληλη κάθε φορά συνάρτηση, ανάλογα με τον τρόπο κλήσης της (ορίσματα, τύποι ορισμάτων). double fcn () ; double fcn ( int ) ; Ορίσματα: κανένα Επιστρέφει: double Ορίσματα: int Επιστρέφει: double int fcn ( int, int ) ; double fcn ( int, double ) ; Ορίσματα: int και int Επιστρέφει: int Ορίσματα: int και double Επιστρέφει: double 11/28

25 Υπερφόρτωση συναρτήσεων (function overloading): Οι συναρτήσεις επιτρέπεται να έχουν το ίδιο όνομα, αρκεί να έχουν διαφορετική λίστα ορισμάτων (διαφορετικούς τύπους ή αριθμό ορισμάτων). Ο μεταγλωττιστής επιλέγει την κατάλληλη κάθε φορά συνάρτηση, ανάλογα με τον τρόπο κλήσης της (ορίσματα, τύποι ορισμάτων). double fcn () ; double fcn ( int ) ; Ορίσματα: κανένα Επιστρέφει: double Ορίσματα: int Επιστρέφει: double int fcn ( int, int ) ; double fcn ( int, double ) ; int fcn ( int ) ; Ορίσματα: int και int Επιστρέφει: int Ορίσματα: int και double Επιστρέφει: double Ορίσματα: int Επιστρέφει: int ΛΑΘΟΣ: ίδια υπογραφή με τη 2η περίπτωση, αν και με διαφορετικό επιστρεφόμενο τύπο. 11/28

26 1 #include <iostream> 2 using namespace std; 3 // int f (int, int ) ; 5 int f (int, int, int ) ; 6 double f (double, int ) ; 7 //int f (double, int ) ; // -> ΛΑΘΟΣ 8 // int main(){ 10 cout << "f(1,2) " << f(1,2) << endl; cout << "f(1,2,3) " << f(1,2,3) << endl; cout << "f(3.5,2) " << f(3.5,2) << endl; cout << "f(1.9,2.9) " << f(1.9,2.9) << endl; cout << "f(1,2.9) " << f(1,2.9) << endl; cout << "f(1.9,2,3) " << f(1.9,2,3) << endl; 21 } 22 // int f (int a,int b) { 24 cout << "-> A: i i => i : " ; 25 return a+b; } 26 // int f (int a,int b,int c) { 28 cout << "-> B: i i i => i : " ; 29 return a+b+c; } 30 // double f (double a,int b) { 32 cout << "-> C: d i => d : " ; 33 return a+b; } 10 f(1,2) -> A: i i => i : 3 12/28

27 1 #include <iostream> 2 using namespace std; 3 // int f (int, int ) ; 5 int f (int, int, int ) ; 6 double f (double, int ) ; 7 //int f (double, int ) ; // -> ΛΑΘΟΣ 8 // int main(){ 10 cout << "f(1,2) " << f(1,2) << endl; cout << "f(1,2,3) " << f(1,2,3) << endl; cout << "f(3.5,2) " << f(3.5,2) << endl; cout << "f(1.9,2.9) " << f(1.9,2.9) << endl; cout << "f(1,2.9) " << f(1,2.9) << endl; cout << "f(1.9,2,3) " << f(1.9,2,3) << endl; 21 } 22 // int f (int a,int b) { 24 cout << "-> A: i i => i : " ; 25 return a+b; } 26 // int f (int a,int b,int c) { 28 cout << "-> B: i i i => i : " ; 29 return a+b+c; } 30 // double f (double a,int b) { 32 cout << "-> C: d i => d : " ; 33 return a+b; } 12 f(1,2,3) -> B: i i i => i : 6 12/28

28 1 #include <iostream> 2 using namespace std; 3 // int f (int, int ) ; 5 int f (int, int, int ) ; 6 double f (double, int ) ; 7 //int f (double, int ) ; // -> ΛΑΘΟΣ 8 // int main(){ 10 cout << "f(1,2) " << f(1,2) << endl; cout << "f(1,2,3) " << f(1,2,3) << endl; cout << "f(3.5,2) " << f(3.5,2) << endl; cout << "f(1.9,2.9) " << f(1.9,2.9) << endl; cout << "f(1,2.9) " << f(1,2.9) << endl; cout << "f(1.9,2,3) " << f(1.9,2,3) << endl; 21 } 22 // int f (int a,int b) { 24 cout << "-> A: i i => i : " ; 25 return a+b; } 26 // int f (int a,int b,int c) { 28 cout << "-> B: i i i => i : " ; 29 return a+b+c; } 30 // double f (double a,int b) { 32 cout << "-> C: d i => d : " ; 33 return a+b; } 14 f(3.5,2) -> C: d i => d : /28

29 1 #include <iostream> 2 using namespace std; 3 // int f (int, int ) ; 5 int f (int, int, int ) ; 6 double f (double, int ) ; 7 //int f (double, int ) ; // -> ΛΑΘΟΣ 8 // int main(){ 10 cout << "f(1,2) " << f(1,2) << endl; cout << "f(1,2,3) " << f(1,2,3) << endl; cout << "f(3.5,2) " << f(3.5,2) << endl; cout << "f(1.9,2.9) " << f(1.9,2.9) << endl; cout << "f(1,2.9) " << f(1,2.9) << endl; cout << "f(1.9,2,3) " << f(1.9,2,3) << endl; 21 } 22 // int f (int a,int b) { 24 cout << "-> A: i i => i : " ; 25 return a+b; } 26 // int f (int a,int b,int c) { 28 cout << "-> B: i i i => i : " ; 29 return a+b+c; } 30 // double f (double a,int b) { 32 cout << "-> C: d i => d : " ; 33 return a+b; } 16 f(1.9,2.9) -> C: d i => d : /28

30 1 #include <iostream> 2 using namespace std; 3 // int f (int, int ) ; 5 int f (int, int, int ) ; 6 double f (double, int ) ; 7 //int f (double, int ) ; // -> ΛΑΘΟΣ 8 // int main(){ 10 cout << "f(1,2) " << f(1,2) << endl; cout << "f(1,2,3) " << f(1,2,3) << endl; cout << "f(3.5,2) " << f(3.5,2) << endl; cout << "f(1.9,2.9) " << f(1.9,2.9) << endl; cout << "f(1,2.9) " << f(1,2.9) << endl; cout << "f(1.9,2,3) " << f(1.9,2,3) << endl; 21 } 22 // int f (int a,int b) { 24 cout << "-> A: i i => i : " ; 25 return a+b; } 26 // int f (int a,int b,int c) { 28 cout << "-> B: i i i => i : " ; 29 return a+b+c; } 30 // double f (double a,int b) { 32 cout << "-> C: d i => d : " ; 33 return a+b; } 18 f(1,2.9) -> A: i i => i : 3 12/28

31 1 #include <iostream> 2 using namespace std; 3 // int f (int, int ) ; 5 int f (int, int, int ) ; 6 double f (double, int ) ; 7 //int f (double, int ) ; // -> ΛΑΘΟΣ 8 // int main(){ 10 cout << "f(1,2) " << f(1,2) << endl; cout << "f(1,2,3) " << f(1,2,3) << endl; cout << "f(3.5,2) " << f(3.5,2) << endl; cout << "f(1.9,2.9) " << f(1.9,2.9) << endl; cout << "f(1,2.9) " << f(1,2.9) << endl; cout << "f(1.9,2,3) " << f(1.9,2,3) << endl; 21 } 22 // int f (int a,int b) { 24 cout << "-> A: i i => i : " ; 25 return a+b; } 26 // int f (int a,int b,int c) { 28 cout << "-> B: i i i => i : " ; 29 return a+b+c; } 30 // double f (double a,int b) { 32 cout << "-> C: d i => d : " ; 33 return a+b; } 20 f(1.9,2,3) -> B: i i i => i : 6 12/28

32 1 #include <iostream> 2 using namespace std; 3 // int f (int, int ) ; 5 int f (int, int, int ) ; 6 double f (double, int ) ; 7 //int f (double, int ) ; // -> ΛΑΘΟΣ 8 // int main(){ 10 cout << "f(1,2) " << f(1,2) << endl; cout << "f(1,2,3) " << f(1,2,3) << endl; cout << "f(3.5,2) " << f(3.5,2) << endl; cout << "f(1.9,2.9) " << f(1.9,2.9) << endl; cout << "f(1,2.9) " << f(1,2.9) << endl; cout << "f(1.9,2,3) " << f(1.9,2,3) << endl; 21 } 22 // int f (int a,int b) { 24 cout << "-> A: i i => i : " ; 25 return a+b; } 26 // int f (int a,int b,int c) { 28 cout << "-> B: i i i => i : " ; 29 return a+b+c; } 30 // double f (double a,int b) { 32 cout << "-> C: d i => d : " ; 33 return a+b; } 10 f(1,2) -> A: i i => i : 3 12 f(1,2,3) -> B: i i i => i : 6 14 f(3.5,2) -> C: d i => d : f(1.9,2.9) -> C: d i => d : f(1,2.9) -> A: i i => i : 3 20 f(1.9,2,3) -> B: i i i => i : 6 12/28

33 Μία μεταβλητή τύπου δείκτη (pointer) αποθηκεύει ως τιμή του τη διεύθυνση μίας μεταβλητής 1 char *pc; 2 char c = 'w'; 3 pc = &c; 4 char d = *pc; 1 Δήλωση ενός δείκτη προς μία μεταβλητή τύπου char. Ο τύπος του δείκτη είναι char *. 13/28

34 Μία μεταβλητή τύπου δείκτη (pointer) αποθηκεύει ως τιμή του τη διεύθυνση μίας μεταβλητής 1 char *pc; 2 char c = 'w'; 3 pc = &c; 4 char d = *pc; 2 Ορισμός και αρχικοποίηση μίας μεταβλητής τύπου char. 13/28

35 Μία μεταβλητή τύπου δείκτη (pointer) αποθηκεύει ως τιμή του τη διεύθυνση μίας μεταβλητής 1 char *pc; 2 char c = 'w'; 3 pc = &c; 4 char d = *pc; 3 Ο δείκτης λαμβάνει ως τιμή τη διεύθυνση της μεταβλητής c, με τη χρήση του τελεστή &. 13/28

36 Μία μεταβλητή τύπου δείκτη (pointer) αποθηκεύει ως τιμή του τη διεύθυνση μίας μεταβλητής 1 char *pc; 2 char c = 'w'; 3 pc = &c; 4 char d = *pc; 4 Αποαναφοροποίηση (dereferencing) του δείκτη με τη χρήση του τελεστή *. Η αποαναφοροποιημένη τιμή του δείκτη είναι ίση με την τιμή της μεταβλητής την οποία δείχνει. Εδώ π.χ. η μεταβλητή d ορίζεται ως τύπου char και αρχικοποιείται στην τιμή του c, μέσω της αποαναφοροποίησης *pc. 13/28

37 Μία μεταβλητή τύπου δείκτη (pointer) αποθηκεύει ως τιμή του τη διεύθυνση μίας μεταβλητής 1 char *pc; 2 char c = 'w'; 3 pc = &c; 4 char d = *pc; 1 Δήλωση ενός δείκτη προς μία μεταβλητή τύπου char. Ο τύπος του δείκτη είναι char *. 2 Ορισμός και αρχικοποίηση μίας μεταβλητής τύπου char. 3 Ο δείκτης λαμβάνει ως τιμή τη διεύθυνση της μεταβλητής c, με τη χρήση του τελεστή &. 4 Αποαναφοροποίηση (dereferencing) του δείκτη με τη χρήση του τελεστή *. Η αποαναφοροποιημένη τιμή του δείκτη είναι ίση με την τιμή της μεταβλητής την οποία δείχνει. Εδώ π.χ. η μεταβλητή d ορίζεται ως τύπου char και αρχικοποιείται στην τιμή του c, μέσω της αποαναφοροποίησης *pc. 13/28

38 Η διεύθυνση μνήμης μίας μεταβλητής λαμβάνεται με τη χρήση του τελεστή &. Ένας δείκτης που αποαναφοροποιείται με τη χρήση του τελεστή * ταυτίζεται με τη μεταβλητή στην οποία δείχνει. Ο τύπος δεδομένων του δείκτη οφείλει να ταιριάζει με τον τύπο των δεδομένων της μεταβλητής στην οποία δείχνει. Π.χ. ένας δείκτης char * μπορεί να δείχνει μόνον σε μεταβλητές τύπου char. Ο μεταγλωττιστής πρέπει να γνωρίζει το μέγεθος σε byte του αποαναφοροποιημένου τύπου δεδομένων. Υπάρχει ένας ειδικός τύπος δείκτη, ο void * (δείκτης προς το κενό προς ο,τιδήποτε), ο οποίος μπορεί να δείχνει σε οποιαδήποτε θέση στη μνήμη, ανεξαρτήτως του τύπου δεδομένων που είναι εκεί αποθηκευμένα. Οι κενοί δείκτες δεν μπορούν να αποαναφοροποιηθούν. Προσοχή: που δεν έχουν αρχικοποιηθεί αποτελούν την πιο συνηθισμένη αιτία αποτυχίας ενός προγράμματος κατά τη διάρκεια εκτέλεσής του. 14/28

39 int *pi; Δείκτης προς μία μεταβλητή int double d=0.; int *pi; pi = &d; // Λάθος!!! ΛΑΘΟΣ στην τρίτη γραμμή: ο δείκτης pi είναι τύπου int *, οπότε δεν μπορεί να λάβει ως τιμή τη διεύθυνση της μεταβλητής d, αφού αυτή είναι τύπου double. 15/28

40 const int i = 0; const int *pi = &i; *pi = 3; // Λάθος!!! Ο δείκτης pi δηλώνεται ως εξής: Ο pi είναι ένας δείκτης προς έναν ακέραιο που δεν μπορεί να μεταβληθεί (const int). ΛΑΘΟΣ στην τρίτη γραμμή: Απαγορεύεται να μεταβάλλει κανείς έναν ακέραιο που δεν μπορεί να μεταβληθεί (const int). 16/28

41 int i = 0; int j = 1; int * const pi = &i; pi = &j; // Λάθος!!! Ο δείκτης pi δηλώνεται ως εξής: Ο pi είναι ένας σταθερός δείκτης (* const) προς έναν ακέραιο (int) και αρχικοποιείται με τη διεύθυνση του i. ΛΑΘΟΣ στην τέταρτη γραμμή: Ο pi απαγορεύεται να μεταβληθεί αφού έχει δηλωθεί σταθερός. 17/28

42 int i = 0; int *pi = &i; int **pj; pj = π **pj = 3; Ο δείκτης pj δηλώνεται ως εξής: Ο pj είναι δείκτης προς έναν δείκτη προς ακέραιο. Ο pj παίρνει την τιμή της διεύθυνσης του δείκτη pi. Άρα τώρα ο pj δείχνει εκεί όπου δείχνει ο pi, δηλαδή στην μεταβλητή i. Έτσι, η τελευταία εντολή αποδίδει στη μεταβλητή i την τιμή 3. 18/28

43 Προσοχή: Η απόπειρα αποαναφοροποίησης τυχαίων θέσεων μνήμης μπορεί να οδηγήσει σε αποτυχία ενός προγράμματος κατά τη διάρκεια εκτέλεσής του. int *pi; int i = 0; if (... ) { pi = &i; // εξαρτάται από το if, αν θα εκτελεστεί } *pi = 3; Η εντολή pi = &i; ενδέχεται να μην εκτελεστεί, λόγω του if. Τότε η τελευταία εντολή (*pi = 3;) μπορεί να οδηγήσει σε αποτυχία του προγράμματος κατά την εκτέλεσή του (segmentation fault). 19/28

44 Η θέση μνήμης 0x0 δεν είναι έγκυρη σε κανένα πρόγραμμα, και για το λόγο αυτό συνηθίζεται να χρησιμοποιείται για δείκτες που δεν έχουν κάποια συγκεκριμένη αρχική τιμή ή που είναι άκυροι. Με την πρακτική αυτή, μπορεί κανείς να ελέγξει αν η τιμή ενός δείκτη είναι ίση με 0x0 πριν τον χρησιμοποιήσει. int *pi = 0; // Αρχικοποίηση στο 0x0 int i = 0; if (... ) { pi = &i; // εξαρτάται από το if, αν θα εκτελεστεί } if ( pi!= NULL ) { // NULL = 0 εξ ορισμού *pi = 3; } Η εντολή pi = &i; ενδέχεται να μην εκτελεστεί, λόγω του if. Τότε η τελευταία εντολή (*pi = 3;) μπορεί να οδηγήσει σε αποτυχία του προγράμματος κατά την εκτέλεσή του (segmentation fault). 20/28

45 1 // #include <iostream> 3 // void fcn ( int * ) ; 5 // using namespace std; 7 int main() { 8 int n=0; 9 cout << "n = " << n << endl; 10 fcn(&n); 11 cout << "n = " << n << endl; 12 return 0; 13 } 14 // void fcn (int *pi) { 16 *pi = 3; 17 } 18 // Η συνάρτηση fcn αναμένει ως μόνο όρισμά της έναν δείκτη προς έναν ακέραιο. 21/28

46 1 // #include <iostream> 3 // void fcn ( int * ) ; 5 // using namespace std; 7 int main() { 8 int n=0; 9 cout << "n = " << n << endl; 10 fcn(&n); 11 cout << "n = " << n << endl; 12 return 0; 13 } 14 // void fcn (int *pi) { 16 *pi = 3; 17 } 18 // Η μεταβλητή n αρχικοποιείται σε 0. 21/28

47 1 // #include <iostream> 3 // void fcn ( int * ) ; 5 // using namespace std; 7 int main() { 8 int n=0; 9 cout << "n = " << n << endl; 10 fcn(&n); 11 cout << "n = " << n << endl; 12 return 0; 13 } 14 // void fcn (int *pi) { 16 *pi = 3; 17 } 18 // Οθόνη: n = 0 21/28

48 1 // #include <iostream> 3 // void fcn ( int * ) ; 5 // using namespace std; 7 int main() { 8 int n=0; 9 cout << "n = " << n << endl; 10 fcn(&n); 11 cout << "n = " << n << endl; 12 return 0; 13 } 14 // void fcn (int *pi) { 16 *pi = 3; 17 } 18 // Η συνάρτηση fcn καλείται με όρισμα τη διεύθυνση της μεταβλητής n. 21/28

49 1 // #include <iostream> 3 // void fcn ( int * ) ; 5 // using namespace std; 7 int main() { 8 int n=0; 9 cout << "n = " << n << endl; 10 fcn(&n); 11 cout << "n = " << n << endl; 12 return 0; 13 } 14 // void fcn (int *pi) { 16 *pi = 3; 17 } 18 // Η αποαναφοροποίηση του δείκτη pi, παρέχει πρόσβαση στην αρχική μεταβλητή n, η οποία έχει οριστεί εντός της main. 21/28

50 1 // #include <iostream> 3 // void fcn ( int * ) ; 5 // using namespace std; 7 int main() { 8 int n=0; 9 cout << "n = " << n << endl; 10 fcn(&n); 11 cout << "n = " << n << endl; 12 return 0; 13 } 14 // void fcn (int *pi) { 16 *pi = 3; 17 } 18 // Οθόνη: n = 3 21/28

51 1 // #include <iostream> 3 // void fcn ( int * ) ; 5 // using namespace std; 7 int main() { 8 int n=0; 9 cout << "n = " << n << endl; 10 fcn(&n); 11 cout << "n = " << n << endl; 12 return 0; 13 } 14 // void fcn (int *pi) { 16 *pi = 3; 17 } 18 // Η συνάρτηση fcn αναμένει ως μόνο όρισμά της έναν δείκτη προς έναν ακέραιο. 8 Η μεταβλητή n αρχικοποιείται σε 0. 9 Οθόνη: n = 0 10 Η συνάρτηση fcn καλείται με όρισμα τη διεύθυνση της μεταβλητής n. 16 Η αποαναφοροποίηση του δείκτη pi, παρέχει πρόσβαση στην αρχική μεταβλητή n, η οποία έχει οριστεί εντός της main. 11 Οθόνη: n = 3 21/28

52 1 // #include <iostream> // using namespace std; 5 6 int main() { 7 8 int i=100; 9 int j=333; cout << "i = " << i 12 << ", j = " << j << endl; // εδώ πρέπει να κληθεί η συνάρτησή σας cout << "i = " << i 17 << ", j = " << j << endl; return 0; 20 } 21 // άσκηση Να γραφεί ένα πρόγραμμα με μία συνάρτηση, την swap, η οποία να ανταλλάσσει μεταξύ τους τις τιμές δύο ακεραίων αριθμών. Δίνειται δίπλα ο πηγαίος κώδικας της συνάρτησης main. 22/28

53 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 float f1; float f2; float f3; float *pf = &f1;... 23/28

54 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 float f1; float f2; float f3; float *pf = &f2;... 23/28

55 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 float f1; float f2; float f3; float *pf = &f3;... 23/28

56 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 float f1; float f2; float f3; float *pf = &f1;... 23/28

57 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 float f1; float f2; float f3; float *pf = &f1; pf++; 0x74 0x75 0x xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 23/28

58 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 float f1; float f2; float f3; float *pf = &f1; pf++; pf++; 0x74 0x75 0x xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 23/28

59 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 float f1; float f2; float f3; float *pf = &f1; pf++; pf++; pf++; 0x74 0x75 0x xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 23/28

60 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 float f1; float f2; float f3; float *pf = &f1; pf++; pf++; pf++; 0x74 0x75 0x xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 23/28

61 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 float f1; float f2; float f3; float *pf = &f2; pf++; pf++; 0x74 0x75 0x xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 23/28

62 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 float f1; float f2; float f3; float *pf = &f3; pf--; pf--; 0x74 0x75 0x xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 23/28

63 Μνήμη 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 0x74 0x75 0x xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 short int i1; short int i2; short int i3; short int i4; short int i5; short int i6; short int i7; short int *pi = &i1; pi++; pi++; pi++; pi++; pi++; pi++; pi++; 23/28

64 (Arrays) Μία ακολουθία αντικειμένων του ίδιου τύπου ονομάζεται πίνακας. Κάθε αντικείμενο του πίνακα αναφέρεται ως στοιχείο του πίνακα. Τα στοιχεία ενός πίνακα απασχολούν ένα συνεχές τμήμα της μνήμης, και είναι διατεταγμένα (πρώτο, δεύτερο, τρίτο στοιχείο κ.ο.κ.). int a[10]; // Δήλωση ενός πίνακα ακεραίων με 10 στοιχεία int b[3]={0,1,2}; // Δήλωση και αρχικοποίηση του πίνακα ακεραίων b με 3 στοιχεία int c = b[0]; // Προσπέλαση του πρώτου στοιχείου του πίνακα b ( τελεστής [] ) b[0] = -1; Το πρώτο στοιχείο του πίνακα b είναι το b[0]. 24/28

65 (Arrays) int *pb; int b[3]={2,4,7}; pb = &b[0]; pb = b; int c = *(pb+1); b[0] = -1; // Δήλωση ενός δείκτη προς ακέραιο int. // Δήλωση και αρχικοποίηση του πίνακα ακεραίων b με 3 στοιχεία // Ο pb δείχνει στην αρχή του πίνακα, στο πρώτο του στοιχείο // Ισοδύναμη εντολή... // Προσπέλαση του στοιχείου b[1] Το όνομα ενός πίνακα είναι ταυτόσημο με τη διεύθυνση του πρώτου του στοιχείου, εδώ του b[0], δηλαδή b &b[0] Ο δείκτης pb+1 δείχνει στο στοιχείο b[1], κ.ο.κ., δηλαδή: pb &b[0] *(pb) b[0] pb+1 &b[1] *(pb+1) b[1] pb+2 &b[2] *(pb+2) b[2] 25/28

66 (Arrays) 1 // #include <iostream> 3 using namespace std; 4 // void f( const int *, int ); 6 // int main() { 8 int a[10]; 9 int n = sizeof(a) / sizeof(a[0]); 10 for ( int i=0 ; i<n ; i++ ) { 11 a[i]=i*i; 12 } 13 f(a, n); 14 return 0; 15 } 16 // void f( const int *apn, int an) { 18 for ( int j=0 ; j<an ; j++ ) { 19 cout << "a[" << j << "] = " << *(apn+j) << endl; 20 } 21 return; // Η f επιστρέφει void, δηλαδή τίποτε } 23 // Το πρώτο όρισμα της συνάρτησης f δεν θα πρέπει να μεταβληθεί. Έτσι δηλώνεται ως const int *. 26/28

67 (Arrays) 1 // #include <iostream> 3 using namespace std; 4 // void f( const int *, int ); 6 // int main() { 8 int a[10]; 9 int n = sizeof(a) / sizeof(a[0]); 10 for ( int i=0 ; i<n ; i++ ) { 11 a[i]=i*i; 12 } 13 f(a, n); 14 return 0; 15 } 16 // void f( const int *apn, int an) { 18 for ( int j=0 ; j<an ; j++ ) { 19 cout << "a[" << j << "] = " << *(apn+j) << endl; 20 } 21 return; // Η f επιστρέφει void, δηλαδή τίποτε } 23 // Προσδιορισμός του πλήθους στοιχείων του πίνακα (συνάρτηση sizeof). 26/28

68 (Arrays) 1 // #include <iostream> 3 using namespace std; 4 // void f( const int *, int ); 6 // int main() { 8 int a[10]; 9 int n = sizeof(a) / sizeof(a[0]); 10 for ( int i=0 ; i<n ; i++ ) { 11 a[i]=i*i; 12 } 13 f(a, n); 14 return 0; 15 } 16 // void f( const int *apn, int an) { 18 for ( int j=0 ; j<an ; j++ ) { 19 cout << "a[" << j << "] = " << *(apn+j) << endl; 20 } 21 return; // Η f επιστρέφει void, δηλαδή τίποτε } 23 // Ο πίνακας γεμίζει με αριθμούς. 26/28

69 (Arrays) 1 // #include <iostream> 3 using namespace std; 4 // void f( const int *, int ); 6 // int main() { 8 int a[10]; 9 int n = sizeof(a) / sizeof(a[0]); 10 for ( int i=0 ; i<n ; i++ ) { 11 a[i]=i*i; 12 } 13 f(a, n); 14 return 0; 15 } 16 // void f( const int *apn, int an) { 18 for ( int j=0 ; j<an ; j++ ) { 19 cout << "a[" << j << "] = " << *(apn+j) << endl; 20 } 21 return; // Η f επιστρέφει void, δηλαδή τίποτε } 23 // Κλήση της συνάρτησης f με πρώτο όρισμα τον δείκτη apn προς το πρώτο στοιχείο του πίνακα και δεύτερο όρισμα το πλήθος στοιχείων του πίνακα. 26/28

70 (Arrays) 1 // #include <iostream> 3 using namespace std; 4 // void f( const int *, int ); 6 // int main() { 8 int a[10]; 9 int n = sizeof(a) / sizeof(a[0]); 10 for ( int i=0 ; i<n ; i++ ) { 11 a[i]=i*i; 12 } 13 f(a, n); 14 return 0; 15 } 16 // void f( const int *apn, int an) { 18 for ( int j=0 ; j<an ; j++ ) { 19 cout << "a[" << j << "] = " << *(apn+j) << endl; 20 } 21 return; // Η f επιστρέφει void, δηλαδή τίποτε } 23 // Η συνάρτηση f εμφανίζει στην οθόνη τις τιμές όλων των στοιχείων του πίνακα, ξεκινώντας από το την τιμή του ακεραίου που δείχνει ο δείκτης apn. 26/28

71 (Arrays) 1 // #include <iostream> 3 using namespace std; 4 // void f( const int *, int ); 6 // int main() { 8 int a[10]; 9 int n = sizeof(a) / sizeof(a[0]); 10 for ( int i=0 ; i<n ; i++ ) { 11 a[i]=i*i; 12 } 13 f(a, n); 14 return 0; 15 } 16 // void f( const int *apn, int an) { 18 for ( int j=0 ; j<an ; j++ ) { 19 cout << "a[" << j << "] = " << *(apn+j) << endl; 20 } 21 return; // Η f επιστρέφει void, δηλαδή τίποτε } 23 // Τιμή του j-οστού ακεραίου. 26/28

72 (Arrays) 1 // #include <iostream> 3 using namespace std; 4 // void f( const int *, int ); 6 // int main() { 8 int a[10]; 9 int n = sizeof(a) / sizeof(a[0]); 10 for ( int i=0 ; i<n ; i++ ) { 11 a[i]=i*i; 12 } 13 f(a, n); 14 return 0; 15 } 16 // void f( const int *apn, int an) { 18 for ( int j=0 ; j<an ; j++ ) { 19 cout << "a[" << j << "] = " << *(apn+j) << endl; 20 } 21 return; // Η f επιστρέφει void, δηλαδή τίποτε } 23 // Το πρώτο όρισμα της συνάρτησης f δεν θα πρέπει να μεταβληθεί. Έτσι δηλώνεται ως const int *. 9 Προσδιορισμός του πλήθους στοιχείων του πίνακα (συνάρτηση sizeof). 10 Ο πίνακας γεμίζει με αριθμούς. 13 Κλήση της συνάρτησης f με πρώτο όρισμα τον δείκτη apn προς το πρώτο στοιχείο του πίνακα και δεύτερο όρισμα το πλήθος στοιχείων του πίνακα. 18 Η συνάρτηση f εμφανίζει στην οθόνη τις τιμές όλων των στοιχείων του πίνακα, ξεκινώντας από το την τιμή του ακεραίου που δείχνει ο δείκτης apn. 19 Τιμή του j-οστού ακεραίου. 26/28

73 (Arrays) Ένα αλφαριθμητικό της C (C-string) είναι ένας πίνακας χαρακτήρων, με τον τελευταίο χαρακτήρα να είναι ο \0 (NUL). Ο χαρακτήρας αυτός χρησιμοποιείται συχνά σε συναρτήσεις που υπολογίζουν το μήκος C-strings. Στη C αυτά τα C-strings αποτελούν τον βασικό τύπο αποθήκευσης κειμένου. Στη C++ έχουν σε μεγάλο βαθμό αντικατασταθεί από την κλάση string. 7 Ο μεταγλωττιστής μπορεί να προσδιορίσει αυτόματα το μήκος ενός πίνακα κατά την αρχικοποίησή του. char str[] = "hello world"; // ή ισοδύναμα: char str[] = {'h','e','l','l','o', ' ','w','o','r','l','d','\0'} 1 // #include <iostream> 3 using namespace std; 4 // int main(){ 6 7 char str[]="hello world"; 8 9 int n = sizeof(str) / sizeof(char); cout << str << " is " << n << " char long" << endl; for ( int i=0 ; i<n ; i++ ) { 14 int c = str[i]; 15 cout << "ASCII " << str[i] << ": " << c << endl; 16 } return 0; } 21 // /28

74 (Arrays) Ένα αλφαριθμητικό της C (C-string) είναι ένας πίνακας χαρακτήρων, με τον τελευταίο χαρακτήρα να είναι ο \0 (NUL). Ο χαρακτήρας αυτός χρησιμοποιείται συχνά σε συναρτήσεις που υπολογίζουν το μήκος C-strings. Στη C αυτά τα C-strings αποτελούν τον βασικό τύπο αποθήκευσης κειμένου. Στη C++ έχουν σε μεγάλο βαθμό αντικατασταθεί από την κλάση string. 1 // #include <iostream> 3 using namespace std; 4 // int main(){ 6 7 char str[]="hello world"; 8 9 int n = sizeof(str) / sizeof(char); cout << str << " is " << n << " char long" << endl; for ( int i=0 ; i<n ; i++ ) { 14 int c = str[i]; 15 cout << "ASCII " << str[i] << ": " << c << endl; 16 } return 0; } 21 // Ο μεταγλωττιστής μπορεί να προσδιορίσει αυτόματα το μήκος ενός πίνακα κατά την αρχικοποίησή του. char str[] = "hello world"; // ή ισοδύναμα: char str[] = {'h','e','l','l','o', ' ','w','o','r','l','d','\0'} 9 Προσδιορισμός του πλήθους στοιχείων του πίνακα (συνάρτηση sizeof). 27/28

75 (Arrays) Ένα αλφαριθμητικό της C (C-string) είναι ένας πίνακας χαρακτήρων, με τον τελευταίο χαρακτήρα να είναι ο \0 (NUL). Ο χαρακτήρας αυτός χρησιμοποιείται συχνά σε συναρτήσεις που υπολογίζουν το μήκος C-strings. Στη C αυτά τα C-strings αποτελούν τον βασικό τύπο αποθήκευσης κειμένου. Στη C++ έχουν σε μεγάλο βαθμό αντικατασταθεί από την κλάση string. 1 // #include <iostream> 3 using namespace std; 4 // int main(){ 6 7 char str[]="hello world"; 8 9 int n = sizeof(str) / sizeof(char); cout << str << " is " << n << " char long" << endl; for ( int i=0 ; i<n ; i++ ) { 14 int c = str[i]; 15 cout << "ASCII " << str[i] << ": " << c << endl; 16 } return 0; } 21 // Ο μεταγλωττιστής μπορεί να προσδιορίσει αυτόματα το μήκος ενός πίνακα κατά την αρχικοποίησή του. char str[] = "hello world"; // ή ισοδύναμα: char str[] = {'h','e','l','l','o', ' ','w','o','r','l','d','\0'} 9 Προσδιορισμός του πλήθους στοιχείων του πίνακα (συνάρτηση sizeof). 11 Οθόνη: hello world is 12 char long 27/28

76 (Arrays) Ένα αλφαριθμητικό της C (C-string) είναι ένας πίνακας χαρακτήρων, με τον τελευταίο χαρακτήρα να είναι ο \0 (NUL). Ο χαρακτήρας αυτός χρησιμοποιείται συχνά σε συναρτήσεις που υπολογίζουν το μήκος C-strings. Στη C αυτά τα C-strings αποτελούν τον βασικό τύπο αποθήκευσης κειμένου. Στη C++ έχουν σε μεγάλο βαθμό αντικατασταθεί από την κλάση string. 1 // #include <iostream> 3 using namespace std; 4 // int main(){ 6 7 char str[]="hello world"; 8 9 int n = sizeof(str) / sizeof(char); cout << str << " is " << n << " char long" << endl; for ( int i=0 ; i<n ; i++ ) { 14 int c = str[i]; 15 cout << "ASCII " << str[i] << ": " << c << endl; 16 } return 0; } 21 // Ο μεταγλωττιστής μπορεί να προσδιορίσει αυτόματα το μήκος ενός πίνακα κατά την αρχικοποίησή του. char str[] = "hello world"; // ή ισοδύναμα: char str[] = {'h','e','l','l','o', ' ','w','o','r','l','d','\0'} 9 Προσδιορισμός του πλήθους στοιχείων του πίνακα (συνάρτηση sizeof). 11 Οθόνη: hello world is 12 char long 14 Το c παίρνει την τιμή του i-οστού χαρακτήρα του str. 27/28

77 (Arrays) Ένα αλφαριθμητικό της C (C-string) είναι ένας πίνακας χαρακτήρων, με τον τελευταίο χαρακτήρα να είναι ο \0 (NUL). Ο χαρακτήρας αυτός χρησιμοποιείται συχνά σε συναρτήσεις που υπολογίζουν το μήκος C-strings. Στη C αυτά τα C-strings αποτελούν τον βασικό τύπο αποθήκευσης κειμένου. Στη C++ έχουν σε μεγάλο βαθμό αντικατασταθεί από την κλάση string. 1 // #include <iostream> 3 using namespace std; 4 // int main(){ 6 7 char str[]="hello world"; 8 9 int n = sizeof(str) / sizeof(char); cout << str << " is " << n << " char long" << endl; for ( int i=0 ; i<n ; i++ ) { 14 int c = str[i]; 15 cout << "ASCII " << str[i] << ": " << c << endl; 16 } return 0; } 21 // Ο μεταγλωττιστής μπορεί να προσδιορίσει αυτόματα το μήκος ενός πίνακα κατά την αρχικοποίησή του. char str[] = "hello world"; // ή ισοδύναμα: char str[] = {'h','e','l','l','o', ' ','w','o','r','l','d','\0'} 9 Προσδιορισμός του πλήθους στοιχείων του πίνακα (συνάρτηση sizeof). 11 Οθόνη: hello world is 12 char long 14 Το c παίρνει την τιμή του i-οστού χαρακτήρα του str. 15 Οθόνη: ASCII h: 104 ASCII e: 101 ASCII l: 108 ASCII l: 108 ASCII o: 111 ASCII : 32 ASCII w: 119 ASCII o: 111 ASCII r: 114 ASCII l: 108 ASCII d: 100 ASCII : 0 Σημείωση: Ο χαρακτήρας \0 δεν μπορεί να τυπωθεί στην οθόνη. 27/28

78 (Arrays) char k[3][5]; γραμμές στήλες [0][0] [0][1] [0][2] [0][3] [0][4] 1 [1][0] [1][1] [1][2] [1][3] [1][4] 2 [2][0] [2][1] [2][2] [2][3] [2][4] Μνήμη 0x64 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 0x78 0x /28

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

Διαβάστε περισσότερα

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 2η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικοί αριθμητικοί τύποι, μετατροπές τύπων και σταθερές. Πίνακες. Πίνακες

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 5η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πίνακες ως ορίσματα συναρτήσεων. Τα ορίσματα argc και argv της main.

Διαβάστε περισσότερα

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

Διαβάστε περισσότερα

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT = Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

Υπερφόρτωση τελεστών

Υπερφόρτωση τελεστών Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας

Διαβάστε περισσότερα

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 10 η Διάλεξη C++ - Πίνακες Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ανακεφαλαίωση Κατά την κλήση μιας συνάρτησης κατ αξία οι τιμές των ορισμάτων αντιγράφονται στις αντίστοιχες τυπικές παραμέτρους

Διαβάστε περισσότερα

Αναφορές, είκτες και Αλφαριθμητικά

Αναφορές, είκτες και Αλφαριθμητικά Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 4η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Δείκτες και πίνακες. Δείκτες σε σταθερές και σταθεροί δείκτες. Μεταβίβαση

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

Διαβάστε περισσότερα

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Πίνακες & Δείκτες ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πίνακες Πίνακες Τα στοιχεία

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

Διαβάστε περισσότερα

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

Διαβάστε περισσότερα

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ο τύπος int Ο τύπος δεδομένων τύπου int αναφέρεται στα ακέραια μεγέθη. Σταθερές, μεταβλητές, παραστάσεις και

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ Πρώτα να δούμε τι ακριβώς συμπεριλαμβάνει μια μεταβλητή τύπος Καθορίζει το μέγεθος στην μνήμη σε Bytes τιμή Η αριθμητική τιμή που αποθηκεύεται στην

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 3: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αριθμητική Δεικτών Δείκτες και Πίνακες Παραδείγματα Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διαβάστε περισσότερα

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++ Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++ Γενικά Η εντολή: int arr[5][2]; Δηλώνει την μεταβλητή arr σαν πίνακα με πέντε γραμμές (rows) και με δύο στήλες (columns). Η αρίθμηση και των δύο δεικτών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 6η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προκαθορισμένες τιμές ορισμάτων. Υπερφόρτωση συναρτήσεων. Συναρτήσεις

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 3ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΕΚΤΥΠΩΣΗ ΚΕΙΜΕΝΟΥ Ένα κείμενο μπορεί να εκχωρηθεί ως τιμή μιας μεταβλητής

Διαβάστε περισσότερα

Δεδομένα, Τύποι και Τιμές

Δεδομένα, Τύποι και Τιμές Προγραμματισμός Η/Υ Ι Δεδομένα, Τύποι και Τιμές ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Οι περισσότερες προγραμματιστικές εργασίες περιλαμβάνουν χειρισμό

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Μονοδιάστατοι Πίνακες (tables) Μια συλλογή μεταβλητών ίδιου τύπου οι οποίες είναι αποθηκευμένες

Διαβάστε περισσότερα

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Εισαγωγή Στη C++ υπάρχει η δυνατότητα να δηλώσουμε μία συμβολοσειρά ως αντικείμενο, χρησιμοποιώντας τη βιβλιοθήκη . Επειδή οι συμβολοσειρές είναι

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

Διαβάστε περισσότερα

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( ) ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Αλφαριθμητικά θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Διαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 7 ο : Δείκτες Στόχοι μαθήματος Να κατανοήσετε τη δυνατότητα χρήσης διευθύνσεων ως τιμών δεδομένων. Να μπορείτε να χρησιμοποιείτε

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch; ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι είναι ; Συναρτήσεις Αυτόνομα τμήματα κώδικα (υποπρογράμματα) που πραγματοποιούν μια καθορισμένη εργασία. Χρήσιμες για περιπτώσεις που ο ίδιος υπολογισμός επαναλαμβάνεται πολλές φορές

Διαβάστε περισσότερα

Δεδομένα, τελεστές, είσοδος/έξοδος

Δεδομένα, τελεστές, είσοδος/έξοδος 2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

Διαβάστε περισσότερα

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Εισαγωγή στους δείκτες Το μοντέλο της μνήμης, σωρός και στοίβα Αναφορές Δείκτες και πίνακες Δέσμευση και αποδέσμευση μνήμης

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 9 η Χαρακτήρες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

Διάλεξη 5: Δείκτες και Συναρτήσεις

Διάλεξη 5: Δείκτες και Συναρτήσεις Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 5: Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 5-1 Περιεχόμενο

Διαβάστε περισσότερα

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) ΚΑΤΑΛΟΓΟΣ ΕΡΩΤΗΣΕΩΝ ΕΡΩΤΗΣΕΙΣ ΕΙ ΙΚΩΝ ΓΝΩΣΕΩΝ (γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τέταρτη Διάλεξη ΠΙΝΑΚΕΣ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Έστω ότι έχουμε το εξής πρόβλημα: εισάγουμε μια σειρά αριθμών από το πληκτρολόγιο και θέλουμε να βρούμε τον μέγιστο και τον ελάχιστο. Γενικά,

Διαβάστε περισσότερα

Πίνακες (Arrays) Εισαγωγή στη C++

Πίνακες (Arrays) Εισαγωγή στη C++ Πίνακες (Arrays) Εισαγωγή στη C++ Γενικά Στη C++, όπως και σε όλες τις γλώσσες προγραμματισμού, υπάρχει η δυνατότητα ομαδοποίησης δεδομένων ίδιου τύπου. Ο τρόπος με τον οποίο επιτυγχάνεται αυτό είναι με

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #4 κυριολεκτικά & μετατροπή τύπων 1 Σπύρος Λάλης Κυριολεκτικά (literals) Συχνά θέλουμε να αρχικοποιήσουμε μεταβλητές του προγράμματος με μια συγκεκριμένη τιμή υπάρχει επίσης η

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 7ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος Δείκτες (Pointers) (1) 142 Κάθε μεταβλητή, εκτός από την τιμή της, έχει και μία συγκεκριμένη διεύθυνση

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Δείκτες (pointers) και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Αριθμητική Δεικτών - Δείκτες και Πίνακες - Παραδείγματα Διδάσκων: Παναγιώτης

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο) Προγραμματισμός Η/Υ Ενότητα 2β: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση της έννοιας του Τελεστή

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Τύποι δεδομένων, μεταβλητές, πράξεις Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 11η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση του τελεστή εκχώρησης. Στατικές μεταβλητές, στατικές σταθερές

Διαβάστε περισσότερα

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

Προγραμματισμό για ΗΜΥ ΕΠΛ 34: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πίνακες εικτών (Pointers Arrays) Θέματα ιάλεξης Στην ενότητα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

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

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( ) ΤΕΛΕΣΤΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τι είναι οι τελεστές Χρήση τελεστών Υπερφόρτωση τελεστών Chain-linking Τελεστών Τελευταία ενημέρωση: Ιούνιος 2013 Εισαγωγή - 2 Τελεστής

Διαβάστε περισσότερα

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Τελεστές - Κατηγορίες Εκφράσεις - Κατηγορίες Υπολογισμός εκφράσεων Προτάσεις - Κατηγορίες

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου (Διάλεξη 7) 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράμματα πρέπει να πάρουμε κάποια δεδομένα και να δώσουμε αποτέλεσμα Συνάρτηση εισόδου

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

Διαβάστε περισσότερα

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου (Διάλεξη 7) 1 Είσοδος/Έξοδος Σε σχεδόν όλα τα προγράμματα πρέπει να πάρουμε κάποια δεδομένα και να δώσουμε αποτέλεσμα Συνάρτηση εισόδου

Διαβάστε περισσότερα

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

Τύποι Δεδομένων Είσοδος/Έξοδος Εργαστήριο 2 ο Τύποι Δεδομένων Είσοδος/Έξοδος Εισαγωγή Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ 1 Τύποι δεδομένων Η γλώσσα προγραμματισμού C++ υποστηρίζει τους παρακάτω τύπους δεδομένων: 1) Ακέραιοι αριθμοί (int). 2) Πραγματικοί αριθμοί διπλής ακρίβειας

Διαβάστε περισσότερα

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ Ενότητα: Συναρτήσεις και ορίσματα Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τμήμα: Οικονομικών Επιστημών Διαφορά καθολικής μεταβλητής και σταθεράς

Διαβάστε περισσότερα

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Τι μάθαμε μέχρι τώρα Κάθε πρόγραμμα της c++ περιέχει υποχρεωτικά μια συνάρτηση main() η οποία είναι εκείνη που εκτελείται πρώτη. Κάθε

Διαβάστε περισσότερα