Εισαγωγή στη C# και το.net 4.0

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

Download "Εισαγωγή στη C# και το.net 4.0"

Transcript

1 Εισαγωγή στη C# και το.net 4.0 Σημειώσεις Σεμιναρίου Ενότητα 6 Πίνακες Generics Collections Επιμέλεια: Βασίλης Κόλιας 1.0.0

2 Πίνακας Περιεχομένων Εισαγωγή στη C# και το.net 4.0 Πίνακας Περιεχομένων Πίνακες Μονοδιάστατοι και ορθογώνιοι πίνακες Πίνακες πινάκων Η πρόταση foreach Προσπέλαση με το IEnumerator και το IEnumerator<T> Η μέθοδος Clone Generics Generic κλάσεις Περιορισμοί στους τύπους παραμέτρων Προτάσεις where Τύποι περιορισμών Generic μέθοδοι Generic Structs Generic Interfaces Collections Enumeration IEnumerable και IEnumerator IEnumerable<T> και IEnumerator<T> Υλοποίηση των enumeration interfaces ICollection<T> και ICollection Generic Lists Η κλάση List<T> LinkedList<T> Generic Dictionaries Το interface IDictionary<TKey,TValue> Η κλάση Dictionary<TKey,TValue> Ταξινομημένα Dictionaries Generic Sets Το interface ISet<T> Οι κλάσεις HashSet<T> και SortedSet<T> Queue<T> Stack<T> Σύγκριση στοιχείων Τo interface IComparer<T> Το interface IEqualityComparer<T> Επιλέγοντας το σωστό collection

3 9. Πίνακες Ένας πίνακας είναι ένα σύνολο από στοιχεία δεδομένων του ίδιου τύπου, που αναπαρίσταται από έναν προσδιοριστή. Τα στοιχεία του προσπελαύνονται ανεξάρτητα χρησιμοποιώντας τον προσδιοριστή μαζί με έναν ή περισσότερους indexers ανάμεσα σε αγκύλες. MyArray[4] Καλούμε ως στοιχείο (element) ένα ατομικό μέλος ενός πίνακα. Κάθε στοιχείο του πίνακα πρέπει να είναι του ίδιου τύπου ή να είναι ενός τύπου στην ίδια ιεραρχία κλάσεων (μπορούμε δηλαδή να έχουμε πολυμορφικά στοιχεία). Οι πίνακες μπορούν να έχουν τουλάχιστον μια διάσταση. Το πλήθος των διαστάσεων ενός πίνακα καλείται rank (τάξη). Κάθε διάσταση ενός πίνακα έχει επίσης ένα μήκος (dimension length), που είναι το πλήθος των θέσεων σε αυτή τη διάσταση. Τέλος ένας πίνακας έχει ο ίδιος ένα μήκος (array length), που είναι το συνολικό πλήθος των στοιχείων που περιέχονται σε αυτόν τον πίνακα, σε όλες τις διαστάσεις. Μόλις δημιουργηθεί ένας πίνακας, το μέγεθος του δεν μπορεί να αλλάξει, παραμένει σταθερό μέχρι να καταστραφεί. Η C# δεν υποστηρίζει δυναμικούς πίνακες. Οι indexers (δείκτες) ενός πίνακα ξεκινάνε την αρίθμηση από το 0. Αυτό σημαίνει ότι αν το μήκος ενός πίνακα είναι n, οι τιμές των δεικτών είναι μεταξύ του 0 και του n-1. Η C# παρέχει δυο είδη πινάκων: Τους μονοδιάστατους πίνακες που μπορούμε να τους φανταστούμε σαν μια γραμμή στοιχείων, δηλαδή σαν ένα διάνυσμα (vector). Τους πολυδιάστατους πίνακες που συνθέτονται με τέτοιο τρόπο, έτσι ώστε κάθε θέση στον κύριο πίνακα να είναι η ίδια ένας άλλος πίνακας που καλείται υποπίνακας. Οι θέσεις σε έναν υποπίνακα μπορούν να είναι με τη σειρά τους υποπίνακες. Επιπρόσθετα διακρίνουμε τους πολυδιάστατους πίνακες σε ορθογώνιους (rectangular) και τους πίνακες πινάκων (jagged arrays), οι οποίοι έχουν τα ακόλουθα χαρακτηριστικά: Οι ορθογώνιοι πίνακες Είναι πολυδιάστατοι πίνακες όπου κάθε υποπίνακας σε μια συγκεκριμένη διάσταση έχει το ίδιο μήκος. Χρησιμοποιούν πάντα ένα μόνο ζευγάρι αγκυλών, ανεξαρτήτως του πλήθους των διαστάσεων. Οι πίνακες πινάκων Είναι πολυδιάστατοι πίνακες όπου κάθε υποπίνακας είναι ένας ανεξάρτητος πίνακας. Μπορεί να έχει υποπίνακες διαφορετικών μηκών. Μπορούν να έχουν διαφορετικά ζευγάρια αγκυλών για κάθε διάσταση στον πίνακα. Ένα στιγμιότυπο πίνακα είναι ένα αντικείμενο του οποίου ο τύπος προκύπτει από την κλάση System.Array. Κατά συνέπεια, οι πίνακες κληρονομούν ένα σύνολο από χρήσιμα μέλη από αυτήν την κλάση, όπως τα ακόλουθα: Rank: Μια ιδιότητα που επιστρέφει το πλήθος των διαστάσεων του πίνακα Length: Μια ιδιότητα που επιστρέφει το μήκος (το συνολικό πλήθος των στοιχείων) του πίνακα. Οι πιο χρήσιμες ιδιότητες και μέθοδοι της κλάσης System.Array φαίνονται στον παρακάτω πίνακα: Μέλος Τύπος Διάρκεια Χρησιμότητα Rank Property Στιγμιότυπο Επιστρέφει το πλήθος των διαστάσεων σε έναν πίνακα Length Property Στιγμιότυπο Επιστρέφει το συνολικό πλήθος των στοιχείων σε όλες τις διαστάσεις του πίνακα GetLength Μέθοδος Στιγμιότυπο Επιστρέφει το μήκος μιας συγκεκριμένης διά- 3

4 στασης ενός πίνακα Clear Μέθοδος Static Θέτει ένα σύνολο στοιχείων σε 0 ή null Sort Μέθοδος Static Ταξινομεί τα στοιχεία ενός μονοδιάστατου πίνακα BinarySearch Μέθοδος Static Αναζητά μια τιμή στα στοιχεία ενός μονοδιάστατου πίνακα χρησιμοποιώντας δυαδική αναζήτηση Clone Μέθοδος Στιγμιότυπο Παράγει ένα ρηχό αντίγραφο (shallow copy) του πίνακα, αντιγράφοντας δηλαδή μόνο τα στοιχεία, τόσο για τους πίνακες τύπων τιμών αλλά και για τους πίνακες τύπων αναφορών IndexOf Μέθοδος Static Επιστρέφει το δείκτη της πρώτης θέσης με την τιμή που παρέχεται σε ένα μονοδιάστατο πίνακα Reverse Μέθοδος Static Αντιστρέφει τη σειρά των στοιχείων μέσα σε ένα εύρος ενός μονοδιάστατου πίνακα. GetUpperBound Μέθοδος Στιγμιότυπο Θέτει το ελάχιστο πάνω όριο μιας συγκεκριμένης θέσης. Στο επόμενο παράδειγμα, γίνεται χρήση μερικών από τις παραπάνω ιδιότητες και μεθόδους: public static void PrintArray(int[] a) foreach (var x in a) Console.Write("0 ", x); Console.WriteLine(""); static void Main() int[] arr = new int[] 15, 20, 5, 25, 10 ; PrintArray(arr); Array.Sort(arr); PrintArray(arr); Array.Reverse(arr); PrintArray(arr); Console.WriteLine(); Console.WriteLine("Rank = 0, Length = 1",arr.Rank, arr.length); Console.WriteLine("GetLength(0) = 0",arr.GetLength(0)); Console.WriteLine("GetType() = 0",arr.GetType()); Το παραπάνω παράδειγμα έχει την ακόλουθη έξοδο: Rank = 1, Length = 5 GetLength(0) = 5 GetType() = System.Int32[] Παρόλο που ένας πίνακας είναι πάντα ένας τύπος αναφοράς, τα στοιχεία του πίνακα μπορούν να είναι είτε τύποι τιμών, είτε τύποι αναφορών. Ένας πίνακας καλείται πίνακας τύπου τιμής αν τα στοιχεία που αποθηκεύονται είναι τύποι τιμών. Ένας πίνακας καλείται πίνακας τύπου αναφοράς αν τα στοιχεία που αποθηκεύονται σε έναν πίνακα είναι αναφορές αντικειμένων τύπου αναφοράς Μονοδιάστατοι και ορθογώνιοι πίνακες Συντακτικά, οι μονοδιάστατοι και οι ορθογώνιοι πίνακες είναι πολύ όμοιοι και για το λόγο αυτό θα τους αναλύσουμε μαζί. Δήλωση μονοδιάστατων και ορθογώνιων πινάκων Για να δηλώσουμε έναν μονοδιάστατο ή ορθογώνιο πίνακα, χρησιμοποιούμε ένα ζευγάρι αγκύλων ανάμεσα στον τύπο και το όνομα της μεταβλητής. Οι προσδιοριστές τάξης (rank specifiers) είναι τα κόμματα ανάμεσα στις αγκύλες. Καθορίζουν το πλήθος των διαστάσεων που θα έχει ο πίνακας. Η τάξη (rank) είναι ο αριθμός των κομμάτων συν ένα. Για 4

5 παράδειγμα, αν δεν υπάρχουν κόμματα τότε έχουμε να κάνουμε με έναν μονοδιάστατο πίνακα, αν υπάρχει ένα τότε έχουμε να κάνουμε με έναν δυσδιάστατο πίνακα και ούτω καθεξής. Ο βασικός τύπος μαζί με τους προσδιοριστές τάξης αποτελούν τον τύπο του πίνακα. Στο ακόλουθο παράδειγμα, δηλώνεται ένας μονοδιάστατος πίνακας από longs. Ο τύπος του πίνακα είναι long[] που διαβάζεται ως «ένας πίνακας από longs». long[ ] secondarray; Στο παράδειγμα που ακολουθεί φαίνονται διάφορες δηλώσεις πινάκων. Παρατηρούμε ότι α) μπορούμε να έχουμε όσους προσδιοριστές τάξης χρειαζόμαστε, β) δεν γίνεται να τοποθετήσουμε τα μήκη των διαστάσεων στο κομμάτι δήλωσης του τύπου του πίνακα και γ) όταν δηλώνεται ένας πίνακας, το πλήθος των διαστάσεων είναι σταθερό. Το μήκος των διαστάσεων, ωστόσο δεν καθορίζεται μέχρι να αρχικοποιηθεί ο πίνακας. int[,,] firstarray; int[,] arr1; long[,,] arr3; // Array type: 3-D array of int // Array type: 2-D array of int // Array type: 3-D array of long Δημιουργία μονοδιάστατων και ορθογώνιων πινάκων Γι να αρχικοποιήσουμε έναν πίνακα, χρησιμοποιούμε μια έκφραση δημιουργίας πίνακα. Ακολουθούν μερικά παραδείγματα αρχικοποιήσεων: int[] arr2 = new int[4]; MyClass[] mcarr = new MyClass[4]; int[,,] arr3 = new int[3,6,2] ; Στο παραπάνω παράδειγμα ο πίνακας arr2 είναι ένας μονοδιάστατος πίνακας τεσσάρων ints. Ο πίνακας mcarr είναι ένας μονοδιάστατος πίνακας τεσσάρων αναφορών τύπου MyClass. Τέλος το μήκος του τρισδιάστατου πίνακα arr3 είναι 3*6*2 = 36. Παρατηρούμε ότι αντίθετα με τις εντολές δημιουργίας απλών αντικειμένων, οι εκφράσεις δημιουργίας πινάκων δεν περιέχουν παρενθέσεις ακόμα και για πίνακες που περιέχουν αναφορές. Προσπέλαση στοιχείων πινάκων Κάθε στοιχείο πίνακα προσπελαύνεται χρησιμοποιώντας μια ακέραια τιμή σαν δείκτη προς το αντίστοιχο στοιχείο του πίνακα. Πρέπει να θυμόμαστε ότι κάθε διάσταση ξεκινά την αρίθμησή της από το 0 και ότι ο δείκτης τοποθετείται μεταξύ αγκυλών που ακολουθούν το όνομα του πίνακα. Ο ακόλουθος κώδικας εμφανίζει παραδείγματα δήλωσης, γραψίματος και διαβάσματος από ένα μονοδιάστατο και ένα δυσδιάστατο πίνακα: int[] intarr1 = new int[15]; // Declare 1-D array. intarr1[2] = 10; // Write to element 2 of the array. int var1 = intarr1[2]; // Read from element 2 of the array. int[,] intarr2 = new int[5,10]; // Declare 2-D array. intarr2[2,3] = 7; // Write to the array. int var2 = intarr2[2,3]; // Read from the array. Στον παρακάτω κώδικα βλέπουμε την πλήρη διαδικασία δημιουργίας και προσπέλασης ενός μονοδιάστατου πίνακα: int[] myintarray; // Declare the array. myintarray = new int[4]; // Instantiate the array. for( int i=0; i<4; i++ ) // Set the values. myintarray[i] = i*10; // Read and display the values of each element. for( int i=0; i<4; i++ ) Console.WriteLine("Value of element 0 = 1", i, myintarray[i]); Η έξοδος των παραπάνω εντολών είναι: Value of element 0 is 0 Value of element 1 is 10 Value of element 2 is 20 Value of element 3 is 30 5

6 Αρχικοποίηση ενός πίνακα Εισαγωγή στη C# και το.net 4.0 Όποτε δημιουργείται ένας πίνακας, καθένα από τα στοιχεία του αρχικοποιείται αυτόματα στην προεπιλεγμένη τιμή του συγκεκριμένου τύπου. Υπενθυμίζουμε ότι οι προεπιλεγμένες τιμές για τους ενσωματωμένους τύπους είναι 0 για τους ακέραιους, 0.0 για τους τύπους κινητής υποδιαστολής. Η επόμενη γραμμή κώδικα δημιουργεί έναν πίνακα και αρχικοποιεί τα στοιχεία του στην τιμή 0. int[] intarr = new int[4]; Μπορούμε να θέσουμε ρητά τις αρχικές τιμές ενός πίνακα περιλαμβάνοντας μια λίστα αρχικοποίησης (initialization list), αμέσως μετά την έκφραση δημιουργίας του πίνακα. Οι τιμές αρχικοποίησης πρέπει να διαχωρίζονται από κόμματα και να περιέχονται σε ένα ζευγάρι από άγκιστρα. Τα μήκη των διαστάσεων είναι προαιρετικά, αφού ο μεταγλωττιστής θα υπολογίσει τα μήκη από το πλήθος των τιμών αρχικοποίησης. Αξίζει να παρατηρήσουμε ότι τίποτα δεν διαχωρίζει την έκφραση δημιουργίας του πίνακα από τη λίστα αρχικοποίησης, δηλαδή δεν υπάρχει κάποιος τελεστής ανάθεσης ή άλλος τελεστής. Για παράδειγμα, ο ακόλουθος κώδικας δημιουργεί έναν πίνακα και αρχικοποιεί τα τέσσερα στοιχεία του στις τιμές μεταξύ των αγκίστρων: int[] intarr = new int[] 10, 20, 30, 40 ; Μπορούμε επίσης να αρχικοποιήσουμε ρητά και έναν ορθογώνιο πίνακα ακολουθώντας τους εξής κανόνες: Κάθε διάνυσμα αρχικών τιμών πρέπει να εσωκλείεται σε άγκιστρα. Κάθε διάσταση πρέπει να εντίθεται και να περικλείεται σε άγκιστρα. Μαζί με τις αρχικές τιμές, οι λίστες αρχικοποίησης και τα στοιχεία κάθε διάστασης πρέπει να διαχωρίζονται με κόμματα. Για παράδειγμα, στον ακόλουθο κώδικα φαίνεται η δήλωση ενός δυσδιάστατου πίνακα με μια λίστα αρχικοποίησης. int[,] intarray2 = new int[,] 10, 1, 2, 10, 11, 9 ; Οι ορθογώνιοι πίνακες αρχικοποιούνται με ένθετες, λίστες αρχικοποίησης που χωρίζονται με κόμματα. Οι λίστες αρχικοποίησης ενθέτονται σε άγκιστρα. Αυτό μπορεί να οδηγήσει σε μπερδέματα, οπότε για τη σωστή ένθεση, ομαδοποίηση και τη σωστή τοποθέτηση των κομμάτων είναι καλό να προσέχουμε τα εξής: α) τα κόμματα χρησιμοποιούνται ως διαχωριστές ανάμεσα σε όλα τα στοιχεία και όλες τις ομάδες, β) κόμματα δεν τοποθετούνται μεταξύ των αριστερών αγκίστρων, γ) κόμματα δεν τοποθετούνται πριν από ένα δεξιό άγκιστρο και δ) διαβάζουμε τους ορισμούς τάξεων από αριστερά προς τα δεξιά, προσδιορίζοντας τον τελευταίο αριθμό σαν στοιχεία και όλα τα υπόλοιπα σαν ομάδες. Για παράδειγμα διαβάζουμε τον ακόλουθο πίνακα σαν «πίνακας ακεραίων που έχει τέσσερεις ομάδες των τριών ομάδων με δύο στοιχεία. int[,,] intarray = new int[4,3,2] 8, 6, 5, 2, 12, 9, 6, 4, 13, 9, 18, 4, 7, 2, 1, 13, 9, 3, 4, 6, 3, 2, 23, 8 ; Όταν συνδυάζουμε τη δήλωση, τη δημιουργία και την αρχικοποίηση ενός πίνακα σε μια μόνο πρόταση, μπορούμε να παραλείψουμε το τμήμα με την έκφραση δημιουργίας του πίνακα και να παρέχουμε μόνο το τμήμα αρχικοποίησης. Ακολουθεί ένα παράδειγμα: int[] arr1 = new int[3] 10, 20, 30; int[] arr1 = 10, 20, 30; //οι δυο προτάσεις είναι ισοδύναμες 6

7 Πίνακες έμμεσων τύπων Εισαγωγή στη C# και το.net 4.0 Στα παραδείγματα που έχουμε εξετάσει μέχρι τώρα ορίζουμε ρητά τους τύπους των πινάκων στην αρχή όλων των δηλώσεων τους. Όμως, όπως όλες οι υπόλοιπες τοπικές μεταβλητές οι τύποι των πινάκων μπορούν να οριστούν έμμεσα. Αυτό σημαίνει ότι: Όταν αρχικοποιούμε τον πίνακα μπορούμε να αφήσουμε τον μεταγλωττιστή να ορίσει τον τύπο κατά την αρχικοποίησή του. Αυτό επιτρέπεται όταν όλοι οι αρχικοποιητές μπορούν να μετατραπούν σε έναν μόνο τύπο. Όπως και με τις έμμεσες τοπικές μεταβλητές, χρησιμοποιούμε τη λέξη var αντί του τύπου του πίνακα. Στο επόμενο παράδειγμα φαίνονται έμμεσες και έμμεσες εκδόσεις δηλώσεων πινάκων. Ο πρώτος πίνακας είναι ένας μονοδιάστατος πίνακας ακεραίων. Ο δεύτερος είναι ένας δυσδιάστατος πίνακας ακεραίων και ο τρίτος είναι ένας πίνακας από strings. Παρατηρούμε ότι ακόμα και στην έμμεση δήλωση του δεύτερου πίνακα απαιτείται ο προσδιορισμός της τάξης κατά την αρχικοποίηση. int [] intarr1 = new int[] 10, 20, 30, 40 ; var intarr2 = new [] 10, 20, 30, 40 ; int[,] intarr3 = new int[,] 10, 1, 2, 10, 11, 9 ; var intarr4 = new [,] 10, 1, 2, 10, 11, 9 ; string[] sarr1 = new string[] "life", "liberty", "pursuit of happiness" ; var sarr2 = new [] "life", "liberty", "pursuit of happiness" ; Στο επόμενο παράδειγμα συνοψίζεται ό,τι έχουμε δει μέχρι τώρα. Δημιουργείται έ- νας πίνακας, αρχικοποιείται και εμφανίζεται στο χρήστη. // Declare, create, and initialize an implicitly typed array. var arr = new int[,] 0, 1, 2, 10, 11, 12; // Print the values. for( int i=0; i<2; i++ ) for( int j=0; j<3; j++ ) Console.WriteLine("Element [0,1] is 2", i, j, arr[i,j]); Η έξοδος του προγράμματος είναι: Element [0,0] is 0 Element [0,1] is 1 Element [0,2] is 2 Element [1,0] is 10 Element [1,1] is 11 Element [1,2] is Πίνακες πινάκων Ένας πίνακας πινάκων (jagged array) 1 είναι ένας πίνακας από πίνακες διαφορετικού πλήθους στοιχείων. Στο παρακάτω παράδειγμα ορίζουμε έναν δυσδιάστατο πίνακα πινάκων. int[][] jagarr = new int[3][]; // Δήλωση και δημιουργία του top-level array. Παρατηρούμε ότι το μήκος της πρώτης διάστασης είναι 3 ενώ η δήλωση μπορεί να διαβαστεί ως «jagarr είναι ένας πίνακας τριών πινάκων ακεραίων». Δήλωση ενός πίνακα πινάκων Το συντακτικό δήλωσης ενός πίνακα πινάκων απαιτεί ένα ξεχωριστό ζευγάρι αγκυλών για κάθε διάσταση. Το πλήθος των ζευγαριών των αγκυλών στη δήλωση του πίνακα καθορίζει την τάξη του πίνακα. Ένας πίνακας πινάκων μπορεί να έχει όσες διαστάσεις επιθυμούμε, περισσότερες του ενός. Όπως με τους ορθογώνιους πίνακες, τα μήκη των διαστάσεων δεν μπορούν να περιλαμβάνονται στο τμήμα με τον τύπο του πίνακα. int[][] SomeArr; // Rank = 2 1 Η μετάφραση είναι ελεύθερη. Θα μπορούσαμε να μεταφράσουμε τον όρο jagged σαν «οδοντωτός» και να τον αποδώσουμε ακριβέστερα, αφού όντως ένας jagged array είναι ένας πίνακας από πίνακες άνισων μηκών. 7

8 int[][][] OtherArr; // Rank = 3 Μπορούμε να συνδυάσουμε τη δήλωση ενός πίνακα πινάκων με τη δημιουργία του πρώτου σε αυτόν πίνακα χρησιμοποιώντας μια έκφραση δημιουργίας πίνακα, ως εξής: int[][] jagarr = new int[3][]; Ωστόσο δεν μπορούμε να αρχικοποιήσουμε πέραν του πρώτου επιπέδου κατά τη δήλωση ενός πίνακα πινάκων. int[][] jagarr = new int[3][4]; //Λάθος! Αρχικοποίηση ενός πίνακα πινάκων Αντίθετα με άλλους τύπους πινάκων δεν γίνεται να αρχικοποιήσουμε πλήρως έναν πίνακα πινάκων σε ένα βήμα. Αφού πρόκειται για έναν πίνακα από ξεχωριστούς πίνακες, κάθε πίνακας πρέπει να δημιουργηθεί ξεχωριστά. Η αρχικοποίηση ενός πλήρους πίνακα πινάκων απαιτεί τα ακόλουθα βήματα: 1. Αρχικοποίηση του πρώτου επιπέδου του πίνακα. 2. Αρχικοποίηση κάθε υποπίνακα ξεχωριστά, αναθέτοντας κάθε αναφορά των πινάκων αυτών στο αντίστοιχο στοιχείο του πίνακα. Στο ακόλουθο παράδειγμα φαίνεται μια δήλωση, δημιουργία και αρχικοποίηση ενός δυσδιάστατου πίνακα πινάκων. Παρατηρούμε ότι η αναφορά σε κάθε υποπίνακα ανατίθεται σε ένα στοιχείο στο πρώτο επίπεδο του πίνακα. int[][] Arr = new int[3][]; Arr[0] = new int[] 10, 20, 30; Arr[1] = new int[] 40, 50, 60, 70; Arr[2] = new int[] 80, 90, 100, 110, 120; // 1. Αρχικοποίηση top level // 2. Αρχικοποίηση subarray // 3. Αρχικοποίηση subarray // 4. Αρχικοποίηση subarray Υποπίνακες σε πίνακες πινάκων Αφού οι υποπίνακες σε έναν πίνακα πινάκων είναι οι ίδιοι πίνακες, είναι δυνατόν να έχουμε ορθογώνιους πίνακες μέσα σε πίνακες πινάκων. Στο ακόλουθο παράδειγμα δημιουργούμε έναν πίνακα πινάκων τριών δυσδιάστατων ορθογώνιων πινάκων και τους αρχικοποιούμε με τιμές τις οποίες και εμφανίζουμε: int[][,] Arr; // An array of 2-D arrays Arr = new int[3][,]; // Instantiate an array of three 2-D arrays. Arr[0] = new int[,] 10, 20, 100, 200 ; Arr[1] = new int[,] 30, 40, 50, 300, 400, 500 ; Arr[2] = new int[,] 60, 70, 80, 90, 600, 700, 800, 900 ; for (int i = 0; i < Arr.GetLength(0); i++) for (int j = 0; j < Arr[i].GetLength(0); j++) for (int k = 0; k < Arr[i].GetLength(1); k++) Console.WriteLine("[0][1,2] = 3", i, j, k, Arr[i][j, k]); Console.WriteLine(""); Console.WriteLine(""); Στον κώδικα γίνεται χρήση της μεθόδου GetLength(int n) των πινάκων, που κληρονομείται από την System.Array, για να λάβουμε το μήκος της ορισμένης διάστασης του πίνακα. Σύγκριση ορθογώνιων πινάκων και πινάκων από πίνακες Η δομή των ορθογώνιων και των πινάκων από πίνακες είναι αρκετά διαφορετική. Έ- στω ότι έχουμε έναν ορθογώνιο πίνακα 3x3 και έναν πίνακα τριών πινάκων ως εξής: RectArr[3, 3] JagArr[3][3] 8

9 Και οι δυο πίνακες κρατούν εννιά ακεραίους αλλά, όπως μπορούμε να δούμε, οι δομές τους είναι αρκετά διαφορετικές. Ο ορθογώνιος πίνακας έχει ένα μόνο αντικείμενο, ενώ ο πίνακας πινάκων έχει τέσσερα. Ένα για τον εαυτό του και τρία για τους πίνακές του. Οι μονοδιάστατοι πίνακες έχουν συγκεκριμένες οδηγίες στην ενδιάμεση γλώσσα CIL για τη βελτιστοποίηση της απόδοσης. Οι ορθογώνιοι πίνακες δεν έχουν αυτές τις οδηγίες και δεν είναι βελτιστοποιημένοι στο ίδιο επίπεδο με τους μονοδιάστατους. Εξαιτίας του γεγονότος αυτού, μερικές φορές μπορεί να είναι αποδοτικότερο να χρησιμοποιούμε πίνακες μονοδιάστατων πινάκων (οι οποίοι μπορούν να βελτιστοποιηθούν). Από την άλλη όμως οι πολυπλοκότητα στη διαχείριση τέτοιων πινάκων είναι αυξημένη, αφού αντιμετωπίζονται σαν πολλαπλοί πίνακες, σε αντίθεση με τους ορθογώνιους που αντιμετωπίζονται σαν μια μονάδα Η πρόταση foreach Η πρόταση foreach επιτρέπει την σειριακή προσπέλαση κάθε στοιχείου σε έναν πίνακα. Στην πραγματικότητα δεν περιορίζεται μόνο στους πίνακες αλλά μπορεί να χρησιμοποιηθεί και σε συλλογές (collections). Εδώ εξετάζουμε τη χρήση της με πίνακες. Τα σημεία που χρίζουν προσοχής σχετικά με την πρόταση foreach είναι τα εξής: Η μεταβλητή επανάληψης είναι μια προσωρινή μεταβλητή του ίδιου τύπου με τα στοιχεία του πίνακα. Η πρόταση foreach χρησιμοποιεί τη μεταβλητή επανάληψης για να αναπαραστήσει σειριακά κάθε στοιχείο στον πίνακα. Το συντακτικό της foreach το έχουμε εξετάσει ήδη, ωστόσο ας το επαναλάβουμε: foreach( Τύπος_δεδομένων προσδιοριστής in όνομα_πίνακα ) εντολή Όπου: Τύπος δεδομένων: ο τύπος δεδομένων των στοιχείων του πίνακα. Μπορούμε να παρέχουμε ρητά τον τύπο του, ή μπορούμε να αφήσουμε το μεταγλωττιστή να τον υπολογίσει κατά το τρέξιμο της εφαρμογής. Προσδιοριστής: το όνομα της μεταβλητής επανάληψης Όνομα πίνακα: το όνομα του πίνακα προς επεξεργασία Εντολή: η εντολή που θα εκτελείται για κάθε στοιχείο του πίνακα. Μπορούμε αντί για μια εντολή να συμπεριλάβουμε πολλαπλές εντολές μέσα σε ένα μπλοκ. Η πρόταση foreach ξεκινάει με το πρώτο στοιχείο του πίνακα και αναθέτει την τιμή του στη μεταβλητή επανάληψης. Μετά εκτελεί το σώμα του foreach. Μέσα σε αυτό το σώμα η μεταβλητή επανάληψης συμπεριφέρεται σαν ένα read-only ψευδώνυμο του στοιχείου του πίνακα. Μετά την εκτέλεση του κύριου σώματος, η πρόταση foreach επιλέγει το επόμενο στοιχείο στον πίνακα και επαναλαμβάνει τη διαδικασία. Έτσι η foreach διατρέχει τον πίνακα επιτρέποντάς μας να προσπελάσουμε κάθε στοιχείο του ένα προς ένα. Ακολουθεί ένα παράδειγμα όπου φαίνεται πως προσπελαύνουμε έναν μονοδιάστατο πίνακα τεσσάρων ακεραίων: int[] arr1 = 10, 11, 12, 13; foreach( int item in arr1 ) Console.WriteLine("Item Value: 0", item); Η έξοδος του προγράμματος θα είναι: Item Value: 10 Item Value: 11 Item Value: 12 Item Value: 13 Η εντολή WriteLine, που αποτελεί το σώμα της πρότασης foreach, εκτελείται μια φορά για καθένα από τα στοιχεία του πίνακα. Στην πρώτη επανάληψη, η μεταβλητή item έχει την τιμή του πρώτου στοιχείου του πίνακα. Σε κάθε επόμενη επανάληψη, θα έχει την τιμή του επόμενου στοιχείου του πίνακα. 9

10 Εφόσον η μεταβλητή επανάληψης είναι read-only, δεν γίνεται να αλλαχθεί. Για παράδειγμα, στον επόμενο κώδικα, η προσπάθεια αλλαγής των δεδομένων στη μεταβλητή ε- πανάληψης παράγει ένα σφάλμα κατά τη μεταγλώττιση: int[] arr1 = 10, 11, 12, 13; foreach( int item in arr1 ) item++; // Σφάλμα κατά τη μεταγλώττιση. Η αλλαγή της τιμής δεν επιτρέπεται Ακόμα και στους πίνακες τύπου αναφοράς δεν είναι δυνατόν να αλλάξουμε την τιμή της μεταβλητής επανάληψης. Όμως, ως γνωστόν, η μεταβλητή απλώς κρατά μια αναφορά προς τα δεδομένα και όχι τα δεδομένα καθαυτά. Έτσι παρόλο που δεν μπορούμε να αλλάξουμε την αναφορά, μπορούμε να αλλάξουμε τα δεδομένα μέσω της μεταβλητής επανάληψης. Στο επόμενο παράδειγμα δημιουργείται ένας πίνακας τεσσάρων αντικειμένων τα ο- ποία και αρχικοποιούνται. Στην πρώτη πρόταση foreach, τα δεδομένα σε κάθε αντικείμενο αλλάζουν. Στο δεύτερο foreach διαβάζονται οι αλλαγμένες τιμές των αντικειμένων. class MyClass public int MyField = 0; class Program static void Main() MyClass[] mcarray = new MyClass[4]; for (int i = 0; i < 4; i++) mcarray[i] = new MyClass(); // Δημιουργία του πίνακα // Δημιουργία των αντικειμένων // Ανάθεση τιμής mcarray[i].myfield = i; foreach (MyClass item in mcarray) item.myfield += 10; // Change the data. foreach (MyClass item in mcarray) Console.WriteLine("0", item.myfield); // Διάβασμα των αλλαγών Η έξοδος του προγράμματος είναι: Σε έναν πολυδιάστατο πίνακα η επεξεργασία των στοιχείων ξεκινάει από το πιο δεξιό δείκτη που αυξάνεται γρηγορότερα. Όταν ο δείκτης φτάσει στην τιμή μήκος-1 από το 0, η επόμενη θέση από τα αριστερά αυξάνεται και οι δείκτες προς τα δεξιά μηδενίζονται. Ακολουθεί ένα παράδειγμα χρήσης της foreach σε έναν ορθογώνιο πίνακα: class Program static void Main() int total = 0; int[,] arr1 = 10, 11, 12, 13 ; foreach( var element in arr1 ) total += element; Console.WriteLine ("Element: 0, Current Total: 1", element, total); Η έξοδος του προγράμματος είναι: Element: 10, Current Total: 10 Element: 11, Current Total: 21 Element: 12, Current Total: 33 Element: 13, Current Total: 46 Τέλος αφού οι πίνακες πινάκων περιέχουν πίνακες σαν στοιχεία, πρέπει να χρησιμοποιούμε ξεχωριστές προτάσεις foreach για κάθε διάσταση στον πίνακα. Οι προτάσεις fo- 10

Μπορείτε να δηλώσετε πίνακα οποιουδήποτε τύπου είτε βασικού είτε κλάσης:

Μπορείτε να δηλώσετε πίνακα οποιουδήποτε τύπου είτε βασικού είτε κλάσης: 4. Πίνακες Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να δηλώνετε και να δημιουργείτε πίνακες βασικών τύπων, κλάσεων ή άλλων πινάκων Να δηλώνετε την ανάγκη, και να μπορείτε να αρχικοποιήσετε τα στοιχεία

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

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0 Εισαγωγή στη C# και Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας το.net 4.0 2 Π ί ν α κ α ς Π ε ρ ι ε χ ο μ έ ν ω ν Πίνακας Περιεχομένων... 1 1. Εισαγωγή... 11 1.1. Γλώσσες και γλώσσες προγραμματισμού...

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

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

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

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

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

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

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

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

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

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

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

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

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

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

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

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

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ Σύνολο στοιχείων ίδιου τύπου (1/2) Ένα σύνολο στοιχείων ίδιου τύπου διακρίνεται σε δύο κατηγορίες με βάση τη διάσταση: Μονοδιάστατο Αν μπορούμε να θεωρούμε ότι τα στοιχεία είναι συνεχόμενα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays) ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008 Πίνακες (Arrays) 1-D 0 1 2 2-D 3-D 0 0 1 1 2 2 3 3 array[3][2] array[0][1] Γενική δήλωση πίνακα: τύπος_στοιχείων [ ] όνομα = new τύπος_στοιχείων [μήκος]; // 1-D και φυσικά

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

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

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

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

Εισαγωγή στη C# και το.net 4.0

Εισαγωγή στη C# και το.net 4.0 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΡΓΑΣΤΗΡΙΟ ΤΕΧΝΟΛΟΓΙΑΣ ΠΟΛΥΜΕΣΩΝ Εισαγωγή στη C# και το.net 4.0 Σημειώσεις Σεμιναρίου Ενότητα 3 Κλάσεις και αντικείμενα Πεδία Μέθοδοι Επιμέλεια: Βασίλης Κόλιας 1.0.0 Πίνακας

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

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

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

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

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

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ. ΤΡΙΤΗ ΔΙΑΛΕΞΗ Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.): Σύνταξη τύπος όνομαα; τύπος όνομαβ{όνομαα}; όνομαβ

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

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

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

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

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

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

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

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

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

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

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

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

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

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

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln,

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays) ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 7 Πίνακες (Arrays) 1-D 0 1 2 2-D 3-D 0 0 1 1 2 2 3 3 array[3][2]

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

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

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

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Linear Data Structures) Ας θεωρήσουµε µία δοµή δεδοµένων το σύνολο των στοιχείων της οποίας είναι διατεταγµένο µε τέτοιο τρόπο ώστε να ισχύουν τα εξής: (α) υπάρχει ένα µόνο

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

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

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

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

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

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

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΔΟΜΕΣ Πίνακες Πολλές φορές έχουμε πολλές μεταβλητές του ίδιου τύπου που συσχετίζονται

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

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

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

Η γλώσσα προγραμματισμού Strange

Η γλώσσα προγραμματισμού Strange Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει

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

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap Ουρά Προτεραιότητας: Heap Επιμέλεια διαφανειών: Δ. Φωτάκης (λίγες τροποποιήσεις: Α. Παγουρτζής) Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Δομές Δεδομένων (Αναπαράσταση,)

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

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

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Δομές & Ενώσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι 1 Δομές (Structures) Δομή (structure) στη C είναι μία συλλογή από μεταβλητές οποιουδήποτε

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

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

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

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

8 FORTRAN 77/90/95/2003

8 FORTRAN 77/90/95/2003 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5.

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δείκτες Τι είναι ένας δείκτης (pointer); Όταν δηλώνoυμε μια μεταβλητή σε ένα πρόγραμμα

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

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

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

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

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

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

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

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

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

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

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

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

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

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

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

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

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

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

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

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

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

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

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

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

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

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

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

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

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη Πώς βλέπουμε τις ιδιότητες των αντικειμένων που έχουμε δημιουργήσει; Ανοίγουμε το σενάριο CarWorld και δημιουργούμε μερικά αντικείμενα των κλάσεων

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Γραµµικές Δοµές Δεδοµένων (Linear Data Structures) Πίνακες (Arrays) Διανύσµατα (Vectors) http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό 2013-14 Διδάσκων: Γεώργιος Παπαϊωάννου Μονογραφή επιτηρητή: Στοιχεία Φοιτητή (συμπληρώνεται από το φοιτητή) Όνομα: Αίθουσα/αμφιθέατρο:

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

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

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

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4.1 Μετρητές Ένας μετρητής (counter) είναι μία μεταβλητή η οποία ξεκινά με μία αρχική τιμή και αυξάνεται κατά ένα κάθε φορά που εκτελείται. Ο αλγόριθμος για έναν μετρητή

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

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

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

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

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ 2 στον Προγραμματισμό Υπολογιστών ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας στο τετράδιό σας, δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση

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

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

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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