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

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

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

Transcript

1 24 Strings Παράδειγµα χρήσης πίνακα Πίνακες χαρακτήρων Όλα τα strings τερµατίζουν µε το null χαρακτήρα ('\0') Παραδείγµατα char string1[] = "hello"; Το Null θα προστεθεί στο τέλος Η µεταβλητή string1 έχει 6 στοιχεία char string1[] = { 'h', 'e', 'l', 'l', 'o', '\0 }; Η προσπέλαση των στοιχείων γίνεται µε τον ίδιο τρόπο String1[ 0 ] is 'h' string1[ 2 ] is 'l'

2 Παράδειγµα χρήσης πίνακα 25 Είσοδος από το πληκτρολόγιο char string2[ 10 ]; cin >> string2; Αποθηκεύει την είσοδο του χρήστη στο string Μέχρι να συναντήσει τον πρώτο whitespace character Προσθέτει το null character στο τέλος Εάν το κείµενο υπερβαίνει το µέγεθος του πίνακα πιθανό runtime error Θέλουµε να το αποφύγουµε αυτό cin >> setw(10) >> string2; ιαβάζει 9 χαρακτήρες (χώρος δεσµεύεται και για το '\0') Εκτύπωση ενός string cout << string2 << endl; εν δουλεύει για άλλους τύπους δεδοµένων

3 1 // Fig. 4_12: fig04_12.cpp 2 // Treating character arrays as strings. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 int main() 10 { Two different ways to declare strings. string2 is initialized, and its size 11 char string1[ 20 ], // reserves 20 characters 12 char string2[] = "string literal"; // reserves 15 characters 13 Examples of reading strings 14 // read string from user into array from string2 the keyboard and 15 cout << "Enter the string \"hello printing there\": them "; out. 16 cin >> string1; // reads "hello" [space terminates input] // output strings 19 cout << "string1 is: " << string1 20 << "\nstring2 is: " << string2; cout << "\nstring1 with spaces between characters is:\n"; 23 determined automatically. fig04_12.cpp (1 of 2) 26

4 24 // output characters until null character is reached 25 for ( int i = 0; string1[ i ]!= '\0'; i++ ) 26 cout << string1[ i ] << ' '; cin >> string1; // reads "there" 29 cout << "\nstring1 is: " << string1 << endl; return 0; // indicates successful termination } // end main Enter the string "hello there": hello there string1 is: hello string2 is: string literal string1 with spaces between characters is: h e l l o string1 is: there Can access the characters in a string using array notation. The loop ends when the null character is found. fig04_12.cpp (2 of 2) fig04_12.cpp output (1 of 1) 27

5 28 Παράδειγµα χρήσης πίνακα Στατικοί τοπικοί πίνακες ιατηρούν τις τιµές τους µεταξύ των κλήσεων µιας συνάρτησης Οι στατικοί πίνακες αρχικοποιούνται µε µηδέν static int array[3]; Αυτόµατοι τοπικοί πίνακες ηµιουργούνται (και καταστρέφονται) µε κάθε κλήση της συνάρτησης.

6 1 // Fig. 4.13: fig04_13.cpp 2 // Static arrays are initialized to zero. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 void staticarrayinit( void ); // function prototype 9 void automaticarrayinit( void ); // function prototype int main() 12 { 13 cout << "First call to each function:\n"; 14 staticarrayinit(); 15 automaticarrayinit(); cout << "\n\nsecond call to each function:\n"; 18 staticarrayinit(); 19 automaticarrayinit(); 20 cout << endl; return 0; // indicates successful termination } // end main 25 fig04_13.cpp (1 of 3) 29

7 26 // function to demonstrate a static local array 27 void staticarrayinit( void ) 28 { Static array, initialized to zero on first function call. 29 // initializes elements to 0 first time function is called 30 static int array1[ 3 ]; cout << "\nvalues on entering staticarrayinit:\n"; // output contents of array1 35 for ( int i = 0; i < 3; i++ ) 36 cout << "array1[" << i << "] = " << array1[ i ] << " "; 37 Array data is changed; the 38 cout << "\nvalues on exiting staticarrayinit:\n"; modified values stay // modify and output contents of array1 41 for ( int j = 0; j < 3; j++ ) 42 cout << "array1[" << j << "] = " 43 << ( array1[ j ] += 5 ) << " "; } // end function staticarrayinit 46 fig04_13.cpp (2 of 3) 30

8 47 // function to demonstrate an automatic local array 48 void automaticarrayinit( void ) 49 { 50 // initializes elements each time function is called 51 int array2[ 3 ] = { 1, 2, 3 }; cout << "\n\nvalues on entering automaticarrayinit:\n"; // output contents of array2 56 for ( int i = 0; i < 3; i++ ) 57 cout << "array2[" << i << "] = " << array2[ i ] << " "; 58 Although the array is 59 cout << "\nvalues on exiting automaticarrayinit:\n"; // modify and output contents of array2 62 for ( int j = 0; j < 3; j++ ) 63 cout << "array2[" << j << "] = " 64 << ( array2[ j ] += 5 ) << " "; } // end function automaticarrayinit Automatic array, recreated with every function call. changed, it will be destroyed when the function exits and the changes will be lost. fig04_13.cpp (3 of 3) 31

9 First call to each function: Values on entering staticarrayinit: array1[0] = 0 array1[1] = 0 array1[2] = 0 Values on exiting staticarrayinit: array1[0] = 5 array1[1] = 5 array1[2] = 5 fig04_13.cpp output (1 of 1) 32 Values on entering automaticarrayinit: array2[0] = 1 array2[1] = 2 array2[2] = 3 Values on exiting automaticarrayinit: array2[0] = 6 array2[1] = 7 array2[2] = 8 Second call to each function: Values on entering staticarrayinit: array1[0] = 5 array1[1] = 5 array1[2] = 5 Values on exiting staticarrayinit: array1[0] = 10 array1[1] = 10 array1[2] = 10 Values on entering automaticarrayinit: array2[0] = 1 array2[1] = 2 array2[2] = 3 Values on exiting automaticarrayinit: array2[0] = 6 array2[1] = 7 array2[2] = 8

10 33 Πέρασµα πίνακα σε συνάρτηση Περνάµε το όνοµα του πίνακα και προαιρετικά το µέγεθος του πίνακα Παράδειγµα int myarray[ 24 ]; myfunction( myarray, 24 ); Τοµέγεθοςτουπίνακαείναικαλήπρακτικήναπερνάως όρισµα γιατί µας επιτρέπει να έχουµε loops προσπέλασης όλων των στοιχείων εντός της συνάρτησης

11 34 Πέρασµα πίνακα σε συνάρτηση Το πέρασµα του πίνακα γίνεται µε αναφορά (byreference) Η συνάρτηση µπορεί να αλλάξει τις τιµές των στοιχείων του αρχικού πίνακα Το όνοµα του πίνακα αντιστοιχεί στη διεύθυνση του πρώτου στοιχείου του πίνακα Η συνάρτηση γνωρίζει που αποθηκεύεται ο πίνακας στη µνήµη Μπορεί να αλλάξει τις τιµές στις θέσεις µνήµης του πίνακα Το πέρασµα µεµονωµένων στοιχείων του πίνακα γίνεται µε τιµή (by-value) Όπως συµβαίνει και µε τις κανονικές µεταβλητές square( myarray[3] );

12 35 Πέρασµα πίνακα σε συνάρτηση Συναρτήσεις και πίνακες Πρωτότυπο συνάρτησης void modifyarray( int b[], int arraysize ); void modifyarray( int [], int ); Τα ονόµατα των παραµέτρων είναι προαιρετικά στο πρωτότυπο Τα παραπάνω πρωτότυπα είναι ισοδύναµα εν χρειάζεται το µέγεθος του πίνακα Αν προσδιορισθεί αγνοείται από τον compiler Εάν δηλώσουµε παράµετρο που είναι πίνακας ως const εν µπορεί να αλλάξει µέσα στη συνάρτηση (compiler error εάν επιχειρηθεί αλλαγή) void donotmodify( const int [] );

13 1 // Fig. 4.14: fig04_14.cpp 2 // Passing arrays and individual array elements to functions. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <iomanip> 9 10 using std::setw; 11 Syntax for accepting an array in parameter list. 12 void modifyarray( int [], int ); // appears strange 13 void modifyelement( int ); int main() 16 { 17 const int arraysize = 5; // size of array a 18 int a[ arraysize ] = { 0, 1, 2, 3, 4 }; // initialize a cout << "Effects of passing entire array by reference:" 21 << "\n\nthe values of the original array are:\n"; // output original array 24 for ( int i = 0; i < arraysize; i++ ) 25 cout << setw( 3 ) << a[ i ]; fig04_14.cpp (1 of 3) 36

14 26 27 cout << endl; 28 Pass array name (a) and size to function. Arrays are passed-by-reference. 29 // pass array a to modifyarray by reference 30 modifyarray( a, arraysize ); cout << "The values of the modified array are:\n"; // output modified array 35 for ( int j = 0; j < arraysize; j++ ) 36 cout << setw( 3 ) << a[ j ]; // output value of a[ 3 ] 39 cout << "\n\n\n" 40 << "Effects of passing array element by value:" 41 << "\n\nthe value of a[3] is " << a[ 3 ] << '\n'; // pass array element a[ 3 ] by value modified. 44 modifyelement( a[ 3 ] ); // output value of a[ 3 ] 47 cout << "The value of a[3] is " << a[ 3 ] << endl; return 0; // indicates successful termination } // end main Pass a single array element by value; the original cannot be fig04_14.cpp (2 of 3) 37

15 52 53 // in function modifyarray, "b" points to 54 // the original array "a" in memory 55 void modifyarray( int b[], int sizeofarray ) 56 { 57 // multiply each array element by 2 58 for ( int k = 0; k < sizeofarray; k++ ) 59 b[ k ] *= 2; } // end function modifyarray // in function modifyelement, "e" is a local copy of 64 // array element a[ 3 ] passed from main 65 void modifyelement( int e ) 66 { 67 // multiply parameter by 2 68 cout << "Value in modifyelement is " 69 << ( e *= 2 ) << endl; } // end function modifyelement Although named b, the array points to the original array a. It can modify a s data. fig04_14.cpp (3 of 3) Individual array elements are passed by value, and the originals cannot be changed. 38

16 Effects of passing entire array by reference: The values of the original array are: The values of the modified array are: fig04_14.cpp output (1 of 1) 39 Effects of passing array element by value: The value of a[3] is 6 Value in modifyelement is 12 The value of a[3] is 6

17 1 // Fig. 4.15: fig04_15.cpp 2 // Demonstrating the const type qualifier. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 Array parameter declared as const. Array cannot be modified, even though it is passed by reference. 8 void trytomodifyarray( const int [] ); // function prototype 9 10 int main() 11 { 12 int a[] = { 10, 20, 30 }; trytomodifyarray( a ); cout << a[ 0 ] << ' ' << a[ 1 ] << ' ' << a[ 2 ] << '\n'; return 0; // indicates successful termination } // end main 21 fig04_15.cpp (1 of 2) 40

18 22 // In function trytomodifyarray, "b" cannot be used 23 // to modify the original array "a" in main. 24 void trytomodifyarray( const int b[] ) 25 { 26 b[ 0 ] /= 2; // error 27 b[ 1 ] /= 2; // error 28 b[ 2 ] /= 2; // error } // end function trytomodifyarray fig04_15.cpp (2 of 2) fig04_15.cpp output (1 of 1) 41 d:\cpphtp4_examples\ch04\fig04_15.cpp(26) : error C2166: l-value specifies const object d:\cpphtp4_examples\ch04\fig04_15.cpp(27) : error C2166: l-value specifies const object d:\cpphtp4_examples\ch04\fig04_15.cpp(28) : error C2166: l-value specifies const object

19 42 Ταξινόµηση δεδοµένων Ταξινόµηση πίνακα Συχνή απαίτηση σε προβλήµατα ανάπτυξης λογισµικού Ταξινόµηση Φυσαλίδας (Bubble sort) Χρειάζεται πολλά περάσµατα του πίνακα ιαδοχικά ζευγάρια του πίνακα συγκρίνονται µεταξύ τους Εάν τα στοιχεία του ζευγαριού είναι σε αύξουσα σειρά, καµιά αλλαγή Εάν τα στοιχεία του ζευγαριού είναι σε φθίνουσα σειρά, τα στοιχεία αλλάζουν θέση Επαναλαµβάνουµε τα παραπάνω βήµατα για κάθε στοιχείο του πίνακα

20 43 Παράδειγµα: Ταξινόµηση πίνακα Προχωρούµε από αριστερά προς τα δεξιά, και αλλάζουµε τη σειρά των στοιχείων του ζευγαριού όταν χρειάζεται Ένα πέρασµα για κάθε στοιχείο του πίνακα Αρχικά: Pass 1: (elements exchanged) Pass 2: Pass 3: (no changes needed) Pass 4: Pass 5: Οι µικρές τιµές «ρέουν» προς την κορυφή του πίνακα (όπως το 2 σε αυτό το παράδειγµα)

21 44 Ταξινόµηση πίνακα Ανταλλαγή µεταβλητών Λάθος int x = 3, y = 4; y = x; x = y; Ανταλλαγή µεταβλητών Σωστό int x = 3, y = 4, temp = 0; temp = x; // temp gets 3 x = y; // x gets 4 y = temp; // y gets 3

22 1 // Fig. 4.16: fig04_16.cpp 2 // This program sorts an array's values into ascending order. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <iomanip> 9 10 using std::setw; int main() 13 { 14 const int arraysize = 10; // size of array a 15 int a[ arraysize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; 16 int hold; // temporary location used to swap array elements cout << "Data items in original order\n"; // output original array 21 for ( int i = 0; i < arraysize; i++ ) 22 cout << setw( 4 ) << a[ i ]; 23 fig04_16.cpp (1 of 3) 45

23 24 // bubble sort 25 // loop to control number of passes 26 for ( int pass = 0; pass < arraysize; pass++ ) // loop to control number of comparisons per pass 29 for ( int j = 0; j < arraysize - 1; j++ ) // compare side-by-side elements and swap them if 32 // first element is greater than second element 33 if ( a[ j ] > a[ j + 1 ] ) { 34 hold = a[ j ]; 35 a[ j ] = a[ j + 1 ]; 36 a[ j + 1 ] = hold; } // end if 39 Do a pass for each element in the array. fig04_16.cpp (2 of 3) If the element on the left (index j) is larger than the element on the right (index j + 1), then we swap them. Remember the need of a temp variable. 46

24 40 cout << "\ndata items in ascending order\n"; // output sorted array 43 for ( int k = 0; k < arraysize; k++ ) 44 cout << setw( 4 ) << a[ k ]; cout << endl; return 0; // indicates successful termination } // end main fig04_16.cpp (3 of 3) fig04_16.cpp output (1 of 1) 47 Data items in original order Data items in ascending order

25 48 Αναζήτηση πίνακα: Γραµµική Αναζήτηση Αναζήτηση µιας τιµής-κλειδί σ έναν πίνακα Γραµµική αναζήτηση Συγκρίνουµε κάθε στοιχείο του πίνακα µε το κλειδί Σαρώνουµε τον πίνακα από την αρχή µέχρι το τέλος Βολικό για µικρούς και µη-ταξινοµηµένους πίνακες Μη-αποδοτικό Εάν το κλειδί δεν υπάρχει εξετάζεται κάθε στοιχείο του πίνακα

26 Αναζήτηση πίνακα: υαδική Αναζήτηση 49 υαδική αναζήτηση Μπορεί να εφαρµοστεί σε ταξινοµηµένους πίνακες Συγκρίνουµε το µεσαίο στοιχείο (middle) µε το κλειδί (key) If key == middle, τοκλειδίβρέθηκε If key < middle Repeat search on first half of array If key > middle Repeat search on last half Γρήγορη αναζήτηση ΤοπολύΝβήµατα, όπου 2 > # of elements Για 30 στοιχεία θέλουµε το πολύ 5 βήµατα 5 2 > 30 N

27 1 // Fig. 4.19: fig04_19.cpp 2 // Linear search of an array. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 Takes array, search key, and array size. 9 int linearsearch( const int [], int, int ); // prototype int main() 12 { 13 const int arraysize = 100; // size of array a 14 int a[ arraysize ]; // create array a 15 int searchkey; // value to locate in a for ( int i = 0; i < arraysize; i++ ) // create some data 18 a[ i ] = 2 * i; cout << "Enter integer search key: "; 21 cin >> searchkey; // attempt to locate searchkey in array a 24 int element = linearsearch( a, searchkey, arraysize ); 25 fig04_19.cpp (1 of 2) 50

28 26 // display results 27 if ( element!= -1 ) 28 cout << "Found value in element " << element << endl; 29 else 30 cout << "Value not found" << endl; return 0; // indicates successful termination } // end main // compare key to every element of array until location is 37 // found or until end of array is reached; return subscript of 38 // element if key or -1 if key not found 39 int linearsearch( const int array[], int key, int sizeofarray ) 40 { 41 for ( int j = 0; j < sizeofarray; j++ ) if ( array[ j ] == key ) // if found, 44 return j; // return location of key return -1; // key not found } // end function linearsearch fig04_19.cpp (2 of 2) 51

29 Enter integer search key: 36 Found value in element Enter integer search key: 37 Value not found fig04_19.cpp output (1 of 1)

30 1 // Fig. 4.20: fig04_20.cpp 2 // Binary search of an array. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 #include <iomanip> using std::setw; // function prototypes 14 int binarysearch( const int [], int, int, int, int ); 15 void printheader( int ); 16 void printrow( const int [], int, int, int, int ); int main() 19 { 20 const int arraysize = 15; // size of array a 21 int a[ arraysize ]; // create array a 22 int key; // value to locate in a for ( int i = 0; i < arraysize; i++ ) // create some data 25 a[ i ] = 2 * i; 26 fig04_20.cpp (1 of 6) 53

31 27 cout << "Enter a number between 0 and 28: "; 28 cin >> key; printheader( arraysize ); // search for key in array a 33 int result = 34 binarysearch( a, key, 0, arraysize - 1, arraysize ); // display results 37 if ( result!= -1 ) 38 cout << '\n' << key << " found in array element " 39 << result << endl; 40 else 41 cout << '\n' << key << " not found" << endl; return 0; // indicates successful termination } // end main 46 fig04_20.cpp (2 of 6) 54

32 47 // function to perform binary search of an array 48 int binarysearch( const int b[], int searchkey, int low, 49 int high, int size ) 50 { 51 int middle; // loop until low subscript is greater than high subscript 54 while ( low <= high ) { // determine middle element of subarray being searched 57 middle = ( low + high ) / 2; // display subarray used in this loop iteration 60 printrow( b, low, middle, high, size ); 61 Determine middle element fig04_20.cpp (3 of 6) 55

33 62 // if searchkey matches middle element, return middle 63 if ( searchkey == b[ middle ] ) // match 64 return middle; else // if searchkey less than middle element, 69 // set new high element 70 if ( searchkey < b[ middle ] ) 71 high = middle - 1; // search low end of array // if searchkey greater than middle element, 74 // set new low element 75 else Use the rule of binary search: If key equals middle, match If less, search low end If greater, search high end Loop sets low, middle and high dynamically. If searching the high end, the new low is the element above 76 low = middle + 1; // search high end of array 77 } the middle return -1; // searchkey not found } // end function binarysearch fig04_20.cpp (4 of 6) 56

34 82 83 // print header for output 84 void printheader( int size ) 85 { 86 cout << "\nsubscripts:\n"; // output column heads 89 for ( int j = 0; j < size; j++ ) 90 cout << setw( 3 ) << j << ' '; cout << '\n'; // start new line of output // output line of - characters 95 for ( int k = 1; k <= 4 * size; k++ ) 96 cout << '-'; cout << endl; // start new line of output } // end function printheader 101 fig04_20.cpp (5 of 6) 57

35 102 // print one row of output showing the current 103 // part of the array being processed 104 void printrow( const int b[], int low, int mid, 105 int high, int size ) 106 { 107 // loop through entire array 108 for ( int m = 0; m < size; m++ ) // display spaces if outside current subarray range 111 if ( m < low m > high ) 112 cout << " "; // display middle element marked with a * 115 else if ( m == mid ) // mark middle value 118 cout << setw( 3 ) << b[ m ] << '*'; // display other elements in subarray 121 else 122 cout << setw( 3 ) << b[ m ] << ' '; cout << endl; // start new line of output } // end function printrow fig04_20.cpp (6 of 6) 58

36 Enter a number between 0 and 28: 6 Subscripts: * * fig04_20.cpp output (1 of 2) 59 6 found in array element 3 Enter a number between 0 and 28: 25 Subscripts: * * * 28 24* 25 not found

37 Enter a number between 0 and 28: 8 Subscripts: * * * 12 8* fig04_20.cpp output (2 of 2) 60 8 found in array element 4

38 Αναζήτηση πίνακα: υαδική Αναζήτηση 61 Χρήση αναδροµικής συνάρτησης για την υλοποίηση της δυαδικής αναζήτησης

39 47 // Recursive function to perform binary search of an array 48 int rbinarysearch( const int b[], int searchkey, int low, 49 int high, int size ) 50 { 51 int middle; // search until low subscript is greater than high subscript Determine middle element 54 if ( low <= high ) { // determine middle element of subarray being searched 57 middle = ( low + high ) / 2; // display subarray used in this iteration 60 printrow( b, low, middle, high, size ); 61 62

40 62 // if searchkey matches middle element, return middle 63 if ( searchkey == b[ middle ] ) // match 64 return middle; else // if searchkey less than middle element, 69 // search low end of array 70 if ( searchkey < b[ middle ] ) If greater, search high end 71 return rbinarysearch(b, searchkey, low, middle 1, size); 72 Recursive step sets low, 73 // if searchkey greater than middle element, 74 // search high end of array 75 else return rbinarysearch(b, searchkey, middle+1, high, size); 77 } return -1; // searchkey not found } // end function rbinarysearch Use the rule of binary search: If key equals middle, match If less, search low end middle and high dynamically. If searching the high end, the new low is the element above the middle. 63

41 Πολυδιάστατοι πίνακες 64 ύο διαστάσεις a[ i ][ j ] Πίνακες µε γραµµές και στήλες Πρώτα αναφέρουµε τη γραµµή και µετά τη στήλη Array of arrays a[0] είναι ένας πίνακας 4 στοιχείων a[0][0] είναι το πρώτο στοιχείο αυτού του πίνακα Row 0 Row 1 Row 2 Column 0 Column 1 Column 2 Column 3 a[ 0 ][ 0 ] a[ 1 ][ 0 ] a[ 2 ][ 0 ] a[ 0 ][ 1 ] a[ 1 ][ 1 ] a[ 2 ][ 1 ] a[ 0 ][ 2 ] a[ 1 ][ 2 ] a[ 2 ][ 2 ] a[ 0 ][ 3 ] a[ 1 ][ 3 ] a[ 2 ][ 3 ] Column subscript Array name Row subscript

42 Πολυδιάστατοι πίνακες 65 Αρχικοποίηση Default τιµή 0 Η λίστα αρχικοποιεί κατά γραµµές int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; Row 0 Row int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };

43 66 Πολυδιάστατοι πίνακες Προσπέλαση στοιχείου cout << b[ 0 ][ 1 ]; Outputs 0 Η παρακάτω αναφορά είναι λανθασµένη cout << b[ 0, 1 ]; Syntax error Πρωτότυπα συναρτήσεων Πρέπει να προσδιορίζονται τα µεγέθη των δεικτών Ο πρώτος δείκτης δεν είναι απαραίτητος, όπως και στους µονοδιάστατους πίνακες void printarray( int [][ 3 ] );

44 1 // Fig. 4.22: fig04_22.cpp 2 // Initializing multidimensional arrays. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 void printarray( int [][ 3 ] ); 9 10 int main() 11 { Note the format of the prototype. 12 int array1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } }; 13 int array2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 }; 14 int array3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } }; cout << "Values in array1 by row are:" << endl; 17 printarray( array1 ); cout << "Values in array2 by row are:" << endl; 20 printarray( array2 ); cout << "Values in array3 by row are:" << endl; 23 printarray( array3 ); return 0; // indicates successful termination } // end main Note the various initialization styles. The elements in array2 are assigned to the first row and then the second. fig04_22.cpp (1 of 2) 67

45 28 29 // function to output array with two rows and three columns 30 void printarray( int a[][ 3 ] ) 31 { For loops are often used to iterate through arrays. Nested loops are helpful with multiple-subscripted arrays. 32 for ( int i = 0; i < 2; i++ ) { // for each row for ( int j = 0; j < 3; j++ ) // output column values 35 cout << a[ i ][ j ] << ' '; cout << endl; // start new line of output } // end outer for structure } // end function printarray fig04_22.cpp (2 of 2) fig04_22.cpp output (1 of 1) 68 Values in array1 by row are: Values in array2 by row are: Values in array3 by row are:

46 69 Παράδειγµα χρήσης πολυδιάστατου πίνακα Ένα πρόγραµµα για την αποθήκευση της βαθµολογίας φοιτητών σε διάφορα µαθήµατα και την επεξεργασία των στοιχείων για την εξαγωγή απλών στατιστικών Χρησιµοποιείται ένας δυσδιάστατος πίνακας Οι γραµµές αναπαριστούν φοιτητές Quiz1 Οι στήλες αναπαριστούν βαθµούς Student Quiz2 Student

47 1 // Fig. 4.23: fig04_23.cpp 2 // Double-subscripted array example. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 using std::fixed; 8 using std::left; 9 10 #include <iomanip> using std::setw; 13 using std::setprecision; const int students = 3; // number of students 16 const int exams = 4; // number of exams // function prototypes 19 int minimum( int [][ exams ], int, int ); 20 int maximum( int [][ exams ], int, int ); 21 double average( int [], int ); 22 void printarray( int [][ exams ], int, int ); 23 fig04_23.cpp (1 of 6) 70

48 24 int main() 25 { 26 // initialize student grades for three students (rows) 27 int studentgrades[ students ][ exams ] = 28 { { 77, 68, 86, 73 }, 29 { 96, 87, 89, 78 }, 30 { 70, 90, 86, 81 } }; // output array studentgrades 33 cout << "The array is:\n"; 34 printarray( studentgrades, students, exams ); // determine smallest and largest grade values 37 cout << "\n\nlowest grade: " 38 << minimum( studentgrades, students, exams ) 39 << "\nhighest grade: " 40 << maximum( studentgrades, students, exams ) << '\n'; cout << fixed << setprecision( 2 ); 43 fig04_23.cpp (2 of 6) 71

49 44 // calculate average grade for each student 45 for ( int person = 0; person < students; person++ ) 46 cout << "The average grade for student " << person 47 << " is " 48 << average( studentgrades[ person ], exams ) 49 << endl; return 0; // indicates successful termination } // end main // find minimum grade Determines the average for one student. We pass the array/row containing the student s grades. Note that studentgrades[0] is itself an array. 56 int minimum( int grades[][ exams ], int pupils, int tests ) 57 { 58 int lowgrade = 100; // initialize to highest possible grade for ( int i = 0; i < pupils; i++ ) for ( int j = 0; j < tests; j++ ) if ( grades[ i ][ j ] < lowgrade ) 65 lowgrade = grades[ i ][ j ]; return lowgrade; } // end function minimum fig04_23.cpp (3 of 6) 72

50 70 71 // find maximum grade 72 int maximum( int grades[][ exams ], int pupils, int tests ) 73 { 74 int highgrade = 0; // initialize to lowest possible grade for ( int i = 0; i < pupils; i++ ) for ( int j = 0; j < tests; j++ ) if ( grades[ i ][ j ] > highgrade ) 81 highgrade = grades[ i ][ j ]; return highgrade; } // end function maximum 86 fig04_23.cpp (4 of 6) 73

51 87 // determine average grade for particular student 88 double average( int setofgrades[], int tests ) 89 { 90 int total = 0; // total all grades for one student 93 for ( int i = 0; i < tests; i++ ) 94 total += setofgrades[ i ]; return static_cast< double >( total ) / tests; // average } // end function maximum fig04_23.cpp (5 of 6) 74

52 // Print the array 101 void printarray( int grades[][ exams ], int pupils, int tests ) 102 { 103 // set left justification and output column heads 104 cout << left << " [0] [1] [2] [3]"; // output grades in tabular format 107 for ( int i = 0; i < pupils; i++ ) { // output label for row 110 cout << "\nstudentgrades[" << i << "] "; // output one grades for one student 113 for ( int j = 0; j < tests; j++ ) 114 cout << setw( 5 ) << grades[ i ][ j ]; } // end outer for } // end function printarray fig04_23.cpp (6 of 6) 75

53 The array is: [0] [1] [2] [3] studentgrades[0] studentgrades[1] studentgrades[2] Lowest grade: 68 Highest grade: 96 The average grade for student 0 is The average grade for student 1 is The average grade for student 2 is fig04_23.cpp output (1 of 1) 76

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

55 78 Άσκηση-1 Τι κάνει το παρακάτω πρόγραµµα?

56 79 Άσκηση-2 Τι κάνει το παρακάτω πρόγραµµα?

Προαπαιτούμενες Ασκήσεις 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 Α. Πρώτη προαπαιτούµενη Κάθε οµάδα θα πρέπει να δηµιουργήσει τον ζητούµενο παρακάτω πίνακα και α. να εµφανίσει τα στοιχεία του, β. να τυπώσει τον µέσο όρο των στοιχείων του, γ. να ταξινοµήσει τα στοιχεία

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

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

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

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

Ταξινόµηση και Αναζήτηση

Ταξινόµηση και Αναζήτηση ΗΥ-150 Προγραµµατισµός Ταξινόµηση και Αναζήτηση ΗΥ150 Προγραµµατισµός To πρόβληµα της Αναζήτησης οθέντος δεδοµένων, λ.χ. σε Πίνακα (P) Ψάχνω να βρω κάποιο συγκεκριµένο στοιχείο (key) Αν ο πίνακας δεν είναι

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Ταξινόμηση και Αναζήτηση To πρόβλημα της Αναζήτησης Δοθέντος δεδομένων, λ.χ. σε Πίνακα (P) Ψάχνω να βρω κάποιο συγκεκριμένο στοιχείο (key) Αν ο πίνακας δεν είναι ταξινομημένος Γραμμική Αναζήτηση

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

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

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

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

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

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

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

ΗΥ-150. Ταξινόµηση και Αναζήτηση

ΗΥ-150. Ταξινόµηση και Αναζήτηση ΗΥ-150 Ταξινόµηση και Αναζήτηση To πρόβληµα της Αναζήτησης οθέντος δεδοµένων, λ.χ. σε Πίνακα (P) Ψάχνω να βρω κάποιο συγκεκριµένο στοιχείο (key) Αν ο πίνακας δεν είναι ταξινοµηµένος Γραµµική Αναζήτηση

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

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

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

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

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

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

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

Διάλεξη 10η: Πολυδιάστατοι Πίνακες

Διάλεξη 10η: Πολυδιάστατοι Πίνακες Διάλεξη 10η: Πολυδιάστατοι Πίνακες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) 2D Arrays CS100, 2014-2015

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

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

Υπερφόρτωση τελεστών (operator( Υπερφόρτωση τελεστών (operator( overloading) Η υπερφόρτωση τελεστών είναι ένα από τα πιο ενδιαφέροντα χαρακτηριστικά του αντικειμενοστραφούς προγραμματισμού. Αναφέρεται στην πρόσθετη χρήση των συνηθισμένων

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 27/3/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Πίνακες στη Java Εισαγωγή Πίνακες Δομές δεδομένων

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

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

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

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

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

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

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

Πίνακες στη Java. Αντικειμενοστρεφής Προγραμματισμός 4/4/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Πίνακες στη Java. Αντικειμενοστρεφής Προγραμματισμός 4/4/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια. Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 4/4/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Πίνακες στη Java 1 Εισαγωγή Πίνακες Δομές δεδομένων

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

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

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

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

Σημειώσεις δεύτερης εβδομάδας

Σημειώσεις δεύτερης εβδομάδας Σημειώσεις δεύτερης εβδομάδας 1. Δυαδική αναζήτηση: /* BINARY SEARCH */ /* use sorted input */ #include int main() { int c, first, last, middle, n, search, array[100]; printf("enter number of

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση

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

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

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

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

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:

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

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

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

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

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

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

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

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

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

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:

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

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

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

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

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

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

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

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

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

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

ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής. 9. Πίνακες (Arrays) Χειμερινό εξάμηνο 2012

ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής. 9. Πίνακες (Arrays) Χειμερινό εξάμηνο 2012 9. Πίνακες (Arrays) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Εισαγωγή στους πίνακες (arrays) Ορισμοί και δημιουργία πινάκων (declaring and

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

Προγραμματισμός Αναδρομή

Προγραμματισμός Αναδρομή Προγραμματισμός Αναδρομή Προγραμματισμός Προγραμματισμός Κλήσεις Συναρτήσεων Όταν καλείται μια συνάρτηση, πρέπει Να θυμάται σε ποιο σημείο του προγράμματος θα επιστρέψει Να δεσμεύσει χώρο για την τιμή

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

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

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

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Sequential & Binary Search Σειριακή & Δυαδική Αναζήτηση

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

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

Προγραμματισμός Αναδρομή

Προγραμματισμός Αναδρομή Αναδρομή Κλήσεις Συναρτήσεων Όταν καλείται μια συνάρτηση, πρέπει Να θυμάται σε ποιο σημείο του προγράμματος θα επιστρέψει Να δεσμεύσει χώρο για την τιμή που θα επιστρέψει Να δεσμεύσει χώρο για τα ορίσματα

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

EE512: Error Control Coding

EE512: Error Control Coding EE512: Error Control Coding Solution for Assignment on Finite Fields February 16, 2007 1. (a) Addition and Multiplication tables for GF (5) and GF (7) are shown in Tables 1 and 2. + 0 1 2 3 4 0 0 1 2 3

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

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ο αλγόριθμος ταξινόμησης Radix Sort -Δυο εκδοχές: Most Significant Digit (MSD) και Least Significant

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

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

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

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

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο Πανεπιστήμιο Πελοποννήσου Σχολή Θετικών Επιστημών & Τεχνολογίας Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών Προγραμματισμός Ι Εργαστήριο 03-12-2012 1 η Εργαστηριακή Άσκηση Να δημιουργήσετε πρόγραμμα που

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

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

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

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

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

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

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

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

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

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

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++ (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 Θα

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

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

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

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

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

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.1-8.3 Πίνακες Ι ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα µιλήσουµε για την δοµή δεδοµένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. ήλωση Πίνακα 3. Αρχικοποίηση

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

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure).

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure). Πίνακες Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure). Οι απλοί τύποι δεδοµένων (οι τιµές τους δεν µπορούν να διασπασθούν

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

Εισαγωγή στη Fortran. Μάθημα 3 ο. Ελευθερία Λιούκα

Εισαγωγή στη Fortran. Μάθημα 3 ο. Ελευθερία Λιούκα Εισαγωγή στη Fortran Μάθημα 3 ο Ελευθερία Λιούκα liouka.eleftheria@gmail.com Περιεχόμενα Loops External Functions Subroutines Arrays Common mistakes Loops Ανάγκη να εκτελέσουμε τις ίδιες εντολές πολλές

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

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

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

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

PARTIAL NOTES for 6.1 Trigonometric Identities

PARTIAL NOTES for 6.1 Trigonometric Identities PARTIAL NOTES for 6.1 Trigonometric Identities tanθ = sinθ cosθ cotθ = cosθ sinθ BASIC IDENTITIES cscθ = 1 sinθ secθ = 1 cosθ cotθ = 1 tanθ PYTHAGOREAN IDENTITIES sin θ + cos θ =1 tan θ +1= sec θ 1 + cot

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες. 58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο

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

Section 8.3 Trigonometric Equations

Section 8.3 Trigonometric Equations 99 Section 8. Trigonometric Equations Objective 1: Solve Equations Involving One Trigonometric Function. In this section and the next, we will exple how to solving equations involving trigonometric functions.

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017 FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017 M7 Δομές δεδομένων: Πίνακες - Ασκήσεις Γεώργιος Παπαλάμπρου Επικ. Καθηγητής ΕΜΠ Εργαστήριο Ναυτικής Μηχανολογίας george.papalambrou@lme.ntua.gr ΕΜΠ/ΣΝΜΜ

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

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

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

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

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

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

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

Section 9.2 Polar Equations and Graphs

Section 9.2 Polar Equations and Graphs 180 Section 9. Polar Equations and Graphs In this section, we will be graphing polar equations on a polar grid. In the first few examples, we will write the polar equation in rectangular form to help identify

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

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

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

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

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή ονάδα Δικτύων και Επικοινωνιών ΗΥ Τομέας Πληροφορικής, αθηματικών και Στατιστικής ΓΕΩΠΟΙΚΟ ΠΑΕΠΙΣΤΗΙΟ ΑΘΗΩ Εισαγωγή στην Επιστήμη των ΗΥ άθημα-4 url: http://openeclass.aua.gr (AOA0) Λογισμικό Υπολογιστή

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Συναρτήσεις - Εξωτερικές μεταβλητές - Κανόνες εμβέλειας - Διάρκεια

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

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014 ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014 Αναζήτηση και Ταξινόµηση Βασικές λειτουργίες σε προγράµµατα Αναζήτηση (searching): Βρες ένα ζητούµενο στοιχείο σε µια

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

242 -ΕισαγωγήστουςΗ/Υ

242 -ΕισαγωγήστουςΗ/Υ 1 242 -ΕισαγωγήστουςΗ/Υ ΤµήµαΜαθηµατικών, Πανεπιστήµιο Ιωαννίνων Άρτια Α.Μ. (0-2-4-6-8) 2 ήλωση: Πίνακες στην ΕΑΓ δηλωση ( [1 : 1, 1 : 2,..., 1: ν ] ) παραταξη ; Π.χ.: δηλωση

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

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

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

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

Section 7.6 Double and Half Angle Formulas

Section 7.6 Double and Half Angle Formulas 09 Section 7. Double and Half Angle Fmulas To derive the double-angles fmulas, we will use the sum of two angles fmulas that we developed in the last section. We will let α θ and β θ: cos(θ) cos(θ + θ)

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

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16) Κεφάλαιο 8.1-8.3 Πίνακες Ι (Διάλεξη 16) 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα μιλήσουμε για την δομή δεδομένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. Δήλωση Πίνακα 3. Αρχικοποίηση Πίνακα 4. Πρόσβαση

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011 Συναρτήσεις (functions) Συνάρτηση (function) σύνολο εντολών που έχει οµαδοποιηθεί και τους έχει αποδοθεί ένα όνοµα Κλήση (calling)

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

CHAPTER 48 APPLICATIONS OF MATRICES AND DETERMINANTS

CHAPTER 48 APPLICATIONS OF MATRICES AND DETERMINANTS CHAPTER 48 APPLICATIONS OF MATRICES AND DETERMINANTS EXERCISE 01 Page 545 1. Use matrices to solve: 3x + 4y x + 5y + 7 3x + 4y x + 5y 7 Hence, 3 4 x 0 5 y 7 The inverse of 3 4 5 is: 1 5 4 1 5 4 15 8 3

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

Lecture 2: Dirac notation and a review of linear algebra Read Sakurai chapter 1, Baym chatper 3

Lecture 2: Dirac notation and a review of linear algebra Read Sakurai chapter 1, Baym chatper 3 Lecture 2: Dirac notation and a review of linear algebra Read Sakurai chapter 1, Baym chatper 3 1 State vector space and the dual space Space of wavefunctions The space of wavefunctions is the set of all

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

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible. B-Trees Index files can become quite large for large main files Indices on index files are possible 3 rd -level index 2 nd -level index 1 st -level index Main file 1 The 1 st -level index consists of pairs

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016 ΜΥΥ105: Εισαγωγή στον Προγραμματισμό Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016 Αναζήτηση και Ταξινόμηση Βασικές λειτουργίες σε προγράμματα Αναζήτηση (searching): Βρες ένα ζητούμενο στοιχείο σε μια

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

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία). Παράδειγµα: Το τρίγωνο του Pascal 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

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

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι She selects the option. Jenny starts with the al listing. This has employees listed within She drills down through the employee. The inferred ER sttricture relates this to the redcords in the databasee

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

ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15

ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15 ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15 DBTG Γλώσσα επεξεργασίας Σκελετός ενός προγράµµατος Βρες την εγγραφή FIND FIND...... FIND Ανάκτησε την τιµή εγγραφής στον κατάλληλο επίγραµµα τύπου GET RECORD

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

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');

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

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

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

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

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

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

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

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

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

Προγραµµατισµός. Αναδροµή (1/2)

Προγραµµατισµός. Αναδροµή (1/2) Προγραµµατισµός Αναδροµή (1/2) Προγραµµατισµός Κλήσεις Συναρτήσεων Όταν καλείται µια συνάρτηση, πρέπει Να θυµάται σε ποιο σηµείο του προγράµµατος θα επιστρέψει Να δεσµεύσει χώρο για την τιµή που θα επιστρέψει

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

Approximation of distance between locations on earth given by latitude and longitude

Approximation of distance between locations on earth given by latitude and longitude Approximation of distance between locations on earth given by latitude and longitude Jan Behrens 2012-12-31 In this paper we shall provide a method to approximate distances between two points on earth

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

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

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

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

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

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

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

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,

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

Finite Field Problems: Solutions

Finite Field Problems: Solutions Finite Field Problems: Solutions 1. Let f = x 2 +1 Z 11 [x] and let F = Z 11 [x]/(f), a field. Let Solution: F =11 2 = 121, so F = 121 1 = 120. The possible orders are the divisors of 120. Solution: The

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

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

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

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