Πανεπιστήµιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) είκτες και Συµβολοσειρές (Pointers. & Strings)

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

Download "Πανεπιστήµιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) είκτες και Συµβολοσειρές (Pointers. & Strings)"

Transcript

1 Πανεπιστήµιο Πατρών 1 Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) είκτες και Συµβολοσειρές (Pointers & Strings)

2 Περιεχόµενα 2 Εισαγωγή ήλωση και αρχικοποίηση µεταβλητών τύπου δείκτη Τελεστές δεικτών τελεστής διεύθυνσης & τελεστής έµµεσης αναφοράς * Κλήση συναρτήσεων και πέρασµα ορισµάτων µε αναφορά Χρήση του const µε δείκτες Σταθεροί δείκτες Bubble Sort µε δείκτες Τελεστής sizeof Εκφράσεις και αριθµητική δεικτών Σχέση δεικτών και πινάκων Πίνακες δεικτών είκτες συναρτήσεων Συναρτήσεις διαχείρισης συµβολοσειρών Ασκήσεις

3 3 Εισαγωγή είκτες (Pointers) Ισχυρό χαρακτηριστικό, αλλά δύσκολη η διαχείρισή τους Υλοποιούνέναείδος pass-by-reference Στενή σχέση µε τους πίνακες και τα strings

4 ήλωση και αρχικοποίηση µεταβλητών τύπου δείκτη Μεταβλητές τύπου δείκτη Αποθηκεύουν διευθύνσεις µνήµης ως τιµές Μια κανονική µεταβλητή αποθηκεύει συγκεκριµένες τιµές (άµεσηαναφορά - direct reference) Ένας δείκτης αποθηκεύει τη διεύθυνση µιας µεταβλητής που περιέχειµιασυγκεκριµένητιµή (έµµεσηαναφορά - indirect reference) Έµµεση αναφορά (Indirection) Η αναφορά µιας τιµής µέσω ενός δείκτη ήλωση δείκτη countptr Το * στη δήλωση υποδηλώνει ότι η µεταβλητή είναι δείκτης int *myptr; Περισσότεροι δείκτες χρειάζονται και περισσότερα * int *myptr1, *myptr2; count count 7 7 4

5 ήλωση και αρχικοποίηση µεταβλητών τύπου δείκτη 5 Οι δείκτες µπορούν να χρησιµοποιηθούν µε οποιοδήποτε τύπο δεδοµένων. Αρχικοποίηση δείκτη Αρχικοποιείται στο 0 ή NULL 0 ή NULL δείχνουν στο κενό Η συµβολική σταθερά NULL ορίζεται στο αρχείο επικεφαλίδας <iostream>

6 6 Τελεστές δεικτών & (τελεστής διεύθυνσης) Επιστρέφει τη διεύθυνση µνήµης του τελεσταίου Παράδειγµα int y = 5; int *yptr; yptr = &y; // yptr gets address of y yptr points to y yptr y 5 yptr y address of y is value of yptr

7 7 Τελεστές δεικτών * (τελεστής έµµεσης αναφοράς ή αποαναφοράς) Επιστρέφει το αντικείµενο που δείχνει ο δείκτης *yptr επιστρέφει το y (αφού yptr δείχνει στο y). Ένας αποαναφοροποιηµένος δείκτης είναι ένα lvalue *yptr = 9; // assigns 9 to y * και & είναι αντίστροφοι τελεστές (αλληλοαναιρούνται)

8 1 // Fig. 5.4: fig05_04.cpp 2 // Using the & and * operators. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int main() 9 { 10 int a; // a is an integer 11 int *aptr; // aptr is a pointer to an integer a = 7; 14 aptr = &a; // aptr assigned address of a cout << "The address of a is " << &a 17 << "\nthe value of aptr is " << aptr; cout << "\n\nthe value of a is " << a 20 << "\nthe value of *aptr is " << *aptr; cout << "\n\nshowing that * and & are inverses of " 23 << "each other.\n&*aptr = " << &*aptr 24 << "\n*&aptr = " << *&aptr << endl; 25 fig05_04.cpp (1 of 2) * and & are inverses of each other 8

9 26 return 0; // indicates successful termination } // end main The address of a is 0012FED4 The value of aptr is 0012FED4 The value of a is 7 The value of *aptr is 7 Showing that * and & are inverses of each other. &*aptr = 0012FED4 *&aptr = 0012FED4 * and & are inverses; same result when both applied to aptr fig05_04.cpp (2 of 2) fig05_04.cpp output (1 of 1) 9

10 Κλήση συναρτήσεων και πέρασµα ορισµάτων µε αναφορά 10 3 τρόποι να περαστούν τα ορίσµατα σε µια συνάρτηση Pass-by-value Pass-by-reference with reference arguments Pass-by-reference with pointer arguments Με return µπορούµε να επιστρέψουµε µια µόνο τιµή από τη συνάρτηση Με τα ορίσµατα που περνούν µε αναφορά είναι δυνατή η αλλαγή των αρχικών τιµών των ορισµάτων είναι δυνατή η επιστροφή από µια συνάρτηση περισσότερων τιµών

11 Κλήση συναρτήσεων και πέρασµα ορισµάτων µε αναφορά 11 Pass-by-reference µε ορίσµατα δείκτες Περνάµε τη διεύθυνση του ορίσµατος χρησιµοποιώντας τον τελεστή διεύθυνσης & Οι πίνακες δεν χρειάζονται τον τελεστή & αφού το όνοµα του πίνακα αντιστοιχεί ήδη σε δείκτη Χρησιµοποιούµε τον τελεστή έµµεσης αναφοράς * για την προσπέλαση των τιµών των µεταβλητών εντός της συνάρτησης

12 1 // Fig. 5.6: fig05_06.cpp 2 // Cube a variable using pass-by-value. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int cubebyvalue( int ); // prototype 9 10 int main() 11 { 12 int number = 5; cout << "The original value of number is " << number; // pass number by value to cubebyvalue 17 number = cubebyvalue( number ); 18 Pass number by value; result returned by cubebyvalue 19 cout << "\nthe new value of number is " << number << endl; return 0; // indicates successful termination } // end main 24 fig05_06.cpp (1 of 2) 12

13 25 // calculate and return cube of integer argument 26 int cubebyvalue( int n ) 27 { 28 return n * n * n; // cube local variable cubebyvalue n and return receives result 29 parameter passed-by-value 30 } // end function cubebyvalue The original value of number is 5 The new value of number is 125 Cubes and returns local variable n fig05_06.cpp (2 of 2) fig05_06.cpp output (1 of 1) 13

14 1 // Fig. 5.7: fig05_07.cpp 2 // Cube a variable using pass-by-reference 3 // with a pointer argument. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 void cubebyreference( int * ); // prototype int main() 12 { 13 int number = 5; Prototype indicates parameter is pointer to int cout << "The original value of number is " << number; 16 Apply address operator & to pass address of number to cubebyreference 17 // pass address of number to cubebyreference 18 cubebyreference( &number ); cout << "\nthe new value of number is " << number << endl; return 0; // indicates successful termination } // end main 25 fig05_07.cpp (1 of 2) cubebyreference modified variable number 14

15 26 // calculate cube of *nptr; modifies variable number in main 27 void cubebyreference( int *nptr ) 28 { 29 *nptr = *nptr * *nptr * *nptr; // cube *nptr } // end function cubebyreference The original value of number is 5 The new value of number is 125 cubebyreference receives address of int variable, i.e., pointer to an int Modify and access int variable using indirection operator * fig05_07.cpp (2 of 2) fig05_07.cpp output (1 of 1) 15

16 16 const qualifier Χρήση του const µε δείκτες εν επιτρέπει την αλλαγή της τιµής της µεταβλητής Βάζουµε το const όταν η συνάρτηση δεν χρειάζεται να αλλάξει την τιµή της µεταβλητής Αρχή του ελαχίστου δικαιώµατος Μια συνάρτηση δεν χρειάζεται να αποκτά παραπάνω δικαιώµατα από αυτά που χρειάζεται για την επίτευξη της εργασίας της 4 τρόποι για να περάσουµε ένα δείκτη σε µια συνάρτηση Μεταβλητός δείκτης σε µεταβλητά δεδοµένα Μέγιστο δικαίωµα προσπέλασης Μεταβλητός δείκτης σε σταθερά δεδοµένα Σταθερός δείκτης σε µεταβλητά δεδοµένα Σταθερός δείκτης σε σταθερά δεδοµένα Ελάχιστο δικαίωµα προσπέλασης

17 1 // Fig. 5.10: fig05_10.cpp 2 // Converting lowercase letters to uppercase letters 3 // using a non-constant pointer to non-constant data. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 #include <cctype> // prototypes for islower and toupper void converttouppercase( char * ); int main() 14 { 15 char phrase[] = "characters and $32.98"; cout << "The phrase before conversion is: " << phrase; 18 converttouppercase( phrase ); 19 cout << "\nthe phrase after conversion is: " 20 << phrase << endl; return 0; // indicates successful termination } // end main 25 Parameter is nonconstant pointer to nonconstant data converttouppercase modifies variable phrase fig05_10.cpp (1 of 2) 17

18 26 // convert string to uppercase letters 27 void converttouppercase( char *sptr ) 28 { 29 while ( *sptr!= '\0' ) { // current character is not '\0' if ( islower( *sptr ) ) // if character is lowercase, 32 *sptr = toupper( *sptr ); // convert to uppercase 33 Function islower returns 34 ++sptr; // move sptr to next character in string } // end while 37 true if character is lowercase 38 } // end function converttouppercase Function toupper returns When corresponding operator uppercase ++ applied to pointer character that if original points to character array, The phrase before conversion is: characters and $32.98 The phrase after conversion is: memory lowercase; CHARACTERS address otherwise AND stored $32.98 in pointer toupper modified returns to original point to next (uppercase) element character of array. fig05_10.cpp Parameter sptr nonconstant (2 of 2) pointer to nonconstant data fig05_10.cpp output (1 of 1) 18

19 1 // Fig. 5.11: fig05_11.cpp 2 // Printing a string one character at a time using 3 // a non-constant pointer to constant data. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 void printcharacters( const char * ); int main() 12 { 13 char phrase[] = "print characters of a string"; cout << "The string is:\n"; 16 printcharacters( phrase ); 17 cout << endl; return 0; // indicates successful termination } // end main 22 Parameter is nonconstant pointer to constant data. Pass pointer phrase to function printcharacters. fig05_11.cpp (1 of 2) 19

20 23 // sptr cannot modify the character to which it points, 24 // i.e., sptr is a "read-only" pointer 25 void printcharacters( const char *sptr ) 26 { 27 for ( ; *sptr!= '\0'; sptr++ ) // no initialization 28 cout << *sptr; } // end function printcharacters The string is: print characters of a string sptr is nonconstant pointer to constant data; cannot modify character to which sptr points. Increment sptr to point to next character. fig05_11.cpp (2 of 2) fig05_11.cpp output (1 of 1) 20

21 1 // Fig. 5.12: fig05_12.cpp 2 // Attempting to modify data through a 3 // non-constant pointer to constant data. 4 5 void f( const int * ); // prototype 6 7 int main() 8 { 9 int y; f( &y ); // f attempts illegal modification return 0; // indicates successful termination } // end main // xptr cannot modify the value of the variable 18 // to which it points 19 void f( const int *xptr ) 20 { 21 *xptr = 100; // error: cannot modify a const object } // end function f Parameter is nonconstant pointer to constant data. Pass address of int variable y to attempt illegal modification. Attempt to modify const object pointed to by xptr. d:\cpphtp4_examples\ch05\fig05_12.cpp(21) : error C2166: l-value specifies const object Error produced when attempting to compile. fig05_12.cpp (1 of 1) fig05_12.cpp output (1 of 1) 21

22 22 Σταθεροί δείκτες const pointers Πάντα δείχνουν στην ίδια θέση µνήµης Η περίπτωση του ονόµατος ενός πίνακα Πρέπει να αρχικοποιείται όταν δηλώνεται

23 1 // Fig. 5.13: fig05_13.cpp 2 // Attempting to modify a constant pointer to 3 // non-constant data. 4 5 int main() 6 { 7 int x, y; 8 9 // ptr is a constant pointer to an integer that can 10 // be modified through ptr, but ptr always points to the 11 // same memory location. 12 int * const ptr = &x; *ptr = 7; // allowed: *ptr is not const 15 ptr = &y; // error: ptr is const; cannot assign new address return 0; // indicates successful termination } // end main d:\cpphtp4_examples\ch05\fig05_13.cpp(15) : error C2166: l-value specifies const object ptr is constant pointer to integer. Can modify x (pointed to by ptr) Cannot since modify x not ptr constant. to point to new address since ptr is constant. Line 15 generates compiler error by attempting to assign new address to constant pointer. fig05_13.cpp (1 of 1) fig05_13.cpp output (1 of 1) 23

24 1 // Fig. 5.14: fig05_14.cpp 2 // Attempting to modify a constant pointer to constant data. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int main() 9 { 10 int x = 5, y; // ptr is a constant pointer to a constant ptr is constant integer. pointer to 13 // ptr always points to the same location; integer the constant. integer 14 // at that location cannot be modified. 15 const int *const ptr = &x; 16 Cannot modify x (pointed to 17 cout << *ptr << endl; Cannot by ptr) modify since *ptr to declared point 18 to constant. new address since ptr is 19 *ptr = 7; // error: *ptr constant. is const; cannot assign new value 20 ptr = &y; // error: ptr is const; cannot assign new address return 0; // indicates successful termination } // end main fig05_14.cpp (1 of 1) 24

25 d:\cpphtp4_examples\ch05\fig05_14.cpp(19) : error C2166: l-value specifies const object d:\cpphtp4_examples\ch05\fig05_14.cpp(20) : error C2166: l-value specifies const object Line 19 generates compiler fig05_14.cpp error by attempting to modify output (1 of 1) Line constant 20 generates object. compiler error by attempting to assign new address to constant pointer. 25

26 26 Bubble Sort µε δείκτες Υλοποίηση bubblesort µε δείκτες Συνάρτηση swap που της δίνεται προσπέλαση σε στοιχεία του πίνακα Μεµονωµένα στοιχεία του πίνακα: scalars Περνούν ως ορίσµατα by value by default Για να περαστούν by reference χρησιµοποιούµε τον τελεστή διεύθυνσης &

27 1 // Fig. 5.15: fig05_15.cpp 2 // This program puts values into an array, sorts the values into 3 // ascending order, and prints the resulting array. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 #include <iomanip> using std::setw; void bubblesort( int *, const int ); // prototype 14 void swap( int * const, int * const ); // prototype int main() 17 { 18 const int arraysize = 10; 19 int a[ arraysize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; cout << "Data items in original order\n"; for ( int i = 0; i < arraysize; i++ ) 24 cout << setw( 4 ) << a[ i ]; 25 fig05_15.cpp (1 of 3) 27

28 26 bubblesort( a, arraysize ); // sort the array cout << "\ndata items in ascending order\n"; for ( int j = 0; j < arraysize; j++ ) 31 cout << setw( 4 ) << a[ j ]; cout << endl; return 0; // indicates successful termination } // end main // sort an array of integers using bubble to sort indicate algorithm function 40 void bubblesort( int *array, const int size ) 41 { 42 // loop to control passes 43 for ( int pass = 0; pass < size - 1; pass++ ) // loop to control comparisons during each pass 46 for ( int k = 0; k < size - 1; k++ ) // swap adjacent elements if they are out of order 49 if ( array[ k ] > array[ k + 1 ] ) 50 swap( &array[ k ], &array[ k + 1 ] ); Declare as int Receives *array size of array as (rather than argument; int array[]) declared const to ensure size not modified. bubblesort receives single-subscripted array. fig05_15.cpp (2 of 3) 28

29 51 52 } // end function bubblesort // swap values at memory locations to which 55 // element1ptr and element2ptr point 56 void swap( int * const element1ptr, int * const element2ptr ) 57 { 58 int hold = *element1ptr; 59 *element1ptr = *element2ptr; 60 *element2ptr = hold; } // end function swap fig05_15.cpp (3 of 3) fig05_15.cpp output (1 of 1) Pass arguments by reference, allowing function to swap values at memory locations. 29 Data items in original order Data items in ascending order

30 Τελεστής sizeof 30 sizeof Μοναδιαίος τελεστής που επιστρέφει το µέγεθος του τελεσταίου σε bytes Γιαπίνακες, το sizeofεπιστρέφει ( size of 1 element ) * ( number of elements ) If sizeof( int ) = 4, then int myarray[10]; cout << sizeof(myarray); θα τυπώσει 40 Το sizeof µπορεί να χρησιµοποιηθεί µε Variable names Type names Constant values

31 1 // Fig. 5.17: fig05_17.cpp 2 // Demonstrating the sizeof operator. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int main() 9 { 10 char c; 11 short s; 12 int i; 13 long l; 14 float f; 15 double d; 16 long double ld; 17 int array[ 20 ]; 18 int *ptr = array; 19 fig05_17.cpp (1 of 2) 31

32 20 cout << "sizeof c = " << sizeof c 21 << "\tsizeof(char) = " << sizeof( char ) 22 << "\nsizeof s = " << sizeof s Operator sizeof can be 23 << "\tsizeof(short) = " << sizeof( short ) used on variable Operator name. sizeof fig05_17.cpp can be 24 << "\nsizeof i = " << sizeof i (2 of 2) 25 << "\tsizeof(int) = " << sizeof( int ) used on type name. 26 << "\nsizeof l = " << sizeof l 27 << "\tsizeof(long) = " << sizeof( long ) 28 << "\nsizeof f = " << sizeof f 29 << "\tsizeof(float) = " << sizeof( float ) 30 << "\nsizeof d = " << sizeof d 31 << "\tsizeof(double) = " << sizeof( double ) 32 << "\nsizeof ld = " << sizeof ld 33 << "\tsizeof(long double) = " << sizeof( long double ) 34 << "\nsizeof array = " << sizeof array 35 << "\nsizeof ptr = " << sizeof ptr 36 << endl; return 0; // indicates successful termination } // end main 32

33 sizeof c = 1 sizeof(char) = 1 sizeof s = 2 sizeof(short) = 2 sizeof i = 4 sizeof(int) = 4 sizeof l = 4 sizeof(long) = 4 sizeof f = 4 sizeof(float) = 4 sizeof d = 8 sizeof(double) = 8 sizeof ld = 8 sizeof(long double) = 8 sizeof array = 80 sizeof ptr = 4 fig05_17.cpp output (1 of 1) 33

34 Εκφράσεις και αριθµητική δεικτών 34 Αριθµητική δεικτών Αύξηση/Μείωσηδείκτη (++ or --) Πρόσθεση/αφαίρεση ενός ακεραίου προς/από έναν δείκτη ( + ή +=, -ή-=) Μπορεί να γίνει αφαίρεση µεταξύ δεικτών Η αριθµητική δεικτών είναι άνευ σηµασίας εκτός και εάν πραγµατοποιείται σε δείκτη που αναφέρεται σε πίνακα Έστω ένας πίνακας µε 5 int σε µια µηχανή που αποθηκεύει τους int σε 4 bytes vptr δείχνει το πρώτο στοιχείο v[ 0 ], που βρίσκεται στη θέση 3000 vptr = 3000 vptr += 2; θέται το vptr στη τιµή 3008 vptr δείχνει στο v[ 2 ] location v[0] v[1] v[2] v[3] v[4] pointer variable vptr

35 35 Εκφράσεις και αριθµητική δεικτών Αφαίρεση δεικτών Επιστρέφει το πλήθος των στοιχείων µεταξύ των δύο διευθύνσεων Ανάθεση δεικτών vptr2 = v[ 2 ]; vptr = v[ 0 ]; vptr2 - vptr == 2 Ένας δείκτης µπορεί να ανατεθεί σ έναν άλλο δείκτη αρκεί να είναι του ιδίου τύπου Εάν έχουν διαφορετικό τύπο τότε πρέπει να χρησιµοποιηθεί ο τελεστής cast Εξαίρεση: δείκτηςσε void (type void *) Γενερικός δείκτης, αναπαριστά οποιοδήποτε τύπο εν χρειάζεται casting για να µετατραπεί ένας δείκτης σε void pointer void pointers δεν µπορούν να αποαναφοροποιηθούν

36 36 Εκφράσεις και αριθµητική δεικτών Σύγκριση δεικτών Με τελεστές ισότητας και σχεσιακούς Η σύγκριση δεικτών είναι άνευ σηµασίας εκτός και εάν οι δείκτες δείχνουν σε στοιχεία του ίδιου πίνακα Συγκρίνονται οι διευθύνσεις που αποθηκεύονται στους δείκτες

37 37 Σχέση δεικτών και πινάκων Πίνακες και δείκτες συνδέονται στενά Το όνοµα ενός πίνακα είναι ένας σταθερός δείκτης Οι δείκτες µπορούν να πραγµατοποιήσουν την προσπέλαση των στοιχείων ενός πίνακα Προσπέλαση στοιχείων πίνακα µε δείκτες Το στοιχείο b[ n ] µπορεί να προσπελαστεί µε την έκφραση *( bptr + n ) ιεύθυνση &b[ 3 ] ίδιο µε bptr + 3 Το όνοµα ενός πίνακα µπορεί να χρησιµοποιηθεί ως δείκτης b[ 3 ]ίδιοµε *( b + 3 ) Οι δείκτες µπορούν να χρησιµοποιηθούν µε δείκτες bptr[ 3 ] ίδιο µε b[ 3 ]

38 1 // Fig. 5.20: fig05_20.cpp 2 // Using subscripting and pointer notations with arrays. 3 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 int main() 10 { 11 int b[] = { 10, 20, 30, 40 }; 12 int *bptr = b; // set bptr to point to array b // output array b using array subscript notation 15 cout << "Array b printed with:\n" 16 << "Array subscript notation\n"; for ( int i = 0; i < 4; i++ ) 19 cout << "b[" << i << "] = " << b[ i ] << '\n'; // output array b using the array name and 22 // pointer/offset notation 23 cout << "\npointer/offset notation where " 24 << "the pointer is the array name\n"; 25 Using array subscript notation. fig05_20.cpp (1 of 2) 38

39 26 for ( int offset1 = 0; offset1 < 4; offset1++ ) 27 cout << "*(b + " << offset1 << ") = " 28 << *( b + offset1 ) << '\n'; // output array b using bptr and array subscript notation 31 cout << "\npointer subscript notation\n"; for ( int j = 0; j < 4; j++ ) 34 cout << "bptr[" << j << "] = " << bptr[ j ] << '\n'; cout << "\npointer/offset notation\n"; // output array b using bptr and pointer/offset notation 39 for ( int offset2 = 0; offset2 < 4; offset2++ ) 40 cout << "*(bptr + " << offset2 << ") = " 41 << *( bptr + offset2 ) << '\n'; return 0; // indicates successful termination } // end main Using array name and pointer/offset notation. Using bptr and pointer/offset notation. fig05_20.cpp (2 of 2) Using pointer subscript notation. 39

40 Array b printed with: Array subscript notation b[0] = 10 b[1] = 20 b[2] = 30 b[3] = 40 fig05_20.cpp output (1 of 1) 40 Pointer/offset notation where the pointer is the array name *(b + 0) = 10 *(b + 1) = 20 *(b + 2) = 30 *(b + 3) = 40 Pointer subscript notation bptr[0] = 10 bptr[1] = 20 bptr[2] = 30 bptr[3] = 40 Pointer/offset notation *(bptr + 0) = 10 *(bptr + 1) = 20 *(bptr + 2) = 30 *(bptr + 3) = 40

41 1 // Fig. 5.21: fig05_21.cpp 2 // Copying a string using array notation 3 // and pointer notation. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 void copy1( char *, const char * ); // prototype 10 void copy2( char *, const char * ); // prototype int main() 13 { 14 char string1[ 10 ]; 15 char *string2 = "Hello"; 16 char string3[ 10 ]; 17 char string4[] = "Good Bye"; copy1( string1, string2 ); 20 cout << "string1 = " << string1 << endl; copy2( string3, string4 ); 23 cout << "string3 = " << string3 << endl; return 0; // indicates successful termination fig05_21.cpp (1 of 2) 41

42 26 27 } // end main // copy s2 to s1 using array notation 30 void copy1( char *s1, const char *s2 ) 31 { 32 for ( int i = 0; ( s1[ i ] = s2[ i ] )!= '\0'; i++ ) 33 ; // do nothing in body } // end function copy // copy s2 to s1 using pointer notation 38 void copy2( char *s1, const char *s2 ) 39 { in s1. 40 for ( ; ( *s1 = *s2 )!= '\0'; s1++, s2++ ) 41 ; // do nothing in body } // end function copy2 string1 = Hello string3 = Good Bye Use array subscript notation to copy string in s2 to character array s1. Use pointer notation to copy string in s2 to character array fig05_21.cpp (2 of 2) Increment both pointers to point to next elements in corresponding arrays. fig05_21.cpp output (1 of 1) 42

43 43 Πίνακες δεικτών Οι πίνακες µπορεί να περιέχουν δείκτες Π.χ. να αποθηκεύσουν έναν πίνακα µε strings char *suit[ 4 ] = {"Hearts", "Diamonds", "Clubs", "Spades" }; Κάθε στοιχείο του suit δείχνει σε char * (a string) Ο πίνακας δεν αποθηκεύει strings, µόνο δείκτες σε strings suit[0] H e a r t s \0 suit[1] suit[2] suit[3] D i a m o n d s \0 C l u b s \0 S p a d e s \0 Οπίνακας suitέχεισταθερόµέγεθος, αλλάτα strings µπορεί να είναι οποιουδήποτε µεγέθους

44 44 είκτες σε συναρτήσεις είκτες συναρτήσεων Περιέχουν τη διεύθυνση µιας συνάρτησης Όπως το όνοµα ενός πίνακα δείχνει στο πρώτο στοιχείο του πίνακα Το όνοµα µιας συνάρτησης δείχνει στην αρχική διεύθυνση της µνήµης που αποθηκεύει τον κώδικα ορισµού της συνάρτησης Οι δείκτες συναρτήσεων µπορεί Να περάσουν σε συναρτήσεις Να επιστραφούν από συναρτήσεις Να αποθηκευθούν σε πίνακες Να ανατεθούν σε άλλους δείκτες συναρτήσεων

45 45 είκτες συναρτήσεων Κλήση συναρτήσεων µε δείκτες Έστω: bool ( *compare ) ( int, int ) Εκτέλεση της συνάρτησης είτε µε ( *compare ) ( int1, int2 ) Αποαναφορά του δείκτη σε συνάρτηση είτε µε compare( int1, int2 ) Μπορεί να προκαλέσει σύγχυση Ο χρήστης µπορεί να νοµίζει ότι compare είναι το όνοµα της συνάρτησης στο πρόγραµµα

46 1 // Fig. 5.25: fig05_25.cpp 2 // Multipurpose sorting program using function pointers. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 #include <iomanip> using std::setw; // prototypes 14 void bubble( int [], const int, bool (*)( int, int ) ); 15 void swap( int * const, int * const ); 16 bool ascending( int, int ); 17 bool descending( int, int ); int main() 20 { 21 const int arraysize = 10; 22 int order; 23 int counter; 24 int a[ arraysize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; 25 fig05_25.cpp (1 of 5) Parameter is pointer to function that receives two integer parameters and returns bool result. 46

47 26 cout << "Enter 1 to sort in ascending order,\n" 27 << "Enter 2 to sort in descending order: "; 28 cin >> order; 29 cout << "\ndata items in original order\n"; // output original array 32 for ( counter = 0; counter < arraysize; counter++ ) 33 cout << setw( 4 ) << a[ counter ]; // sort array in ascending order; pass function ascending 36 // as an argument to specify ascending sorting order 37 if ( order == 1 ) { 38 bubble( a, arraysize, ascending ); 39 cout << "\ndata items in ascending order\n"; 40 } // sort array in descending order; pass function descending 43 // as an agrument to specify descending sorting order 44 else { 45 bubble( a, arraysize, descending ); 46 cout << "\ndata items in descending order\n"; 47 } 48 fig05_25.cpp (2 of 5) 47

48 49 // output sorted array 50 for ( counter = 0; counter < arraysize; counter++ ) 51 cout << setw( 4 ) << a[ counter ]; cout << endl; return 0; // indicates successful termination } // end main // multipurpose bubble sort; parameter compare is a pointer to 60 // the comparison function that determines sorting order 61 void bubble( int work[], const int size, 62 bool (*compare)( int, int ) ) 63 { 64 // loop to control passes compare is pointer to function that receives two integer parameters and returns bool result. Parentheses necessary to indicate pointer to function 65 for ( int pass = 1; pass < size; pass++ ) // loop to control number of comparisons per pass 68 for ( int count = 0; count < size Call -passed 1; count++ function ) 69 compare; dereference 70 // if adjacent elements are pointer out of to order, execute swap function. them 71 if ( (*compare)( work[ count ], work[ count + 1 ] ) ) 72 swap( &work[ count ], &work[ count + 1 ] ); fig05_25.cpp (3 of 5) 48

49 73 74 } // end function bubble // swap values at memory locations to which 77 // element1ptr and element2ptr point 78 void swap( int * const element1ptr, int * const element2ptr ) 79 { 80 int hold = *element1ptr; 81 *element1ptr = *element2ptr; 82 *element2ptr = hold; } // end function swap // determine whether elements are out of order 87 // for an ascending order sort 88 bool ascending( int a, int b ) 89 { 90 return b < a; // swap if b is less than a } // end function ascending 93 fig05_25.cpp (4 of 5) 49

50 94 // determine whether elements are out of order 95 // for a descending order sort 96 bool descending( int a, int b ) 97 { 98 return b > a; // swap if b is greater than a } // end function descending Enter 1 to sort in ascending order, Enter 2 to sort in descending order: 1 Data items in original order Data items in ascending order fig05_25.cpp (5 of 5) fig05_25.cpp output (1 of 1) 50 Enter 1 to sort in ascending order, Enter 2 to sort in descending order: 2 Data items in original order Data items in descending order

51 51 είκτες συναρτήσεων Πίνακες µε δείκτες σε συναρτήσεις Menu-driven systems είκτες για κάθε συνάρτηση αποθηκεύονται σε πίνακα µε δείκτες σε συναρτήσεις Όλες οι συναρτήσεις πρέπει να έχουν τον ίδιο επιστρεφόµενο τύπο και τους ίδιους τύπους παραµέτρων Επιλογή µενού δείκτης σε πίνακα µε δείκτες συναρτήσεων

52 1 // Fig. 5.26: fig05_26.cpp 2 // Demonstrating an array of pointers to functions. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 // function prototypes 10 void function1( int ); 11 void function2( int ); 12 void function3( int ); int main() 15 { 16 // initialize array of 3 pointers to functions that each 17 // take an int argument and return void names are pointers. 18 void (*f[ 3 ])( int ) = { function1, function2, function3 }; int choice; cout << "Enter a number between 0 and 2, 3 to end: "; 23 cin >> choice; 24 Array initialized with names of three functions; function fig05_26.cpp (1 of 3) 52

53 25 // process user's choice 26 while ( choice >= 0 && choice < 3 ) { // invoke function at location choice in array f 29 // and pass choice as an argument 30 (*f[ choice ])( choice ); cout << "Enter a number between 0 and 2, 3 to end: "; 33 cin >> choice; 34 } Call chosen function by cout << "Program execution completed." element << in endl; array return 0; // indicates successful termination } // end main void function1( int a ) 43 { 44 cout << "You entered " << a 45 << " so function1 was called\n\n"; } // end function1 48 dereferencing corresponding fig05_26.cpp (2 of 3) 53

54 49 void function2( int b ) 50 { 51 cout << "You entered " << b 52 << " so function2 was called\n\n"; } // end function void function3( int c ) 57 { 58 cout << "You entered " << c 59 << " so function3 was called\n\n"; } // end function3 fig05_26.cpp (3 of 3) fig05_26.cpp output (1 of 1) 54 Enter a number between 0 and 2, 3 to end: 0 You entered 0 so function1 was called Enter a number between 0 and 2, 3 to end: 1 You entered 1 so function2 was called Enter a number between 0 and 2, 3 to end: 2 You entered 2 so function3 was called Enter a number between 0 and 2, 3 to end: 3 Program execution completed.

55 55 Συναρτήσεις διαχείρισης συµβολοσειρών Η βιβλιοθήκη <cstring> παρέχει συναρτήσεις για ιαχείριση δεδοµένων τύπου string Σύγκριση των strings Αναζήτηση χαρακτήρων ή άλλων strings Tokenize strings (διαχωρισµός των strings σε λογικές µοναδες)

56 56 Συναρτήσεις διαχείρισης συµβολοσειρών char *strcpy( char *s1, const char *s2 ); char *strncpy( char *s1, const char *s2, size_t n ); char *strcat( char *s1, const char *s2 ); char *strncat( char *s1, const char *s2, size_t n ); Copies the string s2 into the character array s1. The value of s1 is returned. Copies at most n characters of the string s2 into the character array s1. The value of s1 is returned. Appends the string s2 to the string s1. The first character of s2 overwrites the terminating null character of s1. The value of s1 is returned. Appends at most n characters of string s2 to string s1. The first character of s2 overwrites the terminating null character of s1. The value of s1 is returned. int strcmp( const char *s1, const char *s2 ); Compares the string s1 with the string s2. The function returns a value of zero, less than zero or greater than zero if s1 is equal to, less than or greater than s2, respectively.

57 Συναρτήσεις διαχείρισης συµβολοσειρών 57 int strncmp( const char *s1, const char *s2, size_t n ); char *strtok( char *s1, const char *s2 ); size_t strlen( const char *s ); Compares up to n characters of the string s1 with the string s2. The function returns zero, less than zero or greater than zero if s1 is equal to, less than or greater than s2, respectively. A sequence of calls to strtok breaks string s1 into tokens logical pieces such as words in a line of text delimited by characters contained in string s2. The first call contains s1 as the first argument, and subsequent calls to continue tokenizing the same string contain NULL as the first argument. A pointer to the current token is returned by each call. If there are no more tokens when the function is called, NULL is returned. Determines the length of string s. The number of characters preceding the terminating null character is returned.

58 1 // Fig. 5.28: fig05_28.cpp 2 // Using strcpy and strncpy. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <cstring> // prototypes for strcpy and strncpy 9 10 int main() 11 { 12 char x[] = "Happy Birthday to You"; 13 char y[ 25 ]; 14 char z[ 15 ]; 15 <cstring> contains prototypes for strcpy and strncpy. Copy entire string in array x into array y. 16 strcpy( y, x ); // copy contents of x into y cout << "The string in array x is: " << x 19 << "\nthe string in array y is: " << y << '\n'; // copy first 14 characters of x into character. z 22 strncpy( z, x, 14 ); // does not copy null character 23 z[ 14 ] = '\0'; // append '\0' to z's contents cout << "The string in array z is: " << z << endl; Copy first 14 characters of Append array terminating x into array null y. Note that this does not write terminating null character. fig05_28.cpp (1 of 2) 58

59 26 27 return 0; // indicates successful termination } // end main The string in array x is: Happy Birthday to You The string in array y is: Happy Birthday to You The string in array z is: Happy Birthday String to copy. Copied string using strcpy. Copied first 14 fig05_28.cpp characters using strncpy. (2 of 2) fig05_28.cpp output (1 of 1) 59

60 1 // Fig. 5.29: fig05_29.cpp 2 // Using strcat and strncat. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <cstring> // prototypes for strcat and strncat 9 10 int main() 11 { 12 char s1[ 20 ] = "Happy "; 13 char s2[] = "New Year "; 14 char s3[ 40 ] = ""; Append s2 to s cout << "s1 = " << s1 << "\ns2 = " << s2; strcat( s1, s2 ); // concatenate s2 to s cout << "\n\nafter strcat(s1, s2):\ns1 = " << s1 21 << "\ns2 = " << s2; 22 <cstring> contains prototypes for strcat and strncat. Append first 6 characters of s1 to s3. 23 // concatenate first 6 characters of s1 to s3 24 strncat( s3, s1, 6 ); // places '\0' after last character 25 fig05_29.cpp (1 of 2) 60

61 26 cout << "\n\nafter strncat(s3, s1, 6):\ns1 = " << s1 Append s1 to s3. 27 << "\ns3 = " << s3; strcat( s3, s1 ); // concatenate s1 to s3 30 cout << "\n\nafter strcat(s3, s1):\ns1 = " << s1 31 << "\ns3 = " << s3 << endl; return 0; // indicates successful termination } // end main fig05_29.cpp (2 of 2) fig05_29.cpp output (1 of 1) 61 s1 = Happy s2 = New Year After strcat(s1, s2): s1 = Happy New Year s2 = New Year After strncat(s3, s1, 6): s1 = Happy New Year s3 = Happy After strcat(s3, s1): s1 = Happy New Year s3 = Happy Happy New Year

62 1 // Fig. 5.30: fig05_30.cpp 2 // Using strcmp and strncmp. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <iomanip> 9 10 using std::setw; 11 <cstring> contains prototypes for strcmp and strncmp. 12 #include <cstring> // prototypes for strcmp and strncmp int main() 15 { 16 char *s1 = "Happy New Year"; 17 char *s2 = "Happy New Year"; 18 char *s3 = "Happy Holidays"; cout << "s1 = " << s1 << "\ns2 = " << s2 21 << "\ns3 = " << s3 << "\n\nstrcmp(s1, s2) = " 22 << setw( 2 ) << strcmp( s1, s2 ) 23 << "\nstrcmp(s1, s3) = " << setw( 2 ) 24 << strcmp( s1, s3 ) << "\nstrcmp(s3, s1) = " 25 << setw( 2 ) << strcmp( s3, s1 ); Compare s1 and s3. Compare s1 and s2. Compare s3 and s1. fig05_30.cpp (1 of 2) 62

63 Compare up to 6 characters of Compare up to 7 characters of cout << "\n\nstrncmp(s1, s3, 6) = " << s1 setw( and 2 s3. ) 28 << strncmp( s1, s3, 6 ) << "\nstrncmp(s1, s1 and s3. s3, 7) = " 29 << setw( 2 ) << strncmp( s1, s3, 7 ) 30 << "\nstrncmp(s3, s1, 7) = " s3 and s1. 31 << setw( 2 ) << strncmp( s3, s1, 7 ) << endl; return 0; // indicates successful termination } // end main Compare up to 7 characters of fig05_30.cpp (2 of 2) fig05_30.cpp output (1 of 1) 63 s1 = Happy New Year s2 = Happy New Year s3 = Happy Holidays strcmp(s1, s2) = 0 strcmp(s1, s3) = 1 strcmp(s3, s1) = -1 strncmp(s1, s3, 6) = 0 strncmp(s1, s3, 7) = 1 strncmp(s3, s1, 7) = -1

64 1 // Fig. 5.31: fig05_31.cpp 2 // Using strtok. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <cstring> // prototype for strtok 9 10 int main() 11 { <cstring> contains prototype for strtok. 12 char sentence[] = "This is a sentence with 7 tokens"; 13 char *tokenptr; cout << "The string to be tokenized is:\n" << sentence 16 << "\n\nthe tokens are:\n\n"; 17 tokenization. 18 // begin tokenization of sentence 19 tokenptr = strtok( sentence, " " ); 20 First call to strtok begins fig05_31.cpp (1 of 2) 64

65 21 // continue tokenizing sentence until tokenptr becomes NULL 22 while ( tokenptr!= NULL ) { 23 cout << tokenptr << '\n'; 24 tokenptr = strtok( NULL, " " ); // get next token } // end while cout << "\nafter strtok, sentence = " << sentence << endl; return 0; // indicates successful termination } // end main Subsequent calls to strtok with NULL as first argument to indicate continuation. fig05_31.cpp (2 of 2) 65

66 The string to be tokenized is: This is a sentence with 7 tokens 66 The tokens are: This is a sentence with 7 tokens fig05_31.cpp output (1 of 1) After strtok, sentence = This

67 67 Αναφορές Harvey M. Deitel, Paul J. Deitel, C++ How to Program, 4th Edition, Prentice Hall. Bjarne Stroustrup, The C++ Programming Language, Special Edition, Addison-Wesley.

68 Άσκηση-1 68 Τι κάνει το διπλανό πρόγραµµα?

69 Άσκηση-2 69 Τι κάνει το διπλανό πρόγραµµα?

70 Άσκηση-3 70 Τι κάνει το διπλανό πρόγραµµα?

71 Απάντηση-1 71 Συνενώνει τα δύο string που δίνονται στην είσοδο και τα τυπώνει

72 Απάντηση-2 72 Τυπώνει το µήκος του string

73 Απάντηση-3 73 Ελέγχει την ισότητα των δύο string εισόδου

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Προγραμματισμός Δείκτες (Pointers) Προγραμματισμός Δείκτες Τι είναι: τύπος μεταβλητών (όπως integer) Τι αποθηκεύουν: την διεύθυνση στη μνήμη άλλων μεταβλητών Τι χρειάζονται: Κυρίως, για δυναμική

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

Δείκτες (Pointers) (1/2) ΗΥ150 Προγραμματισμός

Δείκτες (Pointers) (1/2) ΗΥ150 Προγραμματισμός ΗΥ-150 Προγραμματισμός Δείκτες (Pointers) (1/2) Δείκτες Τι είναι: τύπος μεταβλητών (όπως integer) Τι αποθηκεύουν: την διεύθυνση στη μνήμη άλλων μεταβλητών Τι χρειάζονται: Κυρίως, για δυναμική διαχείριση

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

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

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

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

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found Α. Πρώτη προαπαιτούµενη Κάθε οµάδα θα πρέπει να δηµιουργήσει τον ζητούµενο παρακάτω πίνακα και α. να εµφανίσει τα στοιχεία του, β. να τυπώσει τον µέσο όρο των στοιχείων του, γ. να ταξινοµήσει τα στοιχεία

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

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

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

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

Παράδειγµα χρήσης πίνακα

Παράδειγµα χρήσης πίνακα 24 Strings Παράδειγµα χρήσης πίνακα Πίνακες χαρακτήρων Όλα τα strings τερµατίζουν µε το null χαρακτήρα ('\0') Παραδείγµατα char string1[] = "hello"; Το Null θα προστεθεί στο τέλος Η µεταβλητή string1 έχει

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

Διάλεξη 12η: Δείκτες, μέρος 2

Διάλεξη 12η: Δείκτες, μέρος 2 Διάλεξη 12η: Δείκτες, μέρος 2 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Pointers II CS100, 2016-2017

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

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

Συναρτήσεις στη C++ Οι µεταβλητές χαρακτηρίζονται από διάφορες ιδιότητες. Για ποιο διάστηµα η µεταβλητή υπάρχει στη µνήµη

Συναρτήσεις στη C++ Οι µεταβλητές χαρακτηρίζονται από διάφορες ιδιότητες. Για ποιο διάστηµα η µεταβλητή υπάρχει στη µνήµη Συναρτήσεις στη C++ 1 ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή Συστατικά προγράµµατος στη C++ Μαθηµατικές Συναρτήσεις (Math Library) Συναρτήσεις Header Files Γεννήτρια τυχαίων αριθµών Χαρακτηριστικά Μεταβλητών Storage Classes

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

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

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

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

17TimeThis.h function returns reference pointer to same object { return *this; }

17TimeThis.h function returns reference pointer to same object { return *this; } Προαπαιτούµενη Κάθε οµάδα θα πρέπει να εµπλουτίσει το ίδιο πρόγραµµα, που έκανε την προηγούµενη φορά, προσθέτοντας στην κλάση του έναν ή περισσότερους υπερφορτωµένους τελεστές (όπως , ++, +,-,+=..)

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

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1 Lab 1: C/C++ Pointers and time.h Panayiotis Charalambous 1 Send email to totis@cs.ucy.ac.cy Subject: EPL231-Registration Body: Surname Firstname ID Group A or B? Panayiotis Charalambous 2 Code Guidelines:

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

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

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

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

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

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

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

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

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

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

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

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

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

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1 Lab 1: C/C++ Pointers and time.h Panayiotis Charalambous 1 Send email to totis@cs.ucy.ac.cy Subject: EPL231-Registration Body: Surname Firstname ID Group A or B? Panayiotis Charalambous 2 Code Guidelines:

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Όλοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι του 10000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Αν κάπου κάνετε κάποιες υποθέσεις

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

Instruction Execution Times

Instruction Execution Times 1 C Execution Times InThisAppendix... Introduction DL330 Execution Times DL330P Execution Times DL340 Execution Times C-2 Execution Times Introduction Data Registers This appendix contains several tables

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

Συναρτήσεις και Πίνακες

Συναρτήσεις και Πίνακες Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή

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

ΗΥ-150. Πίνακες (Arrays)

ΗΥ-150. Πίνακες (Arrays) ΗΥ-150 Προγραµµατισµός Πίνακες (Arrays) Προγραµµατισµός Εισαγωγικά Έστω ότι θέλουµε να αποθηκεύσουµε 100 ονόµατα φοιτητών και τους βαθµούς τους. Πως θα το κάναµε αυτό µε µεταβλητές; Πως θα µπορούσαµε να

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

Διάλεξη 11η: Δείκτες, μέρος 1

Διάλεξη 11η: Δείκτες, μέρος 1 Διάλεξη 11η: Δείκτες, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Pointers I CS100, 2016-2017

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

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

Διάλεξη 9η: Πίνακες (arrays) Διάλεξη 9η: Πίνακες (arrays) Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Arrays CS100, 2016-2017 1 / 17

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006 ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/26 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι το 1 εκτός αν ορίζεται διαφορετικά στη διατύπωση

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό δομήθηκε βάση

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή.

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

Δήλωση ακέραιων μεταβλητών. ροής με την στάνταρ είσοδο

Δήλωση ακέραιων μεταβλητών. ροής με την στάνταρ είσοδο Πανεπιστήμιο Πατρών Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές Ελέγχου 1 Εισαγωγή Είσοδος/έξοδος Hello world: #include

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

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

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

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

Προγραμματισμός Επιπλέον στοιχεία της C++

Προγραμματισμός Επιπλέον στοιχεία της C++ Προγραμματισμός Επιπλέον στοιχεία της C++ Προγραμματισμός Πρόγραμμα σε Διαφορετικά Αρχεία Οργανώνουμε καλύτερα τον κώδικα Χρήσιμα σε μεγάλα προγράμματα Παράδειγμα (human tracking) linker header files pgmio.cpp

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

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

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

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

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

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

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

(C) 2010 Pearson Education, Inc. All rights reserved.

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες

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

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 }

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 } A ΜΕΡΟΣ 1 program Puppy_Dog; begin 4 end. 5 6 { Result of execution 7 (There is no output from this program ) 10 } (* Κεφάλαιο - Πρόγραµµα EX0_.pas *) 1 program Kitty_Cat; begin 4 Writeln('This program');

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

Η γλώσσα C. Δείκτες (pointers)

Η γλώσσα C. Δείκτες (pointers) Η γλώσσα C Δείκτες (pointers) Δείκτες - Pointers Δείκτης: τι είναι; Μια μεταβλητή που περιέχει τη διεύθυνση μιας άλλης μεταβλητής 1000 1028 Μεταβλητή p int c = 10; int *p; p = &c; 1028 10 Μεταβλητή c *p

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

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Εισαγωγή στην C++ 1 1 / 27 Εισαγωγή στην

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

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011 Διάρκεια Διαγωνισμού: 3 ώρες Απαντήστε όλες τις ερωτήσεις Μέγιστο Βάρος (20 Μονάδες) Δίνεται ένα σύνολο από N σφαιρίδια τα οποία δεν έχουν όλα το ίδιο βάρος μεταξύ τους και ένα κουτί που αντέχει μέχρι

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 12: Συνοπτική Παρουσίαση Ανάπτυξης Κώδικα με το Matlab Σαμαράς Νικόλαος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

Αντικειμενοστραφής Προγραμματισμός 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αντικειμενοστραφής Προγραμματισμός Ενότητα 4 : Πίνακες Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

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

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

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα είναι μικρότεροι το 1000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Διάρκεια: 3,5 ώρες Καλή

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

The Simply Typed Lambda Calculus

The Simply Typed Lambda Calculus Type Inference Instead of writing type annotations, can we use an algorithm to infer what the type annotations should be? That depends on the type system. For simple type systems the answer is yes, and

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

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

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

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

2 Composition. Invertible Mappings

2 Composition. Invertible Mappings Arkansas Tech University MATH 4033: Elementary Modern Algebra Dr. Marcel B. Finan Composition. Invertible Mappings In this section we discuss two procedures for creating new mappings from old ones, namely,

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

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

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

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

Μορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/

Μορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/ Μορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/ Συνάρτηση round() Περιγραφή Η συνάρτηση ROUND στρογγυλοποιεί έναν αριθμό στον δεδομένο

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

Μεταφραστής (Compiler)

Μεταφραστής (Compiler) Windows Καθαρισµος οθονης cls Unix clear Τελεστες ανακατευθυνσης > > >> >> < < Εντολες σε αρχεια * * (wild card) del Α rm Α ιαγραφη type Α cat Α Εµφανιση copy Α Β cp Α Β Αντιγραφη ren Α Β mv Α Β Αλλαγη

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

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

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

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

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

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

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

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

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

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

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

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: είκτες στη C++ Οι τελεστές new και delete Destructors Ορισµός τελεστών κλάσεων Ο δείκτης this ΕΠΛ 132 Αρχές Προγραµµατισµού

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη ( ιάλεξη 3) ιδάσκων: Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy

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

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays)

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays) ΗΥ-150 Προγραµµατισµός Πίνακες (Arrays) Προγραµµατισµός Εισαγωγικά Έστω ότι θέλουµε να αποθηκεύσουµε 100 ονόµατα φοιτητών και τους βαθµούς τους. Πως θα το κάναµε αυτό µε µεταβλητές; Πως θα µπορούσαµε να

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

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

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

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

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

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

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

ΗΥ-150 Προγραμμαηιζμός Δείκηες (Pointers) (1/2)

ΗΥ-150 Προγραμμαηιζμός Δείκηες (Pointers) (1/2) ΗΥ-150 Προγραμμαηιζμός Δείκηες (Pointers) (1/2) Πξνγξακκαηηζκόο Δείθηεο Τη είλαη: ηύπνο κεηαβιεηώλ (όπσο integer) Τη απνζεθεύνπλ: ηελ δηεύζπλζε ζηε κλήκε άιισλ κεηαβιεηώλ Τη ρξεηάδνληαη: Κπξίσο, γηα δπλακηθή

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

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

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

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

Χpήσιµες Βιβλιοθήκες της γλώσσας C

Χpήσιµες Βιβλιοθήκες της γλώσσας C Χpήσιµες Βιβλιοθήκες της γλώσσας C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Επεξεργασίας Συµβολοσειρών (strings) που Παρέχονται από τη Βιβλιοθήκη Συναρτήσεις Ελέγχου

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Αλφαριθμητικά (Strings) Χαρακτήρες Αναπαριστώνται από έναν δυαδικό αριθμό 8 δυαδικών ψηφίων (8 bits) (256 διαφορετικές τιμές) Η κωδικοποίησή τους έχει τυποποιηθεί με τον κώδικα ASCII Εκτός από γράμματα

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

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

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

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

Η εντολή 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 Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Προγραμματισμός Η/Υ Ενότητα 2 η : Η Γλώσσα Προγραμματισμού VB.NET (1 ο Μέρος) Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

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

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

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

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

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

Φροντιςτήριο. Linked-List

Φροντιςτήριο. Linked-List Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ

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

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5 ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 5 Διαδικασίες ΙI Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Εισαγωγή στους Η/Υ (ΗΥ134) 1 Κατανομή μνήμης Κείμενο

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

Η γλώσσα C. Δείκτες (pointers)

Η γλώσσα C. Δείκτες (pointers) Η γλώσσα C Δείκτες (pointers) Δείκτες - Pointers Δείκτης: τι είναι; Μια μεταβλητή που περιέχει τη διεύθυνση μιας άλλης μεταβλητής 1000 1028 Μεταβλητή p int c = 10; int *p; p = &c; 1028 10 Μεταβλητή c *p

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

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

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

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016 Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Dynamic types, Lambda calculus machines Apr 21 22, 2016 1 Dynamic types and contracts (a) To make sure you understand the

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

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1 Δείκτες σε συναρτήσεις Προγραμματισμός II 1 lalis@inf.uth.gr Συνάρτηση Ομάδα εντολών που γράφουμε ξεχωριστά για να υλοποιήσουμε μια συγκεκριμένη λειτουργία για καλύτερη / πιο καθαρή δόμηση του κώδικα για

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

Διάλεξη 8η: Αλφαριθμητικά (strings)

Διάλεξη 8η: Αλφαριθμητικά (strings) Διάλεξη 8η: Αλφαριθμητικά (strings) Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) strings CS100, 2016-2017

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων Εξάμηνο 7 ο Procedures and Functions Stored procedures and functions are named blocks of code that enable you to group and organize a series of SQL and PL/SQL

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

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

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

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

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

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

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

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

Αρχές Προγραμματισμού Αρχές Προγραμματισμού https://eclass.upatras.gr/courses/ee806/index.php Βασίλης Παλιουράς paliuras@ece.upatras.gr Άσκηση Να γραφεί πρόγραμμα που να αθροίζει δύο διανύσματα Ν στοιχείων σε ISO C90 χρησιμοποιώντας

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