ΑΝΑΚΕΦΑΛΑΙΩΣΗ. 26 Οκτωβρίου 2011

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

Download "ΑΝΑΚΕΦΑΛΑΙΩΣΗ. 26 Οκτωβρίου 2011"

Transcript

1 ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου 2011

2 Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα αντικείμενα. Κλάση: Μια αφηρημένη οντότητα με χαρακτηριστικά (μεταβλητές) και συμπεριφορά (μεθόδους). Αντικείμενο: Ένα στιγμιότυπο (instance) της κλάσης το οποίο έχει μια κατάσταση (οι τιμές των μεταβλητών) και εκτελεί ενέργειες (καλεί τις μεθόδους)

3 Ορισμός κλάσης class MyClass { private: int privatedata; int privatemethod(); public: int publicmethod(); ; Μην ξεχνάμε το ερωτηματικό! int MyClass::publicMethod() { privatedata = 1; /* more code here */ Δεσμευμένες λέξεις με κόκκινο. Δηλώσεις private δεδομένων και μεθόδων δεν είναι προσβάσιμα εκτός της κλάσης. Δηλώσεις public δεδομένων και μεθόδων Προσβάσιμα εκτός της κλάσης. Default: όλα είναι private Καλός αντικειμενοστραφής σχεδιασμός: private data, public methods Ορίζει το namespace της κλάσης Ορισμός μεθόδων. Μέσα στο namespace της κλάσης οι μεταβλητές μέλη είναι προσβασιμες

4 Παράδειγμα κλάσης #include <cstdio> using namespace std; class Human { private: int height; int age; public: void Ages(); void IsBorn(); void Grows(int inc); ; void Human::Ages(){ age += 1; void Human::IsBorn(){ height = 40; age = 0; void Human::Grows(int inc){ height += inc;

5 Αντικείμενα int main() { MyClass myclassinstance; Ορισμός του αντικειμένου... myclassinstance.publicmethod(); Κλήση της public μεθόδου.... int main() { Human peter; peter.isborn(); peter.ages(); peter.grows(10);

6 Πλεονεκτήματα Το αντικειμενοστρεφές μοντέλο αντιστοιχεί καλυτέρα με τον τρόπο που βλέπουμε τον κόσμο. Ο κώδικας που παράγεται είναι πιο εύκολο να διαβαστεί και να κατανοηθεί. Encapsulation και data hiding Τα δεδομένα και οι συναρτήσεις που τα αλλάζουν ομαδοποιούνται μέσα στην κλάση. Πιο εύκολη συντήρηση του κώδικα. Κληρονομικότητα Ιεραρχία κλάσεων που μοιράζονται χαρακτηριστικά. Πιο εύκολη επαναχρησιμοποίηση του κώδικα.

7 Άσκηση Θέλουμε να φτιάξουμε ένα «παιχνίδι» το οποίο κάνει το εξής: Έχουμε δυο αυτοκίνητα που ξεκινάνε από το σημείο 0 της ευθείας και τυχαία πάνω στις τιμές των ακεραίων. Σε κάθε κίνηση διαλέγουν τυχαία να πάνε αριστερά, δεξιά, ή να μείνουν στο ίδιο σημείο. Το παιχνίδι σταματάει όταν τα δυο αυτοκίνητα συγκρουστούν.

8 #include <iostream> int main() { int collision = 0; int counter = 0; Τι κλάσεις και αντικείμενα πρέπει να ορίσουμε? Ποια θα είναι τα πεδία και ποιες οι μέθοδοι? // Αρχικοποίηση αυτοκινήτων while(!collision){ // Τα αυτοκίνητα μετακινούνται // check for collision counter ++; cout << "Cars collided after " << counter <<" moves" // τύπωσε την θέση της σύγκρουσης

9 Class Car class Car { private: int _pos; public: void InitializePosition(); void Move(); int GetPosition(); ;

10 Methods void Car::InitializePosition() { _pos = 0; #include <cmath> #include <cstdlib> void Car::Move() { _pos += floor((double(rand())/rand_max)*3)-1; int Car::GetPosition() { return _pos;

11 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int counter = 0; // Αρχικοποίηση αυτοκινήτων while(!collision){ // Τα αυτοκίνητα μετακινούνται // check for collision counter ++; cout << "Cars collided after " << counter <<" moves" // τύπωσε την θέση της σύγκρουσης

12 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int counter = 0; Car carx; Car cary; // Αρχικοποίηση αυτοκινήτων while(!collision){ // Τα αυτοκίνητα μετακινούνται // check for collision counter ++; cout << "Cars collided after " << counter <<" moves" // τύπωσε την θέση της σύγκρουσης

13 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int counter = 0; Car carx; Car cary; carx.initializeposition(); cary.initializeposition(); while(!collision){ // Τα αυτοκίνητα μετακινούνται // check for collision counter ++; cout << "Cars collided after " << counter <<" moves" // τύπωσε την θέση της σύγκρουσης

14 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int counter = 0; Car carx; Car cary; carx.initializeposition(); cary.initializeposition(); while(!collision){ carx.move(); cary.move(); collision = (carx.getposition() == cary.getposition()); counter ++; cout << "Cars collided after " << counter <<" moves" // τύπωσε την θέση της σύγκρουσης

15 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int counter = 0; Car carx; Car cary; carx.initializeposition(); cary.initializeposition(); while(!collision){ carx.move(); cary.move(); collision = (carx.getposition() == cary.getposition()); counter ++; cout << "Cars collided after " << counter <<" moves " << at position << carx.getposition() << endl;

16 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int counter = 0; Car carx; Car cary; carx.initializeposition(); cary.initializeposition(); Τι γίνεται αν θέλουμε να αλλάξουμε τον ορισμό της σύγκρουσης? while(!collision){ carx.move(); cary.move(); collision = (carx.getposition() == cary.getposition()); counter ++; cout << "Cars collided after " << counter <<" moves " << at position << carx.getposition() << endl;

17 Class Car class Car { private: int _pos; public: void InitializePosition(); void Move(); int GetPosition(); int Collide(Car) ;

18 int Car::Collide(Car other) { return (_pos == other.getposition());

19 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int counter = 0; Car carx; Car cary; carx.initializeposition(); cary.initializeposition(); while(!collision){ carx.move(); cary.move(); collision = carx.collide(cary); counter ++; cout << "Cars collided after " << counter <<" moves " << at position << carx.getposition() << endl;

20 Άσκηση Εκτός από τα αυτοκίνητα έχουμε και μία νάρκη, η οποία εμφανίζεται σε τυχαία σημεία στο διάστημα [-5,5] Το παιχνίδι τελειώνει είτε όταν συγκρουστούν τα οχήματα, ή όταν κάποιο από αυτά ενεργοποιήσει τη νάρκη. Τι νέες κλάσεις χρειαζόμαστε να ορίσουμε?

21 class Mine { private: int _pos; Class Mine public: void Activate(); int GetPosition(); ; void Mine::Activate() { _pos = floor((double(rand())/rand_max)*11)-5; _pos = floor((double(rand())/rand_max)*11)-5; int Mine::GetPosition() { return _pos;

22 Class Car class Car { private: int _pos; public: void InitializePosition(); void Move(); int GetPosition(); int Collide(Car) int Detonate(Mine); ;

23 int Car::Detonate(Mine somemine) { return (_pos == somemine.getposition());

24 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { int collision = 0; int explosion = 0; int counter = 0; Car carx; Car cary; Mine randommine; carx.initializeposition(); cary.initializeposition(); while(!collision &&!explosion){ carx.move(); cary.move(); randommine.activate(); collision = carx.collide(cary); explosion = carx.detonate(randommine) cary.detonate(randommine); counter ++; if (collision){ cout << "Cars collided after " << counter <<" moves << at position << carx.getposition() << endl; if (explosion){ cout << Mine exploded after << counter << moves, << at position << randommine.getposition() << endl;

25 C ΚΑΙ C++ ΟΜΟΙΟΤΗΤΕΣ ΚΑΙ ΔΙΑΦΟΡΕΣ Χαρακτηριστικά της C++

26 ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

27 Είσοδος / Έξοδος δεδομένων //A Simple C++ program #include <iostream> using namespace std; main(){ cout << Hello world!\n ; Ισοδύναμα: cout << Hello << world!\n ;

28 Είσοδος / Έξοδος δεδομένων Στη C η εγγραφή στην οθόνη και η ανάγνωση από το πληκτρολόγιο γίνεται με τα λεγόμενα ρεύματα (streams). stdin, stdout Ότι θέλουμε να εκτυπώσουμε στην οθόνη με printf περνά από το stdout και εν συνεχεία μέσω του λειτουργικού εμφανίζεται στην οθόνη Ότι θέλουμε να διαβάσουμε περνά από το πληκτρολόγιο μέσω του λειτουργικού στο stdin και εν συνεχεία το διαβάζουμε με scanf. printf( %d, i); <=> fprintf(stdout, %d, i); scanf( %d, &i); <=> fscanf(stdin, %d, &i);

29 Είσοδος / Έξοδος δεδομένων Στη C++ ισχύει ότι και στην C, αλλά πέραν των γνωστών συναρτήσεων εισόδου εξόδου υπάρχουν πιο ευέλικτοι τρόποι. Τα ρεύματα που αντιστοιχούν στα stdout, stdin είναι τα cout και cin. τα stdin, stdout είναι struct FILE * τα cin, cout είναι αντικείμενα τύπου istream και ostream αντίστοιχα και προσφέρουν και συναρτήσεις που μπορώ να καλέσω σε αυτά. αντί για συναρτήσεις όπως οι printf, fprintf, scanf, fscanf έχουμε τους τελεστές <<, >> που εισάγουν δεδομένα στο cout και εξάγουν δεδομένα από το cin

30 Είσοδος / Έξοδος δεδομένων #include <iostream> using namespace std; int main(){ int i; cin >> i; float f; cin >> f; char c; cin >> c; char buf[100]; cin >> buf; cin >> i >> f >> buf;

31 Είσοδος / Έξοδος δεδομένων #include <iostream> using namespace std; int main(){ int i; cin >> i; cout << "i = "; cout << i; cout << "\n"; float f; cin >> f; cout << "f = "; cout << f; cout << "\n";

32 Είσοδος / Έξοδος δεδομένων #include <iostream> using namespace std; int main(){ int i; float f; cin >> i >> f; cout << "i = " << i << "\n" << "f = " << f << "\n" ;

33 Είσοδος / Έξοδος δεδομένων #include <iostream> using namespace std; int main(){ int i; float f; cin >> i >> f; cout << "i = " << i << endl << "f = " << f << endl ; Χειριστές (manipulators): εντολές προς το ρεύμα εξόδου Ο χειριστής endl έχει το ίδιο αποτέλεσμα με τον χαρακτήρα \n Προκαλεί όμως και εκκένωση (flush) του output buffer.

34 Ο χειριστής setw Χρησιμοποιείται για να καθορίσει το πλάτος της εξόδου. Η στοίχιση γίνεται στα δεξιά #include <iostream> #include <iomanip> using namespace std; int main(){ cout << : << setw(10) << alpha" << endl << : << setw(10) << beta" << endl << : << setw(10) << gamma << endl; : alpha : beta : gamma

35 ΒΑΣΙΚΟΙ ΤΥΠΟΙ, ΜΕΤΑΒΛΗΤΕΣ

36 Βασικοί τύποι int xint; //4 bytes (σπάνια 2) short int xshortint; //2 bytes long int xlong; //4 bytes float xfloat; //4 bytes double xdouble; //8 bytes char xchar; //1 byte bool boolx; boolx = true; boolx = false; //1 byte Οι μεταβλητές τύπου bool είναι βολικές για να ξεχωρίζουμε τις λογικές μεταβλητές. Κατά τα αλλά συμπεριφέρονται ακριβώς όπως πριν.

37 Class Car class Car { private: int _pos; public: void InitializePosition(); void Move(); int GetPosition(); bool Collide(Car) bool Detonate(Mine); ;

38 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { bool collision = 0; bool explosion = 0; int counter = 0; Car carx; Car cary; Mine randommine; It would work even if we left these two variables to be int carx.initializeposition(); cary.initializeposition(); while(!collision &&!explosion){ carx.move(); cary.move(); randommine.activate(); collision = carx.collide(cary); explosion = carx.detonate(randommine) cary.detonate(randommine); counter ++; if (collision){ cout << "Cars collided after " << counter <<" moves << at position << carx.getposition() << endl; if (explosion){ cout << Mine exploded after << counter << moves, << at position << randommine.getposition() << endl;

39 Πίνακες Integers int dataarray[3]; C Strings #include <cstring> char firstname[6]; main(){ cin >> firstname; // get the string from input strcpy (firstname, eddie ); // copy a value cout << firstname; // output string

40 Δηλώσεις Μεταβλητών Στη C++ δηλώσεις μεταβλητών μπορούν να γίνουν παντού και όχι μόνο στην αρχή κάθε συνάρτησης, συμπεριλαμβανομένης της main() int main(){ int x, y, z; if( ) { //.. float f; Βολικό γιατί μπορείς να δηλώσεις μια μεταβλητή όταν την χρειάζεσαι

41 #include <iostream> #include <cmath> #include <cstdlib> /* Car class definition, method definitions */ int main() { Car carx; carx.initializeposition(); Car cary; cary.initializeposition(); Mine randommine; bool collision = 0; bool explosion = 0; int counter = 0; while(!collision &&!explosion){ carx.move(); cary.move(); randommine.activate(); collision = carx.collide(cary); explosion = carx.detonate(randommine) cary.detonate(randommine); counter ++; if (collision){ cout << "Cars collided after " << counter <<" moves << at position << carx.getposition() << endl; if (explosion){ cout << Mine exploded after << counter << moves, << at position << randommine.getposition() << endl;

42 Δηλώσεις τοπικών μεταβλητών παντού Επιτρέπονται δηλώσεις μεταβλητών παντού μέσα στο πρόγραμμα. void f () { int x = 0; cout << x; int y = x + 1; cout << y; for (int i=1; i < y; i++){ cout << i; Η μεταβλητή i ζει μονό μέσα στο for loop O πιο συχνός τρόπος δημιουργίας iterators

43 Αρχικοποίηση Μεταβλητών int counter(0); //equiv. to: int counter=0; int myarray[4] = {1,2,3,4; //equiv. to: myarray[0] = 1; //we start from 0 myarray[1] = 2;... //could also say int myarray[] = {1,2,3,4; // creates a table of size 4 int myarray[10] = {1,2,3,4; // creates a table of size 10 and fills the rest with 0s //size: 6, length: 6 remember the last \0 char firstname[] = eddie ; //size: 50, length: 6 char name[50] = eddie ; strcpy(name, eddie vedder ); // fits in there

44 Πολυδιάστατοι Πίνακες int mymatrix[2][4]; int mymatrix[2][4] = { {1,2,3,4, {5,6,7,8 ;

45 const main(){ int const SIZE = 20; //can be used to initialize an array char buffer[size]; SIZE = 8; //will NOT work // const variables do NOT change

46 Διαφορές const και #define To #define είναι εξ ορισμού global ορισμός, ενώ το const έχει δικό του scope. Η συντακτική ορθότητα μιας δήλωσης const ελέγχεται αμέσως, ενώ για το #define μόνο αφού γίνει η αντικατάσταση. Το όποιο λάθος εμφανίζεται στη γραμμή του προγράμματος και όχι στη δήλωση του #define.

47 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

48 Εντολή if else if (condition) { statement;... else { statement;... Λογικοί τελεστές για σύνθετες συνθήκες: OR: ((cond1) (cond2)) AND: ((cond1)&&(cond2)) NOT:!(cond1) Προσοχή: = vs. == Είναι καλό να χρησιμοποιείτε πάντα { ακόμη και για μία μόνο εντολή

49 Εντολή Switch switch (condition) { case constant1: statement;... break; case constant2: statement;... break;... default: statement;... break; Προσοχή: αν παραληφθεί το break, εκτελείται η επόμενη εντολή! Δεν το παραλείπουμε ποτέ!!! Το break μας βγάζει έξω από το block στο οποίο είμαστε. Το default καλύπτει την περίπτωση που χάνουμε κάποια case

50 Εντολές βρόγχων (Loop Statements) while (condition){ statement;... for (declaration-initialization; condition; iteration){ statement;... //Example of counting... for (int i=0; i<5; i++){ //runs 5 times cout << i*5+3;

51 break και continue Χρήσιμα για τον έλεγχο ροής σε loops. // 100 iterations or a collision/explosion for(int i = 0; i < 100; i++){ carx.move(); cary.move(); randommine.activate(); collision = carx.collide(cary); explosion = carx.detonate(randommine) cary.detonate(randommine); counter ++; if (collision explosion){ break; // cout << i; will give an error

52 break και continue Αγνόησε συγκρούσεις ή εκρήξεις που γίνονται στο σημείο 0 while(!collision &&!explosion){ carx.move(); cary.move(); if (carx.getposition() == 0 carx.getposition() == 0){ continue; randommine.activate(); collision = carx.collide(cary); explosion = carx.detonate(randommine) cary.detonate(randommine); counter ++;

53 break και continue Τύπωσε μόνο τους αριθμούς που δεν διαιρούνται με το 3 for (int i = 0; i < 10; i ++){ if (i%3 == 0){ continue; cout << i;

54 ΣΥΝΑΡΤΗΣΕΙΣ NAMESPACES

55 Συναρτήσεις #include <iostream> using namespace std; float trianglearea (float width, float height); main(){ float area = trianglearea(1.0, 2.0); cout << "The area of the triangle is " << area; float trianglearea(float width, float height){ float area; // local area = width * height / 2.0; return area; Δηλωση Συνάρτησης Ορίσματα Συνάρτησης Επιστρεφόμενη τιμή Συνάρτησης

56 Χώροι ονομάτων (Namespaces) Πολλές φορές στη C φτιάχνουμε συναρτήσεις των οποίων τα ονόματα έρχονται σε σύγκρουση με έτοιμες συναρτήσεις της γλώσσας σαν αποτέλεσμα έχουμε λάθη μετάφρασης που δεν εξηγούνται εύκολα και κόστος επιδιόρθωσης του κώδικα Ένα πρόγραμμα μπορεί να συνθέτει κώδικα από δύο ή περισσότερα άτομα που μπορεί να χρησιμοποιούν συνώνυμες συναρτήσεις ή κλάσεις. σαν αποτέλεσμα πάλι μπορεί να έχουμε λάθη μετάφρασης του συνολικού κώδικα στη C++ υπάρχει ο μηχανισμός namespace που μπορεί να χρησιμοποιηθεί για την αποφυγή συγκρούσεων namespace Χ {.. ;

57 Παράδειγμα Στο αρχείο util.h έχουμε κάποιες χρήσιμες συναρτήσεις που πήραμε από κάποιον άλλον.. float squarearea(float length){ return (length*length);. int f(){return 1973

58 Παράδειγμα (συνέχεια) #include <iostream> #include util.h //1 square mile is 2.59 square km //the following function returns square miles //whereas length is in km float squarearea(float length){ return (length*length / 2.59); main (){ cout << English(sqr ml)" << squarearea(2.0); cout << f(); Compiler Error!!! error: redefinition of `float squarearea(float)'

59 Παράδειγμα (συνέχεια) #include <iostream> #include util.h //1 square mile is 2.59 square km //the following function returns square miles //whereas length is in km float squareareamiles(float length){ return (length*length / 2.59); Όχι καλή λύση, μπερδεμένος κώδικας, πιθανά λάθη main (){ cout << English(sqr ml)" << squareareamiles(2.0); cout << f();

60 Παράδειγμα Στο αρχείο util.h έχουμε κάποιες χρήσιμες συναρτήσεις που πήραμε από κάποιον άλλον. namespace PublicUtils {. float squarearea(float length){ return (length*length);. int f(){return 1973

61 Παράδειγμα (συνέχεια) #include <iostream> #include util.h" namespace Local{ //1 square mile is 2.59 square km //the following function returns square miles //whereas length is in km float squarearea(float length){ return (length*length / 2.59); main (){ cout << English (sqr ml)" << Local::squareArea(2.0); cout << PublicUtils::f();

62 Παράδειγμα (συνέχεια) #include <iostream> #include util.h" namespace Local{ //1 square mile is 2.59 square km //the following function returns square miles //whereas length is in km float squarearea(float length){ return (length*length / 2.59); using namespace Local; main (){ cout << English (sqr ml)" << squarearea(2.0); cout << PublicUtils::f();

63 Παράδειγμα (συνέχεια) #include <iostream> #include util.h" namespace Local{ //1 square mile is 2.59 square km //the following function returns square miles //whereas length is in km float squarearea(float length){ return (length*length / 2.59); using namespace Local; main (){ cout << English (sqr ml) " << squarearea(2.0); cout << Normal (sqr klm) " << PublicUtils::sqaureArea(2.0);

64 To std namespace Μπορείτε να δηλώνετε το std namespace: #include <iostream> using namespace std; για να μη χρειάζεται να το γράφετε συνέχεια, πχ std::cout <<. Αν και κάποιοι μεταφραστές το κάνουν αυτόματα

65 ΔΕΙΚΤΕΣ (POINTERS) ΑΝΑΦΟΡΕΣ (REFERENCES)

66 Δείκτες (Pointers) Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; int *aptr; aptr = & anint; anint = 10; *aptr = 15;

67 Δείκτες (Pointers) Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; 0x1000 Μνήμη int *aptr; aptr = & anint; anint = 10; *aptr = 15; 0x1001 0x1002 0x1003 0x1004 0x1005 0x1006 0x1007

68 Δείκτες (Pointers) Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; int *aptr; aptr = & anint; anint = 10; *aptr = 15; 0x1000 0x1001 0x1002 0x1003 0x1004 0x1005 0x1006 0x1007 anint

69 Δείκτες (Pointers) Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; int *aptr; aptr = & anint; anint = 10; *aptr = 15; 0x1000 0x1001 0x1002 0x1003 0x1004 0x1005 0x1006 0x1007 anint aptr

70 Δείκτες (Pointers) Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; 0x1000 anint int *aptr; aptr = & anint; anint = 10; 0x1001 0x1002 0x1003 0x1004 0x1000 aptr *aptr = 15; 0x1005 0x1006 0x1007

71 Δείκτες (Pointers) Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; 0x anint int *aptr; aptr = & anint; anint = 10; 0x1001 0x1002 0x1003 0x1004 0x1000 aptr *aptr = 15; 0x1005 0x1006 0x1007

72 Δείκτες (Pointers) Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; 0x anint int *aptr; aptr = & anint; anint = 10; 0x1001 0x1002 0x1003 0x1004 0x1000 aptr *aptr = 15; 0x1005 0x1006 0x1007

73 Δείκτες Δέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x1000 0x1001 0x1002 0x1003 0x1004 0x1005 0x1006 0x1007

74 Δείκτες Δέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x1000 0x1001 0x1002 0x1003 0x1004 0x1005 0x1006 0x1007 0x0000 aptr

75 Δείκτες Δέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x1000 0x1001 0x1002 0x1003 0x1004 0x1005 0x1006 0x1007 0x1000 aptr

76 Δείκτες Δέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x x1001 0x1002 0x1003 0x1004 0x1005 0x1006 0x1007 0x1000 aptr

77 Δείκτες Δέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x x1001 0x1002 0x1003 0x1000 aptr Στη C++ int *aptr = new int; *aptr = 15; 0x1004 0x1005 0x1006 0x1007

78 Δείκτες Αποδέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x x1001 0x1002 free(aptr); 0x1003 0x0000 aptr 0x1004 0x1005 0x1006 0x1007

79 Δείκτες Αποδέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x x1001 0x1002 free(aptr); 0x1003 0x0000 aptr Στη C++ int *aptr = new int; *aptr = 15; delete aptr; 0x1004 0x1005 0x1006 0x1007

80 Δείκτες Αποδέσμευση Μνήμης int *aptr = null; aptr = (int *)malloc(sizeof(int)); *aptr = 15; 0x x1001 0x1002 int *bptr = aptr; 0x1003 0x0000 aptr free(aptr); 0x1004 0x1005 0x1000 bptr Προσοχή! Η θέση της μνήμης στην οποία έδινε η μεταβλητή aptr μπορεί να συνεχίσει να έχει την τιμή 15, και αν κάποιος άλλος δείκτης (bptr) έδειχνε σε αυτή τη θέση να φαίνεται ότι μπορείτε να τη διαβάσετε. Η θέση μνήμης δεν είναι διαθέσιμη όμως και θα προκαλέσει προβλήματα, το πιο πιθανό segmentation fault. 0x1006 0x1007

81 Δείκτες Δέσμευση Μνήμης int *aptr = null; 0x1000 aptr = (int *)malloc(3*sizeof(int)); 0x1001 *aptr = 15; 0x1002 *(aptr + 2) =17; 0x1003 0x1005 aptr free(aptr) 0x1004 0x1005 0x1006 0x1007

82 Δείκτες Δέσμευση Μνήμης int *aptr = null; 0x1000 aptr = (int *)malloc(3*sizeof(int)); 0x1001 *aptr = 15; aptr[0] = 15; 0x1002 *(aptr + 2) =17; 0x1003 0x1005 aptr free(aptr) 0x1004 0x x1006 0x1007

83 Δείκτες Δέσμευση Μνήμης int *aptr = null; 0x1000 aptr = (int *)malloc(3*sizeof(int)); 0x1001 *aptr = 15; aptr[0] = 15; 0x1002 *(aptr + 2) =17; aptr[2] = 17; 0x1003 0x1005 aptr free(aptr) 0x1004 0x x1006 0x

84 Δείκτες Δέσμευση Μνήμης int *aptr = null; 0x1000 aptr = (int *)malloc(3*sizeof(int)); 0x1001 *aptr = 15; aptr[0] = 15; 0x1002 *(aptr + 2) =17; aptr[2] = 17; 0x1003 0x0000 aptr free(aptr) 0x1004 0x x1006 0x

85 Δείκτες Δέσμευση Μνήμης int *aptr = null; 0x1000 aptr = (int *)malloc(3*sizeof(int)); 0x1001 *aptr = 15; aptr[0] = 15; 0x1002 *(aptr + 2) =17; aptr[2] = 17; 0x1003 0x0000 aptr free(aptr) 0x1004 Στη C++ int *aptr = new int[3]; *aptr = 15; *(aptr + 2) =17; 0x x1006 0x delete [] aptr;

86 Αναφορές (References) Μια αναφορά σε μια μεταβλητή είναι σαν ένα συνώνυμο για τη μεταβλητή. Προσοχή: ΔΕΝ πρόκειται για pointers (αν και υπάρχει μια σχέση μεταξύ των δύο)... int myint; int &myref = myint;... Η εντολή: int &wrongref; θα δώσει compile error! Έτσι δηλώνουμε αναφορές κατά τη δήλωση πρέπει ΠΑΝΤΑ να καθορίζουμε τη μεταβλητή της οποίας είναι συνώνυμα

87 Αναφορές (References) Όταν δηλώνουμε μια μεταβλητή, αυτό σημαίνει ότι της παραχωρούμε κάποιο χώρο στη μνήμη και ένα όνομα στο χώρο αυτό Όταν δηλώνουμε μια αναφορά σε μια μεταβλητή, είναι σαν να δίνουμε παραπάνω από ένα ονόματα στο συγκεκριμένο χώρο στη μνήμη. Οι παρακάτω εντολές είναι ισοδύναμες: myint++; myref++;

88 Αναφορές int myint;?? myint myint = 4; 4 myint int &myref = myint; 4 myint myref

89 Τι κρύβουν οι αναφορές int myint = 5; int &myref = myint; int * const myref_p = &myint; Το = δεν είναι ανάθεση, δημιουργεί την αναφορά. Δεν μπορούμε να ξαναναθέσουμε την αναφορά myint = 8; myref = 7; myint = 8; *myref_p = 7; Οι αναφορές χρησιμοποιούν τους δείκτες για να αναφερθούν σε μια μεταβλητή αλλά δεν είναι σαν δείκτες γιατί αναφέρονται μόνιμα σε μια θέση μνήμης.

90 Τι κρύβουν οι αναφορές #include <iostream> #include <iostream> main() { int a = 1; int b = 3; int& refa = a; cout << refa << endl; cout << a << endl; refa = b; cout << a << endl; main() { int a = 1; int b = 3; int * const refa_p = &a; cout << *refa_p << endl; cout << a << endl; *refa_p = b; cout << a << endl;

91 Σωστό ή Λάθος? main(){ int x = 1; // Σωστό. int *p = new int; // Σωστό. Ορίζει ένα νέο δείκτη σε int, και δεσμεύει μνήμη γι αυτόν. p = x; // Λάθος! Το x είναι int και όχι pointer σε int *p = x; // Σωστό. Η διεύθυνση στην οποία δείχνει ο p παίρνει την τιμή του x, 1. // O p εξακολουθεί να δείχνει στην θέση μνήμης που δεσμεύσαμε αρχικά p = &x; // Σωστό. Ο pointer p τώρα δείχνει στην διεύθυνση του x int *p2; // Σωστό. Ορισμός pointer σε int. Δεν χρειάζεται αρχικοποίηση. Δεν υπάρχει // πρόβλημα που ο ορισμός είναι στη μέση του κώδικα και όχι στην αρχή. int *q = x; // Λάθος! Σε αυτό το σημείο ορίζουμε τον δείκτη q και πρέπει είτε να // δεσμεύσουμε μνήμη, είτε να του αναθέσουμε μια διεύθυνση. int &a; // Λάθος! Δήλωση αναφοράς χωρίς αρχικοποίηση και σύνδεση με μεταβλητή. int &b = p; // Λάθος! Η αναφορά είναι τύπου int και την συνδέουμε με δείκτη σε int. int &c = x; // Σωστό. Η αναφορά c συνδέθηκε με την μεταβλητή x. int* &d = p; // Σωστό. Η αναφορά τύπου pointer σε int συνδέεται με ένα pointer σε int. cout << *c; // Λάθος! Το ίδιο σαν να ζητάμε *x. Το x δεν είναι pointer. cout << c; // Σωστό. Θα τυπωθεί η τιμή του x. cout << *d; // Σωστό. Θα τυπωθεί το περιεχόμενο της διεύθυνσης που δείχνει ο pointer p.

92 Που χρησιμεύουν? Οι δηλώσεις αναφορών που παίζουν το ρόλο συνώνυμων μιας μεταβλητής σε ένα πρόγραμμα δεν έχουν πολύ μεγάλη χρησιμότητα όπως το ίδιο ισχύει για τις δηλώσεις δεικτών που τοποθετούνται σε κάποια υπάρχουσα μεταβλητή int x = 10; int *x_p = &x; εκεί που βοηθούν δραστικά τόσο οι δείκτες όσο και οι αναφορές είναι σε συναρτήσεις στο πέρασμα παραμέτρων δια αναφοράς. Στην περίπτωση που χρησιμοποιήσουμε αναφορές σαν ορίσματα σε συναρτήσεις το πέρασμα δια αναφοράς γίνεται ακόμα πιο απλό.

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης ΑΝΑΚΕΦΑΛΑΙΩΣΗ Αναφορές Όλα αυτά είναι ισοδύναμα int main() int x = 2; int &y = x; int &z = y; int main() int x = 2; int const

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Και ομοιότητες και διαφορές με την C

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Και ομοιότητες και διαφορές με την C ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Και ομοιότητες και διαφορές με την C ΑΝΑΚΕΦΑΛΑΙΩΣΗ Άσκηση Θέλουμε να φτιάξουμε ένα «παιχνίδι» το οποίο κάνει το εξής: Έχουμε δυο αυτοκίνητα που ξεκινάνε από το σημείο 0 της ευθείας

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams CONSTRUCTORS DESTRUCTORS Η κλάση mystring class mystring private: char s[100]; public: char *GetString(); void SetString(char

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;.. Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

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

C++ fundamental building blocks. (χωρίς να αναφερθούμε, όμως, σε έννοιες του αντικειμενοστρεφούς προγραμματισμού )

C++ fundamental building blocks. (χωρίς να αναφερθούμε, όμως, σε έννοιες του αντικειμενοστρεφούς προγραμματισμού ) C++ fundamental building blocks (χωρίς να αναφερθούμε, όμως, σε έννοιες του αντικειμενοστρεφούς προγραμματισμού ) (γεια σας και χαρά σας) HELLO WORLD 2 Κύριο πρόγραμμα //A Simple C++ program #include

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

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

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

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

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

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

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

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

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τύποι αρχείων Ρεύματα Άνοιγμα ρευμάτων Εγγραφή και ανάγνωση δεδομένων προς/από ένα ρεύμα Διαχείριση και κλείσιμο ρευμάτων Παραδείγματα

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

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

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

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

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

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

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

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

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

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

Streams Input / Output in C++ George Kastrinis

Streams Input / Output in C++ George Kastrinis Streams Input / Output in C++ George Kastrinis (gkastrinis@di.uoa.gr) Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

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

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

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

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Οκτώβριος 2018 1/28 1 (implicit) μετατροπές 2 (Functions) 3 (Pointers) 4 (Arrays) 2/28 (implicit)

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

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

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

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

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

HY150a Φροντιστήριο 3 24/11/2017

HY150a Φροντιστήριο 3 24/11/2017 HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει

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

Συµβολοσειρές - Strings

Συµβολοσειρές - Strings Συµβολοσειρές - Strings 1 Συµβολοσειρέςστην C/C++ 2 Χαρακτήρες 'a', 'z', '0', Χαρακτήρες σαν int 'z' επίσης αναπαριστά την ακεραία τιµή του χαρακτήρα z Strings-Συµβολοσειρές Σειρές από χαρακτήρες σαν µια

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Βρόγχοι Το if-then Statement Στην Java το if-then statement έχει το εξής συντακτικό Η παρένθεση είναι απαραίτητη if (condition) if-code block

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

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

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

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

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

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

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

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 3: Μεταβλητές στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

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

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

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

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

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Είδη καλουπωμάτων Μετατροπές και έλεγχοι τύπου Τελευταία ενημέρωση: Οκτώβριος 2013 Εισαγωγή - 2 Όπως και στη Java, στη C++

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

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

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

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

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

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

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους: Επαναλήψεις - Loops Οι επαναλήψεις σε ένα πρόγραμμα μας επιτρέπουν μια ομάδα εντολών να εκτελείται για όσες φορές επιθυμούμε Υπάρχουν τρεις τρόποι επανάληψης εντολών με τη χρήση: While loops For loops

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies Μαθήματα από το εργαστήριο Όταν η εκφώνηση σας ζητάει να φτιάξετε μία μέθοδο που παίρνει

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

Δομές Επανάληψης. Εισαγωγή στη C++

Δομές Επανάληψης. Εισαγωγή στη C++ Δομές Επανάληψης Εισαγωγή στη C++ Επαναληπτικές δηλώσεις Οι βρόγχοι (loops) αναγκάζουν ένα τμήμα κώδικα να επαναλαμβάνεται. Η επανάληψη συνεχίζεται για όσο μία λογική συνθήκη είναι αληθής. Όταν η συνθήκη

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

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

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

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