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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

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

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

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

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

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

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

Visual Basic Βασικές Έννοιες

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Βασικά Στοιχεία της Java

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

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

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

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

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

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

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

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

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Εντολές επιλογής Επαναλήψεις (if, switch, while)

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

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

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

Pascal. 15 Νοεμβρίου 2011

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

Pascal, απλοί τύποι, τελεστές και εκφράσεις

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

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

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

Βασικά Στοιχεία της Java

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

Τύποι δεδομένων, τελεστές, μεταβλητές

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 3 : Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

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

Πληροφορική ΙΙ Θεματική Ενότητα 7

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

Transcript:

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

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

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

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

Περιεχόμενα Μεταβλητές Τελεστές - Πράξεις Εντολές Λήψης Αποφάσεων Εντολές Επαναλήψεις Συναρτήσεις (Sub και Function) Πίνακες 5

Μεταβλητές Τελεστές - Πράξεις

Μεταβλητές Για την αποθήκευση και την επεξεργασία των δεδομένων (data) που διαχειρίζεται ένα πρόγραμμα χρησιμοποιούμε τις μεταβλητές. Οι μεταβλητές αντιστοιχούν σε θέσεις μνήμης του Η/Υ και χαρακτηρίζονται από: ένα όνομα (name), μια τιμή (value) και έχουν κάποιον τύπο (type) 7

Στοιχεία των Μεταβλητών Το όνομα μιας μεταβλητής μπορεί να δημιουργηθεί από συνδυασμό γραμμάτων (πεζών ή κεφαλαίων), ψηφίων καθώς και το χαρακτήρα υπογράμμισης (underscore _). Πιο συγκεκριμένα το όνομα της μεταβλητής πρέπει να αρχίζει με γράμμα, να είναι μοναδικό στην εμβέλειά της δηλαδή δε μπορούμε να έχουμε πανομοιότυπα ονόματα (στην ίδια περιοχή εμβέλειας) Η τιμή μιας μεταβλητής μπορεί να εκχωρηθεί στην αρχή του προγράμματος (ως σταθερά) ή να προκύψει μέσα από την εκτέλεση των εντολών του Ο τύπος μιας μεταβλητής προσδιορίζει το χώρο μνήμης που θα δεσμεύσει ο υπολογιστής κατά την εκτέλεση του προγράμματος καθώς και την οργάνωση με την οποία θα αποθηκευτεί η τιμή αυτή 8

Δήλωση Μεταβλητών Για τη δήλωση των μεταβλητών χρησιμοποιούμε την εντολή Dim. Dim όνομα μεταβλητής [As όνομα τύπου] Μπορεί όμως να δηλωθεί και με τα Private ή Public ή Static (γιαυτό θα μιλήσουμε σε λίγο ) Παραδείγματα: Dim a As integer Dim x As String Dim sum As integer, choice As boolean, LastName As string Dim x, y, z, sum As Single 9

Τύποι Δεδομένων (1) Όνομα Τύπου Μέγεθος Εύρος τιμών Byte 8-bit (1 byte) 0 έως 255 (χωρίς πρόσημο) SByte 8-bit (1 byte) -128 έως 127 (με πρόσημο) Short (short integer) 16-bit (2 bytes) -32,768 έως 32,767 (με πρόσημο) UShort 16-bit (2 bytes) 0 έως 65,535 (χωρίς πρόσημο) Integer 32-bit (4 bytes) -2,147,483,648 έως 2,147,483,647 (με πρόσημο) UInteger 32-bit (4 bytes) 0 έως 4,294,967,295 (χωρίς πρόσημο) Long (long integer) 64-bit (8 bytes) -9,223,372,036,854,775,808 έως 9,223,372,036,854,775,807 (9.2...E+18) (με πρόσημο) ULong 64-bit (8 bytes) 0 έως 18,446,744,073,709,551,615 (1.8...E+19) (χωρίς πρόσημο) 10

Τύποι Δεδομένων (2) Όνομα Τύπου Μέγεθος Εύρος τιμών Single (single-precision floating-point) Double (double-precision floating-point) Decimal 32-bit (4 bytes) 64-bit (8 bytes) 128-bit (16 bytes) -3.4028235E+38 έως -1.401298E-45 για αρνητικές τιμές 1.401298E-45 έως 3.4028235E+38 για θετικές τιμές -1.79769313486231570E+308 έως -4.94065645841246544E-324 για αρνητικές τιμές 4.94065645841246544E-324 έως 1.79769313486231570E+308 για θετικές τιμές 0 έως +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9...E+28) χωρίς δεκαδικά 0 έως +/-7.9228162514264337593543950335 με 28 θέσεις δεκαδικών O μικρότερος μη-αρνητικός αριθμός είναι +/- 0.0000000000000000000000000001 (+/-1E-28) 11

Τύποι Δεδομένων (3) Όνομα Τύπου Μέγεθος Εύρος τιμών Boolean 8-bit (1 byte) True ή False Char 16-bit (2 bytes) 0 έως 65535 (χωρίς πρόσημο) (single character) String (variable-length) Συνήθως 16-bit ανά χαρακτήρα 0 έως περίπου 2 δισεκατομμύρια Unicode χαρακτήρες 16-bit unicode χαρακτήρες Date 64-bit (8 bytes) 0:00:00 (μεσάνυχτα) Ιανουάριος 1, 0001 έως 11:59:59 μμ Δεκέμβριος 31, 9999 Object 32-bit (4 bytes) Οποιοσδήποτε τύπος μπορεί να αποθηκευτεί σε μια μεταβλητή τύπου Object Στην επιστημονική σημειογραφία το "E" συμβολίζει τη δύναμη του 10. Ετσι 3.56E+2 σημαίνει 3.56 x 10 2 ή αλλιώτικα 356 και 3.56E-2 σημαίνει 3.56 / 10 2 ή 0.0356. 12

Εμβέλεια Μεταβλητών (1) Κατά τη δήλωση μεταβλητών μπορούμε να χρησιμοποιήσουμε τις εντολές Private και Public (πιο αναλυτικά θα το συζητήσουμε σε επόμενη ενότητα) ή Static: Με τη δήλωση Public δηλώνουμε μεταβλητές που θέλουμε να έχουν καθολική εμβέλεια, δηλαδή να είναι ορατές από όλα τα σημεία-ενότητες κώδικα του προγράμματός μας Με τη δήλωση Private δηλώνουμε μεταβλητές που θέλουμε να έχουν τοπική εμβέλεια δηλαδή είτε μέσα σε μια διαδικασία ή το πολύ μέσα σε μια ενότητα κώδικα Με τη δήλωση Static δηλώνουμε μεταβλητές που θέλουμε να διατηρούνται στη μνήμη του προγράμματός μας παρά τον τερματισμό της διαδικασίας που δηλώθηκαν (θα μιλήσουμε πιο αναλυτικά στην ενότητα διαδικασίες) 13

Εμβέλεια Μεταβλητών (2) Module Procedure Block 14

Σταθερές Οι σταθερές (constants) αποτελούν επώνυμες τιμές που το πρόγραμμα δεν έχει το δικαίωμα να αλλάξει κατά τη διάρκεια της εκτέλεσής του. Οι σταθερές μπορεί να είναι οποιουδήποτε τύπου από αυτούς που ήδη αναφέραμε πχ integer, single, char, string κ.λπ. Διαχειριζόμαστε μια σταθερά όπως και μια κανονική μεταβλητή με τη μόνη διαφορά ότι η τιμή της δε μπορεί να αλλάξει μετά τη δήλωσή της. 15

Παραδείγματα Δηλώσεων Σταθερών Const maxscore As Long = 100000 Const message As String = "TEI PIRAEUS" Const FPA As Single = 0.23 Const is_a_vip_customer As Boolean = false Sub Main() Const PI As Double = 3.14149 Dim radius, area As Single radius = 7 area = PI * radius * radius Console.WriteLine("Area = " & area) Console.ReadKey() End Sub 16

Πλεονεκτήματα χρήσης σταθερών Προσδίδει σαφήνεια στον κώδικα του προγράμματός μας Είναι ευκολότερη η συντήρηση του προγράμματός μας σε περίπτωση αλλαγής στο μέλλον της τιμής της σταθεράς για παράδειγμα αν η τιμή του ΦΠΑ αλλάξει στο μέλλον το μόνο που έχουμε να κάνουμε είναι να αλλάξουμε μόνο τη γραμμή δήλωσης της σταθεράς FPA Προστατεύει την τιμή της σταθεράς από κατά λάθος αλλαγή της τιμής σε κάποιο άλλο σημείο του κώδικά μας πχ FPA=0.023 17

Αριθμητικοί Τελεστές Αριθμητικές Παραστάσεις 3 + 4 * 120 Data * 0.06 + 100 (12 - Data)\8 + 10 Z = ((a + b) ^ ( n)) / b 18

Προτεραιότητα πράξεων 1. Η παράσταση που βρίσκεται μέσα σε παρένθεση έχει την υψηλότερη προτεραιότητα 2. Ο τελεστής ύψωσης σε δύναμη (Power operator: ^) 3. Η πράξη που περιέχει μοναδιαίο τελεστή (Unary minus) 4. Πολλαπλασιασμός και διαίρεση (*, /) 5. Ακεραία διαίρεση (Integer division: \) 6. Υπόλοιπο διαίρεσης (Modulus operator: Mod) 7. Αφαίρεση και Πρόσθεση (-, +) 8. Ο τελεστής ανάθεσης (=) έχει τη χαμηλότερη προτεραιότητα από όλους τους αριθμητικούς τελεστές 19

Παραδείγματα Προτεραιότητας Πράξεων 20

Αριθμητικές παραστάσεις με δεδομένα διαφορετικού τύπου Το αποτέλεσμα μιας αριθμητικής παράστασης με τελούμενα διαφορετικών τύπων θα είναι του τύπου δεδομένων που είναι περισσότερο ακριβής ή καταλαμβάνει μεγαλύτερο χώρο στη μνήμη Για παράδειγμα το άθροισμα ενός Integer με έναν Long θα δώσει αποτέλεσμα τύπου Long, o πολλαπλασιασμός ενός Single με έναν Integer θα δώσει αποτέλεσμα τύπου Single H VB.NET κάνει σιωπηρή μετατροπή τύπου όταν κάνει ανάθεση τιμής ενός μικρότερου τύπου δεδομένων σε έναν μεγαλύτερο και αντιστρόφως. Παραδείγματα: Dim Result As Double Result = 500 To 500 μετατρέπεται σε Double αποθηκεύεται στη Result Dim Count As Integer Count = 10 / 3 Το 3.33333 γίνεται 3 και αποθηκεύεται στην Count Dim N As Integer = 12.78 Το 12.78 γίνεται 13 & αποθηκεύεται στο N 21

Τελεστές Συνδυασμένης Ανάθεσης Μπορούμε να τους χρησιμοποιήσουμε όταν εμφανίζεται η ίδια μεταβλητή και στα 2 μέρη μιας ανάθεσης: Dim Number As Integer Number = 5 Number = Number + 2 => Number += 2 Number = Number - 6 => Number -= 6 Number = Number ^ 3 => Number ^= 3 Number = Number * (12\5) => Number *= 12\5 22

Τελεστές Σύγκρισης Τελεστής Περιγραφή Παράδειγμα = αν οι τιμές των δύο τελούμενων είναι ίσες τότε η συνθήκη είναι αληθής <> αν οι τιμές των δύο τελούμενων είναι άνισες τότε η συνθήκη είναι αληθής > αν η τιμή του αριστερού τελούμενου είναι μεγαλύτερη από την τιμή του δεξιού τελούμενου τότε η συνθήκη είναι αληθής < αν η τιμή του αριστερού τελούμενου είναι μικρότερη από την τιμή του δεξιού τελούμενου τότε η συνθήκη είναι αληθής >= αν η τιμή του αριστερού τελούμενου είναι μεγαλύτερη ή ίση από την τιμή του δεξιού τελούμενου τότε η συνθήκη είναι αληθής <= αν η τιμή του αριστερού τελούμενου είναι μικρότερη ή ίση από την τιμή του δεξιού τελούμενου τότε η συνθήκη είναι αληθής (A = B) is not true. (A <> B) is true. (A > B) is not true. (A < B) is true. (A >= B) is not true. (A <= B) is true. Όπου Α=10 και Β=20 23

Λογικοί Τελεστές Τελεστής Περιγραφή Παράδειγμα And Αν είναι true και τα 2 τελούμενα η συνθήκη είναι true (A And B) is False. Or Not Αν ένα από τα 2 τελούμενα είναι true ή και τα 2 είναι true τότε η συνθήκη είναι true (A Or B) is True. Αν η συνθήκη είναι true τότε με τον τελεστή NOT θα γίνει false Not(A And B) is True. Xor AndAlso OrElse IsFalse IsTrue Η συνθήκη είναι true αν μόνο ένα από τα 2 τελούμενα είναι true Αν το 1 ο τελούμενο είναι true τότε προχωρά στην αποτίμηση και του 2 ου τελούμενου και αν είναι επίσης true το αποτέλεσμα είναι true Αν το 1 ο τελούμενο είναι true δεν προχωρά στην αποτίμηση και του 2 ου τελούμενου και το αποτέλεσμα είναι true. Αν το 1 ο τελούμενο είναι false τότε προχωρά και στην αποτίμηση του 2 ου τελούμενου και αν είναι true το αποτέλεσμα είναι true αλλιώτικα είναι false Προσδιορίζει αν μια παράσταση είναι False. Προσδιορίζει αν μια παράσταση είναι True. A Xor B is True. (A AndAlso B) is False. (A OrElse B) is True. Όπου Α=true και Β=false 24

Λογικοί Τελεστές (AND) If expression1 is And expression2 is The value of result is True True True True False False False True False False False False result = expression1 And expression2 25

Λογικοί Τελεστές (OR) If expression1 is And expression2 is The value of result is True True True True False True False True True False False False result = expression1 Or expression2 26

Λογικοί Τελεστές (NOT) If expression is The value of result is True False False True result = NOT expression 27

Λογικοί Τελεστές (XOR) If expression1 is And expression2 is The value of result is True True False True False True False True True False False False result = expression1 XOr expression2 28

Λογικοί Τελεστές (AndAlso) If expression1 is And expression2 is The value of result is True True True True False False False (not evaluated) False result = expression1 AndAlso expression2 29

Λογικοί Τελεστές (OrElse) If expression1 is And expression2 is The value of result is True (not evaluated) True False True True False False False result = expression1 OrElse expression2 30

Συναρτήσεις μετατροπής τύπου Όνομα Τύπος Εύρος expression argument CBool Boolean Data Type (Visual Basic) Any valid Char or String or numeric expression. CByte Byte Data Type (Visual Basic) 0 through 255 (unsigned); fractional parts are rounded. 1 CChar Char Data Type (Visual Basic) Any valid Char or String expression; only first character of a String is converted; value can be 0 through 65535 (unsigned). CDate Date Data Type (Visual Basic) Any valid representation of a date and time. CDbl CDec CInt Double Data Type (Visual Basic) Decimal Data Type (Visual Basic) -1.79769313486231570E+308 through -4.94065645841246544E-324 for negative values; 4.94065645841246544E-324 through 1.79769313486231570E+308 for positive values. +/-79,228,162,514,264,337,593,543,950,335 for zero-scaled numbers, that is, numbers with no decimal places. For numbers with 28 decimal places, the range is +/- 7.9228162514264337593543950335. The smallest possible non-zero number is 0.0000000000000000000000000001 (+/-1E-28). -2,147,483,648 through 2,147,483,647; fractional parts are rounded. 1 Integer Data Type (Visual Basic) CLng Long Data Type (Visual Basic) -9,223,372,036,854,775,808 through 9,223,372,036,854,775,807; fractional parts are rounded. 1 CObj Object Data Type Any valid expression. CSByte SByte Data Type (Visual Basic) -128 through 127; fractional parts are rounded. 1 CShort Short Data Type (Visual Basic) -32,768 through 32,767; fractional parts are rounded. 1 CSng Single Data Type (Visual Basic) -3.402823E+38 through -1.401298E-45 for negative values; 1.401298E-45 through 3.402823E+38 for positive values. CStr String Data Type (Visual Basic) Returns for CStr depend on the expression argument. See Return Values for the CStr Function (Visual Basic). CUInt UInteger Data Type 0 through 4,294,967,295 (unsigned); fractional parts are rounded. 1 CULng ULong Data Type (Visual Basic) 0 through 18,446,744,073,709,551,615 (unsigned); fractional parts are rounded. 1 CUShort UShort Data Type (Visual Basic) 0 through 65,535 (unsigned); fractional parts are rounded. 1 31

Εντολές Λήψης Αποφάσεων

Περιεχόμενα Η Δομή If...Then Η Δομή If... Then... Else Η Δομή If... Then... ElseIf Η Δομή Select Case 33

Εντολές Λήψης Αποφάσεων Η Visual Basic παρέχει τρεις εντολές Λήψης Αποφάσεων. Οι εντολές αυτές επηρεάζουν τη ροή του προγράμματός μας με βάση την ικανοποίηση ή μη κάποιας ή κάποιων συνθηκών. Με τη χρήση των εντολών λήψης αποφάσεων τα προγράμματά μας γίνονται περισσότερο ευέλικτα και ικανά να διαχειριστούν την επίλυση των διαφόρων προβλημάτων - καταστάσεων. Οι 3 εντολές Λήψης Αποφάσεων είναι: If...Then If... Then... Else και If... Then... ElseIf Select Case 34

Η Δομή If Then Η δομή If... Then ελέγχει μια συνθήκη. Εάν η συνθήκη αυτή είναι αληθής (True) εκτελούνται οι εντολές που βρίσκονται μετά το Then. Οι εντολές μπορούν να γραφούν σε μια γραμμή ή σε ξεχωριστές Εαν επιλέξουμε σύνταξη μιας γραμμής τότε οι εντολές διαχωρίζονται με το σύμβολο «:» Εαν επιλέξουμε σύνταξη πολλών γραμμών τότε μετά την τελευταία εντολή πρέπει να προσθέσουμε End If. 35

Παραδείγματα Dim count As Integer = 0 Dim message As String If count = 0 Then message = "There are no items." ElseIf count = 1 Then message = "There is 1 item." Else message = "There are " & count & " items." End If 36

Η Δομή If Then Else Η δομή If... Then... Else χρησιμοποιείται όταν έχουμε δύο εναλλακτικές με βάση τη συνθήκη και μας ενδιαφέρει η εκτέλεση ενός συνόλου εντολών Έτσι στην παρακάtω δομή If εκτελείται μόνο το Σύνολο_Εντολών_1 ή μόνο το Σύνολο_Εντολών_2 ανάλογα με το αν η συνθήκη είναι αληθής (True) ή ψευδής (False) αντίστοιχα. If <συνθήκη> Then Else End If Σύνολο_Εντολών_1 Σύνολο_Εντολών_2 37

Η Δομή If Then ElseIf Όταν έχουμε περισσότερες των δυο πιθανών εναλλακτικών περιπτώσεων που καθορίζουν τη ροή του προγράμματός μας, χρησιμοποιούμε την παρακάτω δομή If : If <συνθήκη1> Then Σύνολο_Εντολών_1 ElseIf <συνθήκη2> Then Σύνολο_Εντολών_2 ElseIf <συνθήκη3> Then... Else End If Σύνολο_Εντολών_3 Σύνολο_ΕντολώνN 38

Παραδείγματα If mesos_oros < 10 Then result = "Failed" Else result = "Passed" End If If mesos_oros>=8.5 Then msg = "Άριστα" ElseIf mesos_oros>=7 Then msg = "Λίαν Καλώς" ElseIf mesos_oros>=6 Then msg = "Καλώς" ElseIf mesos_oros>=5 Then msg = "Μέτρια" Else msg = "Απορρίπτεται" End If Πρέπει να είστε ιδιαίτερα προσεκτικοί στην επιλογή της σειράς των εντολών. Για παράδειγμα αν στον παραπάνω κώδικα,που χαρακτηρίζει το βαθμό του πτυχίου βάσει του μέσου όρου των μαθημάτων, η συνθήκη mesos_oros>=5 μπεί στο πρώτο If τότε φοιτητής με μέσο όρο 6 θα χαρακτηριστεί με άριστη απόδοση. 39

Η Δομή Select Case Η συγκεκριμένη εντολή δέχεται μια τιμή (προκύπτει από την "έκφραση") και με βάση αυτήν επιλέγεται η πρώτη περίπτωση που η τιμή της αντιστοιχεί με την τιμή της έκφρασης. Έτσι εκτελούνται μόνο οι εντολές που αντιστοιχούν σε αυτήν την περίπτωση (case) Π.χ Οι διάφορες περιπτώσεις μπορεί να πάρουν και πιο ευέλικτες μορφές όπως: Select Case έκφραση Case τιμή1 Σύνολο_Εντολών_1 Case τιμή2 Σύνολο_Εντολών_2... Case τιμήν Σύνολο_Εντολών_Ν Case Else Σύνολο_Εντολών End Select Case -2 To 2, 5 To 9,11, 13, Is > maxnumber 40

Παραδείγματα Dim grade As Char grade = "B" Select Case grade Case "A" Console.WriteLine("Excellent!") Case "B", "C" Console.WriteLine("Well done") Case "D" Console.WriteLine("You passed") Case "F" Console.WriteLine("Better try again") Case Else Console.WriteLine("Invalid grade") End Select Console.WriteLine("Your grade is " & grade) Select Case Season Case 1 msg = "Winter" Case 2 msg = "Spring" Case 3 msg = "Summer" Case 4 msg = "Autumn" End Select Select Case agerange Case 16 To 21 Console.WriteLine( Still Young ) Case 50 To 64 Console.WriteLine( Start Lying ) End Select 41

Select Case vs ElseIf Η Select Case μπορεί να αντικαταστήσει τα πολλαπλά ElseIf σε μια δομή επιλογής. Ας δούμε το παράδειγμα με το χαρακτηρισμό της βαθμολογίας και με τις δυο περιπτώσεις. If mesos_oros>=8.5 Then msg = "Άριστα" ElseIf mesos_oros>=7 Then msg = "Λίαν Καλώς" ElseIf mesos_oros>=6 Then msg = "Καλώς" ElseIf mesos_oros>=5 Then msg = "Μέτρια" Else msg = "Απορρίπτεται" End If Select Case mesos_oros Case Is >= 8.5 msg = "Άριστα" Case Is >= 7 msg = "Λίαν Καλώς" Case Is >= 6 msg = "Καλώς" Case Is >= 5 msg = "Μέτρια" Case Else msg = "Απορρίπτεται" End Select 42

Εντολές Επανάληψης

Περιεχόμενα Η Δομή For... Next Η Δομή Do... Loop 44

Η Δομή For Next Χρησιμοποιούμε τη δομή "For...Next" για να επαναλάβουμε ένα συγκεκριμένο αριθμό φορών την εκτέλεση ενός συνόλου εντολών (το σύνολο των εντολών το δηλώνουμε μεταξύ του For και του Next). Η συγκεκριμένη δομή χρησιμοποιεί μια μεταβλητή ελέγχου ως "μετρητή" των επαναλήψεων. Εμείς μπορούμε να καθορίσουμε την αρχική και την τελική τιμή του μετρητή καθώς και το "βήμα" της αύξησης ή μείωσης (το βήμα μπορεί να είναι και αρνητικό). For Μετρητής = Αρχική_τιμή to Τελική_τιμή [Step βήμα] εκτελέσιμη εντολή 1 εκτελέσιμη εντολή 2... εκτελέσιμη εντολή K Next [Μετρητής] 45

Παραδείγματα (1) For X=1 to 100 Console.WriteLine(X) Νext X S = 0 For X=0 to 100 If X Mod 2 = 0 Then S = S + X^2 Νext X S = 0 For X=1 to 100 Step 2 S = S + X Νext X Dim Index, S as Integer For Index=1 to 100 S=S+Index If (S>10) Then Exit For Νext Index 46

Παραδείγματα (2) Στο παρακάτω τμήμα προγράμματος υπολογίζεται με τη βοήθεια της μεταβλητής s το άθροισμα: 1 2 +(0.9) 2 +(0.8) 2 +...+(0.1) 2 [=3.85] Dim i as double, s as double s = 0 For i=1 to 0.1 step 0.1 s = s + i^2 Next I 47

Η Δομή Do Loop (1) Οταν ο αριθμός των επαναλήψεων δεν είναι γνωστός και εξαρτάται από κάποια συνθήκη χρησιμοποιούμε τη δομή "Do... Loop" Η δομή "Do... Loop" παρουσιάζεται με τις παρακάτω μορφές: --- 1η Μορφή --- --- 2η Μορφή --- Do {While Until} συνθήκη Do [εντολές] [εντολές] Loop Loop {While Until} συνθήκη 48

Η Δομή Do Loop (2) --- 1η Μορφή --- --- 2η Μορφή --- Do {While Until} συνθήκη Do [εντολές] [εντολές] Loop Loop {While Until} συνθήκη Στην 1η μορφή η συνθήκη εξετάζεται πρώτα ενώ στη 2η μορφή εξετάζεται στο τέλος. Συνεπώς, στην 1η μορφή η συνθήκη μπορεί να αποτρέψει εντελώς τις επαναλήψεις ενώ στη 2η μορφή θα έχουμε τουλάχιστον μια επανάληψη. Η συνθήκη συνοδεύεται με το While ή το Until. Αν έχουμε "While συνθήκη" σημαίνει "Οσο η συνθήκη=true επανέλαβε" ενώ αν έχουμε "Until συνθήκη" σημαίνει "Μέχρι η συνθήκη να γίνει ίση με true επανέλαβε". Αρα με While τερματίζουμε τις επαναλήψεις όταν γίνει "συνθήκη=false" ενώ με Until όταν γίνει "συνθήκη=true" 49

Παράδειγμα Do While Loop Στο επόμενο τμήμα προγράμματος εισάγεται ένας αριθμός στη μεταβλητή number τύπου Integer. Οσο η τιμή που πληκτρολογούμε δε βρίσκεται εντός του διαστήματος [1,10], εμφανίζεται σχετικό μήνυμα και ξαναζητείται τιμή για τη number. Dim number As Integer Console.Write("Δώσε έναν αριθμό από το 1 έως το 10=") number = Console.ReadLine() Do While (number < 1 Or number > 10) Console.WriteLine("Ο αριθμός δεν είναι στο διάστημα [1,10]") Console.Write("Δώσε έναν αριθμό από το 1 έως το 10=") number = Console.ReadLine() Loop 50

Παράδειγμα Do Until Loop Το επόμενο τμήμα προγράμματος κάνει ακριβώς ότι και το προηγούμενο χρησιμοποιώντας "Until συνθήκη". Eισάγεται ένας αριθμός στη μεταβλητή number τύπου Integer. Οσο η τιμή που πληκτρολογούμε δε βρίσκεται εντός του διαστήματος [1,10], εμφανίζεται σχετικό μήνυμα και ξαναζητείται τιμή για τη number. Dim number As Integer Console.Write("Δώσε έναν αριθμό από το 1 έως το 10=") number = Console.ReadLine() Do Until (number >= 1 And number <= 10) Console.WriteLine("Ο αριθμός δεν είναι στο διάστημα [1,10]") Console.Write("Δώσε έναν αριθμό από το 1 έως το 10=") number = Console.ReadLine() Loop 51

Παράδειγμα Do Loop While Το επόμενο τμήμα προγράμματος κάνει ακριβώς ότι και τα προηγούμενα δύο χρησιμοποιώντας "While συνθήκη" στο τέλος. Eισάγεται ένας αριθμός στη μεταβλητή number τύπου Integer. Οσο η τιμή που πληκτρολογούμε δε βρίσκεται εντός του διαστήματος [1,10], εμφανίζεται σχετικό μήνυμα και ξαναζητείται τιμή για τη number. Dim number As Integer Do Console.Write("Δώσε έναν αριθμό από το 1 έως το 10=") number = Console.ReadLine() If (number < 1 Or number > 10) Then Console.WriteLine("Ο αριθμός δεν είναι στο διάστημα [1,10]") End If Loop While (number < 1 Or number > 10) 52

Παράδειγμα Do Loop Until Το επόμενο τμήμα προγράμματος κάνει ακριβώς ότι και το προηγούμενο χρησιμοποιώντας "Until συνθήκη" στο τέλος. Eισάγεται ένας αριθμός στη μεταβλητή number τύπου Integer. Οσο η τιμή που πληκτρολογούμε δε βρίσκεται εντός του διαστήματος [1,10], εμφανίζεται σχετικό μήνυμα και ξαναζητείται τιμή για τη number. Dim number As Integer Do Console.Write("Δώσε έναν αριθμό από το 1 έως το 10=") number = Console.ReadLine() If (number < 1 Or number > 10) Then Console.WriteLine("Ο αριθμός δεν είναι στο διάστημα [1,10]") End If Loop Until (number >= 1 And number <= 10) 53

Ατέρμονες επαναλήψεις Είναι επαναλήψεις στις οποίες δεν υπάρχει τρόπος διαφυγής. Δείτε το παρακάτω τμήμα κώδικα: Dim number As Integer Do Console.Write("Δώσε έναν αριθμό ή -1 για ΤΕΡΜΑΤΙΣΜΟ. ") number = Console.ReadLine() number = number ^ 2 Console.WriteLine("To τετράγωνό του είναι " & number) Loop While number <> -1 54

Ατέρμονες επαναλήψεις παράδειγμα Μια βελτίωση του προηγούμενου προγράμματος για να έχουμε τρόπο διαφυγής είναι και η παρακάτω: Dim number As Integer Do Console.Write("Δώσε έναν αριθμό ή -1 για ΤΕΡΜΑΤΙΣΜΟ. ") number = Console.ReadLine() if number = -1 Then Exit Do number = number ^ 2 Console.WriteLine("To τετράγωνό του είναι " & number) Loop 55

Διαδικασίες (Sub & Function)

Περιεχόμενα Η Διαδικασία Function Η Διαδικασία Sub Παράμετροι Επιστρεφόμενες τιμές Θέματα Εμβέλειας 57

Διαδικασίες Εισαγωγικά Η διαδικασία είναι μια «επώνυμη» μονάδα κώδικα. Την «καλούμε» με το όνομά της κάθε φορά που χρειαζόμαστε να εκτελεστεί το σύνολο των εντολών που περιέχει. Στη συνέχεια ο έλεγχος μεταφέρεται στο τμήμα του κώδικα που την κάλεσε Κυρίως Πρόγραμμα Διαδικασίες Δ-1 Δ-2 Δ-3 Δ-4 58

Είδη Διαδικασιών Μια διαδικασία υλοποιεί μια συγκεκριμένη εργασία, άρα με αυτό τον τρόπο κάνουμε «οικονομία» στον κώδικα του προγράμματός μας χωρίζοντάς τον σε μικρότερα τμήματα που τα καλούμε κάθε φορά που τα χρειαζόμαστε (εύκολη συντήρηση του κώδικά μας) Η Visual Basic παρέχει δύο ειδών διαδικασίες: Sub και Function Η διαφορά των διαδικασιών τύπου Function από τις διαδικασίες τύπου Sub βρίσκεται στο γεγονός ότι οι functions έχουν υποχρέωση μετά την κλήση τους να επιστρέψουν μια τιμή. Η τιμή αυτή επιστρέφεται στο όνομα της διαδικασίας 59

Η Διαδικασία Function Ορίζεται με δηλωτικές προτάσεις που καθορίζουν την αρχή και το τέλος της. Μεταξύ της αρχής και του τέλους της διαδικασίας τοποθετούνται οι εντολές που θέλουμε να εκτελεστούν οι εντολές μπορεί να είναι εκτελέσιμες προτάσεις που να καλούν άλλες διαδικασίες τύπου Sub ή function καθώς και δηλωτικές προτάσεις Στην αρχική δηλωτική πρόταση μιας διαδικασίας προσδιορίζονται: η εμβέλειά (scope) της, δηλαδή αν θα είναι «ορατή» και θα μπορεί να κληθεί από άλλες ενότητες κώδικα το όνομά της, με το οποίο θα αναγνωρίζεται από το σύστημα της γλώσσας προγραμματισμού Visual Basic οι παράμετροι της, δηλαδή το είδος και το πλήθος τιμών που θα διαβιβάζονται στη διαδικασία για επεξεργασία ο τύπος της επιστρεφόμενης τιμής, δηλαδή μια δήλωση ενός τύπου δεδομένων της γλώσσας προγραμματισμού Visual Basic 60

Επιστρεφόμενη Τιμή σε Function Όταν δηλώνουμε μια συνάρτηση θα πρέπει να υπάρχει οπωσδήποτε μέσα στον κώδικα ορισμού της μια τουλάχιστον εκτελέσιμη εντολή, με την οποία εκχωρείται στο όνομα της συνάρτησης η τιμή που επιστρέφεται από τη συνάρτηση. 61

Ορισμός Διαδικασίας Function εμβέλεια Function ονομα (λίστα παραμέτρων ) As τύπος_επιστροφής ' εντολή 1 ' εντολή 2 ' εντολή κ End Sub Εμβέλεια = Public ή Private Λίστα Παραμέτρων = Μία λίστα με δηλώσεις μεταβλητών διαχωρισμένες με κόμμα «,» Για τη λίστα παραμέτρων θα μιλήσουμε σε λίγο πιο αναλυτικά 62

Παραδείγματα Functions Function calc(byval N1 As Integer, ByVal N2 As Integer) As Integer Return (N1 + N2) ή calc = N1+N2 End Function Function calc(byval N1 As Integer, ByVal N2 As Integer) As Integer Dim result As Integer result = N1 + N2 Return result ή calc=result End Function Function Calc(ByVal N1 As Double, ByVal N2 As Double, ByVal telestis As Char) As Double If telestis = "+" Then Return (N1+N2) ή calc = N1+N2 If telestis = "-" Then Return (N1-N2) ή calc = N1-N2 If telestis = "*" Then Return (N1*N2) ή calc = N1*N2 End Sub 63

Η Διαδικασία Sub Ορίζεται με δηλωτικές προτάσεις που καθορίζουν την αρχή και το τέλος της. Μεταξύ της αρχής και του τέλους της διαδικασίας τοποθετούνται οι εντολές που θέλουμε να εκτελεστούν οι εντολές μπορεί να είναι εκτελέσιμες προτάσεις που να καλούν άλλες διαδικασίες τύπου Sub ή function καθώς και δηλωτικές προτάσεις Στην αρχική δηλωτική πρόταση μιας διαδικασίας προσδιορίζονται: η εμβέλειά (scope) της, δηλαδή αν θα είναι «ορατή» και θα μπορεί να κληθεί από άλλες ενότητες κώδικα το όνομά της, με το οποίο θα αναγνωρίζεται από το σύστημα της γλώσσας προγραμματισμού Visual Basic οι παράμετροι της, δηλαδή το είδος και το πλήθος τιμών που θα διαβιβάζονται στη διαδικασία για επεξεργασία 64

Ορισμός Διαδικασίας Sub εμβέλεια Sub ονομα (λίστα παραμέτρων ) ' εντολή 1 ' εντολή 2 ' εντολή κ End Sub Εμβέλεια = Public ή Private Λίστα Παραμέτρων = Μία λίστα με δηλώσεις μεταβλητών διαχωρισμένες με κόμμα «,» Για τη λίστα παραμέτρων θα μιλήσουμε σε λίγο πιο αναλυτικά 65

Μια απλή διαδικασία Sub Sub simplecalculator() 'Είσοδος δεδομένων Dim Num1, Num2, result As Double, operand As Char Console.Write("Give the 1st number?") Num1 = Console.ReadLine() Console.Write("Give the 2nd number?") Num2 = Console.ReadLine() Console.Write("Give the operand (+,-,*)?") operand = Console.ReadLine() 'Επεξεργασία δεδομένων If operand = "+" Then result = Num1 + Num2 If operand = "-" Then result = Num1 - Num2 If operand = "*" Then result = Num1 * Num2 'Έξοδος - Αποτελέσματα Console.WriteLine() Console.WriteLine("**********Program Output************") Console.WriteLine(Num1 & operand & Num2 & " = " & result) End Sub 66

Διαδικασία Sub με παράμετρο Sub saymessage(byval msg As String) Dim stamp As Date stamp = TimeOfDay() MsgBox("Message at " & stamp & msg) End Sub 67

Παραδείγματα Διαδικασιών Sub Sub Main() 'Είσοδος δεδομένων Dim Num1, Num2, result As Double, operand As Char Call DataEntry(Num1, Num2, operand) 'Επεξεργασία δεδομένων Call Calculate(Num1, Num2, operand, result) 'Έξοδος - Αποτελέσματα Call PrintResults(Num1, Num2, operand, result) End Sub Sub DataEntry(ByRef N1 As Double, ByRef N2 As Double, ByRef telestis As Char) Console.Write("Give the 1st number?") N1 = Console.ReadLine() Console.Write("Give the 2nd number?") N2 = Console.ReadLine() Console.Write("Give the operand (+,-,*)?") telestis = Console.ReadLine() End Sub Sub Calculate(ByVal N1 As Double, ByVal N2 As Double, ByVal telestis As Char, ByRef apotelesma As Double) If telestis = "+" Then apotelesma = N1 + N2 If telestis = "-" Then apotelesma = N1 - N2 If telestis = "*" Then apotelesma = N1 * N2 End Sub Sub PrintResults(ByVal N1 As Double, ByVal N2 As Double, ByVal telestis As Char, ByRef apotelesma As Double) Console.WriteLine("**********Program Output************") Console.WriteLine(N1 & telestis & N2 & " = " & apotelesma) End Sub 68

Παράμετροι Διαδικασιών Οι παράμετροι σε μια διαδικασία Sub ή Function είναι υποθετικές μεταβλητές (λέγονται και τυπικές παράμετροι - Formal parameters) που ενδεικτικά προσδιορίζουν τον τύπο και το πλήθος τιμών οι οποίες θα διαβιβάζονται στη διαδικασία κατά την κλήση της. Οι τιμές που διαβιβάζονται στη συνάρτηση κατά την κλήση της συνήθως αποκαλούνται ορίσματα (arguments) ή πραγματικές παράμετροι και είναι παραστάσεις ή μεταβλητές που χρησιμοποιούνται στο τμήμα κώδικα της διαδικασίας. Η λίστα παραμέτρων μπορεί να είναι κενή και αν είναι περισσότερες από μια διαχωρίζονται με κόμματα Για κάθε παράμετρο αναγράφεται το εικονικό της όνομα και ο τύπος της. 69

Παράμετροι με Τιμή ή με Αναφορά (ByVal, ByRef) Κατά τη δήλωση παραμέτρων σε μια διαδικασία Sub ή Function μπορούμε να καθορίσουμε και το αν επιτρέπεται ή όχι η τροποποίηση των τιμών που θα διαβιβαστούν Με τη δήλωση ByVal (παράμετρος με τιμή) αυτό που διαβιβάζεται δεν επιτρέπεται να τροποποιηθεί (διαβίβαση μόνο της τιμής) Με τη δήλωση ByRef (παράμετρος με αναφορά) αυτό που διαβιβάζεται επιτρέπεται να τροποποιηθεί (διαβίβαση αναφοράς) 70

Παραδείγματα ByVal, ByRef με functions '**** main program *** a = 2 : b = 3 Sum = calc(a, b) Console.WriteLine("Sum= " & Sum & " a= " & a & " b= " & b) '--------------------------------------------------------------- Function calc(byval N1 As Integer, ByVal N2 As Integer) As Integer calc = N1+N2 N1 = N1+1 N2 = N2+1 End Function '--------------------------------------------------------------- Function calc(byref N1 As Integer, ByRef N2 As Integer) As Integer calc = N1+N2 N1 = N1+1 N2 = N2+1 End Function 71

Παραδείγματα ByVal, ByRef με Subs Sub Main() 'Είσοδος δεδομένων Dim Num1, Num2, result As Double, operand As Char Call DataEntry(Num1, Num2, operand) 'Επεξεργασία δεδομένων Call Calculate(Num1, Num2, operand, result) 'Έξοδος - Αποτελέσματα Call PrintResults(Num1, Num2, operand, result) End Sub Sub DataEntry(ByRef N1 As Double, ByRef N2 As Double, ByRef telestis As Char) Console.Write("Give the 1st number?") N1 = Console.ReadLine() Console.Write("Give the 2nd number?") N2 = Console.ReadLine() Console.Write("Give the operand (+,-,*)?") telestis = Console.ReadLine() End Sub Sub Calculate(ByVal N1 As Double, ByVal N2 As Double, ByVal telestis As Char, ByRef apotelesma As Double) If telestis = "+" Then apotelesma = N1 + N2 If telestis = "-" Then apotelesma = N1 - N2 If telestis = "*" Then apotelesma = N1 * N2 End Sub Sub PrintResults(ByVal N1 As Double, ByVal N2 As Double, ByVal telestis As Char, ByVal apotelesma As Double) Console.WriteLine("**********Program Output************") Console.WriteLine(N1 & telestis & N2 & " = " & apotelesma) End Sub 72

Εμβέλεια Διαδικασιών Κατά τη δήλωση μιας διαδικασίας μπορούμε να χρησιμοποιήσουμε τις εντολές Private & Public : Με τη δήλωση Public δηλώνουμε διαδικασίες που θέλουμε να έχουν καθολική εμβέλεια, δηλαδή να είναι ορατές από όλα τα σημεία-ενότητες κώδικα του προγράμματός μας Με τη δήλωση Private δηλώνουμε διαδικασίες που θέλουμε να έχουν τοπική εμβέλεια δηλαδή μόνο μέσα στην ενότητα κώδικα που ανήκουν 73

Παράδειγμα Εμβέλειας Διαδικασιών Module Mod_1 Public Sub Mod_1_Sub_1 Private Sub Mod_1_Sub_2 Public Function Mod_1_F1 Private Function Mod_1_F2 Module Mod_2 Public Sub Mod_2_Sub_1 Private Sub Mod_2_Sub_2 Public Function Mod_2_F1 Private Function Mod_2_F2 «Ορατές» διαδικασίες στην ενότητα Mod_2 από την ενότητα Mod_1 είναι οι Mod_1_Sub_1 και Mod_1_F1 ενώ στην ενότητα Mod_1 από την ενότητα Mod_2 είναι οι διαδικασίες Mod_2_Sub_1 και Mod_2_F1 74

Εμβέλεια Διαδικασιών & Μεταβλητών Module Mod_1 Public A As Integer Private B As Integer Public Sub Mod_1_Sub_1 Dim C As Integer Private Function Mod_1_F1 Dim D As Integer Dim E As Integer «Ορατές» διαδικασίες έξω από την ενότητα Mod_1 είναι μόνο η Mod_1_Sub_1 και «ορατές» μεταβλητές μόνο η Α. Μέσα στην ενότητα Mod_1 «ορατές» είναι τόσο οι διαδικασίες Mod_1_Sub_1 και Mod_1_F1 όσο και οι μεταβλητές A, B. ΠΡΟΣΟΧΗ στην Mod_1_F1 ισχύει η τοπική μεταβλητή Α 75

Στατικές Μεταβλητές Module Mod_1 Public A As Integer Private B As Integer Public Sub Sub_1 Static D As Integer Η μεταβλητή D διατηρεί την τιμή της και μετά την ολοκλήρωση της διαδικασίας Sub_1 76

Πίνακες

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

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

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

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

Δύο Διαστάσεις Δείκτης Στηλών Τιμή (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) 82

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

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

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

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

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

Αποθήκευση τιμής σε θέση πίνακα Η αποθήκευση τιμής σε μια θέση πίνακα γίνεται με τη χρήση του δείκτη ή των δεικτών (αν ο πίνακας είναι πολυδιάστατος) που προσδιορίζει τη συγκεκριμένη θέση: 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 88

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