Εισαγωγικές

σημειώσεις VISUAL BASIC

 


Σημειώσεις
VISUAL BASIC

 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.

Η οθόνη του υπολογιστή σας θα μοιάζει με την παρακάτω εικόνα.

 

 

 


Αφού γίνουν τα παραπάνω βήματα θα εμφανιστεί ένα παράθυρο διαλόγου με τίτλο 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.


 

 

 

 

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

 

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

 

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

 

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

 

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

 

·         ·         Το παράθυρο διάταξης φόρμας (form layout) επιτρέπει τον καθορισμό της αρχικής θέσης της φόρμας στην οθόνη του υπολογιστή όταν εκτελείται η εφαρμογή.


Το ολοκληρωμένο περιβάλλον ανάπτυξης της 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 του συστήματός σας τα οποία μπορείτε να προσθέστε στην εργαλειοθήκη του έργου σας.


 


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 του χειριστηρίου.

 

 

 

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 μπορεί να περιέχει ένα ή περισσότερα αρχεία λειτουργικής μονάδας.

 

Η 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 (ή εναλλακτικά πατήστε το εικονίδιο με το μικρό μπλε τετράγωνο της γραμμής εργαλείων). Τότε οδηγείστε στο κύριο παράθυρο της 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).

 


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 Τύπος Δεδομένων

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

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

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

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

 

Τελεστής συνένωσης αλφαριθμητικών

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

 

Όνομα Τελεστή

Τελεστής

Παράδειγμα

Συνένωση αλφαριθμητικών

&

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.

 

Για να αποφεύγετε πιθανή σύγχυση στη σειρά προτεραιότητας των πράξεων είναι προτιμότερο να χρησιμοποιείται παρενθέσεις. Οι παρενθέσεις χρησιμοποιούνται στην 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.

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 (Μήνυμα),,Τίτλος

Όπου Μήνυμα είναι το κείμενο (δεδομένα εξόδου) που θα εμφανιστεί μέσα στο πλαίσιο μηνύματος και Τίτλος είναι το κείμενο (μέσα σε αποστρόφους) που θα εμφανιστεί στη γραμμή τίτλου του πλαισίου μηνύματος και είναι προαιρετικός.

 

Παράδειγμα: Να γραφεί πρόγραμμα που υπολογίζει την ακόλουθη παράσταση 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 περιέχει αρκετές ενσωματωμένες συναρτήσεις. Υπάρχουν πολλές ενσωματωμένες συναρτήσεις: μαθηματικές συναρτήσεις (αριθμητικές, τριγωνομετρικές, λογαριθμικές), συναρτήσεις μετατροπής δεδομένων και συναρτήσεις μορφοποίησης. Οι συναρτήσεις αυτές ενσωματώνονται στο πρόγραμμά μας από τον υπολογιστή. Εμείς απλώς ζητάμε τη σωστή συνάρτηση που θα θέλαμε να χρησιμοποιήσουμε και τις σωστές μεταβλητές (ορίσματα) της συνάρτησης. Στο επόμενο πίνακα δίνονται συνήθεις ενσωματωμένες αριθμητικές συναρτήσεις.

 

 

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 IfThen

 

Η σύνταξη της δομής IfThen  είναι η εξής:

 

If  Συνθήκη Then

Εντολή(-ές)

End If

 

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

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

 

Παράδειγμα: Παρατηρείστε ότι οι δύο παρακάτω δομές είναι ισοδύναμες. Η πρώτη δομή χρησιμοποιεί τη δεσμευμένη λέξη 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 … ThenElse

 

Η δομή IfThenElse επιτρέπει τον έλεγχο πολλών συνθηκών. Η δομή αυτή χρησιμοποιεί επίσης και τις δεσμευμένες λέξεις ElseIf και Else. Η σύνταξή της έχει την ακόλουθη μορφή:

 

If Συνθήκη1 Then

Εντολή(ές)1

ElseIf Συνθήκη2 Then

Εντολή(ες)2

Else

Εντολή(ες)Ν

End If

 

Οι δεσμευμένες λέξεις ElseIf και Else επιτρέπουν να ορίζετε πολλές συνθήκες σε μια δομή IfThenElse. Χρησιμοποιούνται μόνα μέσα σε αυτή τη δομή IfThenElse και ποτέ ανεξάρτητα από αυτήν. Η δεσμευμένη λέξη End If προσδιορίζει το τέλος της δομής  IfThenElse και πρέπει απαραίτητα να υπάρχει. Σε μια δομή IfThenElse οι εντολές μπορεί να είναι οποιεσδήποτε και οσεσδήποτε εντολές της Visual Basic. Η δομή IfThenElse λειτουργεί με τον εξής τρόπο: Εξετάζονται οι συνθήκες με τη σειρά. Εάν η συνθήκη είναι αληθής, εκτελούνται οι εντολές που βρίσκονται αμέσως μετά τη συνθήκη αυτή, μέχρι (και όχι) την επόμενη δεσμευμένη λέξη ElseIf, Else ή End If, ανάλογα ποια από τις τρεις συναντιέται πρώτη. Στο σημείο αυτό τελειώνει και η συγκεκριμένη δομή IfThenElse  και η 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.


 

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. Στη δομή IfThen...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 σειρά δήλωσης των συνθηκών σε μια δομή IfThenElse είναι πολύ σημαντική γιατί μπορεί να δώσει λάθος αποτέλεσμα.

 

Παράδειγμα: Ο παρακάτω κώδικας προγράμματος περιγράφει τον υπολογισμό φόρου που αναλογεί σε μια υποθετική εκκαθάριση φορολογίας εισοδήματος με τη χρήση της δομής IfThen..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


 

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

Bonus=5000

End If

 

6.3 Select Case

 

Όταν θέλετε να επιλέξετε από μια διακλάδωση η οποία βασίζεται σε μια μεταβλητή τότε μπορείτε να χρησιμοποιείται τη δομή Select Case. Η δομή Select Case είναι παρόμοια με τη δομή If….ThenElse αλλά είναι αποτελεσματικότερη όταν οι υποδιαιρέσεις εξαρτώνται από μια μόνο μεταβλητή. Η σύνταξη της 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 γράφουμε τον ακόλουθο κώδικα:

 

 

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 με τη χρήση της δομής IfThenElse.

 

Select Case Age

Case Is <= 6

            CallMe = "Μωρό"

Case 6 To 12

            CallMe = "Παιδί"

Case 12 To 18

            CallMe = "Εφηβος"

Case 18 To 70

            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 παρέχει τις ακόλουθες περιπτώσεις επαναλήψεων:

·         ·         Επανάληψη ενός συνόλου εντολών για προκαθορισμένο αριθμό επαναλήψεων (ForNext).

·         ·         Επανάληψη ενός συνόλου εντολών όσο μια συνθήκη είναι αληθής (Do While ή Do Loop While).

·         ·         Επανάληψη ενός συνόλου εντολών μέχρι  μια συνθήκη να γίνει αληθής (Do Until ή Do Loop Until).

 

7.1 ForNext

 

Η απλούστερη μέθοδος επανάληψης είναι αυτή της επανάληψης ενός συνόλου εντολών για προκαθορισμένο αριθμό επαναλήψεων με τη χρήση του βρόχου ForNext. Ένας βρόχος ForNext, είναι κατάλληλος για την εκτέλεση μίας συγκεκριμένης ομάδας εντολών, ορισμένες φορές. Στην ουσία, είναι ένας σύντομος τρόπος γραφής πολλών εντολών που θέλουμε να επαναλαμβάνονται. Η σύνταξη του βρόχου ForNext είναι της μορφής:

 

For Μετρητής= αρχική τιμή To τελική τιμή [Step βήμα]

εντολή(ες)

Next Μετρητής

 

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

 

Παράδειγμα: Να γραφεί κώδικας ο οποίος να εμφανίζει στη φόρμα εκατό φορές το μήνυμα "Βρόχοι στη Visual Basic". Για τη συγγραφή αυτού του κώδικα χρησιμοποιείται ο παρακάτω βρόχος ForNext οποίος ισοδυναμεί με τη χρήση της εντολής Print "Βρόχοι στη Visual Basic" εκατό φορές.

 

For counter = 1 To 100

Print "Βρόχοι στη Visual Basic"

Next counter

 

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

 

Παράδειγμα: Οι επόμενοι δύο βρόχοι ForNext  είναι ισοδύναμοι:

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

 

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

For k = 122 To 127

            Print k

Next k

 

Παράδειγμα: Μπορείτε να θέσετε βρόχους ForNext τον ένα μέσα στον άλλο.

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

 

Για να βγούμε από ένα βρόχο ForNext πριν ολοκληρωθεί η εκτέλεσή του, χρησιμοποιούμε την εντολή Exit For. Η εντολή Exit For χρησιμοποιείται κυρίως όταν χρειάζεται να αντιμετωπισθούν ειδικές περιπτώσεις μέσα στο βρόχο και συντάσσεται κυρίως σε συνδυασμό με τη δομή IfThen.

Παράδειγμα:

For i=1 To 20

       FirstName = InputBox("Πληκτρολογήστε το όνομά σας ή Τέλος για έξοδο:")

       If FirstName ="Τέλος" Then Exit For

       Print FirstName

Next i

 

Παράδειγμα: Ο παρακάτω βρόχος ForNext επαναλαμβάνεται 20 φορές.  Όμως η δεύτερη γραμμή λέει στη Visual Basic να εγκαταλείψει το βρόχο ForNext μόλις η μεταβλητή counter πάρει την τιμή 5, παρόλο που η τιμή της είναι μικρότερη από 20.

For counter=1 To 20

If counter =5 Then Exit For

Next counter

 

7.2 Do … Loop

 

Εναλλακτικός βρόχος του ForNext, είναι ο βρόχος DoLoop, με τον οποίο εκτελούμε μια σειρά εντολών έως ότου μία συγκεκριμένη συνθήκη (δηλαδή μεταβλητή ή παράσταση) μέσα στον βρόχο είναι αληθής ή ψευδής. Ένας βρόχος DoLoop μπορεί να περιέχει μια ή περισσότερες εντολές. Αυτός ο τύπος βρόχων είναι χρήσιμος όταν δεν γνωρίζουμε τον ακριβή αριθμό των επαναλήψεων των εντολών. Για τον βρόχο DoLoop υπάρχουν οι ακόλουθοι διαφορετικοί τύποι:

 

Τύπος 1:

Do While Συνθήκη

Εντολή(ές)

Loop

 

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


 

Παράδειγμα:

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 <> "Τέλος"

 

Παράδειγμα: Ο παρακάτω κώδικας περιγράφει τη μετατροπή της θερμοκρασίας από βαθμούς Φαρενάιτ σε Κελσίου. Ο βρόχος DoLoop εκτελείται μέχρι να πατήσει ο χρήστης το κουμπί 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

 

 

Τύπος 4:

Do 

εντολή(-ές)

Loop Until συνθήκη

 

Ο βρόχος Do Loop Until λειτουργεί με τον εξής τρόπο: Την πρώτη φορά που η Visual Basic βλέπει το βρόχο εκτελεί όλες τις εντολές που βρίσκονται στο εσωτερικό του. Δηλαδή, ο βρόχος εκτελείται τουλάχιστον μια φορά ανεξάρτητα από την τιμή της συνθήκης. Στην συνέχεια, η Visual Basic  ελέγχει εάν η τιμή της συνθήκης είναι ψευδής ή αληθής. Εάν η συνθήκη είναι ψευδής τότε επαναλαμβάνεται η εκτέλεση των εντολών που βρίσκονται στο εσωτερικό του βρόχου Do Loop Until. Εάν η συνθήκη είναι αληθής τότε αγνοούνται όλες οι εντολές που βρίσκονται στο εσωτερικό του βρόχου DoLoop 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. Δηλαδή:

 

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 και ένα βρόχο ForNext κάνει τη λήψη των ονομάτων απλή:

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

Έξοδος

 


 

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

Έξοδος

 

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

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

        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

 

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 (ή υπορουτίνα) μπορεί να καλείται με το όνομά της από διαδικασίες συμβάντων ή από άλλες διαδικασίες. Μπορεί να δεχθεί ορίσματα. Σε αντίθεση με τις συναρτήσεις, οι υπορουτίνες δεν επιστρέφουν τιμές που σχετίζονται με τον όνομά τους. Μια υπορουτίνα χρησιμοποιείται συνήθως για να επεξεργάζεται δεδομένα εισόδου, να εμφανίζει δεδομένα εξόδου ή να ορίζει τιμές ιδιοτήτων.

 

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

 

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

·         ·         Χρέωση  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

 

Οι υπορουτίνες είναι παρόμοιες με τις διαδικασίες 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

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

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….ThenElse. Συνεπώς ο έλεγχος  αποτυγχάνει για την τιμή αυτή (δηλαδή 10) εφόσον θα έπρεπε να φωτιστεί η εντολή Text2.text ="Δύο ψηφία". Επομένως  απαιτείται να βρεθεί το λάθος. Η δουλειά της Visual Basic είναι να βοηθήσει στον εντοπισμό του λάθους αλλά η αναγνώριση και διόρθωσή του είναι δουλειά του προγραμματιστή. Στην περίπτωση αυτή η απάντηση είναι γνωστή, η πρώτη σύγκριση χρειάζεται να γίνει από (>) σε (>=).