C++ fundamental building blocks. (χωρίς να αναφερθούμε, όμως, σε έννοιες του αντικειμενοστρεφούς προγραμματισμού )
|
|
- Ζένα Αργυριάδης
- 7 χρόνια πριν
- Προβολές:
Transcript
1 C++ fundamental building blocks (χωρίς να αναφερθούμε, όμως, σε έννοιες του αντικειμενοστρεφούς προγραμματισμού )
2 (γεια σας και χαρά σας) HELLO WORLD 2
3 Κύριο πρόγραμμα //A Simple C++ program #include <iostream> using namespace std; Χρειαζόμαστε (α) βιβλιοθήκες (π.χ., iostream for i/o) (β) std namespace (to be explained later) int main(){ cout << Hello world! << endl; return 0; Χρειαζόμαστε τη main() ως την κεντρική συνάρτηση του προγράμματός μας 3
4 (εισαγωγικά) ΕΙΣΟΔΟΣ / ΕΞΟΔΟΣ 4
5 Είσοδος / Έξοδος δεδομένων Στη C++ η βασική είσοδος και έξοδος γίνεται με τα ρεύματα εισόδου / εξόδου cout και cin, τα οποία είναι αντικείμενα τύπου istream και ostream αντίστοιχα Ο τελεστής << παίρνει μια (σύνθετη) έκφραση από το πρόγραμμά μας και την εισάγει στο cout, το οποίο με τη σειρά του την στέλνει στην οθόνη Ο τελεστής >> εξάγει δεδομένα από το cin (το οποίο τα παίρνει από το πληκτρολόγιο) και τα στέλνει στις μεταβλητές υποδοχής Η είσοδος / έξοδος της C υποστηρίζεται για λόγους συμβατότητας, επίσης 5
6 Απλή είσοδος / έξοδος: cout / cin #include <iostream> using namespace std; main(){ cout << Hello world! << endl; Ισοδύναμα: cout << Hello << world!\n ; cout << Hello world!\n ; 6
7 Είσοδος / Έξοδος δεδομένων #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; 7
8 Είσοδος / Έξοδος δεδομένων #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"; cin >> i >> f; cout << "i = " << i << "\n" << "f = " << f << \n ; cout << "i = " << i << endl << "f = " << f << endl; 8
9 (βασικοί τύποι, αρχικοποιήσεις, strings, const) ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ 9
10 Βασικοί τύποι 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 xbool; xbool = true; xbool = false; //1 byte 10
11 Πίνακες Integers int dataarray[3]; C Strings #include <cstring> char firstname[6]; main(){ strcpy (firstname, eddie ); 11
12 Δηλώσεις Μεταβλητών Στη C++ δηλώσεις μεταβλητών μπορούν να γίνουν παντού και όχι μόνο στην αρχή κάθε συνάρτησης (including main()) int main(){ int x, y, z; if( ) { //.. float f; 12
13 Δηλώσεις τοπικών μεταβλητών παντού Επιτρέπονται δηλώσεις μεταβλητών παντού μέσα στο πρόγραμμα. void f () { int x = 0; cout << x; int y = x + 1; cout << y; for (int i=1; i < y; i++){ cout << i; Η i ΔΕΝ ζει μετά το block του for 13
14 Αρχικοποίηση Μεταβλητών 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; //size: 6, length: 6 remember the last \0 char firstname[] = eddie ; //size: 50, length: 6 char firstname[50] = eddie ; 14
15 Πολυδιάστατοι Πίνακες int mymatrix[2][4]; int mymatrix[2][4] = { {1,2,3,4, {5,6,7,8 ; 15
16 Const Pay particular attention: frequently used for (input) parameter passing, as well as global variables!! 16
17 const main(){ int const SIZE = 20; //can be used to initialize an array char buffer[size]; //will NOT work const variables do NOT change SIZE = 8; 17
18 Διαφορές const και #define Το #define αντικαθιστά την έκφραση με την ισοδύναμή της, μέσω του preprocessor (ΔΕΝ είναι μέρος της C++) To #define είναι εξ ορισμού global ορισμός, ενώ το const έχει δικό του scope. Η συντακτική ορθότητα μιας δήλωσης const ελέγχεται αμέσως, ενώ για το #define μόνο αφού γίνει η αντικατάσταση. Το όποιο λάθος εμφανίζεται στη γραμμή του προγράμματος και όχι στη δήλωση του #define. Το #define είναι συχνή πηγή σύγχυσης και bugs, ιδίως όταν ο κώδικας σπάσει σε πολλά αρχεία => θα αποφεύγουμε τα #define και θα χρησιμοποιούμε const μεταβλητές! 18
19 const Πρακτικός κανόνας: όταν δηλώνω μια μεταβλητή σαν const ΔΕΝ μπορώ να αλλάξω οτιδήποτε βρίσκεται αριστερά του keyword const. char const *buf Μπορώ να αλλάξω τον pointer, αλλά όχι τα δεδομένα του array char *const buf Δεν μπορώ να αλλάξω τον pointer, αλλά μπορώ να αλλάξω τα δεδομένα του array 19
20 Διαβάστε [και γράψτε] από δεξιά... Ο buf είναι const pointer (άρα δεν αλλάζει) σε χαρακτήρες char *const buf Ο buf είναι pointer σε const χαρακτήρες (οι οποίοι, συνεπώς δεν αλλάζουν) char const *buf 20
21 C++ strings 21
22 Strings Στη C++ υπάρχει έτοιμος τύπος δεδομένων που ονομάζεται string για τη διαχείριση συμβολοσειρών. Σε μια μεταβλητή τύπου string μπορούμε να αποθηκεύσουμε ακολουθίες χαρακτήρων χωρίς να ανησυχούμε για το αν χωράνε στην μεταβλητή αυτή. Η διαχείριση των bytes που δεσμεύονται από τη μεταβλητή γίνεται δυναμικά ανάλογα με το μέγεθος της ακολουθίας που αποθηκεύουμε σε αυτή. Επίσης δεν χρειάζεται να ανησυχούμε για το αν η ακολουθία τερματίζεται με \0. Χρειάζεται να συμπεριλάβουμε τη βιβλιοθήκη string στην include list του προγράμματος 22
23 Strings Δήλωση και αρχικοποίηση #include <iostream> #include <string> using namespace std; int main(){ string imblank; string heymom( where is my coat? ); string heypap = whats up? ; string heygranpa(heypap); string heygranma = heymom; 23
24 Strings Δήλωση και αρχικοποίηση #include <iostream> #include <string> using namespace std; int main(){ string s1( I saw elvis in a UFO. ); string s2(s1, 0, 8); string s3 = s1 + Am I crazy? ; //append!! string s4 = s1.substr(2, s1.length()-10); //take a substring: starting pos, how many chars 24
25 Strings Επεξεργασία #include <iostream> #include <string> using namespace std; int main(){ string s1( I saw elvis in a UFO. ); cout << s1.size() << \n ; cout << s1.length() << \n ; // Very important, very frequently used! cout << s1.capacity() << \n ; string s2 = thought I ; s1.insert(1, s2); // insert in position 1, i.e. right after I cout << s1.capacity() << \n ; string s3 = I ve been working too hard ; s1.append(s3); //append, again, equiv. to + s1.append(, or am I crazy?); s1.resize(10); // increase/reduce the capacity cout << s1 << "\n"; 25
26 Strings Επεξεργασία #include <iostream> #include <string> using namespace std; int main(){ string s( Hello mother ); string s1( fa ); s.replace(6, 2, s1); // start at 7 th character (counting starts with 0), replace 2 chars with the whole of s1 // Syntax: starting pos, how many chars to replace, replacement cout << s << \n ; 26
27 Strings Επεξεργασία #include <iostream> #include <string> using namespace std; int main(){ string s("hello mother. How are you mother? Im fine mother."); string s1("fa"); string s3("mo"); int start = 0; unsigned int found = 1; found = s.find(s3, start); while (found!= string::npos){ s.replace(found, s3.length(), s1); start = found + s1.length(); cout << s << "\n"; found = s.find(s3, start); cout << s << "\n"; 27
28 Strings Επεξεργασία s.rfind(s1, s.length()-1); // finds s1 in s backwards starting from the last character pos); // find position of first occurrence of a char in starting from pos pos); // find position of last occurrence of a char in 28
29 Strings Επεξεργασία με τελεστές s= s1 + s2 + s3; s += s5 + s6; s[10] = c ; s.at(10) = c ; s1 == s2 s1!= s2 s1 >= s2 s1 <= s2 s1 > s2 s1 < s2 29
30 Strings and backwards compatibility with C Για λόγους συμβατότητας προς τα πίσω, υποστηρίζονται και οι συμβολοσειρές της C Στη C τα strings είναι ακολουθίες χαρακτήρων που τερματίζονται με το χαρακτήρα \0. Αποθηκεύονται σε πίνακες χαρακτήρων. Η επεξεργασία τους διευκολύνεται από έτοιμες συναρτήσεις όπως strcpy, strcmp, How to convert a string s to a (C-style) char array: const char *p = s.c_str(); 30
31 (συνθήκες, βρόγχοι και τα σχετικά) ΒΑΣΙΚΕς ΕΝΤΟΛΕς 31
32 If Else Statement if (condition) { statement;... else { statement;... Λογικοί τελεστές για σύνθετες συνθήκες: OR: ((cond1) (cond2)) AND: ((cond1)&&(cond2)) NOT:!(cond1) Προσοχή: = vs. == 32
33 Switch Statement switch (condition) { case constant1: statement;... break; case constant2: statement;... break;... default: statement;... break; Προσοχή: αν παραληφθεί το break, εκτελείται η επόμενη εντολή! Δεν το παραλείπουμε ποτέ!!! Το default καλύπτει την περίπτωση που χάνουμε κάποια case 33
34 Loop Statements while (condition){ statement;... for (declaration-initialization; condition; iteration){ statement;... //Example of counting... for (int i=0; i<5; i++){ cout << i*5+3; //runs 5 times 34
35 Συναρτήσεις (εισαγωγικά) #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 στην trianglearea area = width * height / 2.0; return (area); 35
36 ΔΕΙΚΤΕΣ ΚΑΙ ΑΝΑΦΟΡΕΣ 36
37 Δείκτες Δείκτης είναι μια μεταβλητή στην οποία αποθηκεύουμε τη διεύθυνση μιας άλλης μεταβλητής. int anint; int *aptr; 0x anint (θέση μνήμης 0x1000) aptr anint aptr = & anint; anint = 10; *aptr = 15; 15 anint χρόνος 37
38 Δείκτες Δέσμευση Μνήμης int *aptr = NULL; aptr = (int *)malloc(sizeof (int)); *aptr = 10; αντίστοιχα στη C++ aptr = new int; *aptr = 10; 0x0000 0x aptr Θέση μνήμης 0x1000 aptr Θέση μνήμης 0x1000 χρόνος 38
39 Δείκτες Αποδέσμευση Μνήμης int *aptr = NULL; aptr = (int *)malloc(sizeof (int)); *aptr = 10; free(aptr); αντίστοιχα στη C++ aptr = new int; *aptr = 10; delete aptr; 0x0000 0x aptr Θέση μνήμης 0x1000 aptr Θέση μνήμης 0x1000 χρόνος Θέση μνήμης 0x
40 Δείκτες Πίνακες - Δέσμευση Μνήμης int *aptr = NULL; aptr = (int *)malloc(10*sizeof (int)); *aptr = 10; aptr[0] = 10; *(aptr + 2) = 6; aptr[2] = 6; free(aptr); αντίστοιχα στη C++ aptr = new int [10]; *aptr = 10; delete [] aptr; 0x x1000 aptr Θέση μνήμης 0x1000 aptr χρόνος 40
41 Αναφορές (References) Μια αναφορά σε μια μεταβλητή είναι σαν ένα συνώνυμο για τη μεταβλητή. Προσοχή: ΔΕΝ πρόκειται για pointers (αν και υπάρχουν κάποιες ομοιότητες, βέβαια βλ. παρακάτω...)... int myint; int &myref = myint;... Έτσι δηλώνουμε αναφορές: κατά τη δήλωση πρέπει να καθορίζουμε τη μεταβλητή της οποίας είναι συνώνυμα 41
42 Αναφορές (References) Όταν δηλώνουμε μια μεταβλητή, αυτό σημαίνει ότι της παραχωρούμε κάποιο χώρο στη μνήμη και ένα όνομα στο χώρο αυτό Όταν δηλώνουμε μια αναφορά σε μια μεταβλητή, είναι σαν να δίνουμε παραπάνω από ένα ονόματα στο συγκεκριμένο χώρο στη μνήμη. Οι παρακάτω εντολές είναι ισοδύναμες: myint++; myref++; 42
43 Αναφορές int myint;?? myint myint = 4; 4 myint int &myref = myint; 4 myint myref 43
44 Τι κρύβουν. int myint = 5; int &myref = myint; int * const myref_p = &myint; myint = 8; myref = 7; myint = 8; *myref_p = 7; 44
45 Τι κρύβουν. #include <iostream> using namespace std; int * const refa_p = &a; int main() { int a(1), b(3); int& refa = a; cout << refa << endl; cout << a << endl; refa = b; cout << a << endl; return 0; cout << *refa_p << endl; *refa_p = b; 45
46 Πού χρησιμεύουν. Οι δηλώσεις αναφορών που παίζουν το ρόλο συνώνυμων μιας μεταβλητής σε ένα πρόγραμμα δεν έχουν πολύ μεγάλη χρησιμότητα. Το ίδιο ισχύει για τις δηλώσεις δεικτών που τοποθετούνται σε κάποια υπάρχουσα μεταβλητή int x = 10; int *x_p = &x; Εκεί που βοηθούν δραστικά τόσο οι δείκτες όσο και οι αναφορές είναι σε συναρτήσεις στο πέρασμα παραμέτρων δι αναφοράς. Στην περίπτωση που χρησιμοποιήσουμε αναφορές σαν ορίσματα σε συναρτήσεις το πέρασμα δι αναφοράς γίνεται ακόμα πιο απλό. 46
47 ΠΈΡΑΣΜΑ ΠΑΡΑΜΈΤΡΩΝ ΣΕ ΣΥΝΑΡΤΉΣΕΙς 47
48 Πέρασμα δια τιμής #include <iostream> Using namespace std; void increase(int myparameter) { myparameter++; cout << myparameter << "\n"; int main(){ int avalue = 3; Δημιουργείται τοπική κόπια του avalue increase(avalue); cout << avalue << "\n"; 48
49 Πέρασμα δι αναφοράς με δείκτη #include <iostream> using namespace std; void increase(int *mypointer) { (*mypointer)++; cout << *mypointer << "\n"; int main(){ int avalue = 3; increase(&avalue); cout << avalue << "\n"; 49
50 Πέρασμα δι αναφοράς με αναφορά #include <iostream> using namespace std; void increase(int &myref) { myref++; cout << myref << "\n"; int main(){ int avalue = 3; increase(avalue); cout << avalue << "\n"; 50
51 Πέρασμα δι αναφοράς με αναφορά τι κρύβει #include <iostream> using namespace std; void increase(int &myref) { myref++; cout << myref << "\n"; int main(){ int avalue = 3; Increase(int *const myref_p) (*myref_p)++; cout << *myref_p << \n ; increase(avalue); cout << avalue << "\n"; localincrease(&avalue) 51
52 Παράδειγμα μεταβλητές που δεν αλλάζουν #include <iostream> using namespace std; void showconst(int &counter, const int &newcounter){ counter = counter + newcounter; /* will not pass!!! newcounter++; */ int main(){ int acounter = 0; int anothercounter = 3; showconst(acounter, anothercounter); cout << acounter << "\n"; 52
53 Arrays as parameters #include <iostream> using namespace std; void printarray(int arg[], int length){ int i; for (i=0;i<length;i++){ cout << arg[i] << \n ; main(){ int firstarray[] = {5,10,15; int secondarray[] = {3,6,9,12; printarray(firstarray,3); printarray(secondarray,4); 53
54 Διαφορές pointers και references Μια αναφορά δεν στέκει ποτέ μόνη της σε ένα πρόγραμμα. Πρέπει να δηλωθεί οπωσδήποτε σαν αναφορά σε κάποια μεταβλητή (απόρροια του γεγονότος ότι οι const μεταβλητές θέλουν αρχικοποίηση). Ένας pointer μπορεί κάλλιστα να μη δείχνει πουθενά. Αν μια αναφορά δείχνει σε μια μεταβλητή, ΔΕΝ μπορώ να την βάλω να δείξει σε άλλη μεταβλητή (απόρροια του γεγονότος ότι οι const μεταβλητές δεν αλλάζουν). Έναν pointer μπορώ να τον μετακινώ κατά βούληση. 54
55 Ομοιότητες pointers και references Μπορούν να περνούν αμφότερα σαν παράμετροι σε μια συνάρτηση. Ομοίως, μπορούν να αποτελούν την τιμή επιστροφής μιας συνάρτησης. 55
56 Ισοδύναμο αποτέλεσμα void bypointer(int *value){ *value +=5; void byref(int &value){ value +=5; main(){ int i = 3; bypointer(&i); main(){ int i = 3; bypointer(i); 56
57 Συνοπτικά για το πέρασμα παραμέτρων function (int var) Πέρασμα τιμής Η μεταβλητή περνιέται αυτούσια ως παράμετρος στη function, μπορεί να αλλάξει τοπικά στη function, αλλά οι αλλαγές δεν περνούν εξωτερικά στο πρόγραμμα. function (const int var) Πέρασμα τιμής Όπως πριν, αλλά χωρίς να μπορεί να αλλάξει η τιμή της μεταβλητής εσωτερικά της function function (int &var) Αναφορά Περνιέται μια αναφορά ως παράμετρος. Ότι αλλαγές γίνουν στην αναφορά, ανακλώνται και εξωτερικά στο πρόγραμμα function (const int &var) Σταθερή Αναφορά function (int array []) function (int *var) Όπως πριν, αλλά χωρίς να μπορεί να αλλάξει η τιμή της αναφοράς εσωτερικά της function H C++ αυτομάτως μετατρέπει τα arrays σε αναφορές Περνά ένας pointer ως παράμετρος της function 57
58 Συνοπτικά για το πέρασμα παραμέτρων Excellent guideline at Google Code Style: use const references for input variables that are not to be changed use pointers for output variables that will be changed, eventually Significantly enhances maintainability and usage: the reader knows what is input + what is output If the maintainer accidentally tries to mess with the (const) input, compiler catches it void updatelicense(const int &newnumber, int *licenceno) 58
59 Default τιμές στο πέρασμα παραμέτρων void f (int x = 1); void g (int a, int b = 0){ cout << "a: " << a << " b: " << b << "\n"; int main () { f(5); f(); g(1, 2); g(5); void f (int x){ //could be (int x =1 ) 59
60 Default τιμές στο πέρασμα παραμέτρων void h(int a, int b = 0, int c, int d = 0){ //.. int main (){ h(10, 5, 20); στην περίπτωση αυτή σίγουρα a = 10 το 5 μπορεί να αντιστοιχεί στο b οπότε c = 20 και d = 0 H το b = 0, c = 5 και d = 20 Avoid default values if you can: source of much confusion!! προς αποφυγή του παραπάνω προβλήματος το οποίο δεν μπορεί να επιλύσει ο compiler αν η i-οστή παράμετρος στη δήλωση μιας συνάρτησης με Ν παραμέτρους έχει default τιμή, όλες όσες την ακολουθούν πρέπει επίσης να έχουν δηλωμένες default τιμές. με βάση το παραπάνω αν κατά την κλήση η συνάρτηση έχει ι <= κ < Ν πραγματικές παραμέτρους, οι Ν-κ τελευταίες λαμβάνουν τις default τιμές 60
61 Κονσόλα -- Αρχεία C++ Ι/Ο 61
62 C++ IO Streams 62
63 IOSTREAMs - reading lines #include <iostream> using namespace std; int main(){ char buf[100]; char whatisleft[200]; /* reads max of 9 chars or up to '\n' and leaves the '\n' behind, i.e. the next char we read is \n */ cout << "Give a string, at most 9 chars, ending with endl \n"; cin.get(buf, 10, '\n'); cout << buf << endl; cout << "Here, normally, you should give another string \n"; cin.get(whatisleft, 10, '\n'); cout << whatisleft << endl; //Try declaring buf as string (including #include <string>) to see what happens 63
64 IOSTREAMs - reading lines #include <iostream> using namespace std; int main(){ char buf[100]; char whatisleft[200]; /* reads max of 9 chars or up to '\n' including the '\n' which is not included in buf */ cout << "Give a string of at most 9 characters, ending with endl \n"; cin.getline(buf, 10, '\n'); cout << buf << endl; cout << "Here, normally, you should give another string \n"; cin.getline(whatisleft, 10, '\n'); cout << whatisleft << endl; // Try it with input that exceeds the limit of 10 chars and with input less than 10 chars 64
65 IOSTREAMs - reading lines #include <iostream> using namespace std; int main(){ char buf[100]; while (cin.eof()!= true){ // or cin.good() == true cout << "Give another string: "; cin.getline(buf, 100, '\n'); cout << buf << endl; //Eof is given via Ctrl+D 65
66 IOSTREAMs #include <iostream> using namespace std; int main(){ float b; int a; while (cin.good() == true){ // or cin.eof()!= true cout << "Give a float and an int: "; cin >> b >> a; cout << b <<"\t" << a << endl; //Try it separating the 2 numbers with space, enter, or tab 66
67 IOSTREAMs - reading lines σε string #include <iostream> #include <string> using namespace std; int main(){ string s; while (getline(cin, s)){ cout << s << endl; Very useful! Can handle strings of (i) arbitrary size and (ii) several whitespaces Contrast this to cin >> s that can withstand only one (1) word in the input stream //Try it with strings having several whitespaces and big size 67
68 C++ File Streams 68
69 File streams Για ανάγνωση από αρχείο δημιουργούμε μεταβλητές (ρεύματα) τύπου ifstream Για γράψιμο σε αρχείο δημιουργούμε μεταβλητές (ρεύματα) τύπου οfstream Ανάγνωση γίνεται με >> για βασικούς τύπους (int, float, char, char[], string ) KAI get, getline για char[] εγγραφή γίνεται με << για βασικούς τύπους (int, float, char, char[], string, ) Γενικά ότι συνάρτηση είδαμε στα cin, cout ισχύει και σε μεταβλητές ifstream, ofstream. 69
70 Copy one file to another, line by line #include <iostream> #include <cstdlib> #include <fstream> using namespace std; int main(){ char buf[100]; ifstream in("in.txt"); ofstream out("out.txt"); if(in.good()!= true) exit(exit_failure); Same old story: Μια μεταβλητή για κάθε αρχείο while (in.eof()!= true){ in.getline(buf, 100, '\n'); out << buf << endl; in.close(); out.close(); ΑΤΤΝ: αν κάτι πάει στραβά, πιάστε το νωρίς!! Διαβάζουμε γραμμή γραμμή μέχρι τέλους του αρχείου && we do sth with it (here: copy it to out.txt) housekeeping 70
71 Append a file to another file, line by line #include <iostream> #include <cstdlib> #include <fstream> using namespace std; int main(){ char buf[100]; char c; ifstream in("in.txt"); ofstream out("out.txt", ios::app); // ios::out is the default if(in.good()!= true) exit(1); while (in.eof()!= true){ in.getline(buf, 100, '\n'); out << buf << endl; in.close(); out.close(); 71
72 Append a file to another file, line by line #include <iostream> #include <string> #include <fstream> using namespace std; int main(){ char buf[100]; ifstream in; ofstream out; in.open("in.txt"); out.open("out.txt", ios::app); // ios::out default if(in.good()!= true) exit(1); while (in.eof()!= true){ in.getline(buf, 100, '\n'); out << buf << endl; in.close(); out.close(); Η διαφορά με το προηγούμενο παράδειγμα είναι στη χρήση της open 72
73 Extra methods in.clear(); // sets eof flag back to 0 in.seekg(0,ios::beg); // offset from the beginning while (in.eof()!= true){ in.getline(buf, 100, '\n'); cout << buf << endl; out.seekp(0,ios::beg); out << "BBBBBBBBBBBB"; in.close(); out.close(); // offset from the beginning // seekp seekg χρήση και με ios::end και αρνητικό offset, ή ios::curr 73
74 Try it for yourselves (part 1) #include <iostream> #include <cstdlib> #include <fstream> using namespace std; int main(){ char buf[100]; char c; int i; float f; fstream in; fstream out; // ios::out is default in.open("in.txt", ios::in); out.open("out.txt", ios::out ios::in); // ios::app to append if(out.good()!= true) exit(1); while (in.eof()!= true){ in.getline(buf, 100, '\n'); out << buf << endl; 74
75 continued: part 2 in.clear(); in.seekg(0,ios::beg); while (in.eof()!= true){ in.getline(buf, 100, '\n'); cout << buf << endl; //print file on screen out.seekg(0,ios::beg); while (out.eof()!= true){ out.getline(buf, 100, '\n'); cout << "XXX" << buf << endl; //print on screen file s info with XXX in front out.clear(); out.seekp(0,ios::beg); //replace file s starting bytes with BBBB out << "BBBBBBBBBBBB"; in.close(); out.close(); 75
76 (structs, υπερφόρτωση συναρτήσεων, namespaces, ) POT POURRI 76
77 Disclaimer Δεν γίνεται μονομιάς να μάθετε ολόκληρη τη C++ Υπάρχουν θέματα που θα τα ανακαλύψετε σιγά σιγά, έξω από το πλαίσιο του μαθήματος Υπάρχουν και στοιχεία που θα πρέπει να αντιμετωπίσετε με πολύ προσοχή ενδεχομένως και να αποφασίσετε να μην τα χρησιμοποιήσετε καθόλου Στη συνέχεια δίνουμε μια πρώτη εικόνα από στοιχεία της C++ στα οποία δε θα επεκταθούμε ιδιαίτερα Θυμηθείτε ότι ο σκοπός του μαθήματος είναι να διδάξουμε βασικές αρχές αντικειμενοστρεφούς προγραμματισμού και όχι C++ 77
78 Structs & Κλάσεις 78
79 Structs Ο πιο απλός τρόπος δήλωσης ενός struct είναι ως εξής: struct structname { ; fieldtype fieldname; fieldtype fieldname;... 79
80 Τα structs είναι τύποι δεδομένων Δήλωση struct struct complex { //μιγαδικός double re; double im; ; Δήλωση μεταβλητής τύπου complex complex z; Σε αντίθεση με τη C δεν χρειάζεται να γράψουμε struct complex z; 80
81 Συναρτήσεις μέσα σε structs Σε αντίθεση με τη C μπορούμε να ορίσουμε μεθόδους για τα structs struct complex { //μιγαδικός double re; double im; void show(); ; void complex::show(){ cout << ( << re <<, << im << \ )\n ; 81
82 Συναρτήσεις μέσα σε structs Εντελώς αντίστοιχα μπορώ να ορίσω την κλάση class complex { public: double re; double im; void show(); ; //μιγαδικός void complex::show(){ cout << ( << re <<, << im << \ )\n ; 82
83 Δηλώσεις και χρήση αντικειμένων int main () { complex a; a.re = 1.0; a.im = 2.0; a.show(); return 0; Εναλλακτικά (α-λα-c): #include <iostream.h>... void show (complex &p){... main(){ complex a;... show(a); 83
84 Δείκτες σε αντικείμενα int main () { complex *pa, *pb; complex a; pa = &a; pb = new complex; a.re = 1.0; pa ->re = 1.0; (*pa).re = 1.0; a.im = 2.0; pa->im = 2.0; (*pa).im = 2.0; a.show(); pa->show(); (*pa).show(); pb->re = 3.0; pb->im = 4.5; pb->show(); delete pb; return 0; 84
85 Υπερφόρτωση (Overloading) Συναρτήσεων 85
86 Υπερφόρτωση συναρτήσεων Στη C++ επιτρέπεται να δηλώσουμε συναρτήσεις με το ίδιο όνομα αλλά: με διαφορετικό αριθμό παραμέτρων με διαφορετικούς τύπους παραμέτρων ΠΡΟΣΟΧΗ! Όχι συναρτήσεις που διαφέρουν μόνο στον τύπο του αποτελέσματος που επιστρέφουν. 86
87 Υπερφόρτωση συναρτήσεων #include <iostream> using namespace std; int max (int a, int b){ if (a > b) return a; else return b; int max (int a[], int size){ int max = a[0]; for (int i = 0; i < size; i++) if (a[i] > max) max = a[i]; return max; 87
88 Υπερφόρτωση συναρτήσεων int main(){ int A[] = {-2, 4, 5, 6; int a = 3, b = 5; int ret; ret = max(a, 4); cout << ret << endl; ret = max(a, b); cout << ret << endl; 88
89 Υπερφόρτωση συναρτήσεων #include <iostream> using namespace std; int max (int a, int b){ if (a > b) return a; else return b; float max (int a, int b){ if (a > b) return a; else return (float) b; 89
90 Υπερφόρτωση συναρτήσεων int main(){ int a = 3, b = 5; int ret; ret = max(a, b); cout << ret << endl; max(a, b); // Πρόβλημα ποια θα καλεστεί??? // Compile Error 90
91 C++ Preprocessor 91
92 Preprocessor της C++ (#include, #define, ) Πρόγραμμα που γράφουμε εμείς Preprocessor Compiler Επεκτεταμένο Πρόγραμμα 92
93 #include Ενσωματώνει στο πρόγραμμά μας αυτούσια αρχεία. #include <iostream.h> #include mydefinitions.h #include../../mydefinitions.h DOS/Windows:..\..\mydefinitions.h 93
94 #define #define SIZE 20 Σημαίνει ότι οπουδήποτε βλέπει ο preprocessor SIZE, το αντικαθιστά με 20. //illegal definitions #define X = 5 #define X 5; Σαφώς καλύτερα να χρησιμοποιεί κανείς const const int SIZE = 20; 94
95 Inline Functions 95
96 Inline functions Είναι συναρτήσεις οι οποίες χρησιμοποιούνται από τον compiler στην παραγωγή του εκτελέσιμου κώδικα: για επιτάχυνση της διαδικασίας, ενσωματώνονται στον κώδικα της καλούσας συνάρτησης, αντί να κληθούν ως χωριστές συναρτήσεις. Χρήσιμες ΜΟΝΟ για πολύ μικρές συναρτήσεις. inline int square (int value){ return (value * value); Χρησιμοποιούνται κανονικά στο πρόγραμμα, π.χ., main(){ mysquarearea = square(squareedge); 96
97 Namespaces 97
98 Namespaces Πολλές φορές στη C φτιάχνουμε συναρτήσεις των οποίων τα ονόματα έρχονται σε σύγκρουση με έτοιμες συναρτήσεις της γλώσσας σαν αποτέλεσμα έχουμε λάθη μετάφρασης που δεν εξηγούνται εύκολα και κόστος επιδιόρθωσης του κώδικα Ένα πρόγραμμα μπορεί να συνθέτει κώδικα από δύο ή περισσότερα άτομα που μπορεί να χρησιμοποιούν συνώνυμες συναρτήσεις ή κλάσεις. σαν αποτέλεσμα πάλι μπορεί να έχουμε λάθη μετάφρασης του συνολικού κώδικα στη C++ υπάρχει ο μηχανισμός namespace που μπορεί να χρησιμοποιηθεί για την αποφυγή συγκρούσεων namespace Χ {.. ; 98
99 Παράδειγμα Στο αρχείο: util.h υπάρχουν χρήσιμες συναρτήσεις που πήραμε από κάποιον άλλο προγραμματιστή. float squarearea(float length){ return (length*length);. int f(){. 99
100 Παράδειγμα (συνέχεια) #include <iostream.h> #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 << "Normal " << squarearea(2.0); f(); 100
101 Παράδειγμα Στο αρχείο: util.h namespace UtilJohn { float squarearea(float length){ return length*length; int f(){. 101
102 Παράδειγμα (συνέχεια) #include <iostream.h> #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 << "Normal " << Local::squareArea(2.0); UtilJohn::f(); 102
103 Παράδειγμα (συνέχεια) #include <iostream.h> #include util.h" namespace Local{ //returns square km for length in km //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 << "Normal " << squarearea(2.0); UtilJohn::f(); 103
104 Παράδειγμα (συνέχεια) #include <iostream.h> #include util.h" namespace Local{ //returns square km for length in km //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 "<< UtilJohn::squareArea(2.0) << "\n"; cout << "Normal " << squarearea(2.0); 104
105 To std namespace Μπορείτε να δηλώνετε το std namespace: #include <iostream> using namespace std; για να μη χρειάζεται να το γράφετε συνέχεια πχ std::cout <<. Αν και κάποιοι μεταφραστές το κάνουν αυτόματα 105
106 Exceptions 106
107 Εξαιρέσεις Αρκετές φορές στην πράξη υλοποιούμε συναρτήσεις που δέχονται σαν όρισμα κάποια δεδομένα και επιστρέφουν ένα αποτέλεσμα κάποιου τύπου (π.χ. int). Το αποτέλεσμα σε πολλές περιπτώσεις μπορεί να είναι οποιαδήποτε τιμή αυτού του τύπου (int). Παρόλα αυτά αν κάτι πάει στραβά στην εκτέλεση της συνάρτησης θέλουμε να επιστρέφει κάτι σε αυτόν που την κάλεσε ώστε να καταλάβει ότι κάτι πήγε στραβά (π.χ. απέτυχε το άνοιγμα ενός αρχείου). Για αυτό το κάτι, προφανώς δεν μπορούμε να δεσμεύσουμε μια τιμή αν αυτή μπορεί να επιστρέφεται και κάτω από κανονικές συνθήκες (π.χ. -1). Αντί αυτού μπορούμε να χρησιμοποιήσουν το μηχανισμό των εξαιρέσεων.. 107
108 Εξαιρέσεις Γενικά μπορούμε να πούμε ότι μια εξαίρεση είναι μια δομή (struct) που επιστρέφει μια συνάρτηση όταν κάτι πάει λάθος. Η επιστροφή γίνεται με throw αντί για return. Η συλλογή αυτής της δομής - εάν και εφόσον επιστραφεί γίνεται με τη χρήση της εντολής try/catch. 108
109 Εξαιρέσεις #include <iostream> #include <string> using namespace std; struct MyError { int code; string cause; ; // -1 is a valid calculation of the function float test_function(string s) { MyError e; ifstream in; in.open(s); if (in.good()!= true) { e.code = 555; e.cause = open file failed"; throw e; else { float sum; //. read float numbers from file and return the sum return sum; 109
110 Εξαιρέσεις. main(){ int y; float k; try { k = test_function ( lala.txt ); // test_function is invoked // k = if ok catch (MyError error) { // error = if a problem occurs cout << error.code << error.cause << endl; 110
111 Εξαιρέσεις - new. main(){ int * x; try { x = new int [1000]; catch (bad_alloc bad){ cout << Bad allocation integer array ; 111
112 Υπερφόρτωση Τελεστών 112
113 Υπερφόρτωση τελεστών Στη C οι τελεστές (+, -, *, ==, >, <,.) ορίζονται και μπορεί να χρησιμοποιηθούν μόνο μεταξύ μεταβλητών ή σταθερών κάποιου βασικού τύπου (int, float, double, char, ). Στη C++ μπορούμε να επανα-ορίσουμε τη λειτουργία των τελεστών για περιπτώσεις μεταβλητών των οποίων ο τύπος ορίστηκε από τον προγραμματιστή. μεταβλητές τύπου struct αντικείμενα κάποιας κλάσης περισσότερα θα πούμε στην περίπτωση αντικειμένων.. 113
114 Υπερφόρτωση τελεστών struct complex { double re, im; ; complex operator + (complex x, complex y) { complex result; result.re = x.re + y.re; result.im = x.im + y.im; return result; int operator == (complex x, complex y) { return (x.re == y.re) && (x.im == y.im); 114
115 Υπερφόρτωση τελεστών int main () { complex a, b, c; a.re = 1.0; a.im = 2.0; b.re = 4.0; b.im = 1.0; if (a == b) cout << "they are equal\n"; else cout << "they are different\n"; c = a + b; return 0; 115
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Και ομοιότητες και διαφορές με την C
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Και ομοιότητες και διαφορές με την C ΑΝΑΚΕΦΑΛΑΙΩΣΗ Άσκηση Θέλουμε να φτιάξουμε ένα «παιχνίδι» το οποίο κάνει το εξής: Έχουμε δυο αυτοκίνητα που ξεκινάνε από το σημείο 0 της ευθείας
Διαβάστε περισσότεραΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ 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
Διαβάστε περισσότεραΑΝΑΚΕΦΑΛΑΙΩΣΗ. 26 Οκτωβρίου 2011
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου 2011 Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα αντικείμενα. Κλάση: Μια αφηρημένη οντότητα με χαρακτηριστικά
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διαφάνειες του μαθήματος Απόστολος Ζάρρας Πάνος Βασιλειάδης Παναγιώτης Τσαπάρας www.cs.uoi.gr/~pvassil/courses/oop/ Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (Object
Διαβάστε περισσότεραΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης ΑΝΑΚΕΦΑΛΑΙΩΣΗ Αναφορές Όλα αυτά είναι ισοδύναμα int main() int x = 2; int &y = x; int &z = y; int main() int x = 2; int const
Διαβάστε περισσότεραΑναφορές, είκτες και Αλφαριθμητικά
Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών
Διαβάστε περισσότεραΚλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )
ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση
Διαβάστε περισσότεραHY150a Φροντιστήριο 3 24/11/2017
HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά
Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object
Διαβάστε περισσότεραStreams Input / Output in C++ George Kastrinis
Streams Input / Output in C++ George Kastrinis (gkastrinis@di.uoa.gr) Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 2η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικοί αριθμητικοί τύποι, μετατροπές τύπων και σταθερές. Πίνακες. Πίνακες
Διαβάστε περισσότεραΣυμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )
ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία
Διαβάστε περισσότεραΑρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr
ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τύποι αρχείων Ρεύματα Άνοιγμα ρευμάτων Εγγραφή και ανάγνωση δεδομένων προς/από ένα ρεύμα Διαχείριση και κλείσιμο ρευμάτων Παραδείγματα
Διαβάστε περισσότεραΗ εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..
Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη
Διαβάστε περισσότεραΣτοιχειώδης προγραμματισμός σε C++
Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.
Διαβάστε περισσότεραΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ
ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:
Διαβάστε περισσότεραΗΥ-150. Προγραμματισμός
ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει
Διαβάστε περισσότεραΣυµβολοσειρές - Strings
Συµβολοσειρές - Strings 1 Συµβολοσειρέςστην C/C++ 2 Χαρακτήρες 'a', 'z', '0', Χαρακτήρες σαν int 'z' επίσης αναπαριστά την ακεραία τιµή του χαρακτήρα z Strings-Συµβολοσειρές Σειρές από χαρακτήρες σαν µια
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 5η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πίνακες ως ορίσματα συναρτήσεων. Τα ορίσματα argc και argv της main.
Διαβάστε περισσότεραΗΥ-150. Προγραμματισμός
ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 9: C++ ΕΙΣΟΔΟΣ - ΕΞΟΔΟΣ / ΑΛΦΑΡΙΘΜΗΤΙΚΑ / ΑΡΧΕΙΑ Διαχείριση Αρχείων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Διαβάστε περισσότεραΠρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής
Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input
Διαβάστε περισσότεραΠρογραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πίνακες Αντικειμένων Όπως στην C μπορούμε να έχουμε πίνακες από
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΠρογραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΣυναρτήσεις και Πίνακες
Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή
Διαβάστε περισσότεραΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007
Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο
Διαβάστε περισσότεραΠρογραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΕντολές εισόδου - εξόδου. Εισαγωγή στη C++
Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΦροντιςτήριο. Linked-List
Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ
Διαβάστε περισσότεραΓ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης
Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Εισαγωγή Στη C++ υπάρχει η δυνατότητα να δηλώσουμε μία συμβολοσειρά ως αντικείμενο, χρησιμοποιώντας τη βιβλιοθήκη . Επειδή οι συμβολοσειρές είναι
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 6η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προκαθορισμένες τιμές ορισμάτων. Υπερφόρτωση συναρτήσεων. Συναρτήσεις
Διαβάστε περισσότεραΓ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης
Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){
Διαβάστε περισσότεραΑντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT
Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Οκτώβριος 2018 1/28 1 (implicit) μετατροπές 2 (Functions) 3 (Pointers) 4 (Arrays) 2/28 (implicit)
Διαβάστε περισσότεραΔιάλεξη 5: Δείκτες και Συναρτήσεις
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 5: Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 5-1 Περιεχόμενο
Διαβάστε περισσότεραΔομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου
Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού
Διαβάστε περισσότεραΠρογραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 17η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προσθήκη ελέγχου ορίων σε πίνακες χρησιμοποιώντας σχεδιότυπα τάξεων
Διαβάστε περισσότεραΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007
Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Όλοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι του 10000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Αν κάπου κάνετε κάποιες υποθέσεις
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);
Διαβάστε περισσότερα2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων
2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 9: C++ ΕΙΣΟΔΟΣ - ΕΞΟΔΟΣ / ΑΛΦΑΡΙΘΜΗΤΙΚΑ / ΑΡΧΕΙΑ Αλφαριθμητικά ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 4η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Δείκτες και πίνακες. Δείκτες σε σταθερές και σταθεροί δείκτες. Μεταβίβαση
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Εισαγωγή στην C++ ΔΙΔΑΣΚΟΝΤΕΣ:Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής H Γλώσσα C++ ΙΣΤΟΡΙΑ 1967:
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΕισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#
Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Χειρισμός Εξαιρέσεων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');
Διαβάστε περισσότεραΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor
ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες
Διαβάστε περισσότεραΠρογραμματιστικές τεχνικές
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ανασκόπηση
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραΔιάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,
Διαβάστε περισσότεραΒ. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript
Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)
Διαβάστε περισσότεραΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011
Διάρκεια Διαγωνισμού: 3 ώρες Απαντήστε όλες τις ερωτήσεις Μέγιστο Βάρος (20 Μονάδες) Δίνεται ένα σύνολο από N σφαιρίδια τα οποία δεν έχουν όλα το ίδιο βάρος μεταξύ τους και ένα κουτί που αντέχει μέχρι
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Τμήμα Μηχανικών Πληροφορικής Εργαστήριο 1 Αντικειμενοστρεφής Προγραμματισμός Βασικά χαρακτηριστικά της C++ Κλάσεις (Classes) Μία κλάση (class) αποτελεί ένα «αντικειμενοστρεφές εργαλείο» για τη δημιουργία
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Πέμπτη (5 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/
Διαβάστε περισσότεραΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής
ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.
Διαβάστε περισσότεραΠαίρνοντας Αποφάσεις 1
Παίρνοντας Αποφάσεις 1 Στόχοι μαθήματος Συγκριτικοί/ Λογικοί Τελεστές Η εντολή IF Η εντολή switch 2 Συγκριτικοί Τελεστές == ίσο!= διάφορο / άνισο > μεγαλύτερο < μικρότερο >= μεγαλύτερο ή ίσο
Διαβάστε περισσότεραΔιάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους
Διαβάστε περισσότερα2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ
2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Τι μάθαμε μέχρι τώρα Κάθε πρόγραμμα της c++ περιέχει υποχρεωτικά μια συνάρτηση main() η οποία είναι εκείνη που εκτελείται πρώτη. Κάθε
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 10η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση των τελεστών εισόδου και εξόδου. Τάξεις και δυναμική καταχώριση
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΕισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:
Εισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Παράδειγµα χρήσης κλάσεων βιβλιοθηκών: Η κλάση string Ι/Ο στη C++ Βιβλιοθήκες της C++ Παράµετροι Αναφοράς, Παράµετροι default
Διαβάστε περισσότεραS, (5, -3, 34, -23, 7) ( /, @, *, _
1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ
Διαβάστε περισσότεραΑντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011
Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include
Διαβάστε περισσότεραΠρογραμματισμό για ΗΜΥ
ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία
Διαβάστε περισσότεραΕισαγωγή στην πληροφορική
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραμματισμού
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.
Διαβάστε περισσότεραΚλάσεις και αντικείμενα #include <iostream.h<
Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή.
Διαβάστε περισσότερα17TimeThis.h function returns reference pointer to same object { return *this; }
Προαπαιτούµενη Κάθε οµάδα θα πρέπει να εµπλουτίσει το ίδιο πρόγραµµα, που έκανε την προηγούµενη φορά, προσθέτοντας στην κλάση του έναν ή περισσότερους υπερφορτωµένους τελεστές (όπως , ++, +,-,+=..)
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός
Διαβάστε περισσότεραΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό δομήθηκε βάση
Διαβάστε περισσότεραΣε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.
58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο
Διαβάστε περισσότεραΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 7ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος Δείκτες (Pointers) (1) 142 Κάθε μεταβλητή, εκτός από την τιμή της, έχει και μία συγκεκριμένη διεύθυνση
Διαβάστε περισσότεραΕνδεικτική περιγραφή μαθήματος
ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Πίνακες & Δείκτες ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πίνακες Πίνακες Τα στοιχεία
Διαβάστε περισσότεραΔυναμική μνήμη με πίνακες και λίστες
Δυναμική μνήμη με πίνακες και λίστες Ατζέντα ονομάτων Οι πίνακες βοηθάνε στην εύκολη προσπέλαση, στην σειριοποίηση των δεδομένων για αποθήκευση ή μετάδοση. Απαιτούν ωστόσο είτε προκαταβολική δέσμευση μνήμης
Διαβάστε περισσότεραΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++
Υπερφόρτωση, keywords CONST, STATIC, FRIEND ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Υπερφόρτωση Συναρτήσεων Τελεστών CONST αντικείμενα, μεταβλητές και συναρτήσεις
Διαβάστε περισσότερα