NotesVB61

35
1 1. Εισαγωγή Η Microsoft Visual Basic 6.0 είναι μια από τις πιο πρόσφατες έκδοσης της γλώσσας προγραμματισμού BASIC (Beginner's All-Purpose Symbolic Instruction Code). Αν και διατηρεί την κληρονομιά της BASIC, προσφέρει ένα ολοκληρωμένο περιβάλλον ανάπτυξης εφαρμογών για Windows. Ειδικά για τους νέους προγραμματιστές προσφέρει μια εξαιρετική εισαγωγή στον προγραμματισμό των Windows αφού είναι εύκολη και γρήγορη στην εκμάθησή της, παρέχοντας έναν εύχρηστο και ικανό τρόπο ανάπτυξης προγραμμάτων για Windows (http://www.microsoft.com/vbasic). Με τον όρο γλώσσα προγραμματισμού εννοούμε ένα υποσύνολο της αγγλικής γλώσσας, όπου επιτρέπει στον προγραμματιστή να δίνει στον υπολογιστή μονοσήμαντες εντολές. Μια γλώσσα προγραμματισμού είναι μια γλώσσα την οποία μπορεί να κατανοήσει ο υπολογιστής. Ενώ αντιθέτως, μια φυσική γλώσσα, σαν τα Ελληνικά ή τα Αγγλικά είναι πολύ γενική και διφορούμενη για τον υπολογιστή. Οι γλώσσες προγραμματισμού διακρίνονται σε δύο κατηγορίες: α) χαμηλού επιπέδου γλώσσες (low level languages) και β) υψηλού επιπέδου γλώσσες (high level languages). Οι γλώσσες χαμηλού επιπέδου είναι συγγενικές με τη γλώσσα μηχανής (τη μόνη γλώσσα που μπορεί να καταλάβει ο υπολογιστής), όπου συνδυασμοί δυαδικών αριθμών έχουν αντικατασταθεί με μνημονικούς συμβολισμούς. Οι γλώσσες αυτές είναι ιδιαίτερα δύσκολες στη χρήση τους. Οι γλώσσες υψηλού επιπέδου αναπτύχθηκαν για να διευκολυνθεί η συγγραφή προγραμμάτων σε ιδιαίτερο περιβάλλον όπως επιστημονικό, επιχειρηματικό ή εκπαιδευτικό. Παραδείγματα τέτοιων γλωσσών είναι η Visual Basic, η Pascal, η C++, η Fortran κ.ά. Είναι εύκολες στην εκμάθησή τους και ανεξάρτητες από τα διάφορα συστήματα υπολογιστών. Η Visual Basic ως γλώσσα υψηλού επιπέδου εκμεταλλεύεται όλες τις δυνατότητες (όπως γραφικές, πολυμέσων, online και πολυεπεξεργασίας) που προσφέρουν τα Windows. Η Microsoft έχει κυκλοφορήσει πολλές εκδόσεις της Visual Basic 6.0. Ορισμένες από αυτές είναι η εκπαιδευτική έκδοση, η τυποποιημένη έκδοση και η επιχειρηματική έκδοση. Η τελευταία έκδοση της Visual Basic είναι η Visual Basic .NET. 2. Εκκίνηση της Visual Basic Η Visual Basic είναι μια εφαρμογή για Windows, συνεπώς μπορείτε να τη φορτώσετε και να την εκτελέσετε όπως και άλλα προγράμματα των Windows (π.χ. Microsoft Word, Microsoft Excel). Για την εκκίνηση της Visual Basic ακολουθείστε τα παρακάτω βήματα: Κάντε κλικ στο πλήκτρο Start (Έναρξη). Επιλέξετε από το μενού που εμφανίζεται την επιλογή Programs (Προγράμματα). Επιλέξετε από το δεύτερο μενού Microsoft Visual Studio 6.0. Επιλέξετε από το τρίτο μενού Microsoft Visual Basic 6.0. Η οθόνη του υπολογιστή σας θα μοιάζει με την παρακάτω εικόνα.

Transcript of NotesVB61

Page 1: NotesVB61

1

1. Εισαγωγή Η Microsoft Visual Basic 6.0 είναι µια από τις πιο πρόσφατες έκδοσης της γλώσσας προγραµµατισµού BASIC (Beginner's All-Purpose Symbolic Instruction Code). Αν και διατηρεί την κληρονοµιά της BASIC, προσφέρει ένα ολοκληρωµένο περιβάλλον ανάπτυξης εφαρµογών για Windows. Ειδικά για τους νέους προγραµµατιστές προσφέρει µια εξαιρετική εισαγωγή στον προγραµµατισµό των Windows αφού είναι εύκολη και γρήγορη στην εκµάθησή της, παρέχοντας έναν εύχρηστο και ικανό τρόπο ανάπτυξης προγραµµάτων για Windows (http://www.microsoft.com/vbasic). Με τον όρο γλώσσα προγραµµατισµού εννοούµε ένα υποσύνολο της αγγλικής γλώσσας, όπου επιτρέπει στον προγραµµατιστή να δίνει στον υπολογιστή µονοσήµαντες εντολές. Μια γλώσσα προγραµµατισµού είναι µια γλώσσα την οποία µπορεί να κατανοήσει ο υπολογιστής. Ενώ αντιθέτως, µια φυσική γλώσσα, σαν τα Ελληνικά ή τα Αγγλικά είναι πολύ γενική και διφορούµενη για τον υπολογιστή. Οι γλώσσες προγραµµατισµού διακρίνονται σε δύο κατηγορίες: α) χαµηλού επιπέδου γλώσσες (low level languages) και β) υψηλού επιπέδου γλώσσες (high level languages). Οι γλώσσες χαµηλού επιπέδου είναι συγγενικές µε τη γλώσσα µηχανής (τη µόνη γλώσσα που µπορεί να καταλάβει ο υπολογιστής), όπου συνδυασµοί δυαδικών αριθµών έχουν αντικατασταθεί µε µνηµονικούς συµβολισµούς. Οι γλώσσες αυτές είναι ιδιαίτερα δύσκολες στη χρήση τους. Οι γλώσσες υψηλού επιπέδου αναπτύχθηκαν για να διευκολυνθεί η συγγραφή προγραµµάτων σε ιδιαίτερο περιβάλλον όπως επιστηµονικό, επιχειρηµατικό ή εκπαιδευτικό. Παραδείγµατα τέτοιων γλωσσών είναι η Visual Basic, η Pascal, η C++, η Fortran κ.ά. Είναι εύκολες στην εκµάθησή τους και ανεξάρτητες από τα διάφορα συστήµατα υπολογιστών. Η Visual Basic ως γλώσσα υψηλού επιπέδου εκµεταλλεύεται όλες τις δυνατότητες (όπως γραφικές, πολυµέσων, online και πολυεπεξεργασίας) που προσφέρουν τα Windows. Η Microsoft έχει κυκλοφορήσει πολλές εκδόσεις της Visual Basic 6.0. Ορισµένες από αυτές είναι η εκπαιδευτική έκδοση, η τυποποιηµένη έκδοση και η επιχειρηµατική έκδοση. Η τελευταία έκδοση της Visual Basic είναι η Visual Basic .NET. 2. Εκκίνηση της Visual Basic Η Visual Basic είναι µια εφαρµογή για Windows, συνεπώς µπορείτε να τη φορτώσετε και να την εκτελέσετε όπως και άλλα προγράµµατα των Windows (π.χ. Microsoft Word, Microsoft Excel). Για την εκκίνηση της Visual Basic ακολουθείστε τα παρακάτω βήµατα: • Κάντε κλικ στο πλήκτρο Start (Έναρξη). • Επιλέξετε από το µενού που εµφανίζεται την επιλογή Programs (Προγράµµατα). • Επιλέξετε από το δεύτερο µενού Microsoft Visual Studio 6.0. • Επιλέξετε από το τρίτο µενού Microsoft Visual Basic 6.0. Η οθόνη του υπολογιστή σας θα µοιάζει µε την παρακάτω εικόνα.

Page 2: NotesVB61

2

Αφού γίνουν τα παραπάνω βήµατα θα εµφανιστεί ένα παράθυρο διαλόγου µε τίτλο New Project το οποίο παρέχει διάφορες επιλογές σχετικά µε τον τύπο προγράµµατος που θέλετε να δηµιουργήσετε.

• Ένα θέλετε να ξεκινήσετε ένα καινούργιο αυτόνοµο πρόγραµµα σε Visual Basic τότε επιλέξετε το

εικονίδιο Standard.EXE και κάντε διπλό κλικ. Οι υπόλοιπες επιλογές που εµφανίζονται αφορούν πιο έµπειρους προγραµµατιστές και δεν θα µας απασχολήσουν. Εναλλακτικά, µπορείτε να ξεκινήσετε ένα καινούργιο πρόγραµµα επιλέγοντας από τη γραµµή µενού της Visual Basic File ⇒ New Project.

• Εάν θέλετε να αναζητήσετε κάποιο αποθηκευµένο πρόγραµµα µπορείτε να το κάνετε από το παράθυρο διαλόγου New Project µέσω της επιλογής Existing (υπάρχοντα προγράµµατα) ή Recent (τα πιο πρόσφατα προγράµµατα που επεξεργαστήκατε). Εναλλακτικά, µπορείτε να αναζητήσετε ένα υπάρχων πρόγραµµα επιλέγοντας από τη γραµµή µενού της Visual Basic File ⇒ Open Project.

Τώρα µπήκατε στο ολοκληρωµένο περιβάλλον ανάπτυξης (integrated development environment) της Visual Basic. 3. Περιβάλλον Ανάπτυξης Το ολοκληρωµένο περιβάλλον ανάπτυξης της Visual Basic περιέχει τα ακόλουθα στοιχεία (επόµενη εικόνα): • Στο επάνω µέρος της οθόνης υπάρχει η γραµµή τίτλου που περιέχει τα όνοµα της τρέχουσας εργασίας

(αρχικά Project1), τον τίτλο (Microsoft Visual Basic), την κατάσταση λειτουργίας ([Design] ή [Run]) και τα πλήκτρα ελαχιστοποίησης, µεγιστοποίησης και κλείσιµο παραθύρου.

• Κάτω από τη γραµµή τίτλου βρίσκεται η γραµµή µενού η οποία περιέχει δεκατρία πτυσσόµενα µενού

File, Edit, View, Project, Format, Debug, Run, Query, Diagram, Tools, Add-Ins, Window και Help. Κάθε µενού περιέχει µια οµάδα σχετιζόµενων εντολών τις οποίες µπορείτε να επιλέξετε για να δηλώσετε τι θέλετε να κάνει η Visual Basic. Οι εντολές των µενού είναι όλες οι εντολές που χρειάζεται ο προγραµµατιστής για τη δηµιουργία ενός προγράµµατος και είναι οργανωµένες σε λογικές ενότητες. Για παράδειγµα, όλες οι εντολές που έχουν σχέση µε τη δηµιουργία (New), άνοιγµα (Open), πρόσθεση (Add), αποµάκρυνση (Remove) ή αποθήκευση (Save) ενός προγράµµατος βρίσκονται στο µενού File.

Page 3: NotesVB61

3

• Κάτω από τη γραµµή µενού βρίσκεται η γραµµή εργαλείων η οποία περιέχει έναν αριθµό εικονιδίων που προσφέρουν συντοµεύσεις στις πιο συχνά χρησιµοποιούµενες εντολές της Visual Basic. Αρχικά εµφανίζεται, η τυποποιηµένη (standard) γραµµή εργαλείων.

• Το παράθυρο φόρµας είναι η πρωτεύουσα περιοχή εργασίας. Είναι το παράθυρο στο οποίο

δηµιουργείτε τη διασύνδεση χρήστη του προγράµµατός σας. Αποτελεί το σηµείο εκκίνησης του σχεδιασµού κάθε προγράµµατος της Visual Basic. Ο σχεδιασµός της διασύνδεσης χρήστη ξεκινά πάντοτε από τη δηµιουργία της φόρµας. Στη συνέχεια, επάνω στη φόρµα θα χτιστούν σιγά-σιγά τα υπόλοιπα τµήµατα του προγράµµατος. Κατά τη διάρκεια του σχεδιασµού της φόρµας εµφανίζεται επάνω στην επιφάνεια της, ένα πλέγµα (Grid) το οποίο αποτελείται από µικρές µαύρες τελείες που ισαπέχουν µεταξύ τους. Οι τελείες αυτές δε εµφανίζονται κατά την εκτέλεση του προγράµµατος, αλλά αποτελούν βοήθηµα του προγραµµατιστή για την τοποθέτηση και το σχεδιασµό των εργαλείων της Visual Basic. Ένα πρόγραµµα της Visual Basic µπορεί να περιέχει µια ή περισσότερες φόρµες.

• Η εργαλειοθήκη (toolbox) περιέχει χειριστήρια (ή εργαλεία) που µπορείτε να χρησιµοποιείται για να

προσθέσετε σε ένα πρόγραµµα πλήκτρα εντολών, πλαίσια κειµένου, ετικέτες κλπ. Αφού προσθέσετε χειριστήρια σε µια φόρµα αυτά γίνονται αντικείµενα του προγράµµατος, δηλαδή προγραµµατιζόµενα στοιχεία του περιβάλλοντος του προγράµµατος.

• Το παράθυρο εξερεύνησης έργου (project explorer) εµφανίζει σε δοµή δένδρου όλα τα αρχεία του

έργου (προγράµµατος) τα οποία δηµιουργούν την εφαρµογή. Αναλυτικότερα, το παράθυρο αυτό εµφανίζει αρχεία φόρµας, αρχεία λειτουργικής µονάδας (δηλαδή αρχεία που περιέχουν κώδικα προγράµµατος), αρχεία κλάσης (δηλαδή προχωρηµένες λειτουργικές µονάδες) κλπ. Ένα έργο είναι µια συλλογή των αρχείων που δηµιουργείτε και τα οποία αποτελούν την εφαρµογή για Windows.

• Το παράθυρο ιδιοτήτων (properties) περιέχει τις ιδιότητες της επιλεγµένης φόρµας ή του επιλεγµένου

χειριστηρίου και επιτρέπει την τροποποίησή τους. Με τον όρο ιδιότητα εννοούµε κάποιο χαρακτηριστικό µιας φόρµας ή ενός χειριστηρίου π.χ. µέγεθος, τίτλος, χρώµα. Κάθε χειριστήριο έχει έναν αριθµό ιδιοτήτων. Κάθε τύπος χειριστηρίου διαθέτει διαφορετικό σύνολο ιδιοτήτων.

• Το παράθυρο διάταξης φόρµας (form layout) επιτρέπει τον καθορισµό της αρχικής θέσης της φόρµας

στην οθόνη του υπολογιστή όταν εκτελείται η εφαρµογή.

Page 4: NotesVB61

4

Το ολοκληρωµένο περιβάλλον ανάπτυξης της Visual Basic περιλαµβάνει ισχυρά εργαλεία για να δηµιουργείτε, να εκτελείτε και να διαχειρίζεστε τα προγράµµατά σας. Πριν αρχίσετε τη συγγραφή ενός προγράµµατος αποµακρυνθείτε από τον υπολογιστή σας και σχεδιάστε το πρόγραµµά σας χρησιµοποιώντας µολύβι και χαρτί. Αφού καθορίσετε τι ακριβώς θέλετε να κάνει το πρόγραµµά σας (δηλαδή τι δεδοµένα θέλετε να εισάγετε, τι αποτελέσµατα θέλετε να λαµβάνετε και πως θα γίνεται η επεξεργασία των δεδοµένων) µπορείτε να αρχίσετε να γράφετε το πρόγραµµα στον υπολογιστή. Για τη δηµιουργία ενός προγράµµατος στη Visual Basic απαιτούνται τα παρακάτω προγραµµατιστικά βήµατα: • ∆ηµιουργία διασύνδεσης χρήστη. • Ορισµός ιδιοτήτων. • Συγγραφή κώδικα προγράµµατος. 3.1 Εργαλειοθήκη Η εργαλειοθήκη περιέχει ένα σύνολο από τυποποιηµένα χειριστήρια ή εργαλεία τα οποία µπορείτε να χρησιµοποιήσετε για να προσθέσετε σε µια φόρµα πλήκτρα εντολών, πλαίσια κειµένου, ετικέτες κ.λπ. Τα χειριστήρια αυτά αναπαριστώνται στην εργαλειοθήκη µε εικονίδια και είναι τα ακόλουθα: ∆είκτης (Pointer), Πλαίσιο Εικόνας (PictureBox), Ετικέτα (Label), Πλαίσιο Κειµένου (TextBox), Πλαίσιο (Frame), Πλήκτρο Εντολής (CommandButton), Πλαίσιο Επιλογής (CheckBox), Πλήκτρο Επιλογής (OptionButton), Πλαίσιο Πτυσσόµενης Λίστας (ComboBox), Πλαίσιο Λίστας (ListBox), Οριζόντια Ράβδος Κύλισης (HscrollBox), Κατακόρυφη Ράβδος Κύλισης (VscrollBox), Χρονοδιακόπτης (Timer), Πλαίσιο Λίστας Καταλόγου (DriveListBox), Πλαίσιο Λίστας Αρχείου (FileListBox), Σχήµα (Shape), Γραµµή (Line), ∆εδοµένα (Data) και χειριστήριο OLE (OLE). Το πλαίσιο εικόνας επιτρέπει την πρόσθεση ψηφιογραφικών εικόνων. Η ετικέτα χρησιµοποιείται όταν απαιτείται παρουσίαση κειµένου µε γραφικό τρόπο χωρίς το κείµενο αυτό να µπορεί να τροποποιηθεί άµεσα από τον χρήστη. Το πλαίσιο κειµένου είναι χώροι τοποθέτησης κειµένου, όπου το κείµενο παρέχεται εξωτερικά και δεν αποθηκεύεται στο πλαίσιο. Ο χρονοδιακόπτης επιτρέπει τη δηµιουργία συµβάντων σε προκαθορισµένες χρονικές στιγµές. Το χειριστήριο δεδοµένων παρέχει πρόσβαση σε υπάρχουσες βάσεις δεδοµένων. Το χειριστήριο OLE επιτρέπει τη δηµιουργία συνδέσµων µε άλλα προγράµµατα. Αναλυτικότερη περιγραφή των χειριστηρίων δίνεται στον επόµενο πίνακα. Για να εισάγετε ένα χειριστήριο στη φόρµα κάντε τις ακόλουθες ενέργειες: • Κάντε κλικ στο χειριστήριο που επιθυµείτε να εισάγετε. • Τοποθετήστε το δείκτη του ποντικιού επάνω στη φόρµα. Το χειριστήριο θα επιλεγεί και ο δείκτης

του ποντικιού θα µετατραπεί σε σταυρόνηµα µόλις τον τοποθετήσετε στη φόρµα. Το σταυρόνηµα θα σας βοηθήσει να σχεδιάστε το ορθογώνιο σχήµα του χειριστηρίου.

• ∆ηµιουργείστε ένα ορθογώνιο σχήµα κρατώντας πατηµένο το αριστερό πλήκτρο του ποντικιού και σύροντας το ποντίκι προς τα κάτω. Απελευθερώστε το πλήκτρο του ποντικιού όταν δείτε ένα σχήµα που σας ικανοποιεί.

Αφού προσθέσετε χειριστήρια σε µια φόρµα αυτά γίνονται αντικείµενα του προγράµµατος δηλαδή προγραµµατιζόµενα στοιχεία του περιβάλλοντος του προγράµµατος. Η εργαλειοθήκη εκτός από τα τυποποιηµένα χειριστήρια µπορεί να εµφανίζει και πρόσθετα χειριστήρια. Τα πρόσθετα αυτά χειριστήρια µπορεί να είναι είτε χειριστήρια ActiveX τα οποία συνοδεύουν την Visual Basic, είτε χειριστήρια ActiveX που µπορείτε να δηµιουργήσετε µόνοι σας ή να προµηθευτείτε από άλλους κατασκευαστές. Για να εγκαταστήσετε τα χειριστήρια ActiveX της Visual Basic, ανοίξτε το µενού Project, επιλέξτε την εντολή Components και στη συνέχεια επιλέξτε Controls. Η καρτέλα Controls εµφανίζει αλφαβητικό κατάλογο των χειριστηρίων ActiveX του συστήµατός σας τα οποία µπορείτε να προσθέστε στην εργαλειοθήκη του έργου σας.

Page 5: NotesVB61

5

Pointer: ακυρώνει οποιαδήποτε προηγούµενη επιλογή εργαλείου. Είναι το µοναδικό εργαλείο µε το οποίο δε µπορούµε να σχεδιάσουµε κάποιο αντικείµενο.

PictureBox: χρησιµοποιείται για την εµφάνιση αρχείων εικόνων και γραφικών. Το αρχείο εικόνας που εµφανίζεται είναι αυτό που τίθεται στην ιδιότητα Picture του εργαλείου.

Label: το εργαλείο ετικέτας εµφανίζει στη φόρµα το κείµενο που τίθεται στην ιδιότητα Caption και ο χρήστης δεν µπορεί να το µεταβάλει. Συνήθως χρησιµοποιείται δίπλα από άλλο αντικείµενο και περιγράφει το περιεχόµενο του ή τη λειτουργία του.

TextBox: εµφανίζει κείµενο το οποίο µπορεί να επεξεργαστεί ο χρήστης. Η σηµαντικότερη ιδιότητα του είναι το Text όπου µπορείτε είτε να θέσετε το κείµενο που θα εµφανισθεί είτε να διαβάσετε το κείµενο που εισάγει ο χρήστης.

CommandButton: είναι το συνηθέστερο εργαλείο που χρησιµοποιείται στη φόρµα. Στο εργαλείο αυτό πρέπει να γράψουµε κώδικα στο Click Event ώστε να εκτελεστεί η ενέργεια που θέλουµε όταν ο χρήστης κάνει κλικ στο κουµπί.

Frame: το εργαλείο αυτό χρησιµοποιείται για σχεδίαση πλαισίων που σκοπό έχουν την οµαδοποίηση άλλων στοιχείων.

CheckBox: παρουσιάζει µία ή περισσότερες επιλογές από τις οποίες µπορεί να επιλέξει ο χρήστης. Η κύρια ιδιότητα του είναι το Value που εάν είναι 0 είναι καθαρό και 1 είναι επιλεγµένο. Λειτουργεί σαν διακόπτης και αλλάζει κατάσταση κάθε φορά που χρήστης κάνει σε αυτό κλικ.

OptionButton: τα κουµπιά επιλογής εµφανίζονται σε οµάδες από τις οποίες ο χρήστης µπορεί να επιλέξει µόνο ένα. Κάθε φορά που επιλέγεται κάποιο επιλέγονται και τα υπόλοιπα της ίδιας οµάδος. Λειτουργεί και αυτό σαν διακόπτης και η ιδιότητα του Checked γίνεται True όταν είναι επιλεγµένο και False όταν δεν είναι επιλεγµένο.

ListBox: περιέχει µία λίστα επιλογών από τις οποίες µπορεί ο χρήστης να επιλέξει µία ή περισσότερες. Ο χρήστης µπορεί να κυλήσει µέσα στη λίστα χρησιµοποιώντας τα αντίστοιχα βέλη του χειριστηρίου και να επιλέξει το επιθυµητό. Το επιλεγµένο στοιχείο της λίστας µπορούµε να το πάρουµε από την ιδιότητα Text.

ComboBox: είναι παρόµοιο µε το προηγούµενο όµως η λίστα εµφανίζεται όταν ο χρήστης κάνει κλικ στο βελάκι του χειριστηρίου. Μπορεί επίσης µε ανάλογο κώδικα να επιτρέψει στον χρήστη την εισαγωγή νέων στοιχείων στη λίστα.

Horizontal, Vertical ScroollBar: οι οριζόντια και κατακόρυφη γραµµή κύλισης χρησιµοποιούνται συνήθως για να καθορισθεί κάποιο µέγεθος άλλου αντικειµένου. Πιέζοντας τα αντίστοιχα βελάκια των χειριστηρίων η ιδιότητα Value.

Timer: µπορεί να χρησιµοποιηθεί για προγραµµατισµό εργασιών σε χρονικά διαστήµατα που καθορίζονται στην ιδιότητα Interval. Εάν η ιδιότητα τεθεί π.χ. στο 10000, το χειριστήριο θα εκτελέσει το πρόγραµµα που γράφτηκε στο συµβάν Timer, σε 10 Sec.

Line, Shape: τα εργαλεία αυτά χρησιµοποιούνται για να σχεδιάζουµε γραµµές, κύκλους ή άλλα σχήµατα. Το εργαλείο Line δίνει τη δυνατότητα στο χρήστη να επιλέξει την εµφάνιση της γραµµής µέσα από ποικιλία σχεδίων. Το εργαλείο Shape επιτρέπει την επιλογή από ένα πλήθος γεωµετρικών σχηµάτων (π.χ. τετράγωνο, ορθογώνιο, κύκλος).

DriveListBox: εµφανίζει τις µονάδες δίσκων σε αναπτυσσόµενη λίστα και ο χρήστης µπορεί να επιλέξει.

DirectoryListBox: εµφανίζει την λίστα όλων των φακέλων για την τρέχουσα µονάδα δίσκου σε µορφή αντίστοιχη µε αυτή του Windows Explorer.

FileListBox: εµφανίζει τα αρχεία του τρέχοντος καταλόγου. Ο συνδυασµός των τριών αυτών εργαλείων, δίνει πλήρη έλεγχο στην δοµή των δίσκων και των αρχείων του συστήµατος.

Image: εµφανίζει εικόνες και γραφικά όπως και το PictureBox, αξιοποιώντας όµως καλύτερα τη µνήµη και τις πηγές του συστήµατος.

OLE: είναι το εργαλείο µε το οποίο µπορούµε να επικοινωνήσουµε µε άλλες εφαρµογές και να τοποθετήσουµε στη φόρµα µας π.χ. κείµενο του Word ή λογιστικό φύλλο του Excel.

Data: παρέχει την προσπέλαση σε βάσεις δεδοµένων έτσι ώστε π.χ. η λίστα του ListBox ή ComboBox να αποτελείται από δεδοµένα που είναι αποθηκευµένα σε κάποιον πίνακα της βάσης δεδοµένων που έχει ορισθεί στην ιδιότητα DataBaseName του χειριστηρίου.

Page 6: NotesVB61

6

3.2 Ιδιότητες Κάθε φόρµα και χειριστήριο έχει διάφορες ιδιότητες που αφορούν την εµφάνιση τους (π.χ. µέγεθος, χρώµα, κείµενο), τη συµπεριφορά τους απέναντι στις ενέργειες του χρήστη κτλ. Όλες αυτές οι ιδιότητες εµφανίζονται στο παράθυρο ιδιοτήτων συγκεντρωµένες είτε αλφαβητικά (alphabetic), είτε ανά κατηγορία (categorized). Το παράθυρο ιδιοτήτων µας επιτρέπει να τις τροποποιήσουµε. Πατώντας το µικρό βελάκι στο πάνω δεξιά µέρος του παραθύρου εµφανίζεται µια λίστα µε τα ονόµατα της φόρµας και των χειριστηρίων του προγράµµατός µας, όπου µπορούµε να ορίσουµε τιµές στις ιδιότητες τους. Οι ιδιότητες έχουν µια προκαθορισµένη τιµή από την Visual Basic. Πολλά χειριστήρια έχουν κοινές ιδιότητες. Στη συνέχεια, αναφέρονται ορισµένες βασικές ιδιότητες χειριστηρίων. Name (όνοµα): χρησιµοποιείται όταν γίνεται αναφορά στο χειριστήριο σε µια διαδικασία. Η Visual Basic

για κάθε νέο χειριστήριο προσφέρει ένα προκαθορισµένο όνοµα, το οποίο αποτελείται από τον τύπο του χειριστηρίου και έναν αριθµό π.χ. Label1, Label2, Text1, Command1, List1 κλπ.

Caption (λεζάντα ή τίτλος): περιέχει το κείµενο το οποίο εµφανίζεται στην περιοχή (επιφάνεια) του χειριστηρίου.

Font (γραµµατοσειρά): µπορεί να αλλάξει τη γραµµατοσειρά του κειµένου το οποίο εµφανίζεται µέσα στο χειριστήριο. Εµφανίζει ένα παράθυρο διαλόγου Font στο οποίο µπορείτε να επιλέξετε το όνοµα, το στυλ και µέγεθος της γραµµατοσειράς που επιθυµείτε.

ForeColor: µπορεί να αλλάξει το χρώµα του κειµένου ή των γραφικών που εµφανίζονται σε ένα χειριστήριο. Υποστηρίζει δύο επιλογές για τον τρόπο αλλαγής του χρώµατος µέσω των καρτελών System και Palette που περιέχει. Η καρτέλα System εµφανίζει τα τρέχοντα χρώµατα που χρησιµοποιεί το σύστηµά σας για τα στοιχεία της διασύνδεσης χρήστη. Η καρτέλα Palette περιέχει όλα τα διαθέσιµα χρώµατα του συστήµατός σας.

BackColor: µπορεί να αλλάξει το χρώµα του φόντου του χειριστηρίου. Visible (εµφανές): καθορίζει εάν ένα χειριστήριο θα είναι εµφανές ή κρυµµένο από τον χρήστη. Enabled (ενεργοποίηση): καθορίζει εάν ένα αντικείµενο µπορεί να χρησιµοποιηθεί. Η ιδιότητα Enabled

µπορεί να λάβει είτε την τιµή True (αληθής) η οποία δηλώνει ενεργοποίηση είτε την τιµή False (ψευδής) που δηλώνει απενεργοποίηση.

Width (πλάτος): αναφέρεται στο πλάτος του χειριστηρίου σε twips. Twip είναι µια µονάδα µέτρησης η οποία ισούται µε το ένα εικοστό της στιγµής (point). Η στιγµή είναι ίση µε 1/72 της ίντσας οπότε το twip ισούται µε 1/1440 της ίντσας, περίπου 17,6 χιλιοστά του χιλιοστού.

Height (ύψος): αναφέρεται στο ύψος του περιγράµµατος του χειριστηρίου σε twips. Left: περιέχει τον αριθµό σε twips από την αριστερή πλευρά του χειριστηρίου µέχρι την αριστερή πλευρά

της φόρµας. Top: περιέχει τον αριθµό σε twips από την κορυφή του χειριστηρίου µέχρι την κορυφή του παραθύρου

φόρµας. 3.3 ∆ιαχείριση και αποθήκευση αρχείων Πριν µερικά χρόνια, ένα πρόγραµµα αντιπροσωπεύονταν από ένα αρχείο. Σήµερα όµως καθώς τα προγράµµατα γίνονται όλο και πιο πολύπλοκα, ένα πρόγραµµα αποτελείται από δύο ή περισσότερα αρχεία. Η Visual Basic αποθηκεύει κάθε πρόγραµµα σε δύο ή περισσότερα αρχεία. Οι πιο συνηθισµένοι τύποι αρχείου που χρησιµοποιεί η Visual Basic είναι : • Αρχείο έργου (project file). Ένα πρόγραµµα στη Visual Basic είναι ένα αρχείο έργου. Το αρχείο έργου

αναφέρει όλα τα αρχεία (δηλαδή αρχεία φόρµας, αρχεία λειτουργικής µονάδας κ.λπ.) από τα οποία αποτελείται ένα πρόγραµµα της Visual Basic. Το όνοµα ενός αρχείου έργου λαµβάνει επέκταση .vbp (π.χ. Income.vbp, Ασκηση1.vbp).

• Αρχείο φόρµας (form file). Το αρχείο φόρµας περιέχει ένα παράθυρο που αποτελεί τη διασύνδεση χρήστη καθώς και τον κώδικα προγράµµατος (κώδικα BASIC) που εξηγεί στα αντικείµενα της φόρµας τι πρέπει να κάνουν. Το όνοµα ενός αρχείου φόρµας λαµβάνει επέκταση .frm (π.χ. Income.frm, Ασκηση1.frm). Ένα πρόγραµµα σε Visual Basic µπορεί να περιέχει ένα ή περισσότερα αρχεία φόρµας.

• Αρχείο λειτουργικής µονάδας (module file). Το αρχείο λειτουργικής µονάδας περιέχει κώδικα που εκτελεί υπολογισµούς οι οποίοι δεν έχουν σχέση µε τη διασύνδεση χρήστη. Το όνοµα ενός αρχείου λειτουργικής µονάδας λαµβάνει επέκταση .bas (π.χ. Income.bas, Ασκσκη1.bas). Ένα πρόγραµµα σε Visual Basic µπορεί να περιέχει ένα ή περισσότερα αρχεία λειτουργικής µονάδας.

Page 7: NotesVB61

7

Η Visual Basic για κάθε πρόγραµµα απαιτεί να σχεδιάσετε τουλάχιστον µια φόρµα (δηµιουργία διασύνδεσης χρήστη). Όπως αναφέρθηκε παραπάνω, κάθε φόρµα περιέχει χειριστήρια και κώδικα προγράµµατος. Όλες αυτές οι πληροφορίες για τη φόρµα σώζονται σε ένα αρχείο φόρµας. Το παράθυρο εξερεύνησης έργου (Project Explore) εµφανίζει όλα τα αρχεία που είναι καταχωρηµένα σε ένα αρχείο έργου της Visual Basic. Σηµειώνεται ότι για να εµφανίσετε το παράθυρο εξερεύνησης έργου στο περιβάλλον ανάπτυξης της Visual Basic επιλέξτε από τη γραµµή µενού View ⇒ Project Explore. Για την αποθήκευση µιας φόρµας επιλέγεται από τη γραµµή µενού File και στη συνέχεια Save Form1 As… όπου πληκτρολογείται το όνοµα που επιθυµείται για τη φόρµα σας και λαµβάνει επέκταση .frm (π.χ. MyFirstProject.frm). Για την αποθήκευση ενός αρχείου έργου στη Visual Basic επιλέγεται από τη γραµµή µενού File και στη συνέχεια Save Project As… όπου εµφανίζεται ένα πλαίσιο διαλόγου στο οποίο πληκτρολογείται το όνοµα που επιθυµείται για το έργο (ή πρόγραµµα) σας και λαµβάνει επέκταση .vbp (π.χ. MyFirstProject.vbp). Για την αποθήκευση µιας λειτουργικής µονάδας επιλέγεται Save Module1 As… όπου πληκτρολογείται το όνοµα που επιθυµείται για τη λειτουργική µονάδα και λαµβάνει επέκταση .bas (π.χ. MyFirstProject.bas). Παράδειγµα: Έστω ότι θέλετε να αποθηκεύσετε για πρώτη φορά ένα πρόγραµµα που δηµιουργήσατε στη Visual Basic και το οποίο περιέχει µόνο µια φόρµα. Ακολουθήστε τα παρακάτω βήµατα: Επιλέξτε File ⇒ Save Project As… (ή πατήστε κατευθείαν στο εικονίδιο της δισκέτας που βρίσκεται στη γραµµή εργαλείων). Εφόσον δεν έχετε αποθηκεύσει τη φόρµα θα εµφανιστεί το πλαίσιο διαλόγου Save File As… για την αποθήκευση της φόρµας. Επιλέξτε το φάκελο στον οποίο θέλετε να αποθηκευθεί η φόρµα. Κατόπιν, πληκτρολογήστε το όνοµα (π.χ. MyEcon.frm) που θέλετε να δώσετε στη φόρµα και πατήστε αποθήκευση (Save). Αφού αποθηκεύσατε τη φόρµα, η Visual Basic θα εµφανίσει το πλαίσιο διαλόγου Save Project As… Πληκτρολογήστε ένα όνοµα (το ίδιο ή διαφορετικό µε το όνοµα που δώσατε στη φόρµα) (π.χ. MyEcon.vbp) και πατήστε αποθήκευση (Save). Στη συνέχεια για να αποθηκεύσετε οποιαδήποτε αλλαγή κάνετε στο πρόγραµµά σας πατήστε κατευθείαν στο εικονίδιο της δισκέτας που βρίσκεται στη γραµµή εργαλείων. 4. Κώδικας Όταν δηµιουργήσετε τη διασύνδεση χρήστη, το επόµενο βήµα είναι να γράψετε προγραµµατιστικές εντολές BASIC (γνωστές µε την ονοµασία κώδικας) για να κάνετε το πρόγραµµά σας να λειτουργήσει. Προγραµµατιστική εντολή (ή απλούστερα εντολή) είναι οποιοσδήποτε συνδυασµός λέξεων-κλειδιών, ιδιοτήτων, συναρτήσεων, τελεστών και συµβόλων που όλα µαζί αποτελούν µια έγκυρη οδηγία αναγνωρίσιµη από τον µεταγλωττιστή της Visual Basic. Η Visual Basic διατηρεί πολλούς από τους συντακτικούς κανόνες των προγενέστερων εκδόσεων της γλώσσας προγραµµατισµού BASIC καθώς και των µεταγλωττιστών άλλων γλωσσών. Για παράδειγµα, η σύνταξη της εντολής για την απόδοση τιµής σε µια ιδιότητα ενός αντικειµένου είναι η εξής: Αντικείµενο . Ιδιότητα = Τιµή Παράδειγµα: Text1.Text= "Η πρώτη µου εντολή σε Visual Basic" Ο σκοπός του κώδικα της Visual Basic είναι να λέει στα αντικείµενα µιας φόρµας τι να κάνουν όταν ο χρήστης κάνει κάποια ενέργεια (π.χ. πάτηµα ενός πλήκτρου). Για παράδειγµα, εάν κάνετε κλικ µε το ποντίκι σας σε ένα αντικείµενο µιας φόρµας, δεν πρόκειται να συµβεί τίποτε εάν δεν έχετε γράψει εντολές που θα λένε στο υπολογιστή σας τι ακριβώς να κάνει. Όταν ο χρήστης πατήσει ένα πλήκτρο ή κάνει κλικ µε το ποντίκι του τότε έχουµε ένα συµβάν (event). Κάθε φορά που προκαλείται ένα συµβάν, οι εντολές της Visual Basic λένε στον υπολογιστή τι να κάνει. Παράδειγµα: Έστω ότι έχετε δηµιουργήσει ένα πρόγραµµα στη Visual Basic το οποίο έχει µια φόρµα στη οποία έχετε τοποθετήσει ένα πλήκτρο εντολής (CommandButton). Όµως το πρόγραµµά αυτό δεν µπορεί να κάνει τίποτε εφόσον δεν περιέχει κώδικα. Για να το επιβεβαιώσετε αυτό, από τη γραµµή µενού της Visual Basic πατήστε Run ⇒ Start (ή εναλλακτικά πατήστε το εικονίδιο µε το µικρό µπλε τρίγωνο της γραµµής εργαλείων). Τότε θα εµφανιστεί ένα παράθυρο µε το πλήκτρο εντολής. Προχωρήστε και κάντε κλικ µε το ποντίκι σας στο πλήκτρο εντολής (Command1) του προγράµµατός σας, τίποτε όµως δεν συµβαίνει. Στη συνέχεια, από τη γραµµή µενού της Visual Basic πατήστε Run ⇒ End (ή εναλλακτικά πατήστε το εικονίδιο µε το µικρό µπλε τετράγωνο της γραµµής εργαλείων). Τότε οδηγείστε στο κύριο

Page 8: NotesVB61

8

παράθυρο της Visual Basic. Κάντε διπλό κλικ στο πλήκτρο Command1 της φόρµα σας. Τότε θα εµφανιστεί το παράθυρο κώδικα (Code Window) στο οποίο µπορείτε να πληκτρολογείτε τον κώδικα του προγράµµατός σας. H Visual Basic όχι µόνο θα εµφανίσει το παράθυρο κώδικα αλλά θα δηµιουργήσει και κάποιον πηγαίο κώδικα ο οποίος ονοµάζεται διαδικασία (procedure). ∆ηλαδή θα δηµιουργήσει αυτόµατα τον παρακάτω κώδικα:

Private Sub Command1_Click() End Sub Στη συνέχεια, προσθέτουµε στον παραπάνω κώδικα την εντολή: MsgBox "Γεωπονικό Πανεπιστήµιο Αθηνών" ώστε το πρόγραµµα σας κατά την εκτέλεσή του να εµφανίζει ένα πλαίσιο µηνύµατος µε το µήνυµα: Γεωπονικό Πανεπιστήµιο Αθηνών.

Private Sub Command1_Click() MsgBox "Γεωπονικό Πανεπιστήµιο Αθηνών"

End Sub Αυτή τη φορά, εάν επιλέξετε από τη γραµµή µενού Run ⇒ Start και κάνετε κλικ στο πλήκτρο εντολής Command1 θα εµφανιστεί ένα πλαίσιο µηνύµατος µε το µήνυµα Γεωπονικό Πανεπιστήµιο Αθηνών. Όταν ένας χρήστης κάνει κλικ στο πλήκτρο Command1 τότε η Visual Basic πηγαίνει στη διαδικασία Command1_Click() και εκτελεί µε τη σειρά όλες τις εντολές που περιέχονται στη διαδικασία. 4.1 Μεταβλητές Με τον όρο µεταβλητή εννοούµε µια πληροφορία (π.χ. αριθµούς, λέξεις, τιµές ιδιοτήτων) η οποία αναφέρεται ονοµαστικά και µπορεί να αλλάξει κατά την εκτέλεση του προγράµµατος. Για παράδειγµα όταν ο χρήστης εισάγει πληροφορίες σε ένα πλαίσιο κειµένου, οι πληροφορίες αυτές θα πρέπει να αποθηκευτούν µέχρι να χρησιµοποιηθούν. Οι πληροφορίες αυτές αποθηκεύονται σε µεταβλητές. Στη πραγµατικότητα η µεταβλητή δεν είναι παρά ένα όνοµα που χαρακτηρίζει µια συγκεκριµένη "θέση µνήµης" του υπολογιστή. Στο κώδικα ενός προγράµµατος µπορούµε να χρησιµοποιούµε µια ή περισσότερες µεταβλητές στις οποίες αποθηκεύονται λέξεις, αριθµοί, ηµεροµηνίες ή ιδιότητες. Οι µεταβλητές δηµιουργούνται όταν δηλώνονται σε µια διαδικασία ή φόρµα. Στη συνέχεια είναι δυνατόν να τους δοθούν τιµές να ανακτηθούν ή να τροποποιηθούν. Οι µεταβλητές διακρίνονται σε δύο κατηγορίες: • Αριθµητικές µεταβλητές που αποθηκεύουν αριθµούς (ακέραιους αριθµούς, δεκαδικούς, ποσοστά,

χρηµατικά ποσά, ηµεροµηνίες) και τις ρυθµίσεις για τις αριθµητικές ιδιότητες των αντικειµένων. • Μεταβλητές συµβολοσειράς ή αλφαριθµητικά που αποθηκεύουν αντικείµενα κείµενου και ετικετών και

τις ρυθµίσεις για τις ιδιότητες του κειµένου.

Εάν και οι αριθµητικές µεταβλητές µπορεί να περιέχουν µόνο αριθµούς και οι µεταβλητές συµβολοσειράς µόνο κείµενο αυτό δε σηµαίνει ότι µια µεταβλητή συµβολοσειράς δεν µπορεί να περιέχει έναν χαρακτήρα που αντιπροσωπεύει έναν αριθµό. Για παράδειγµα, ο χαρακτήρας 5 που µπορεί να δοθεί σε µια µεταβλητή συµβολοσειράς θεωρείται απλώς σαν χαρακτήρας κειµένου, που δεν είναι διαφορετικός από οποιονδήποτε άλλο χαρακτήρα όπως το Α ή το Κ.

Το όνοµα µιας µεταβλητής θα πρέπει να ακολουθεί τους παρακάτω κανόνες: • Να αποτελείται από λατινικά γράµµατα, αριθµούς ή/και την κάτω παύλα (_). ∆εν πρέπει να περιέχει

κενά ή άλλα σύµβολα (π.χ. τελεία). • Να ξεκινά µε γράµµα και να έχει µήκος µέχρι 256 χαρακτήρες. • Να µη χρησιµοποιεί δεσµευµένες λέξεις ή ονόµατα αντικειµένων ή ιδιοτήτων της Visual Basic (π.χ.

End, Sub, Function). • Μπορείτε να δίνεται περιγραφικά ονόµατα που συνδυάζουν µια ή περισσότερες λέξεις (π.χ.

TotalCostOfProduct). • Μπορείτε να κάνετε συνδυασµούς πεζών και κεφαλαίων γραµµάτων ή και αριθµών (π.χ.

MyBirthDate, Product1).

Page 9: NotesVB61

9

4.2 Τύποι ∆εδοµένων Οι σηµαντικότεροι τύποι δεδοµένων της Visual Basic δίνονται στον παρακάτω πίνακα όπου η πρώτη στήλη δηλώνει το τύπο δεδοµένων, η δεύτερη στήλη το µέγεθος (ή χώρο) αποθήκευσης που απαιτείται στη µνήµη του υπολογιστή και η τρίτη στήλη το εύρος τιµών που καλύπτει αυτός ο τύπος δεδοµένων.

Τύπος ∆εδοµένων Μέγεθος Εύρος Τιµών Boolean 2 bytes True (αληθής) ή False (ψευδής) Integer (Ακέραιος) 2 bytes -32.768 έως 32.767 Long (Μεγάλος Ακέραιος) 4 bytes -2.147.483.648 έως 2.147.483.647 Single (Κινητής υποδιαστολής απλής ακρίβειας)

4 bytes -3,402823Ε38 έως +3,402823E38

Double (Κινητής υποδιαστολής διπλής ακρίβειας)

8 bytes -1.79769313486232Ε+308 έως 1.79769313486232Ε+3082

Currency (Νοµισµατική τιµή) 8 bytes -922.337.203.685.477,5808 έως 922.337.203.685.477,5807

String (Αλφαριθµητικό) 1 byte ανά χαρακτήρα 1 έως 65.400 χαρακτήρες αλφαριθµητικών δεδοµένων

Date (Ηµεροµηνία) 8 bytes 1 Ιανουαρίου 100 έως 31 ∆εκεµβρίου 9999

Variant (Παραλλαγή) 16 (bytes) για αριθµούς 22(bytes) + 1 byte ανά

χαρακτήρα (για αλφαριθµητικά)

Όλα τα εύρη των τύπων δεδοµένων

Για την αποθήκευση των τιµών True ή False µπορεί να χρησιµοποιηθεί ο τύπος δεδοµένων Boolean. Για να την αποθήκευση ακεραίων αριθµών που βρίσκονται στο διάστηµα -32.768 έως +32.767 µπορεί να χρησιµοποιηθούν µεταβλητές µε τύπο δεδοµένων Integer. Για την αποθήκευση πολύ µικρών (αρνητικών) ή πολύ µεγάλων ακεραίων αριθµών µπορεί να χρησιµοποιηθεί ο τύπος δεδοµένων Long. Για την αποθήκευση αριθµών µε δεκαδικά ψηφία µπορεί να χρησιµοποιηθεί ο τύπος δεδοµένων Single. Για την αποθήκευση πολύ µικρών ή πολύ µεγάλων αριθµών µε δεκαδικά ψηφία µπορεί να χρησιµοποιηθεί ο τύπος δεδοµένων Double. Για την αποθήκευση λέξεων και γραµµάτων αριθµών µπορεί να χρησιµοποιηθεί ο τύπος δεδοµένων String. Για την αποθήκευση αριθµών που αντιπροσωπεύουν νοµισµατικές τιµές (π.χ. χρηµατικά ποσά) µπορεί να χρησιµοποιηθεί ο τύπος δεδοµένων Currency. Για την αποθήκευση ηµεροµηνιών µπορεί να χρησιµοποιηθεί ο τύπος δεδοµένων Date. Οι βασικοί κανόνες για τύπους δεδοµένων είναι οι ακόλουθοι: • Κάθε µεταβλητή έχει µόνο ένα τύπο δεδοµένων. • Ο τύπος κάθε µεταβλητής δηλώνεται πριν από τη χρήση της µεταβλητής. Πριν χρησιµοποιήσετε µια µεταβλητή θα πρέπει να την ορίσετε. Ο ορισµός µιας µεταβλητής είναι µια δήλωση που καθορίζει το όνοµά της και τον τύπο της. Εξ ορισµού, η Visual Basic για µεταβλητές που δεν ορίζονται θεωρεί ότι είναι τύπου Variant. Οι µεταβλητές τύπου Variant είναι ιδιαίτερα ευέλικτες και µπορούν να αποτελούν το µοναδικό τύπο δεδοµένων των µεταβλητών που χρησιµοποιείται σε ένα πρόγραµµα. Εάν όµως θέλετε να δηµιουργήσετε γρήγορο και περιεκτικό κώδικα τότε πρέπει να χρησιµοποιείται συγκεκριµένους τύπους δεδοµένων για τις µεταβλητές σας όπου χρειάζεται. 4.3 Εµβέλεια Μεταβλητών Το σηµείο στο οποίο ορίζεται η µεταβλητή καθορίζει και την εµβέλεια της, δηλαδή σε ποια άλλα σηµεία του προγράµµατος µπορεί να χρησιµοποιηθεί. Οι µεταβλητές ανάλογα µε την εµβέλεια τους διακρίνονται σε τοπικές µεταβλητές (local variables), δηµόσιες µεταβλητές (public variables) και µεταβλητές λειτουργικής µονάδας (module variables). Οι τοπικές µεταβλητές ορίζονται στην αρχή µιας διαδικασίας και µπορούν να διαβαστούν, να τροποποιηθούν και να εµφανιστούν µόνο µέσα σε αυτή τη διαδικασία. Η σύνταξη του ορισµού µια τοπικής µεταβλητής δίνεται από την παρακάτω εντολή:

Dim ΌνοµαΜεταβλητής As Τύπος ∆εδοµένων

Page 10: NotesVB61

10

Παραδείγµατα: Dim TotalTax As Single Dim MyBirthDate As Date Στην περίπτωση που ο τύπος δεδοµένων της µεταβλητής είναι τύπου Variant µπορεί να παραλειφθεί. Συνεπώς, οι δύο παρακάτω εντολές είναι ισοδύναµες. Dim SurName As Variant Dim SurName Παράδειγµα: Εάν θέλετε να δηλώσετε πολλές µεταβλητές σε µια γραµµή, θα πρέπει να δηλώσετε τις µεταβλητές µια προς µια: Dim SurName As String, FirstName As String Βασική λειτουργική µονάδα (standard module): Για να επιτρέψετε στις διαδικασίες του προγράµµατός σας να µοιράζονται µεταβλητές πρέπει να τις δηλώσετε σε µια ή περισσότερες βασικές λειτουργικές µονάδες του προγράµµατός σας. Μια βασική λειτουργική µονάδα που ονοµάζεται και λειτουργική µονάδα κώδικα είναι ένα ειδικό αρχείο του οποίου το όνοµα έχει επέκταση .bas και περιέχει µεταβλητές που µπορείτε να χρησιµοποιείτε σε οποιοδήποτε σηµείο του προγράµµατος. Οι βασικές λειτουργικές µονάδες εµφανίζονται σαν ξεχωριστές οντότητες στον κατάλογο του παραθύρου εξερεύνησης έργου (Project Explorer). Οι µονάδες αυτές περιέχουν µόνο κώδικα τον οποίο µπορείτε να εµφανίσετε και να διορθώσετε στο παράθυρο κώδικα (Code Window) και δεν σχετίζονται µε αντικείµενα της φόρµας. Οι δηµόσιες µεταβλητές είναι διαθέσιµες σε όλες τις διαδικασίες και λειτουργικές µονάδες ενός προγράµµατος. Για να είναι µια µεταβλητή δηµόσια θα πρέπει να δηλωθεί σε επίπεδο βασικής λειτουργικής µονάδας. Οι δηµόσιες µεταβλητές µπορούν να διαβαστούν, να τροποποιηθούν και να εµφανιστούν σε οποιαδήποτε διαδικασία του προγράµµατος. Η σύνταξη του ορισµού µια δηµόσιας µεταβλητής έχει την παρακάτω µορφή:

Public ΌνοµαΜεταβλητής As Τύπος ∆εδοµένων

Για να δηλώσετε µια δηµόσια µεταβλητή, ακολουθήστε τα παρακάτω βήµατα: (1) Επιλέξτε από τη γραµµή µενού Project ⇒ Add Module για να δηµιουργήσετε ένα αρχείο λειτουργικής µονάδας. Θα εµφανιστεί το πλαίσιο διαλόγου Add Module. (2) Επιλέξτε Module και πατήστε στο κουµπί Open. Η Visual Basic θα εµφανίσει το παράθυρο κώδικα της λειτουργικής µονάδας µε γραµµή τίτλου Project1-Module1(Code) και στη δεύτερη γραµµή στο πλαίσιο καταλόγου αντικειµένων τη λέξη (General) και στο πλαίσιο καταλόγου διαδικασιών τη λέξη (Declarations). (3) Πληκτρολογήστε τη δηµόσια µεταβλητή χρησιµοποιώντας την εντολή Public (π.χ. Public Cost As Integer).

Παράδειγµα: Εξ ορισµού, οι δηµόσιες µεταβλητές που δηλώνονται στις λειτουργικές µονάδες είναι τύπου Variant (π.χ. Public MyValue). Οι µεταβλητές λειτουργικής µονάδας είναι µεταβλητές που µπορούν να χρησιµοποιούν µόνο από τις διαδικασίες που είναι αποθηκευµένες στο ίδιο αρχείο (π.χ. στο ίδιο αρχείο φόρµας) και χρησιµοποιούν τις ίδιες µεταβλητές. Για να δηλώσετε µια µεταβλητή λειτουργικής µονάδας, ακολουθήστε τα παρακάτω βήµατα: (1) Επιλέξετε από τη γραµµή µενού View ⇒ Code (ή πατήστε το πλήκτρο F7) για να ανοίξετε το παράθυρο κώδικα µε γραµµή τίτλου Project1-Form1(Code). (2) Στη συνέχεια στο παράθυρο κώδικα επιλέξτε από το πλαίσιο καταλόγου αντικειµένων τη λέξη (General) και αυτόµατα θα εµφανιστεί στο πλαίσιο καταλόγου διαδικασιών η λέξη (Declarations). (3) Πληκτρολογήστε τη µεταβλητή χρησιµοποιώντας την εντολή Dim π.χ. Dim Cost As Integer 4.5 Σταθερές Αν µια µεταβλητή περιέχει µια τιµή που δεν αλλάζει ποτέ (π.χ. η µαθηµατική σταθερά 3,14159), τότε µπορείτε να αποθηκεύσετε τη τιµή αυτή ως σταθερά (constant) και όχι ως µεταβλητή. Μια σταθερά δηλώνεται µε την παρακάτω εντολή:

Const ΌνοµαΣταθεράς = Τιµή

όπου ΌνοµαΣταθεράς είναι το όνοµα της σταθεράς το οποίο ακολουθεί τους κανόνες των ονοµάτων των µεταβλητών. Οι σταθερές χρησιµοποιούνται όταν η ίδια τιµή χρειάζεται σε διάφορα σηµεία του προγράµµατος. Εάν χρειαστεί να αλλάξετε τη τιµή µια σταθεράς τότε µόνο ο ορισµός Const θα χρειαστεί

Page 11: NotesVB61

11

να αλλάξει. Οι σταθερές σας βοηθούν να διατηρήσετε το πρόγραµµά σας πιο ευανάγνωστο. Επίσης, µειώνουν το κίνδυνο λαθών, µια και η τιµή µιας µεταβλητής δεν µπορεί να τροποποιηθεί. Παραδείγµατα: Const Pi = 3,14159 Const MyAddressNumber = 132 4.6 Εκφράσεις Στις µεταβλητές αποδίδονται τιµές µε τη χρήση του τελεστή απόδοσης τιµής (=) και εκφράσεων. Με τον όρο έκφραση εννοούµε είτε µια συγκεκριµένη τιµή είτε συνδυασµό τιµών και µεταβλητών συνδεδεµένων µε µαθηµατικούς τελεστές. Η σύνταξη της εντολής απόδοσης τιµής σε µια µεταβλητή είναι η εξής:

ΌνοµαΜεταβλητής = Έκφραση

Ο τύπος δεδοµένων της έκφρασης πρέπει να συµφωνεί µε τον τύπο δεδοµένων της µεταβλητής στην οποία αποδίδεται. Παραδείγµατα: Dim Country As String Dim Cost As Integer, Tax As Integer, TotalCost As Integer Country = "Greece" Cost = 1000 Tax = 100 TotalCost= Cost + Tax + 50 Μαθηµατικοί τελεστές Οι µαθηµατικοί τελεστές της Visual Basic χρησιµοποιούνται για τον υπολογισµό και την αντιστοίχηση αποτελεσµάτων εκφράσεων σε µεταβλητές. Οι τελεστές αυτοί µοιάζουν και δρουν σαν τους αντίστοιχους τελεστές των µαθηµατικών και δίνονται στον παρακάτω πίνακα:

Όνοµα Τελεστή Τελεστής Παράδειγµα Πρόσθεση + Cost + Tax Αφαίρεση - TotalCost - Cost Πολλαπλασιασµός * TotalCost*NumProducts ∆ιαίρεση / 17/5 είναι 3,4 Ακέραια ∆ιαίρεση \ 17\5 είναι 3 Υπόλοιπο ∆ιαίρεσης Mod 17 Mod 5 είναι 2 ∆ύναµη ^ Cost ^ 2

Παράδειγµα: Να γραφεί πρόγραµµα όπου δίνεται η τιµή ενός προϊόντος, υπολογίζει το ΦΠΑ του προϊόντος (18% της αξίας του) και τυπώνει τη συνολική τιµή του προϊόντος που θα πρέπει να πληρώσει ο καταναλωτής.

Αρχικά δηµιουργούµε µια φόρµα η οποία περιέχει τα παρακάτω αντικείµενα.

Αντικείµενο Ιδιότητα Ρύθµιση Command1 Caption Εκτέλεση Text1 Text (κενό)

Private Sub Command_Click() Dim Cost As Single Dim FPA As Single Dim TotalCost As Single

Cost= Text1.Text FPA= Cost * 0.18 TotalCost=Cost + FPA Print "Η συνολική τιµή του προϊόντος είναι:", TotalCost

End Sub

Page 12: NotesVB61

12

Τελεστής συνένωσης αλφαριθµητικών Ο τελεστής συνένωσης αλφαριθµητικών συνδέει δύο ακολουθίες χαρακτήρων θέτοντας την µια στο τέλος της άλλης και δεν έχει καµία σχέση µε τα µαθηµατικά.

Όνοµα Τελεστή Τελεστής Παράδειγµα Συνένωση αλφαριθµητικών

& Surname & FirstName

Παράδειγµα: Έστω ο κώδικας της διαδικασίας ενός πλήκτρου εντολής:

Private Sub Command1_Click() Dim FirstName As String Dim SurName As String Dim FullName As String SurName="Νικολάου" FirstName="Νικόλαος" FullName=Surname & FirstName Label1.Caption=FullName End Sub

Το αποτέλεσµα του παραπάνω κώδικα θα είναι στον τίτλο του αντικειµένου Label1 να γραφεί ΝικολάουΝικόλαος. Ο τελεστής συνένωσης (&) δεν εισάγει αυτόµατα ένα κενό διάστηµα, επειδή δεν χρειάζονται πάντα κενά διαστήµατα κατά τη συνένωση δύο ακολουθιών χαρακτήρων. Εάν όµως θέλετε την εισαγωγή κενού διαστήµατος θα πρέπει να συνενώσετε µια ακόµα ακολουθία χαρακτήρων την (" ") π.χ. FullName=Surname & " " & FirstName. Σηµειώνεται ότι η Visual Basic εκτός από τον τελεστή (&) υποστηρίζει και τον τελεστή συν (+) για τη συνένωση συµβολοσειρών (ή αλλιώς αλφαριθµητικών), δηλαδή η παραπάνω εντολή θα µπορούσε να γραφεί ως εξής: FullName=Surname + " " + FirstName. Είναι όµως προτιµότερο να χρησιµοποιείται τον τελεστή (&) για να αποφεύγεται τυχόν σύγχυση του τελεστή (+) µε το σύµβολο της πρόσθεσης. Σειρά εκτέλεσης των πράξεων Όταν ορίζετε µια ακολουθία αριθµητικών πράξεων είναι δυνατόν να προκύψει αµφισηµία. Έστω η έκφραση: MyValue=10 - 5*2 Η έκφραση αυτή πιθανόν σηµαίνει MyValue=10-(5*2)=10-10=0 αλλά θα µπορούσε να σηµαίνει και MyValue=(10-5)*2=5*2=10. Σε οποιαδήποτε γλώσσα προγραµµατισµού είναι απαραίτητο να καθορίζεται η σειρά εκτέλεσης των πράξεων. Στη Visual Basic ακολουθείται µια ιεράρχηση των πράξεων. Στην περίπτωση του παραπάνω παραδείγµατος εκτελείται πρώτα ο πολλαπλασιασµός 5*2(=10) και µετά εκτελείται η αφαίρεση 10-10. Κάθε τελεστής στην Visual Basic έχει κάποια σειρά προτεραιότητας. Από δύο γειτονικούς τελεστές εκτελείται πρώτα αυτός που έχει την ανώτερη προτεραιότητα. Στην περίπτωση που εξακολουθεί να υπάρχει αµφισηµία, τότε η έκφραση αποτιµάται από αριστερά προς τα δεξιά. Η σειρά προτεραιότητας των πράξεων αρχίζοντας µε την υψηλότερη προτεραιότητα είναι η εξής: • Ύψωση σε δύναµη (^) • Πολλαπλασιασµός και διαίρεση (*, /) • Ακέραια διαίρεση (\) • Υπόλοιπο (Mod) • Πρόσθεση και αφαίρεση (+, -) Παραδείγµατα: Η έκφραση 3 * 4 + 5 * 6 σηµαίνει (3*4)+(5*6)=42. Η έκφραση 4+2 - (3*4 -2) σηµαίνει (4+2)-((3*4)-2)=-4. Η έκφραση 10/5 * 3 σηµαίνει (10/5) * 3=6.

Page 13: NotesVB61

13

Για να αποφεύγετε πιθανή σύγχυση στη σειρά προτεραιότητας των πράξεων είναι προτιµότερο να χρησιµοποιείται παρενθέσεις. Οι παρενθέσεις χρησιµοποιούνται στην Visual Basic όπως και στα µαθηµατικά. Όταν έχουµε να υπολογίσουµε µια αριθµητική παράσταση οι όροι στις παρενθέσεις εκτελούνται πρώτα. Τελεστές σύγκρισης Οι τελεστές σύγκρισης συγκρίνουν δεδοµένα (ιδιότητες, µεταβλητές ή άλλο στοιχείο δεδοµένων) στο κώδικα προγράµµατος και καθορίζουν το αποτέλεσµα της σύγκρισης µε απαντήσεις του τύπου True (αληθές) ή False (ψευδές). Οι µαθηµατικοί τελεστές (π.χ. *, /) παράγουν αριθµητικές τιµές. Οι τελεστές σύγκρισης µπορούν να συγκρίνουν αριθµητικές και αλφαβητικές τιµές. Μπορείτε να συγκρίνετε κάθε είδους αριθµό µε ένα άλλο αριθµό ή κάθε είδους κείµενο µε ένα άλλο κείµενο. Οι µεταβλητές και στις δύο πλευρές ενός τελεστή σύγκρισης θα πρέπει να έχουν τον ίδιο τύπο δεδοµένων ή τουλάχιστον συµβατούς τύπους. Οι τελεστές σύγκρισης είναι οι ακόλουθοι:

= Ίσο µε <> ∆ιάφορο του > Μεγαλύτερο από < Μικρότερο από >= Μεγαλύτερο από ή ίσο µε <= Μικρότερο από ή ίσο µε

Παραδείγµατα:

Συνθήκη Αποτέλεσµα 5<>16 True γιατί το 5 δεν είναι ίσο µε το 16. MemberNo<120 True αν η µεταβλητή MemberNo είναι µικρότερη από 120.

False αν η µεταβλητή MemberNo είναι µεγαλύτερη ή ίση µε 120. MemberNo=Label1.Caption True αν η ιδιότητα Caption του αντικειµένου Label1 έχει την ίδια

τιµή µε τη µεταβλητή MemberNo, διαφορετικά False. Λογικοί Τελεστές Η Visual Basic επιτρέπει τον έλεγχο περισσοτέρων από µια συνθήκες µε τη χρήση ενός ή περισσοτέρων λογικών τελεστών. Οι κυριότεροι λογικοί τελεστές είναι AND, OR, EQV, XOR, και NOT. Οι τελεστές αυτοί ορίζονται παραδοσιακά µε πίνακες αληθείας όπως φαίνεται στους παρακάτω πίνακες.

A B A AND B A OR B A EQV B A XOR B F F F F T F F T F T F T T F F T F T T T T T T F

A NOT A F T T F

Παραδείγµατα:

Παράσταση Αποτέλεσµα Flower="Τριαντάφυλλο" AND Price<800 True αν και οι δύο συνθήκες είναι True, διαφορετικά

False. Flower="Γαρύφαλλο" OR Price<300 True αν µια από τις δύο συνθήκες είναι True,

διαφορετικά False. NOT Price<=200 True αν η µεταβλητή Price έχει τιµή µεγαλύτερη από

200, διαφορετικά False. Flower="Μαργαρίτα" XOR Price<500 True αν µια και µόνο από τις δύο συνθήκες είναι True.

False αν είναι και οι δύο True ή και οι δύο False.

Page 14: NotesVB61

14

4.7 Είσοδος και έξοδος Ένας υπολογιστής δεν θα είχε µεγάλη χρήση, εάν δεν υπήρχε τρόπος να του δίνετε δεδοµένα (πληροφορίες) και να παίρνετε δεδοµένα (αποτελέσµατα). Η διαδικασία της µετακίνησης δεδοµένων από και προς έναν υπολογιστή ονοµάζεται είσοδος και έξοδος. Μια οποιαδήποτε γλώσσα προγραµµατισµού περιέχει εντολές για είσοδο και έξοδο δεδοµένων. Η Visual Basic διαθέτει ένα σύνολο εντολών για να στέλνετε πληροφορίες στον υπολογιστή και να εξάγετε αποτελέσµατα, επιτρέποντας να δηµιουργείτε διαλογικά προγράµµατα. Τα διαλογικά προγράµµατα επιτρέπουν την αµφίδροµη επικοινωνία µεταξύ του χρήστη και του υπολογιστή. Για παράδειγµα, η Visual Basic µπορεί να κάνει µια ερώτηση στο χρήστη εκτυπώνοντας την ερώτηση στη οθόνη του υπολογιστή (π.χ. µε τη συνάρτηση InputBox). Ο χρήστης µπορεί να απαντήσει πληκτρολογώντας στο πληκτρολόγιο. Επίσης, η Visual Basic διαθέτει µια εντολή εξόδου την Print µε την οποία µπορεί να εµφανίσει κείµενο στην οθόνη. Είσοδος δεδοµένων Μια από τις κυριότερες χρήσεις των µεταβλητών είναι η αποθήκευση σε αυτές των δεδοµένων (πληροφοριών) που εισάγει ο χρήστης. Για τη λήψη αυτών των πληροφοριών µπορείτε είτε να χρησιµοποιείται κάποιο αντικείµενο της διασύνδεσης χρήστη του προγράµµατος είτε να εισάγετε τα δεδοµένα κατευθείαν σε κάποια µεταβλητή και όχι σε κάποια ιδιότητα αντικειµένου (π.χ. µε τη συνάρτηση InputBox).

Η διασύνδεση χρήστη δίνει στους χρήστες ενός προγράµµατος της Visual Basic τη δυνατότητα να εισάγουν δεδοµένα στο πρόγραµµα µέσω αντικειµένων. Οι βασικοί τύποι αντικειµένων που µπορούν να λάβουν δεδοµένα από τη διασύνδεση χρήστη είναι οι εξής: (1) πλαίσιο κειµένου, (2) πλαίσιο επιλογής, (3) πλήκτρο επιλογής, (4) πλαίσιο πτυσσόµενης λίστας, (5) πλαίσιο λίστας, (6) οριζόντια ράβδος κύλισης, (7) κατακόρυφη ράβδος κύλισης, (8) πλαίσιο λίστας οδηγών δίσκου, (9) πλαίσιο λίστας καταλόγου και (10) πλαίσιο λίστας αρχείου. Για παράδειγµα, ένα πλαίσιο κειµένου (TextBox) χρησιµεύει για τη λήψη δεδοµένων που εισάγει ο χρήστης κατά την εκτέλεση προγραµµάτων της Visual Basic (ή και για την εµφάνιση κειµένου σε µια φόρµα). Όταν ο χρήστης πληκτρολογεί κάτι σε ένα πλαίσιο κειµένου ισοδυναµεί µε την απόδοση µιας τιµής στην ιδιότητα Text του πλαισίου κειµένου. Παράδειγµα: Text1.Text= "Εκµάθηση της Visual Basic" Για την εισαγωγή δεδοµένων σε ένα πρόγραµµα της Visual Basic µπορεί να χρησιµοποιηθεί και η συνάρτηση InputBox. Η InputBox είναι µια ειδική συνάρτηση που εµφανίζει στην οθόνη ένα πλαίσιο διαλόγου (παράθυρο) και ζητά δεδοµένα από τον χρήστη. Η σύνταξή της είναι η εξής:

ΌνοµαΜεταβλητής = InputBox(Μήνυµα, [Τίτλος], [Προεπιλεγµένη τιµή])

όπου ΌνοµαΜεταβλητής είναι η τιµή που θέλουµε να εισάγουµε, Μήνυµα είναι το κείµενο (µέσα σε αποστρόφους) που εµφανίζεται µέσα στο πλαίσιο διαλόγου, Τίτλος είναι το κείµενο (µέσα σε αποστρόφους) που θα εµφανιστεί στη γραµµή τίτλου του πλαισίου διαλόγου και Προεπιλεγµένη τιµή είναι µια προεπιλεγµένη απάντηση (µέσα σε αποστρόφους) την οποία ο χρήστης µπορεί να τη δεχθεί ή να την αλλάξει. Ο Τίτλος και η Προεπιλεγµένη τιµή βρίσκονται µέσα σε τετράγωνες αγκύλες γιατί η χρήση τους είναι προαιρετική.

Παράδειγµα: StudentName = InputBox("Παρακαλώ δώστε το όνοµα του φοιτητή", "Όνοµα Φοιτητή", "Παπαδόπουλος") CompanyName = InputBox("Παρακαλώ πληκτρολογήστε το όνοµα της εταιρείας") Έξοδος δεδοµένων Συνάρτηση MsgBox Για να εµφανίσετε το περιεχόµενο µιας µεταβλητής µπορείτε να αποδώσετε την τιµή της µεταβλητής σε µια ιδιότητα αντικειµένου (π.χ. στην ιδιότητα Caption µιας ετικέτας Label1 ή στην ιδιότητα Text ενός TextBox) ή χρησιµοποιώντας µια συνάρτηση πλαισίου διαλόγου (π.χ. τη συνάρτηση MsgBox). Η συνάρτηση MsgBox χρησιµοποιείται για την εµφάνιση δεδοµένων εξόδου και εµφανίζει ένα πλαίσιο µηνύµατος. Η σύνταξή της είναι η εξής:

MsgBox (Μήνυµα),,Τίτλος

Page 15: NotesVB61

15

Όπου Μήνυµα είναι το κείµενο (δεδοµένα εξόδου) που θα εµφανιστεί µέσα στο πλαίσιο µηνύµατος και Τίτλος είναι το κείµενο (µέσα σε αποστρόφους) που θα εµφανιστεί στη γραµµή τίτλου του πλαισίου µηνύµατος και είναι προαιρετικός. Παράδειγµα: Να γραφεί πρόγραµµα που υπολογίζει την ακόλουθη παράσταση 10Χ+(15-X). Αρχικά, δηµιουργούµε µια φόρµα στην οποία τοποθετούµε ένα πλήκτρο εντολής (Command1) και µια ετικέτα (Label1) στην οποία θα εµφανίζεται το αποτέλεσµα της παράστασης. Στο παράθυρο κώδικα του αντικειµένου Command1 γράφουµε τον ακόλουθο κώδικα: Private Sub Command1_Click() Dim X Αs Single Dim Y As Single X = InputBox("Παρακαλώ πληκτρολογήστε τη τιµή της µεταβλητής Χ", "Τιµή Χ") Y = 10*X+(15-X) Label1.Caption = Y End Sub Εναλλακτικά, στο ίδιο παράδειγµα θα µπορούσαµε να χρησιµοποιήσουµε για την εµφάνιση του αποτελέσµατος, τη συνάρτηση MsgBox αντί για το αντικείµενο ετικέτας (Label1). Σε αυτή την περίπτωση η φόρµα θα περιείχε µόνο ένα πλήκτρο εντολής µε τον παρακάτω κώδικα: Private Sub Command1_Click() Dim X Αs Single Dim Y As Single X = InputBox("Παρακαλώ πληκτρολογήστε τη τιµή της µεταβλητής Χ", "Η τιµή του Χ") Y = 10*X+(15-X) MsgBox (Y),,"Αποτέλεσµα παράστασης" End Sub Μέθοδος Print Επίσης, η εµφάνιση της τιµής µιας µεταβλητής σε µια φόρµα ή σε έναν εκτυπωτή συνδεµένο µε τον υπολογιστή µπορεί να επιτευχθεί στη Visual Basic µε τη µέθοδο Print. Η µέθοδος Print έχει την ακόλουθη σύνταξη:

Print παράσταση(-εις)

όπου παράσταση είναι µια µεταβλητή, µια ιδιότητα, µια τιµή κειµένου ή/και µια αριθµητική τιµή της διαδικασίας. Για το διαχωρισµό των παραστάσεων χρησιµοποιούντα τα σύµβολα, ερωτηµατικό (;) ή κόµµα (,). Το ερωτηµατικό (;) τοποθετεί τα στοιχεία το ένα δίπλα στο άλλο ενώ το κόµµα (,) διαχωρίζει τα στοιχεία µε ένα χαρακτήρα στηλοθέτη (tab). 5. Ενσωµατωµένες συναρτήσεις Μια συνάρτηση (function) είναι µια ειδική εντολή που εκτελεί µια συγκεκριµένη διαδικασία και στη συνέχεια επιστέφει στο πρόγραµµα ένα αποτέλεσµα. Η Visual Basic έχει δύο τύπους συναρτήσεων. Ο πρώτος τύπος περιλαµβάνει τις ενσωµατωµένες συναρτήσεις (π.χ. τη τετραγωνική ρίζα (sqr)) τις οποίες µπορείτε να χρησιµοποιήσετε στα προγράµµατά σας. Ο δεύτερος τύπος περιλαµβάνει συναρτήσεις οι οποίες κάνουν µια συγκεκριµένη εργασία και τις δηµιουργείτε εσείς (στο δεύτερο τύπο συναρτήσεων θα αναφερθούµε στην ενότητα 9.1) Πολλές φορές είναι ανάγκη να υπολογίσουµε σε ένα πρόγραµµα το συνηµίτονο ή τη τετραγωνική ρίζα ενός αριθµού. Για αυτό το λόγο η Visual Basic περιέχει αρκετές ενσωµατωµένες συναρτήσεις. Υπάρχουν πολλές ενσωµατωµένες συναρτήσεις: µαθηµατικές συναρτήσεις (αριθµητικές, τριγωνοµετρικές, λογαριθµικές), συναρτήσεις µετατροπής δεδοµένων και συναρτήσεις µορφοποίησης. Οι συναρτήσεις αυτές ενσωµατώνονται στο πρόγραµµά µας από τον υπολογιστή. Εµείς απλώς ζητάµε τη σωστή συνάρτηση που θα θέλαµε να χρησιµοποιήσουµε και τις σωστές µεταβλητές (ορίσµατα) της συνάρτησης. Στο επόµενο πίνακα δίνονται συνήθεις ενσωµατωµένες αριθµητικές συναρτήσεις.

Page 16: NotesVB61

16

Abs(x) Επιστρέφει την απόλυτη τιµή του x Cos(x) Επιστρέφει το συνηµίτονο της γωνίας x η οποία είναι εκφρασµένη σε ακτίνια Sin(x) Επιστρέφει το ηµίτονο της γωνίας x η οποία είναι εκφρασµένη σε ακτίνια Tan(x) Επιστρέφει την εφαπτοµένη της γωνίας x σε ακτίνια. Atn(x) Επιστρέφει το τόξο εφαπτοµένης του x σε ακτίνια Sqr(x) Επιστρέφει τη τετραγωνική ρίζα του x Exp(x) Επιστρέφει τη σταθερά e υψωµένη στο x Log(x) Eπιστρέφει το φυσικό λογάριθµο του x

Κάθε αλφαριθµητικό (ή συµβολοσειρά) έχει ένα µήκος που είναι ο αριθµός των χαρακτήρων που περιέχονται σε αυτή τη σειρά. Θεωρητικά, µια σειρά µπορεί να έχει οποιοδήποτε µήκος, από 0 έως το άπειρο. Στη Visual Basic όµως µια συµβολοσειρά µπορεί να έχει µήκος από 0 έως 32.767 χαρακτήρες. Στον επόµενο πίνακα δίνονται συνήθεις ενσωµατωµένες συναρτήσεις αλφαριθµητικών.

Len(str) Επιστρέφει το µήκος του αλφαριθµητικού π.χ. Len("Μήνας")=5

Left(str, int) Επιστρέφει τους int αριστερούς χαρακτήρες από το αλφαριθµητικό π.χ. Left("Μήνας",2)=Μή

Right(str, int) Επιστρέφει τους int δεξιούς χαρακτήρες από το αλφαριθµητικό π.χ. Right("Μήνας",2)=ας

Στην συνέχεια δίνονται ορισµένες συναρτήσεις ηµεροµηνίας και ώρας οι οποίες δεν δέχονται ορίσµατα.

Time Επιστρέφει την ώρα που αντιστοιχεί στην τρέχουσα ώρα του συστήµατος. Date Επιστρέφει µια τιµή που αντιστοιχεί στην ηµεροµηνία του συστήµατος. Now Επιστρέφει µια τιµή που αντιστοιχεί στην ηµεροµηνία και ώρα του

συστήµατος. 6. ∆οµές Αποφάσεων Όταν ένα πρόγραµµα της Visual Basic εκτελείται ("τρέχει") στον υπολογιστή τότε οι εντολές του κώδικα προγράµµατος εκτελούνται η µια µετά την άλλη σύµφωνα µε τη σειρά που έχουν διατυπωθεί, µέχρι να ολοκληρωθεί και η τελευταία εντολή. Πολλές φορές όµως απαιτείται η εκτέλεση όχι της επόµενης εντολής, αλλά κάποιας άλλης, σε διαφορετικό σηµείο του προγράµµατος υπερπηδώντας ενδεχόµενα τις εντολές που παρεµβάλλονται. Αυτό επιτυγχάνεται µε τις δοµές αποφάσεων. Οι δοµές αποφάσεων της Visual Basic είναι οι ακόλουθες: • If … Then • If … Then … Else • Select Case 6.1 If … Then Η σύνταξη της δοµής If … Then είναι η εξής:

If Συνθήκη Then

Εντολή(-ές) End If

Εάν η Συνθήκη είναι True, τότε η Visual Basic εκτελεί όλες τις εντολές που ακολουθούν τη δεσµευµένη λέξη Then. Εάν όµως η Συνθήκη είναι False, τότε εκτελείται η εντολή που ακολουθεί µετά το End If. Η δεσµευµένη λέξη End If προσδιορίζει το τέλος της δοµής απόφασης If…Then, είναι µη εκτελέσιµη εντολή και πρέπει απαραίτητα να υπάρχει. Είναι προαιρετική µόνο στην περίπτωση που µετά τη δεσµευµένη λέξη Then ακολουθεί µια και µόνο εντολή, τότε η σύνταξη της δοµής If…Then µπορεί να έχει την ακόλουθη µορφή:

If Συνθήκη Then Εντολή

Page 17: NotesVB61

17

Παράδειγµα: Παρατηρείστε ότι οι δύο παρακάτω δοµές είναι ισοδύναµες. Η πρώτη δοµή χρησιµοποιεί τη δεσµευµένη λέξη End If ενώ η δεύτερη δεν την χρησιµοποιεί.

If MemberNo<=120 Then Price=10000 End If

If MemberNo<=120 Then Price=10000

Παραδείγµατα: If Score >= 20 Then

Ward=10000 Label1.Caption = "Κερδίσατε!"

End If DaysInFebruary=28 If ((NumMonth=2) AND (LeapYear="Yes")) Then

DaysInFebruary=29 End If 6.2 If … Then … Else Η δοµή If…Then…Else επιτρέπει τον έλεγχο πολλών συνθηκών. Η δοµή αυτή χρησιµοποιεί επίσης και τις δεσµευµένες λέξεις ElseIf και Else. Η σύνταξή της έχει την ακόλουθη µορφή:

If Συνθήκη1 Then Εντολή(ές)1

ElseIf Συνθήκη2 Then Εντολή(ες)2

… Else

Εντολή(ες)Ν End If

Οι δεσµευµένες λέξεις ElseIf και Else επιτρέπουν να ορίζετε πολλές συνθήκες σε µια δοµή If…Then…Else. Χρησιµοποιούνται µόνα µέσα σε αυτή τη δοµή If…Then…Else και ποτέ ανεξάρτητα από αυτήν. Η δεσµευµένη λέξη End If προσδιορίζει το τέλος της δοµής If…Then…Else και πρέπει απαραίτητα να υπάρχει. Σε µια δοµή If…Then…Else οι εντολές µπορεί να είναι οποιεσδήποτε και οσεσδήποτε εντολές της Visual Basic. Η δοµή If…Then…Else λειτουργεί µε τον εξής τρόπο: Εξετάζονται οι συνθήκες µε τη σειρά. Εάν η συνθήκη είναι αληθής, εκτελούνται οι εντολές που βρίσκονται αµέσως µετά τη συνθήκη αυτή, µέχρι (και όχι) την επόµενη δεσµευµένη λέξη ElseIf, Else ή End If, ανάλογα ποια από τις τρεις συναντιέται πρώτη. Στο σηµείο αυτό τελειώνει και η συγκεκριµένη δοµή If…Then…Else και η Visual Basic συνεχίζει µε τις εντολές που ακολουθούν την End If. Εάν όµως η συνθήκη είναι ψευδής τότε εκτελείται η αµέσως επόµενη ElseIf, Else ή End If, µε υπερπήδηση των εντολών που ακολουθούν τη ψευδή συνθήκη. Εάν καµία από τις παραπάνω συνθήκες δεν είναι αληθής τότε ενεργοποιείται το Else και εκτελούνται οι εντολές που βρίσκονται µετά το Else.

Παραδείγµατα: If LeapYear = "Yes" Then DaysInFebruary = 29 Else DaysInFebruary = 28 End If Εάν η συνθήκη LeapYear="Yes" είναι αληθής τότε εκτελείται η εντολή DaysInFebruary=29, εάν όµως η συνθήκη είναι ψευδής τότε εκτελείται η εντολή DaysInFebruary=28.

Page 18: NotesVB61

18

Dim Number As Integer, Digits As Integer Number = 62 'Αρχική τιµή If Number <10 Then

Digits =1 ElseIf Number <100 Then

Digits =2 Else

Digits =3 End If Η µεταβλητή Number έχει τιµή 62. Στη δοµή If…Then...Else η πρώτη συνθήκη (Number <10) είναι ψευδής ενώ η δεύτερη συνθήκη (Number <100) είναι αληθής και συνεπώς θα εκτελεστεί η εντολή Digits=2 και έτσι θα ολοκληρωθεί αυτή η δοµή. Στη συνέχεια το πρόγραµµα θα εκτελέσει τις εντολές που ακολουθούν µετά τη δεσµευµένη λέξη End If. Παράδειγµα: If Age <= 6 Then CallMe = "Μωρό" ElseIf Age <= 12 Then CallMe = "Παιδί" ElseIf Age <= 18 Then CallMe = "Εφηβος" ElseIf Age <= 70 Then CallMe = "Ενήλικας" Else CallMe = "Ηλικιωµένος" End If H σειρά δήλωσης των συνθηκών σε µια δοµή If…Then…Else είναι πολύ σηµαντική γιατί µπορεί να δώσει λάθος αποτέλεσµα. Παράδειγµα: Ο παρακάτω κώδικας προγράµµατος περιγράφει τον υπολογισµό φόρου που αναλογεί σε µια υποθετική εκκαθάριση φορολογίας εισοδήµατος µε τη χρήση της δοµής If…Then..Else, όπου για εισόδηµα µέχρι και 10.000 € δεν αναλογεί φόρος, για εισόδηµα µέχρι και 25.000 € αναλογεί φόρος 5%, για εισόδηµα µέχρι και 40.000 € αναλογεί φόρος 15%, για εισόδηµα µέχρι και 70.000 € αναλογεί φόρος 30% και για εισόδηµα µεγαλύτερο των 70.000 € αναλογεί φόρος 40%. If NetIncome<=10000Then Tax=0 ElseIf NetIncome<=25000 Then Tax=(NetIncome-10000) *0,05 ElseIf NetIncome<=40000 Then Tax=750+((NetIncome-25000)*0,15) ElseIf NetIncome<=70000 Then Tax=750 +2250 +((NetIncome-40000)*0,30) Else Tax=750+2250+9000+((NetIncome-70000)*0,40) End If Τα παρακάτω παραδείγµατα είναι ισοδύναµα. If (Sales > 100000) Then If (UnitSold > 100) Then Bonus=5000 End If End If

Page 19: NotesVB61

19

If (Sales > 100000) AND (UnitSold > 100) Then

Bonus=5000 End If 6.3 Select Case Όταν θέλετε να επιλέξετε από µια διακλάδωση η οποία βασίζεται σε µια µεταβλητή τότε µπορείτε να χρησιµοποιείται τη δοµή Select Case. Η δοµή Select Case είναι παρόµοια µε τη δοµή If….Then…Else αλλά είναι αποτελεσµατικότερη όταν οι υποδιαιρέσεις εξαρτώνται από µια µόνο µεταβλητή. Η σύνταξη της Select Case είναι η ακόλουθη:

Select Case Μεταβλητή Case Τιµή1

Εντολή(ές)1 Case Τιµή2

Εντολή(ές)2 . . . Case Else

Εντολή(ές)Ν End Select Η δοµή Select Case αρχίζει µε τις δεσµευµένες λέξεις Select Case και τελειώνει µε τις δεσµευµένες λέξεις End Select. Οι όροι Case και Case Else χρησιµοποιούνται µόνο µέσα στη δοµή Select Case και ποτέ ανεξάρτητα από αυτή. Ο όρος Case Else δεν είναι αναγκαίος όµως σας επιτρέπει να συµπεριλάβετε οποιεσδήποτε τιµές σας διέφυγαν. Η δοµή Select Case λειτουργεί µε τον εξής τρόπο: Εξετάζεται η µεταβλητή και στη συνέχεια το αποτέλεσµα της συγκρίνεται µε τις τιµές των διαφόρων περιπτώσεων. Εάν η Μεταβλητή αντιστοιχεί στην Τιµή1 εκτελούνται οι Εντολές1, εάν η µεταβλητή αντιστοιχεί στην Τιµή2 εκτελούνται οι Εντολές2 και ούτω καθεξής. Εάν καµία από τις τιµές δεν αντιστοιχεί στη µεταβλητή εκτελούνται οι ΕντολέςΝ. Ο όρος Case Else είναι προαιρετικός, χρησιµοποιείται όταν δεν ισχύει καµία από τις προηγούµενες περιπτώσεις. Η δοµή Select Case έχει τη δυνατότητα χρήσης συγκριτικών τελεστών (=, <>, >, <, >=, <=). Η δυνατότητα αυτή πραγµατοποιείται µε τη χρήση της δεσµευµένης λέξης Is. Η δεσµευµένη λέξη Is συγκρίνει τη µεταβλητή µε την παράσταση που ακολουθεί τη δεσµευµένη λέξη Is (π.χ. Is<=10). Επίσης, η δοµή Select Case µπορεί να χρησιµοποιήσει τη δεσµευµένη λέξη To για να ορίσει το εύρος τιµών της µεταβλητής (π.χ. 10 To 30). Οι τιµές της µεταβλητής στη δοµή Select Case µπορεί να είναι: • αριθµός ή αριθµητική έκφραση (π.χ. 12.2, cos(A)), • αλφαριθµητικό ή έκφραση αλφαριθµητικού (π.χ. "John", NumMonths) • διάστηµα τιµών (π.χ. 15 to 20, "C" To "CF"). • συγκριτική τιµή (π.χ. Is<10, Is>"Β"), • συνδυασµός (π.χ. Case 1 To 4, 7 To 9, 11, 13, Is>MaxNumber) υπό τον όρο ότι η µεταβλητή και οι

τιµές της πρέπει να είναι ή όλες αριθµητικές ή όλες αλφαριθµητικές. Παράδειγµα: Να γραφεί πρόγραµµα όπου δίνεται η ηλικία και τυπώνεται κατάλληλο µήνυµα µε τον εξής τρόπο: Εάν η ηλικία είναι 16 ετών εµφανίζεται το µήνυµα "Μπορείς να οδηγήσεις µηχανάκι". Εάν η ηλικία είναι 18 ετών εµφανίζεται το µήνυµα "Μπορείς να ψηφίσεις". Εάν η ηλικία είναι 60 ετών εµφανίζεται το µήνυµα "Μπορείς να συνταξιοδοτηθείς" ενώ σε κάθε άλλη περίπτωση εµφανίζεται το µήνυµα "Είσαι στην καλύτερη ηλικία". Αρχικά, δηµιουργούµε µια φόρµα στην οποία τοποθετούµε ένα πλήκτρο εντολής (Command1) και µια ετικέτα (Label1) στην οποία θα εµφανίζεται το αντίστοιχο µήνυµα. Στο παράθυρο κώδικα του αντικειµένου Command1 γράφουµε τον ακόλουθο κώδικα:

Page 20: NotesVB61

20

Private Sub Command1_Click() Dim Age Αs Single Select Case Age Case 16 Label1.Caption= "Μπορείς να οδηγήσεις µηχανάκι" Case 18 Label1.Caption= "Μπορείς να ψηφίσεις" Case 60 Label1.Caption= "Μπορείς να συνταξιοδοτηθείς" Case Else Label1.Caption= "Είσαι στην καλύτερη ηλικία" End Select End Sub Παράδειγµα: Να γραφεί πρόγραµµα όπου δίνεται η θερµοκρασία περιβάλλοντος και εµφανίζει το εξής µήνυµα: εάν η θερµοκρασία είναι µικρότερη ή ίση µε 8 βαθµούς εµφανίζει το µήνυµα "Κάνει παγωνιά", εάν η θερµοκρασία είναι µεγαλύτερη από 8 και µικρότερη ή ίση µε 15 εµφανίζει το µήνυµα "Κάνει ψύχρα", εάν η θερµοκρασία είναι µεγαλύτερη από 15 και µικρότερη ή ίση µε 28 εµφανίζει το µήνυµα "Έχει καλό καιρό", εάν η θερµοκρασία είναι µεγαλύτερη από 28 τότε εµφανίζει το µήνυµα "Κάνει πολύ ζέστη".

Το πρόγραµµα θα περιέχει στη φόρµα τα παρακάτω τρία αντικείµενα.

Αντικείµενο Ιδιότητα Ρύθµιση Command1 Caption Εκτέλεση Command2 Caption Έξοδος Label1 Caption

Private Sub Command1_Click() Dim Temp As Single Temp = InputBox("Παρακαλώ δώστε τη θερµοκρασία περιβάλλοντος") Select Case Temp Case Is <= 8 Label1.Caption= "Κάνει παγωνιά" Case Is<=15 Label1.Caption= "Κάνει ψύχρα" Case Is <=28 Label1.Caption= "Έχει καλό καιρό" Case Else Label1.Caption= "Κάνει πολύ ζέστη" End Select End Sub Private Sub Command1_Click()

End End Sub Παράδειγµα: Το παράδειγµα αυτό έχει το ίδιο αποτέλεσµα µε το αντίστοιχο παράδειγµα που αναφέρθηκε στην ενότητα 6.2 µε τη χρήση της δοµής If…Then…Else. Select Case Age Case Is <= 6 CallMe = "Μωρό" Case 6 To 12 CallMe = "Παιδί" Case 12 To 18 CallMe = "Εφηβος" Case 18 To 70

Page 21: NotesVB61

21

CallMe = "Ενήλικας" Case Else CallMe = "Ηλικιωµένος" End Select Παράδειγµα: Να γραφεί πρόγραµµα τα οποίο αναγνωρίζει τα ονόµατα φίλων σας και τυπώνει κατάλληλο µήνυµα µε τον εξής τρόπο: Εάν δοθεί το όνοµα "Μαρία" τυπώνει το µήνυµα "Γειά σου Μαρία". Εάν δοθεί το όνοµα "Κώστας" τυπώνει το µήνυµα "Τι κάνεις Κώστα;". Εάν δοθεί το όνοµα "Ελένη" τυπώνει το µήνυµα "Πώς είσαι Ελένη;". Για οποιοδήποτε άλλο όνοµα τυπώνει το µήνυµα "Γεια σου κύριε Άγνωστε".

Το πρόγραµµα θα περιέχει στη φόρµα τα παρακάτω αντικείµενα.

Αντικείµενο Ιδιότητα Ρύθµιση Command1 Caption Εκτέλεση Text1 Text (κενό)

Private Sub Command1_Click() Dim name As String name=Text1.Text Select Case name Case "Μαρία"

MsgBox "Γειά σου Μαρία" Case "Κώστας"

MsgBox "Τι κάνεις Κώστα;" Case "Ελένη"

MsgBox "Πώς είσαι Ελένη;" Case Else

MsgBox "Γεια σου κύριε Άγνωστε" End Select End Sub 7. Επαναλήψεις Η Visual Basic παρέχει τη δυνατότητα επανάληψης ενός συνόλου εντολών µε τη βοήθεια βρόχου. Βρόχος είναι ένα σύνολο εντολών προγράµµατος που εκτελούνται επαναληπτικά. H Visual Basic παρέχει τις ακόλουθες περιπτώσεις επαναλήψεων: • Επανάληψη ενός συνόλου εντολών για προκαθορισµένο αριθµό επαναλήψεων (For … Next). • Επανάληψη ενός συνόλου εντολών όσο µια συνθήκη είναι αληθής (Do While ή Do Loop While). • Επανάληψη ενός συνόλου εντολών µέχρι µια συνθήκη να γίνει αληθής (Do Until ή Do Loop Until). 7.1 For … Next Η απλούστερη µέθοδος επανάληψης είναι αυτή της επανάληψης ενός συνόλου εντολών για προκαθορισµένο αριθµό επαναλήψεων µε τη χρήση του βρόχου For…Next. Ένας βρόχος For … Next, είναι κατάλληλος για την εκτέλεση µίας συγκεκριµένης οµάδας εντολών, ορισµένες φορές. Στην ουσία, είναι ένας σύντοµος τρόπος γραφής πολλών εντολών που θέλουµε να επαναλαµβάνονται. Η σύνταξη του βρόχου For…Next είναι της µορφής:

For Μετρητής= αρχική τιµή To τελική τιµή [Step βήµα] εντολή(ες)

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

Page 22: NotesVB61

22

η προεπιλεγµένη τιµή του είναι το 1. Το βήµα µπορεί να πάρει είτε θετικές είτε αρνητικές τιµές. Εάν, όταν ξεκινά η επανάληψη η τελική τιµή είναι µικρότερη από την αρχική τιµή (για θετικό βήµα), οι εντολές δεν θα εκτελεστούν ποτέ. Ο βρόχος For … Next τερµατίζει όταν ο µετρητής πάρει τιµή µεγαλύτερη από την τελική τιµή. Παράδειγµα: Να γραφεί κώδικας ο οποίος να εµφανίζει στη φόρµα εκατό φορές το µήνυµα "Βρόχοι στη Visual Basic". Για τη συγγραφή αυτού του κώδικα χρησιµοποιείται ο παρακάτω βρόχος For … Next οποίος ισοδυναµεί µε τη χρήση της εντολής Print "Βρόχοι στη Visual Basic" εκατό φορές. For counter = 1 To 100

Print "Βρόχοι στη Visual Basic" Next counter Ο κώδικας αυτός λειτουργεί ως εξής: Η πρώτη γραµµή του βρόχου δηµιουργεί µια µεταβλητή µε όνοµα counter και δίνει σε αυτή τη µεταβλητή τη τιµή 1. Η δεύτερη γραµµή εκτελεί την εντολή δηλαδή εµφανίζει στη φόρµα το µήνυµα "Βρόχοι στη Visual Basic. Στη τρίτη γραµµή υπολογίζεται η νέα τιµή της µεταβλητής counter, προσθέτοντας 1 στην τιµή της counter (δηλαδή counter=2). Στη συνέχεια πηγαίνει πάλι στην πρώτη γραµµή. Η επανάληψη των εντολών συνεχίζεται µέχρι η µεταβλητή πάρει την τιµή 101 δηλαδή τιµή µεγαλύτερη από την τελική τιµή της µεταβλητής. Παράδειγµα: Οι επόµενοι δύο βρόχοι For … Next είναι ισοδύναµοι: For Number=1 To 15 Print "Καληµέρα" Next Number For Number=1 To 15 Step 1

Print "Καληµέρα" Next Number Παράδειγµα: Ο παρακάτω κώδικας εµφανίζει σε µια φόρµα τα µηνύµατα Γραµµή 1, Γραµµή 2,…, Γραµµή 20 το ένα κάτω από το άλλο.

For i=1 To 20 Print "Γραµµή"; i Next i Παράδειγµα: Ο παρακάτω κώδικας υπολογίζει το άθροισµα των ακεραίων αριθµών από το 1 µέχρι το 15. Παρατηρείστε ότι στη µεταβλητή Sum αποδίδεται αρχική τιµή ίση µε µηδέν.

Sum=0 For Number=1 To 15 Sum=Sum+Number Next Number Παράδειγµα: Ο παρακάτω κώδικας υπολογίζει το άθροισµα των ακέραιων αριθµών 5, 10 και 15. Το αποτέλεσµα θα είναι Sum=5+10+15=30.

Sum=0 For Number = 5 To 15 Step 5 Sum=Sum+Number Next Number Παράδειγµα: Σε ένα βρόχο ο µετρητής µπορεί να χρησιµοποιεί δεκαδικούς αριθµούς. Ο παρακάτω κώδικας υπολογίζει το εξής άθροισµα: Sum=1 +1,5+2+2,5+3+3,5=13,5.

Sum=0 For Number = 1 To 3.5 Step 0.5 Sum=Sum+Number Next Number

Page 23: NotesVB61

23

Παράδειγµα: Η Visual Basic µπορεί να χρησιµοποιεί οποιοδήποτε συνδυασµό αριθµών για τον µετρητή. Για παράδειγµα, ο παρακάτω κώδικας εκτελεί έξι φορές το βρόχο και εµφανίζει κάθε φορά την τιµή του µετρητή k στη φόρµα όπου η αρχική τιµή του είναι ίση µε 122 και η τελική του είναι ίση µε 127.

For k = 122 To 127 Print k Next k Παράδειγµα: Μπορείτε να θέσετε βρόχους For…Next τον ένα µέσα στον άλλο. For i=1 To 4

For j=1 To 3 For k=1 To 2

Print "Γραµµή"; i; j; k Next k

Next j Next i Για να βγούµε από ένα βρόχο For…Next πριν ολοκληρωθεί η εκτέλεσή του, χρησιµοποιούµε την εντολή Exit For. Η εντολή Exit For χρησιµοποιείται κυρίως όταν χρειάζεται να αντιµετωπισθούν ειδικές περιπτώσεις µέσα στο βρόχο και συντάσσεται κυρίως σε συνδυασµό µε τη δοµή If…Then. Παράδειγµα: For i=1 To 20 FirstName = InputBox("Πληκτρολογήστε το όνοµά σας ή Τέλος για έξοδο:") If FirstName ="Τέλος" Then Exit For Print FirstName Next i Παράδειγµα: Ο παρακάτω βρόχος For…Next επαναλαµβάνεται 20 φορές. Όµως η δεύτερη γραµµή λέει στη Visual Basic να εγκαταλείψει το βρόχο For…Next µόλις η µεταβλητή counter πάρει την τιµή 5, παρόλο που η τιµή της είναι µικρότερη από 20.

For counter=1 To 20 If counter =5 Then Exit For

Next counter 7.2 Do … Loop Εναλλακτικός βρόχος του For…Next, είναι ο βρόχος Do…Loop, µε τον οποίο εκτελούµε µια σειρά εντολών έως ότου µία συγκεκριµένη συνθήκη (δηλαδή µεταβλητή ή παράσταση) µέσα στον βρόχο είναι αληθής ή ψευδής. Ένας βρόχος Do…Loop µπορεί να περιέχει µια ή περισσότερες εντολές. Αυτός ο τύπος βρόχων είναι χρήσιµος όταν δεν γνωρίζουµε τον ακριβή αριθµό των επαναλήψεων των εντολών. Για τον βρόχο Do…Loop υπάρχουν οι ακόλουθοι διαφορετικοί τύποι: Τύπος 1:

Do While Συνθήκη Εντολή(ές)

Loop Ο βρόχος Do While λειτουργεί µε τον εξής τρόπο: Εάν η συνθήκη είναι ψευδής τότε η Visual Basic αγνοεί όλες τις εντολές που βρίσκονται στο εσωτερικό του βρόχου Do While και συνεχίζει τις επόµενες εντολές (µετά το Loop) του προγράµµατος. Εάν η συνθήκη είναι αληθής τότε εκτελούνται οι εντολές που βρίσκονται στο εσωτερικό του βρόχου Do While (τουλάχιστον µια φορά). Όταν η συνθήκη είναι πάντα αληθής τότε οι εντολές του βρόχου επαναλαµβάνονται για πάντα (ατέρµονας βρόχος).

Page 24: NotesVB61

24

Παράδειγµα: FirstName = "Μαρία" Do While FirstName <> "Τέλος" FirstName = InputBox("∆ώσε το όνοµά σου, ή Τέλος για έξοδο") If FirstName <> "Τέλος" Then Print FirstName Loop Τύπος 2:

Do Εντολή(-ές)

Loop While Συνθήκη Ο βρόχος Do Loop While λειτουργεί µε τον εξής τρόπο: Την πρώτη φορά που η Visual Basic βλέπει το βρόχο εκτελεί όλες τις εντολές που βρίσκονται στο εσωτερικό του. ∆ηλαδή ο βρόχος εκτελείται τουλάχιστον µια φορά ανεξάρτητα από την τιµή της συνθήκης. Στην συνέχεια, η Visual Basic ελέγχει εάν η τιµή της συνθήκης είναι ψευδής ή αληθής. Εάν η συνθήκη είναι ψευδής τότε αγνοούνται όλες οι εντολές που βρίσκονται στο εσωτερικό του βρόχου Do Loop While. Εάν η συνθήκη είναι αληθής τότε επαναλαµβάνεται η εκτέλεση των εντολών που βρίσκονται στο εσωτερικό του βρόχου Do Loop While. Παράδειγµα: Do FirstName = InputBox("∆ώσε το όνοµά σου ή Τέλος για έξοδο") If FirstName <> "Τέλος" Then Print FirstName Loop While FirstName <> "Τέλος" Παράδειγµα: Ο παρακάτω κώδικας περιγράφει τη µετατροπή της θερµοκρασίας από βαθµούς Φαρενάιτ σε Κελσίου. Ο βρόχος Do…Loop εκτελείται µέχρι να πατήσει ο χρήστης το κουµπί Cancel το οποίο και επιστρέφει τον κενό χαρακτήρα (" ") στη µεταβλητή Τemp. H συνάρτηση Int επιστρέφει µια τιµή χωρίς δεκαδικά ψηφία.

Do Temp=InputBox("∆ώσε τη θερµοκρασία σε Φαρενάιτ", "Φαρενάιτ σε Κελσίου") If Temp <> " " Then Celsius=Int((Temp+40)*5/9-40) Print "Θερµοκρασία σε Κελσίου", Celsius EndIf Loop While Temp <>" " End Τύπος 3:

Do Until Συνθήκη Εντολή(-ές)

Loop Ο βρόχος Do Until λειτουργεί µε τον εξής τρόπο: Εάν η συνθήκη είναι αληθής τότε η Visual Basic αγνοεί όλες τις εντολές που βρίσκονται στο εσωτερικό του βρόχου Do Until. Εάν η συνθήκη είναι ψευδής τότε εκτελούνται οι εντολές που βρίσκονται στο εσωτερικό του βρόχου Do Until. Παράδειγµα: FirstName = "Μαρία" Do Until FirstName = "Τέλος" FirstName = InputBox("∆ώσε το όνοµά σου ή Τέλος για έξοδο") If FirstName <> "Τέλος" Then Print FirstName Loop

Page 25: NotesVB61

25

Τύπος 4: Do

εντολή(-ές) Loop Until συνθήκη

Ο βρόχος Do Loop Until λειτουργεί µε τον εξής τρόπο: Την πρώτη φορά που η Visual Basic βλέπει το βρόχο εκτελεί όλες τις εντολές που βρίσκονται στο εσωτερικό του. ∆ηλαδή, ο βρόχος εκτελείται τουλάχιστον µια φορά ανεξάρτητα από την τιµή της συνθήκης. Στην συνέχεια, η Visual Basic ελέγχει εάν η τιµή της συνθήκης είναι ψευδής ή αληθής. Εάν η συνθήκη είναι ψευδής τότε επαναλαµβάνεται η εκτέλεση των εντολών που βρίσκονται στο εσωτερικό του βρόχου Do Loop Until. Εάν η συνθήκη είναι αληθής τότε αγνοούνται όλες οι εντολές που βρίσκονται στο εσωτερικό του βρόχου Do…Loop Until. Παράδειγµα: Do FirstName = InputBox("∆ώσε το όνοµά σου ή Τέλος για έξοδο") If FirstName <> "Τέλος" Then Print FirstName Loop Until FirstName = "Τέλος" Οι βρόχοι που χρησιµοποιούν τη δεσµευµένη λέξη Until µοιάζουν µε αυτούς που χρησιµοποιούν τη δεσµευµένη λέξη While, µε τη µόνη διαφορά ότι η συνθήκη ελέγχου περιλαµβάνει συνήθως τον αντίθετο τελεστή. Αναλυτικότερα, ένας βρόχος Until µπορεί να µετατραπεί σε While εάν στην αρχή της συνθήκης τοποθετηθεί ο τελεστής NOT. Για παράδειγµα, η έκφραση While A>O είναι ισοδύναµη µε την έκφραση Until Not A>0 ή Until A<=0. Έχει πολύ µεγάλη σηµασία να σχεδιάζετε τη συνθήκη του βρόχου έτσι ώστε κάθε βρόχος να έχει ένα πραγµατικό σηµείο εξόδου. Αν η συνθήκη του βρόχου δεν παίρνει ποτέ την τιµή False (ψευδής), ο βρόχος Do Loop ή Do Loop Until θα εκτελείται για πάντα. Παράδειγµα: Do Number=InputBox ("∆ώσε τον αριθµό που θα υψωθεί στο τετράγωνο ή –1 για το τέλος") Number=Number*Number Print Number Loop While Number>=0 8. Πίνακες Πίνακας είναι ένα σύνολο µεταβλητών που έχουν κοινό όνοµα και τύπο. Οι ανεξάρτητες τιµές του πίνακα ονοµάζονται στοιχεία και αναγνωρίζονται από δείκτες. Ο δείκτης εµφανίζεται σε παρένθεση µετά το όνοµα της µεταβλητής. Εξ ορισµού η τιµή του πρώτου δείκτη αντιστοιχεί στο 0. Οι πίνακες ορίζονται όπως και οι µεταβλητές εάν ο πίνακας είναι τοπικός χρησιµοποιείται η δεσµευµένη λέξη Dim ενώ εάν είναι δηµόσιος η δεσµευµένη λέξη Public. Η σύνταξη του ορισµού ενός πίνακα έχει την παρακάτω µορφή.

Dim ΌνοµαΠίνακα(Μεγαλύτερος δείκτης(-ες)) As Τύπος ∆εδοµένων ή

Public ΌνοµαΠίνακα(Μεγαλύτερος δείκτης(-ες)) As Τύπος ∆εδοµένων Επειδή η Visual Basic θεωρεί την πρώτη τιµή του δείκτη ίση µε 0 εάν θέλετε να θέσετε την πρώτη τιµή του δείκτη ίση µε 1 θα πρέπει να χρησιµοποιήσετε την επόµενη εντολή:

Option Base 1

Παράδειγµα: Έστω ένας µονοδιάστατος πίνακας Months(12). Εάν ο πίνακας αυτός ορισθεί ως τοπικός χρησιµοποιείται η εντολή: Dim Months(12) As Integer Εάν όµως ο πίνακας ορισθεί ως δηµόσιος χρησιµοποιείται η εντολή: Public Months(12) As Integer Κάθε µια από τις παραπάνω εντολές ορίζει τον πίνακα µε 13 στοιχεία (αριθµούνται από το 0 µέχρι και το 12) και κάθε στοιχείο έχει µια ακέραια τιµή. Για να θέσουµε τη τιµή του πρώτου δείκτη του πίνακα ίση µε 1 χρησιµοποιούµε την εντολή Option Base 1. ∆ηλαδή:

Page 26: NotesVB61

26

Option Base 1 Dim Months(12) As Integer ή Option Base 1 Public Months(12) As Integer Μονοδιάστατοι Πίνακες Παράδειγµα: Έστω ότι χρειάζεται να υπολογιστεί το σύνολο των πωλήσεων εκατό εταιρειών όπου οι πωλήσεις της πρώτης εταιρείας εκφράζονται από τη µεταβλητή ComSales1, της δεύτερης εταιρείας από τη µεταβλητή ComSales2, … και της δέκατης εταιρείας από την µεταβλητή ComSales100. Για την πρόσθεση των µεταβλητών αυτών θα πρέπει να γραφεί η παρακάτω εντολή. Total = ComSales1+ComSales2 + ComSales3+ … + ComSales100 Συχνά στα προγράµµατα χρειάζεται να χρησιµοποιούνται πολλές τιµές που να σχετίζονται µεταξύ τους. Tο µεγάλο πλεονέκτηµα που δίνουν οι πίνακες σε σχέση µε τα διακριτά ονόµατα µεταβλητών, είναι ότι όταν θέλετε να εργαστείτε µε µια οµάδα µεταβλητών δεν χρειάζεται να αναφέρετε κάθε µεταβλητή. Στην συνέχεια, δίνεται η παραπάνω εντολή µε τη χρήση µονοδιάστατου πίνακα. Option Base 1 Dim ComSales(100) As Single Total =0 ‘Μηδενισµός συνόλου For Count=1 To 100 Total=Total+ComSales(Count) ‘Πρόσθεση στοιχείων Next Count ‘Η µεταβλητή Total τώρα περιέχει το άθροισµα των 100 τιµών Παρατηρείστε πόσο εύκολα µπορείτε να προσθέσετε τις πωλήσεις 1.000 ή 100.000 εταιρειών. Παράδειγµα: Υποθέστε ότι χρειάζεται να γράψετε κώδικα που διαβάζει τα ονόµατα διακοσίων φοιτητών ενός τµήµατος. ∆ηλώνοντας ένα πίνακα µε στοιχεία τύπου String και ένα βρόχο For…Next κάνει τη λήψη των ονοµάτων απλή:

Dim ChildName(200) As String For i=1 To 200

ChildName(i)=InputBox("Πληκτρολογείστε το όνοµα του φοιτητή" & i) Next i Παράδειγµα: ∆ίνονται οι πωλήσεις µιας εταιρείας ανά ηµέρα σε µια εβδοµάδα. Να γραφεί πρόγραµµα το οποίο εµφανίζει στη φόρµα τις πωλήσεις της εταιρείας ανά ηµέρα και υπολογίζει το άθροισµα των πωλήσεων. Το πρόγραµµα θα περιέχει µια βασική λειτουργική µονάδα στην οποία θα ορίζετε ο πίνακας. Ο κώδικας της βασικής λειτουργικής µονάδας δίνεται στη συνέχεια: Option Base 1 Public Sales(5) As Single Επίσης, το πρόγραµµα θα έχει µια φόρµα η οποία θα περιέχει τα παρακάτω τέσσερα πλήκτρα εντολών.

Αντικείµενο Ιδιότητα Ρύθµιση Command1 Caption Εισαγωγή Πωλήσεων Command2 Caption Εµφάνιση Πωλήσεων Command3 Caption Άθροισµα Πωλήσεων Command4 Caption Έξοδος

Page 27: NotesVB61

27

Private Sub Command1_Click() 'Εισαγωγή Πωλήσεων Dim i As Integer For i = 1 To 5 Sales(i) = InputBox("∆ώσε πωλήσεις ανά ηµέρα " & i, "Πωλήσεις") Next i End Sub Private Sub Command2_Click() 'Εµφάνιση Πωλήσεων Cls Dim i As Integer For i = 1 To 5 Print Sales(i) Next i End Sub Private Sub Command3_Click() 'Άθροισµα Πωλήσεων Cls Dim i As Integer Dim Total As Single Total = 0 For i = 1 To 5 Total = Total + Sales(i) Next i Print "Αθροισµα Πωλήσεων:=", Total End Sub Private Sub Command4_Click() End End Sub ∆ιδιάστατοι Πίνακες Παράδειγµα: ∆ίνονται τα στοιχεία ενός διδιάστατου πίνακα A διαστάσεων 3x3. Να γραφεί πρόγραµµα το οποίο: α) να διαβάζει τα στοιχεία του πίνακα, β) να τυπώνει τα στοιχεία του πίνακα, γ) να υπολογίζει το άθροισµα όλων των στοιχείων, δ) να υπολογίζει το άθροισµα των στοιχείων του πίνακα ανά γραµµή και ε) να βρίσκει το µεγαλύτερο στοιχείο του πίνακα. Το πρόγραµµα θα περιέχει µια βασική λειτουργική µονάδα στην οποία θα ορίζετε ο πίνακας Α. Ο κώδικας της βασικής λειτουργικής µονάδας είναι: Option Base 1 Public A(3, 3) As Single Επίσης, το πρόγραµµα θα έχει µια φόρµα η οποία θα περιέχει τα παρακάτω έξι πλήκτρα εντολών.

Αντικείµενο Ιδιότητα Ρύθµιση Command1 Caption Ανάγνωση στοιχείων του πίνακα Command2 Caption Εµφάνιση στοιχείων του πίνακα Command3 Caption Άθροισµα στοιχείων του πίνακα Command4 Caption Άθροισµα στοιχείων ανά γραµµή Command5 Caption Μεγαλύτερο στοιχείο πίνακα Command6 Caption Έξοδος

Ο κώδικας των πλήκτρων εντολών δίνεται στη συνέχεια.

Page 28: NotesVB61

28

Private Sub Command1_Click() ' Ανάγνωση των στοιχείων του πίνακα Dim i As Integer, j As Integer For i = 1 To 3

For j = 1 To 3 A(i, j) = InputBox("Γραµµή:" & i & " Στήλη:" & j, "Εισαγωγή")

Next j Next i End Sub Private Sub Command2_Click() 'Εµφάνιση των στοιχείων του πίνακα Dim i As Integer, j As Integer For i = 1 To 3 For j = 1 To 3 Print A(i, j) & " "; Next j Print Next i End Sub Private Sub Command3_Click() ' Άθροισµα στοιχείων πίνακα Dim i As Integer, j As Integer Dim Sum As Integer Sum = 0 For i = 1 To 3

For j = 1 To 3 Sum = Sum + Α(i, j)

Next j Next i Print "Σύνολο: " & Sum End Sub Private Sub Command4_Click() ' Άθροισµα στοιχείων ανά γραµµή Dim i As Integer, j As Integer Dim GrammiSum As Single For i = 1 To 3

GrammiSum = 0 For j = 1 To 3

GrammiSum = GrammiSum + A(i, j) Next j Print "Γραµµή: " & i & " Σύνολο: " & GrammiSum

Next i End Sub Private Sub Command5_Click() ' Εύρεση µεγαλυτέρου στοιχείου του πίνακα Dim i As Integer, j As Integer Dim Amax As Single Αmax = A(1, 1) For i = 1 To 3 For j = 1 To 3 If A(i, j) > Amax Then Amax = A(i, j) End If

Page 29: NotesVB61

29

Next j Next i Print "Μεγαλύτερο: " & Amax End Sub Private Sub Command6_Click() End End Sub

Οι πίνακες που περιέχουν καθορισµένο πλήθος στοιχείων ονοµάζονται πίνακες σταθερού µεγέθους (fixed-size arrays) ενώ οι πίνακες που περιέχουν µεταβλητό πλήθος στοιχείων ονοµάζονται δυναµικοί πίνακες (dynamic arrays). Για να ορίσετε ένα δηµόσιο δυναµικό πίνακα χρησιµοποιείται την ίδια εντολή όπως και στους πίνακες σταθερού µεγέθους αλλά η παρένθεση µένει κενή (π.χ. Public Score() As Variant). Στη συνέχεια όταν γνωρίζετε τις διαστάσεις του πίνακα χρησιµοποιείται η εντολή ReDim η οποία ορίζει το µέγεθος του πίνακα κατά το χρόνο εκτέλεσης (π.χ. ReDim Score(3,3)). Παράδειγµα: ∆ίνεται πίνακας B διαστάσεων n x m. Να γραφεί πρόγραµµα το οποίο: • Να διαβάζει τις διαστάσεις του πίνακα. • Να διαβάζει τα στοιχεία του πίνακα. • Να υπολογίζει το γινόµενο των στοιχείων ανά στήλη. • Να υπολογίζει το µεγαλύτερο στοιχείο του πίνακα. Το πρόγραµµα θα περιέχει µια βασική λειτουργική µονάδα και µια φόρµα µε πέντε πλήκτρα εντολής. Οι ιδιότητες των αντικειµένων δίνονται στον παρακάτω πίνακα.

Αντικείµενο Ιδιότητα Ρύθµιση Command1 Caption Ανάγνωση διαστάσεων πίνακα Command2 Caption Ανάγνωση στοιχείων πίνακα Command3 Caption Γινόµενο στοιχείων ανά στήλη Command4 Caption Εύρεση µικρότερου στοιχείου του πίνακα Command4 Caption Έξοδος

Ο κώδικας που θα περιέχει η βασική λειτουργική µονάδα είναι: Option Base 1 Public B() As Integer Public n As Integer Public m As Integer Ο κώδικας των πλήκτρων εντολών δίνεται στη συνέχεια. Private Sub Command1_Click()

n = InputBox("∆ώσε το αριθµό των γραµµών του πίνακα", "Γραµµές") m = InputBox("∆ώσε το αριθµό των στηλών του πίνακα", "Στήλες") ReDim B(n, m)

End Sub Private Sub Command2_Click() ' Ανάγνωση των στοιχείων του πίνακα Dim i As Integer, j As Integer For i = 1 To n

For j = 1 To m B(i, j) = InputBox("Γραµµή:" & i & " Στήλη:" & j, "Εισαγωγή")

Next j Next i End Sub

Page 30: NotesVB61

30

Private Sub Command3_Click() ' Γινόµενο στοιχείων ανά στήλη Dim i As Integer, j As Integer Dim gin As Integer Cls For j = 1 To m

gin = 1 For i = 1 To n

gin = gin * Β(i, j) Next i Print "Στήλη"; j, " Σύνολο: "; gin

Next j End Sub Private Sub Command4_Click() ' Εύρεση µικρότερου στοιχείου του πίνακα Dim i As Integer, j As Integer Dim Bmin As Integer Cls Bmin = B(1, 1) For i = 1 To n

For j = 1 To m If B(i, j)< Bmin Then

Bmin = B(i, j) End If

Next j Next i Print "Μικρότερο στοιχείο του πίνακα είναι: "; Bmin Print End Sub Private Sub Command5_Click() End End Sub 9. Γενικές διαδικασίες Οι βασικές λειτουργικές µονάδες εκτός από δηµόσιες µεταβλητές µπορούν να περιέχουν και γενικές διαδικασίες που µπορείτε να καλείτε από οποιοδήποτε σηµείο του προγράµµατος. Οι γενικές διαδικασίες διαφέρουν από τις διαδικασίες (συµβάντων) επειδή δεν συνδέονται µε κανένα συµβάν χρόνου εκτέλεσης ή µε αντικείµενα της φόρµας. Οι γενικές διαδικασίες είναι παρόµοιες µε τις ενσωµατωµένες εντολές και συναρτήσεις της Visual Basic Οι διαδικασίες αυτές καλούνται µε τα ονόµατα τους και µπορούν να δεχθούν ορίσµατα. Κάθε διαδικασία εκτελεί µια συγκεκριµένη εργασία. Τα σηµαντικότερα πλεονεκτήµατα των γενικών διαδικασιών είναι ότι καταργούν την επανάληψη γραµµών κώδικα, βελτιώνουν την αναγνωσιµότητα του προγράµµατος και απλοποιούν την ανάπτυξή του. Υπάρχουν δύο τύποι γενικών διαδικασιών που µπορείτε να χρησιµοποιήσετε σε ένα πρόγραµµα. ∆ιαδικασία Function: Η διαδικασία Function µπορεί να καλείται µε το όνοµά της από διαδικασίες συµβάντων ή από άλλες διαδικασίες. Μπορεί να δεχθεί ορίσµατα και επιστέφει πάντα µια τιµή στη θέση του ονόµατός της. Συνήθως χρησιµοποιείται για υπολογισµούς. ∆ιαδικασία Sub: Η διαδικασία Sub (ή υπορουτίνα) µπορεί να καλείται µε το όνοµά της από διαδικασίες συµβάντων ή από άλλες διαδικασίες. Μπορεί να δεχθεί ορίσµατα. Σε αντίθεση µε τις συναρτήσεις, οι υπορουτίνες δεν επιστρέφουν τιµές που σχετίζονται µε τον όνοµά τους. Μια υπορουτίνα χρησιµοποιείται

Page 31: NotesVB61

31

συνήθως για να επεξεργάζεται δεδοµένα εισόδου, να εµφανίζει δεδοµένα εξόδου ή να ορίζει τιµές ιδιοτήτων. 9.1 ∆ιαδικασία Function Η βασική σύνταξη µιας διαδικασίας συνάρτησης είναι η εξής: Function ΌνοµαΣυνάρτησης ([ορίσµατα]) As [τύπος] Εντολές συνάρτησης ΌνοµαΣυνάρτησης=εντολή ανάθεσης End Function Οι εντολές συνάρτησης είναι µια οµάδα εντολών που εκτελούν το έργο της συνάρτησης όπως επεξεργασία κειµένου, χειρισµός δεδοµένων εισόδου ή υπολογισµός αριθµητικής τιµής. Για να εκτελέσετε ή αλλιώς να καλέσετε µια συνάρτηση στο πρόγραµµά σας θα πρέπει να συµπεριλάβετε το όνοµά της σε µια εντολή µαζί µε τα απαραίτητα ορίσµατα. Πιο συγκεκριµένα, µια συνάρτηση επιστρέφει πάντα µια τιµή στη διαδικασία που την καλεί στη θέση του ονόµατός της (ΟνοµαΣυνάρτησης). Παράδειγµα: Να γραφεί πρόγραµµα στο οποίο δίνεται το κόστος κατασκευής ενός προϊόντος και υπολογίζει την συνολική τιµή πώλησης του προϊόντος η οποία είναι το άθροισµα του κόστους κατασκευής, του φόρου ΦΠΑ 18% επί του κόστους κατασκευής, ενός δηµοτικού φόρου 5% επί του κόστους κατασκευής και ενός σταθερού φόρου 200 δρχ. Για τον υπολογισµό του φόρου να χρησιµοποιηθεί διαδικασία συνάρτησης. Έστω ότι η φόρµα του προγράµµατος περιλαµβάνει ένα πλαίσιο κειµένου στο οποίο θα δίνεται το κόστος κατασκευής του προϊόντος και δύο πλήκτρα εντολής. Το πρώτο πλήκτρο εντολής έχει τίτλο "Υπολογισµός Συνολικής Τιµής Πώλησης" ενώ το δεύτερο "Έξοδος". Στη συνέχεια ορίζουµε τις ιδιότητες των αντικειµένων. Αντικείµενο Ιδιότητα Ρύθµιση Text1 Text (Κενή) Command1 Caption Υπολογισµός Συνολικής Τιµής Πώλησης Command2 Caption Έξοδος

Επίσης, το πρόγραµµα θα περιλαµβάνει µια βασική λειτουργική µονάδα (Module1) η οποία θα περιέχει το κώδικα µιας συνάρτησης που θα καλείται TotalTax και θα υπολογίζει το φόρο ο οποίος αντιστοιχεί στην τιµή πώλησης του προϊόντος. Στη συνέχεια δίνεται ο κώδικας της συνάρτησης: Function TotalTax (Cost As Variant) FPATax=Cost*0.18 ‘ΦΠΑ CityTax=Cost*0.05 ‘∆ηµοτικός Φόρος TotalTax=FPATax+CityTax+200 End Function Στη συνέχεια δίνετε ο κώδικας για τα πλήκτρα εντολών. Private Sub Command1_Click() Price = Text1.Text TotalCost = Price + TotalTax(Price) MsgBox (TotalCost), , "Συνολική Τιµή Πώλησης" End Sub Private Sub Command2_Click() End End Sub Παράδειγµα: Να γραφεί πρόγραµµα όπου δίνεται το βάρος µιας ταχυδροµικής επιστολής και υπολογίζει τα ταχυδροµικό τέλος που θα πρέπει να πληρώσει ο πελάτης. Το ταχυδροµικό τέλος υπολογίζεται βάση του παρακάτω κανόνα:

Page 32: NotesVB61

32

• Χρέωση 200 δρχ. για βάρος επιστολής έως και 150 γραµµάρια. • Χρέωση 100 δρχ. για κάθε επιπλέον 50 γραµµάρια έως και 250 γραµµάρια. • Χρέωση 1000 δρχ. για βάρος επιστολής πάνω από 250 γραµµάρια. Για τον υπολογισµό του ταχυδροµικού τέλους να χρησιµοποιηθεί διαδικασία συνάρτησης. Έστω ότι η φόρµα περιλαµβάνει δύο πλήκτρα εντολών και µια ετικέτα. Το πρώτο πλήκτρο εντολής έχει τίτλο "Υπολογισµός Ταχυδροµικού Τέλους" ενώ το δεύτερο "Έξοδος". Στη συνέχεια ορίζουµε τις ιδιότητες των αντικειµένων. Αντικείµενο Ιδιότητα Ρύθµιση Label1 Caption (Κενή) Command1 Caption Υπολογισµός Ταχυδροµικού Τέλους Command2 Caption Έξοδος

Επιλέξετε την εντολή Add Module από το µενού Project και πατήστε Open. Μια νέα βασική λειτουργική µονάδα θα εµφανιστεί στο παράθυρο κώδικα. Πληκτρολογήστε τον κώδικα της συνάρτησης Post στη βασική λειτουργική µονάδα. Function Post(Varos) As Currency Dim Timi As Currency Select Case Varos Case Is <= 150 Timi = 200 Case Is <= 200 Timi = 300 Case Is <= 250 Timi = 400 Case Is > 250 Timi = 1000 End Select Post = Timi End Function ∆ιπλοπατήστε στο πλήκτρο εντολής Υπολογισµός Ταχυδροµικού Τέλους. Θα εµφανιστεί το παράθυρο κώδικα. Πληκτρολογήστε τον επόµενο κώδικα στη διαδικασία συµβάντων Command1_Click: Private Sub Command1_Click()

Dim Weight As Single Dim Cost As Currency Weight = InputBox("∆ώσε το βάρος της ταχυδροµικής επιστολής") Cost = Post(Weight) Label1.Caption = Cost

End Sub ∆ιπλοπατήστε στο πλήκτρο εντολής "Έξοδος". Θα εµφανιστεί το παράθυρο κώδικα. Πληκτρολογήστε την εντολή End στη διαδικασία συµβάντων Command2_Click: Private Sub Command2_Click() End End Sub Για την εκτέλεση του προγράµµατος κάντε πατήστε στο εικονίδιο µε το µικρό µπλε τρίγωνο (Start) της γραµµής εργαλείων. 9.2 ∆ιαδικασία Sub Η βασική σύνταξη µιας διαδικασίας Sub (ή υπορουτίνας) είναι η ακόλουθη: Sub ΟνοµαΥπορουτίνας ([ορίσµατα]) Εντολές Υπορουτίνας End Sub

Page 33: NotesVB61

33

Οι υπορουτίνες είναι παρόµοιες µε τις διαδικασίες function µε τη διαφορά ότι οι τιµές που επιστρέφουν οι υπορουτίνες δεν αντιστοιχούν στα ονόµατά τους. Οι υπορουτίνες που δηλώνονται σε βασικές λειτουργικές µονάδες είναι δηµόσιες και µπορούν να κληθούν από οποιαδήποτε διαδικασία συµβάντος. Για την κλήση µιας υπορουτίνας σε µια διαδικασία συµβάντος πληκτρολογήστε το όνοµά της και τα απαραίτητα ορίσµατά της σε µια εντολή (π.χ. Changes x, y). Ο αριθµός και ο τύπος των ορισµάτων στη κλήση της υπορουτίνας πρέπει να ταιριάζουν µε τον αριθµό και τον τύπο των ορισµάτων στη δήλωσή της. Αν οι µεταβλητές (ορίσµατα) που µεταβιβάζονται σε µια υπορουτίνα τροποποιηθούν κατά την εκτέλεση της στο πρόγραµµα, τότε θα επιστραφούν οι ενηµερωµένες µεταβλητές στην καλούσα διαδικασία. Παράδειγµα: ∆ίνεται ο κώδικας υπορουτίνας η οποία δέχεται δύο ορίσµατα και διπλασιάζει τις τιµές τους. Το πρώτο όρισµα είναι τύπου Integer ενώ το δεύτερο τύπου Single.

Sub Changes (N As Integer, S As Single) N=N*2 ‘∆ιπλασιάζει και τα δύο ορίσµατα S=S*2

End Sub Παράδειγµα: Να γραφεί πρόγραµµα το οποίο δέχεται δύο τιµές µια τύπου Integer και µια τύπου Single και υπολογίζει τη διπλάσια τιµή τους. Για το διπλασιασµό να χρησιµοποιηθεί υπορουτίνα.

Έστω ότι η φόρµα περιλαµβάνει ένα πλήκτρα εντολής και δύο ετικέτες. Το πλήκτρο εντολής χρησιµοποιείται για να καλεί την υπορουτίνα η οποία διπλασιάζει τις τιµών. Οι ετικέτες χρησιµοποιούνται για την εµφάνιση των αποτελεσµάτων (δηλαδή το διπλασιασµό των δύο τιµών). Στη συνέχεια ορίζουµε τις ιδιότητες των αντικειµένων. Αντικείµενο Ιδιότητα Ρύθµιση Command1 Caption ∆ιπλαςιασµός Τιµών Label1 Caption (Κενή) BorderStyle 1-Fixed Single Aligment 2-Center Label2 Caption (Κενή) BorderStyle 1-Fixed Single Aligment 2-Center

Επιλέξετε την εντολή Add Module από το µενού Project και πατήστε Open. Μια νέα βασική λειτουργική µονάδα θα εµφανιστεί στο παράθυρο κώδικα. Πληκτρολογήστε τον κώδικα της υπορουτίνας Changes στη βασική λειτουργική µονάδα. Sub Changes (N As Integer, S As Single)

N=N*2 ‘∆ιπλασιάζει και τα δύο ορίσµατα S=S*2

End Sub ∆ιπλοπατήστε στο πλήκτρο εντολής της φόρµας µε τίτλο Υπολογισµός Ταχυδροµικού Τέλους. Θα εµφανιστεί το παράθυρο Κώδικα. Πληκτρολογήστε τον επόµενο κώδικα στη διαδικασία συµβάντων Command1_Click:

Private Sub Command1_Click() Dim nn As Integer Dim ss As Single nn =InputBox("∆ώστε έναν ακέραιο αριθµό", "Integer Number") ss = InputBox("∆ώστε έναν δεκαδικό αριθµό", "Single Number") Changes nn, ss Label1.Caption = nn Label2.Caption = ss End Sub

Page 34: NotesVB61

34

Παρατηρείστε ότι για να καλέσουµε µια υπορουτίνα σε µια διαδικασία συµβάντων χρησιµοποιούµε το όνοµά της και τα ορίσµατά της χωρισµένα µε κόµµα (π.χ. Changes nn, ss). Oι µεταβλητές που µεταβιβάζονται σε µια υπορουτίνα αν τροποποιηθούν κατά την εκτέλεση της, στο πρόγραµµα θα επιστραφούν οι ενηµερωµένες τιµές των µεταβλητών στην καλούσα διαδικασία.

Παράδειγµα: Έστω η υπορουτίνα YpologismosCost:

Sub YpologismosCost (Cost, Total) Cost=Cost*1.05 'αύξηση του κόστους κατά 5%

Total=Int(Cost) 'µετατροπή σε ακέραιο End Sub

Στη συνέχεια δίνεται µέρος του κώδικα της διαδικασίας που καλεί την υπορουτίνα YpologismosCost.

Price = 100 Total=0 YpologismosCost Price, Total Print Price; "συν τον τόκο 5% δίνει", Total Το αποτέλεσµα αυτού του κώδικα είναι "105 συν τον τόκο 5% δίνει 105" το οποίο είναι λάθος γιατί άλλαξε η τιµή της µεταβλητής Cost. Εάν όµως πριν το όνοµα της µεταβλητής Cost χρησιµοποιηθεί η δεσµευµένη λέξη ByVal στο όνοµα της υπορουτίνας δηλαδή: Sub YpologismosCost (ByVal Cost, Total) τότε η τιµή της µεταβλητής Cost όταν η καλούσα διαδικασία ανακτήσει τον έλεγχο, δεν θα αλλάξει την αρχική τιµή. Επίσης κατά την κλήση της στη διαδικασία συµβάντος η µεταβλητή που έχει χαρακτηριστεί ως ByVal θα πρέπει να βρίσκεται σε παρένθεση δηλαδή: YpologismosCost (Price), Total Αν κάνουµε τις παραπάνω αλλαγές το πρόγραµµα θα εµφανίσει το σωστό αποτέλεσµα: "100 συν τον τόκο 5% δίνει 105". 10. Σφάλµατα Σφάλµα (bug) είναι ένα λάθος του προγράµµατος. Σε ένα πρόγραµµα της Visual Basic µπορούν να παρουσιαστούν τρία είδη σφαλµάτων. (α) συντακτικά σφάλµατα (syntax errors ή compiler errors), (β) σφάλµατα κατά την εκτέλεση του προγράµµατος (runtime errors) και (γ) λογικά σφάλµατα (logic errors). • Συντακτικά σφάλµατα είναι σφάλµατα προγραµµατισµού (π.χ. λάθος ιδιότητα ή δεσµευµένη λέξη) τα

οποία παραβιάζουν τους κανόνες της Visual Basic. Ένα συντακτικό σφάλµα προκαλείται όταν έχετε πληκτρολογήσει λανθασµένα κάποια εντολή. Για παράδειγµα, εάν γράψετε Printt αντί για Print, η Visual Basic θα εντοπίσει σφάλµα και θα το επισηµάνει στην οθόνη. Σε αυτή την περίπτωση θα πρέπει να διορθωθεί η ορθογραφία της εντολής για να εκτελεστεί το πρόγραµµα. Η Visual Basic µπορεί να βρίσκει διάφορους τύπους συντακτικών σφαλµάτων κατά την πληκτρολόγηση των εντολών και δεν επιτρέπει την εκτέλεση του προγράµµατος µέχρι να διορθωθούν όλα τα σφάλµατα.

• Σφάλµατα κατά την εκτέλεση του προγράµµατος είναι σφάλµατα που παρουσιάζονται είτε όταν το πρόγραµµα δέχεται δεδοµένα τα οποία δεν ξέρει πώς να τα επεξεργαστεί είτε από εξωγενείς αιτίες, όπως µια περιφερειακή συσκευή που δεν λειτουργεί, µια κατεστραµµένη δισκέτα, ένα αρχείο που δεν βρίσκεται στον δίσκο. Η διόρθωση αυτών των σφαλµάτων είναι συνήθως δυσκολότερη από τη διόρθωση των συντακτικών σφαλµάτων.

• Λογικά σφάλµατα είναι ανθρώπινα λάθη. Ένα λογικό σφάλµα παρατηρείται όταν το πρόγραµµα δε λειτουργεί σωστά επειδή του έχετε δώσε λανθασµένες εντολές. Για παράδειγµα αντί για πρόσθεση δύο µεταβλητών έχετε δώσει πολλαπλασιασµό των µεταβλητών. Κατά την εκτέλεση ενός προγράµµατος είναι δύσκολο η Visual Basic να εντοπίσει σφάλµατα που αναφέρονται στη λογική του προβλήµατος διότι εύκολα µπορεί να παρουσιασθεί ένα πρόβληµα σωστό συντακτικά αλλά µε λάθος λογική. Επειδή τα λογικά σφάλµατα είναι δύσκολο να ανιχνευθούν, η µεγαλύτερη προσπάθεια εξάλειψης των σφαλµάτων εστιάζεται στον τύπο αυτό των σφαλµάτων.

Η τέχνη της διόρθωσης των σφαλµάτων ονοµάζεται εκσφαλµάτωση. Η Visual Basic διαθέτει ορισµένα εργαλεία ενσωµατωµένα στο περιβάλλον προγραµµατισµού της που βοηθούν στην εύρεση και διόρθωση των παραπάνω σφαλµάτων. Τα εργαλεία αυτά µειώνουν σηµαντικά την προσπάθεια για την εκσφαλµάτωση των προγραµµάτων. Κατά την σύνταξη ενός προγράµµατος πρέπει να γίνεται χρήση της βοήθειας που προσφέρει η Visual Basic για τον εντοπισµό των σφαλµάτων. Ένας τρόπος για την

Page 35: NotesVB61

35

αναγνώριση των σφαλµάτων είναι να εκτελείται το πρόγραµµα ανά µία γραµµή τη φορά και να εξετάζεται το περιεχόµενο των µεταβλητών καθώς αυτό µεταβάλλεται. Αυτό επιτυγχάνεται µε την εισαγωγή σηµείου διακοπής (Break mode) κατά την εκτέλεση του προγράµµατος. Η διαδικασία της διακοπής δίνει την δυνατότητα επισταµένου ελέγχου του προγράµµατος ενώ αυτό εκτελείται. Αυτό επιτυγχάνεται εάν ανοίξουµε το µενού View, επιλέξουµε τη διαταγή Toolbars και στη συνέχεια την εντολή Debug, όπου θα ανοίξει η µπάρα εκσφαλµάτωσης Παράδειγµα: Έστω ο παρακάτω κώδικας ο οποίος εξετάζει το αριθµό των ψηφίων ενός ακέραιου αριθµού και ανάλογα τυπώνει ένα από τα δύο µηνύµατα: "∆ύο ψηφία", εάν ο αριθµός βρίσκεται στο διάστηµα [10, 99] και "Όχι δύο ψηφία" εάν ο αριθµός δεν βρίσκεται µέσα στο διάστηµα αυτό. Private Sub Command1_Click() Dim Number As Integer Number=Text1.Text If (Number>10) AND (Number<100) Then

Text2.text =" ∆ύο ψηφία" Else

Text2.text ="Όχι δύο ψηφία" End If End Sub

Το πρόγραµµα αυτό εκτυπώνει λάθος µήνυµα όταν η µεταβλητή Number πάρει την τιµή 10. Αυτός ο τύπος σφάλµατος είναι λογικό σφάλµα. Η σωστή σύνταξη στη δοµή If…Then …Else είναι η ακόλουθη:

If (Number>=10) AND (Number<100) Then Όσο και αν φαίνεται απίστευτο αυτός ο τύπος σφάλµατος είναι ο πλέον συνηθισµένος στα προγράµµατα της Visual Basic και είναι πολύ δύσκολη η εύρεση και διόρθωσή του. Για τη διόρθωση του σφάλµατος κάνουµε τις παρακάτω ενέργειες: • Ανοίγουµε το µενού View, επιλέγουµε τη διαταγή Toolbars και στη συνέχεια την εντολή Debug,

όπου θα ανοίξει η µπάρα εκσφαλµάτωσης. • Εκτελούµε το πρόγραµµα και κάνουµε κλικ στο πλήκτρο διακοπής (break) του προγράµµατος από

την µπάρα εκσφαλµάτωσης. Το πλήκτρο διακοπής βρίσκεται δίπλα από το πλήκτρο εκκίνησης (start). • Το πρόγραµµα σταµατά και η Visual Basic δείχνει το παράθυρο µε τον κώδικα του προγράµµατος. • Κάνουµε κλικ στο πλήκτρο Step into της µπάρας εκσφαλµάτωσης για να εκτελεστεί το υπόλοιπο

πρόγραµµα. • Κάνουµε κλικ στην φόρµα του προγράµµατος και πληκτρολογούµε τον αριθµό 10 στο πλαίσιο

κειµένου (Text1) και στην συνέχεια επιλέγουµε το αντίστοιχο πλήκτρο της φόρµας για την εκτέλεση του προγράµµατος. Η Visual Basic ανοίγει το παράθυρο του κώδικα (Command1_Click) που πρόκειται να εκτελεστεί. Η πρώτη πρόταση στην διαδικασία φωτίζεται µε κίτρινο χρώµα, αυτό δίνει την δυνατότητα να παρακολουθήσουµε πως αξιολογείται η λογική του προγράµµατος.

• Επιλέγουµε το πλήκτρο Step into για να εκτελεστεί η πρώτη εντολή του προγράµµατος, καθώς το πρόγραµµα εκτελείται η µεταβλητή Number φωτίζεται. Η µεταβλητή Number είναι η σηµαντικότερη µεταβλητή στο πρόγραµµα µας.

• Επιλέγουµε την µεταβλητή Number µε το ποντίκι και µετά επιλέγουµε το πλήκτρο Quick Watch της µπάρας εκσφαλµάτωσης. Ένα παράθυρο διαλόγου ανοίγει στην οθόνη εµφανίζοντας το περιεχόµενο, το όνοµα, και την τιµή της µεταβλητής Number το πρόγραµµα.

• Κάνουµε κλικ στο πλήκτρο Step into, η Visual Basic αντιγράφει τον αριθµό 10 από το πλαίσιο κειµένου στην µεταβλητή Number. Τώρα η Visual Basic φωτίζει την πρώτη πρόταση της δοµής If….Then…Else.

• Κάνουµε κλικ στο πλήκτρο Step into, η Visual Basic φωτίζει τo Else τµήµα της δοµής If….Then…Else. Συνεπώς ο έλεγχος αποτυγχάνει για την τιµή αυτή (δηλαδή 10) εφόσον θα έπρεπε να φωτιστεί η εντολή Text2.text ="∆ύο ψηφία". Εποµένως απαιτείται να βρεθεί το λάθος. Η δουλειά της Visual Basic είναι να βοηθήσει στον εντοπισµό του λάθους αλλά η αναγνώριση και διόρθωσή του είναι δουλειά του προγραµµατιστή. Στην περίπτωση αυτή η απάντηση είναι γνωστή, η πρώτη σύγκριση χρειάζεται να γίνει από (>) σε (>=).