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

Σχετικά έγγραφα
Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

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

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Υπολογιστικά Συστήματα

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

Υπολογιστικά Συστήματα

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

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

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

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

Λογιστικές Εφαρμογές Εργαστήριο

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

Υπολογιστικά Συστήματα

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

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

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

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

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

8 η ΕΝΟΤΗΤΑ Συμβολοσειρές Δομές

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ(Visual Basic)

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

Πληροφορική. Ενότητα 5 η : Εισαγωγή στον Προγραμματισμό με τη Visual Basic. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Προγραμματισμός και Εφαρμογές Υπολογιστών

Πληροφορική. Εργαστηριακή Ενότητα 5 η : Μαθηματικοί Τύποι. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Πληροφορική II. Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι. τύποι δεδομένων. Δρ. Γκόγκος Χρήστος

Στατιστική Επιχειρήσεων Ι

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

Συναρτήσεις στη Visual Basic 6.0

9 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Τοπικές vs Καθολικές Μεταβλητές ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

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

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

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

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

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

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

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

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Υπολογιστικά Συστήματα

Λογιστικές Εφαρμογές Εργαστήριο

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Μονοδιάστατοι Πίνακες

Μέθοδοι Βελτιστοποίησης

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

4. Επιλογή και Επανάληψη

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

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

Πληροφορική. Εργαστηριακή Ενότητα 2 η : Το βιβλίο εργασίας του MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Προγραμματισμός και Εφαρμογές Υπολογιστών

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Στατιστική Επιχειρήσεων

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

{ int a = 5; { int b = 7; a = b + 3;

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

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

7 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ

Αναμόρφωση της σχεδίασης γραφικών εξομοίωσης του προγράμματος NEAPOLIS με βάση τις. αναμενόμενες μεσες τιμ ες από τα μοντέλα μόνιμης κατάστασης

Σχεδίαση Ψηφιακών Συστημάτων

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Περιβαλλοντική Χημεία

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Υδραυλικά & Πνευματικά ΣΑΕ

Transcript:

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Στην συγκεκριμένη ενότητα γίνεται μια εισαγωγή στις σύνθετες δομές δεδομένων όπου παρουσιάζεται η δομή πίνακα και η δομή Structure της γλώσσας προγραμματισμού Visual Basic.NET 4

Περιεχόμενα Τι είναι η δομή τύπου πίνακα Δήλωση πινάκων μιας ή περισσοτέρων διαστάσεων Αλλαγή Διάστασης Πίνακα Δυναμικοί Πίνακες Συναρτήσεις Ubound() και Lbound() Η Δομή Structure Δήλωση και Χρήση της Δομής Structure Παραδείγματα και Εφαρμογές 5

Γιατί χρειάζεται η Δομή Πίνακα Πολλές φορές στην επίλυση ενός προβλήματος είναι απαραίτητη η διαχείριση μιας ποσότητας δεδομένων του ιδίου τύπου π.χ. βαθμοί φοιτητών σε ένα ή περισσότερα μαθήματα, διάφορες μετρήσεις όπως ενός φυσικού μεγέθους π.χ. της θερμοκρασίας, τιμών καταναλωτικών αγαθών και υπηρεσιών για τον υπολογισμό του Δείκτη Τιμών Καταναλωτή, τιμές μετοχών κ.ο.κ. Σε τέτοιες περιπτώσεις με βάση όσα γνωρίζουμε μέχρι τώρα θα έπρεπε να δημιουργήσουμε τόσες μεταβλητές (όλες του ιδίου τύπου) όση είναι και η ποσότητα σε αριθμό των δεδομένων που πρέπει να διαχειριστούμε. για παράδειγμα, αν πρέπει να διαχειριστούμε τους βαθμούς 10 φοιτητών σε ένα μάθημα θα έπρεπε να δημιουργήσουμε 10 μεταβλητές 6

Τι είναι η Δομή Πίνακα Με τη δομή πίνακα μπορούμε να διαχειριστούμε μια πεπερασμένη ακολουθία τιμών του ιδίου τύπου σε διαδοχικές θέσεις μνήμης. Κάθε τιμή που εκχωρείται σε μεταβλητή τύπου πίνακα ονομάζεται στοιχείο (Element) του πίνακα. Δείκτης Τιμές 0 8 1 5 2 10 3 9 4 4 5 6 7

Όνομα και Δείκτες Πίνακα Η τοποθέτηση σε διαδοχικές θέσεις μνήμης παρέχει τη δυνατότητα προσπέλασης των τιμών (των στοιχείων του) με κοινό όνομα (το όνομα της μεταβλητής) και έναν ή περισσότερους δείκτες (indexes), ανάλογα με το αν ο πίνακας έχει μια ή περισσότερες διαστάσεις. Οι δείκτες είναι αριθμοί που ακολουθούν το όνομα σε παρενθέσεις και προσδιορίζουν τη σχετική θέση ενός στοιχείου από την αρχή του πίνακα. Δείκτης Τιμές Α(0) 8 Α(1) 5 Α(2) 10 Α(3) 9 Α(4) 4 Α(5) 6 8

Δύο Διαστάσεις Δείκτης Στηλών Τιμή (0,0) Τιμή (0,1) Τιμή (0,2) Τιμή (0,3) Δείκτης Γραμμών Τιμή (1,0) Τιμή (2,0) Τιμή (1,1) Τιμή (2,1) Τιμή (1,2) Τιμή (2,2) Τιμή (1,3) Τιμή (2,3) Τιμή (3,0) Τιμή (3,1) Τιμή (3,2) Τιμή (3,3) 9

Περισσότερες Διαστάσεις https://msdn.microsoft.com/en-us/library/02e7z943.aspx 10

Δήλωση Πίνακα Οι πίνακες πριν χρησιμοποιηθούν πρέπει να δηλωθούν με δηλωτική πρόταση της μορφής: Dim όνομα (διάσταση) As τύπος Το όνομα ενός πίνακα αποτελεί όνομα μεταβλητής και υπακούει στους κανόνες ορισμού ονομάτων μεταβλητών Ο τύπος αφορά όλα τα στοιχεία του πίνακα Dim Grades(20) As Integer Dim Student_Names(100) As String Dim Timokatalogos(100) As Single 11

Δήλωση περισσοτέρων διαστάσεων Για δήλωση πίνακα με περισσότερες από μία διαστάσεις χρησιμοποιούμε δηλωτική πρόταση της μορφής: Dim όνομα (διάσταση1, διάσταση2,..., διάστασην) As τύπος Για κάθε μια διάσταση προσθέτουμε ένα κόμμα και έναν αριθμό που δηλώνει τη μέγιστη τιμή του δείκτη της συγκεκριμένης διάστασης. Για παράδειγμα, η παρακάτω δήλωση πίνακα μπορεί να διαχειριστεί τους βαθμούς 20 φοιτητών σε 3 μαθήματα: Dim Grades(19,2) As Integer Σημειώνουμε ότι ο δείκτης κάθε διάστασης αρχίζει από το μηδέν Έτσι, για 20 φοιτητές δηλώνουμε 19 (εύρος τιμών 0..19) και για 3 μαθήματα δηλώνουμε 2 (εύρος 0..2). 12

Παραδείγματα Δηλώσεων (1) Για να διαχειριστούμε τις βαθμολογίες 31 φοιτητών σε ένα μάθημα θα δηλώναμε έναν πίνακα με μία διάσταση και 31 στοιχεία ως εξής: Dim Grades(30) As Single Για να διαχειριστούμε τις βαθμολογίες 31 φοιτητών σε 10 μαθήματα μπορούμε να δηλώσουμε έναν πίνακα με δύο διαστάσεις ως εξής: 31 στοιχεία για την πρώτη διάσταση που παριστάνει τους 31 φοιτητές και 10 στοιχεία για τη δεύτερη διάσταση που παριστάνει τα 10 μαθήματα: Dim Grades(30,9) As Single 13

Παραδείγματα Δηλώσεων (2) Τέλος, αν θέλουμε να διαχειριστούμε τις βαθμολογίες από 20 Ιδρύματα της Χώρας, 31 φοιτητών σε 10 μαθήματα μπορούμε να δηλώσουμε έναν πίνακα με τρεις διαστάσεις ως εξής: 20 στοιχεία για την πρώτη διάσταση που παριστάνει τα 20 Ιδρύματα της Χώρας, 31 στοιχεία για τη δεύτερη διάσταση που παριστάνει τους 31 φοιτητές κάθε Ιδρύματος και 10 στοιχεία για την τρίτη διάσταση που παριστάνει τα 10 μαθήματα: Dim Grades(19,30,9) As Single 14

Αποθήκευση τιμής σε θέση πίνακα Η αποθήκευση τιμής σε μια θέση πίνακα γίνεται με τη χρήση του δείκτη ή των δεικτών (αν ο πίνακας είναι πολυδιάστατος) που προσδιορίζει τη συγκεκριμένη θέση: Dim i = 4, j = 2, numbers(10) As Integer Dim matrix(5, 5) As Double numbers(3) = 5 numbers(i + 1) = i matrix(3, j * 2) = j 15

Αλλαγή Διάστασης Μπορούμε να αλλάξουμε την ή τις διαστάσεις ενός πίνακα με την εντολή ReDim. Για παράδειγμα, αν δηλώσουμε τον παρακάτω πίνακα: Dim Grades(30) As Single μπορούμε να αλλάξουμε την διάστασή του ως εξής: ReDim Preserve Grades(40) ReDim Grades(50) Με την 1η εντολή αλλάζουμε το πάνω όριο της διάστασης του πίνακα Grades από 30 σε 40 διατηρώντας όσα στοιχεία είχαμε τοποθετήσει, ενώ στη 2η εντολή η αλλαγή του πάνω ορίου της διάστασης σε 50 δε διατηρεί κανένα από τα προηγούμενα στοιχεία του πίνακα. 16

Αλλαγή διάστασης με διατήρηση τιμών ΠΡΟΣΟΧΗ! με την εντολή ReDim Preserve μπορούμε να αλλάξουμε μόνο την τελευταία διάσταση ενός πίνακα και όχι τις υπόλοιπες. Για παράδειγμα, αν δηλώσουμε τον παρακάτω πίνακα: Dim Grades(30,10,15) As Single μπορούμε να αλλάξουμε μόνο την τελευταία του διάσταση ως εξής: ReDim Preserve Grades(30,10,25) ReDim Preserve Grades(30,10,5) 17

Δημιουργία Δυναμικού Πίνακα Με τη βοήθεια της εντολής ReDim μπορούμε να ορίσουμε δυναμικούς πίνακες, δηλαδή πίνακες των οποίων η διάσταση προσδιορίζεται κατά το χρόνο εκτέλεσης του προγράμματός μας Dim Grades() As Single εντολές κατά τις οποίες προσδιορίζεται η τιμή της μεταβλητής number ReDim Grades(number) 18

Οι συναρτήσεις Ubound() & Lbound() Δύο χρήσιμες συναρτήσεις που ισχύουν από παλαιότερες εκδόσεις της Visual Basic είναι οι : Lbound(όνομα πίνακα [,διάσταση]) και Ubound(όνομα πίνακα [,διάσταση]) και επιστρέφουν αντίστοιχα τη μικρότερη και μεγαλύτερη τιμή του δείκτη της συγκεκριμένης διάστασης. Για παράδειγμα, στην παρακάτω δήλωση πίνακα η συνάρτηση UBound(Grades,1) θα επιστρέψει 19 ενώ η συνάρτηση UBound(Grades,2) θα επιστρέψει 30 Dim Grades(19,30,9) As Single 19

Παράδειγμα 1 ο Dim temperatures(3) As Integer, i As Short For i = 0 To UBound(temperatures, 1) Console.WriteLine("Δώσε τη θερμοκρασία της ημέρας " & i) temperatures(i) = Console.ReadLine() Next For i = 0 To UBound(temperatures) Console.WriteLine("H θερμοκρασία της ημέρας " _ & i & " ήταν " & temperatures(i) ) Next 20

Παράδειγμα 2 ο Dim songs(0) As String, songname As String, i As Integer Do songname = InputBox("Δώσε ένα όνομα τραγουδιού:") If songname <> "" Then songs(ubound(songs)) = songname ReDim Preserve songs(0 To UBound(songs) + 1) End If Loop Until songname = "" ReDim Preserve songs(0 To UBound(songs) - 1) For i = LBound(songs) To UBound(songs) MsgBox(songs(i)) Next 21

Παράδειγμα εύρεσης μεγίστου Dim list() As Integer = {2, 3, 4, 1} Dim max As Integer max = list(0) For i = 1 To UBound(list) If max < list(i) Then max = list(i) End If Next Console.WriteLine("Max number is: " & max) 22

Παράδειγμα με δισδιάστατο πίνακα Dim list(,) As Integer = {{5, 6, 4, 10}, {8, 5, 3, 4}} Dim max As Integer max = list(0, 0) For i = 0 To UBound(list, 1) For j = 0 To UBound(list, 2) If max < list(i, j) Then max = list(i, j) End If Next Next Console.WriteLine("Max number is: " & max) 23

Παράδειγμα Ταξινόμησης (BubbleSort) 2 2 2 1 3 3 1 2 4 1 3 3 1 4 4 4 24

Παράδειγμα Ταξινόμησης πιο αναλυτικά 1 ο Πέρασμα 2 ο Πέρασμα 3 ο Πέρασμα 4 4 4 1 3 3 1 4 2 1 3 3 1 2 2 2 1 1 1 4 4 2 3 2 4 2 3 3 1 1 2 2 4 3 3 4 25

Ο Κώδικας της ταξινόμησης Do Until NoMoreSwaps = True NoMoreSwaps = True For Counter = UBound(list) To NumberOfItems Step -1 If list(counter) < list(counter - 1) Then NoMoreSwaps = False temp = list(counter) list(counter) = list(counter - 1) list(counter - 1) = temp End If Next NumberOfItems = NumberOfItems + 1 Loop 26

Σύνθετες Δομές Δεδομένων Με τον όρο σύνθετες δομές δεδομένων εννοούμε νέους τύπους δεδομένων που μπορούμε να ορίσουμε εμείς στηριζόμενοι στους βασικούς τύπους δεδομένων ή σε άλλους τύπους δεδομένων που έχουμε ορίσει προηγουμένως Η ανάγκη που κρύβεται πίσω από τους σύνθετους τύπους δεδομένων είναι η ανάγκη ομαδοποίησης, παράστασης και διαχείρισης δεδομένων της εφαρμογής μας που πάνε μαζί π.χ. Τα στοιχεία: όνομα, επώνυμο, φύλο, εξάμηνο, τμήμα και Ίδρυμα ενός φοιτητή ή οι συντεταγμένες x,y ενός σημείου, κ.ο.κ. Έχουμε δύο εναλλακτικές λύσεις για την ομαδοποίηση δεδομένων: τις σύνθετες δομένες δεδομένων (structures) και τα αντικείμενα (objects). Στη συνέχεια παρουσιάζουμε τις σύνθετες δομένες δεδομένων (structures) και σε άλλη ενότητα όπου ασχολούμαστε με τον αντικειμενοστραφή προγραμματισμό ασχολούμαστε με πολύ περισσότερες λεπτομέρειες με τα αντικείμενα. 27

Η Δομή Structure Η δομή structure αποτελεί γενίκευση του τύπου User- Defined Type (UDT) που υποστήριζαν προηγούμενες εκδόσεις της Visual Basic. Με τη δήλωση structure τώρα εκτός από πεδία (fields) μπορούμε να ορίσουμε ιδιότητες, μεθόδους ακόμα και συμβάντα. Στη συνέχεια δεν θα ασχοληθούμε με όλη την πολυπλοκότητα που απέκτησε η δομή structure στις τελευταίες εκδόσεις της γλώσσας VB.NET άλλωστε τέτοια θέματα θα τα δούμε στον αντικειμενοστραφή προγραμματισμό καλύτερα, θα ασχοληθούμε όμως με πεδία και μεθόδους ώστε να οδηγηθούμε ομαλότερα στην ανάγκη της δομής ενός object και γενικότερα του αντικειμενοστραφούς προγραμματισμού. 28

Η Δήλωση Structure (1) Η δήλωση structure αρχίζει με την εντολή Structure και ολοκληρώνεται με την εντολή End Structure Ανάμεσα στις δύο παραπάνω εντολές πρέπει να ορίσουμε τουλάχιστον ένα στοιχείο. Τα στοιχεία μπορεί να είναι οποιουδήποτε τύπου όμως τουλάχιστον ένα πρέπει να είναι μια μεταβλητή, π.χ. Public Structure PhoneEntry Public firstname As String Public lastname As String Public phone As String Private dateofbirth As Date End Structure 29

Η Δήλωση Structure (2) Ο τύπος δεδομένων των μεταβλητών που περιλαμβάνονται σε μια δήλωση structure μπορεί να είναι είτε ένας από τους βασικούς τύπους δεδομένων που υποστηρίζει η Visual Basic είτε κάποιος άλλος οριζόμενος τύπος δεδομένων όπως για παράδειγμα κάποια άλλη σύνθετη δομή που ορίστηκε με άλλη δήλωση structure. 30

Χρήση της δομής Structure (1) Η αποθήκευση δεδομένων σε μια δομή structure γίνεται με την χρήση μεταβλητών τύπου αυτής της σύνθετης δομής. Για παράδειγμα σε μια εφαρμογή για να διαχειριστούμε στοιχεία ενός ατόμου που ανήκει στη δομή PhoneEntry ορίζουμε μια μεταβλητή ως εξής: Dim p As PhoneEntry 31

Χρήση της δομής Structure (2) Η αναφορά στα πεδία μιας σύνθετης δομής γίνεται με τον συνδυασμό του ονόματος της μεταβλητής και του ονόματος του πεδίου. Η ανάθεση τιμής στα πεδία μιας μεταβλητής μπορεί να γίνει με τον τελεστή της ισότητας για το κάθε επιμέρους στοιχείο της μεταβλητής π.χ. p.firstname = "Μαρία" p.lastname = "Ανδρέου" p.phone = "694567890" p.dateofbirth= #29/10/1993# 32

Παράδειγμα 1 Public Structure Zari Private dicevalue As Byte Private diceimage As String Public Sub RollDice() dicevalue = Int(Rnd() * 6 + 1) diceimage = Choose(diceValue, "1.bmp", "2.bmp", _ "3.bmp", "4.bmp", "5.bmp", "6.bmp") End Sub End Structure 33

Παράδειγμα 2 Public Structure Card 'Η δομή κάρτας Dim Id As Byte Dim Suit As String Dim Rank As String End Structure 'O αριθμός κάρτας 'Το χρώμα κάρτας 'Ο βαθμός κάρτας Public Structure adeck 'Η δομή τράπουλας Public Deck() As Card Private Position As Byte 'Μεταβλητή για τη θέση της κάρτας 'Πίνακας με τις κάρτες της τράπουλας Public Sub SetUpDeck() 'Αρχικοποιεί τις κάρτες της τράπουλας End Sub Public Sub SetUpDeck() Dim C, S, tmp As Integer ReDim Deck(52) For S = 1 To 4 For C = 1 To 13 tmp = (S - 1) * 13 + C With Deck(tmp).Id = tmp.suit = Choose(S, "Σπαθί", "Καρό", "Μπαστούνι", "Κούπα").Rank = Choose(C, "Ασσος", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Βαλές", "Ντάμα", "Ρήγας").ImageFile = "C" & tmp & ".gif End With Next C Next S Position = 1 End Sub Public Function Deal() As Card 'Επιστρέφει την επόμενη κάρτα End Function End Structure Public Function Deal() As Card Deal = Deck(Position) If Position < 52 Then Position = Position + 1 Else MsgBox("Είναι η τελευταία κάρτα!") End If End Function 34

Τέλος Ενότητας