Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ........
Transcript of Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ........
5
Περιεχόμενα
Ευχαριστίες .................................................................................................................... 11
Εισαγωγή........................................................................................................................ 13
Κεφάλαιο 1: Εισαγωγή στις βασικές έννοιες .............................................. 17
Πώς ο κώδικας και τα δεδομένα
των προγραμμάτων καταλαμβάνουν μνήμη............................................................ 18
Κατανόηση των τύπων δεδομένων ............................................................................. 20
Γλώσσες υψηλού επιπέδου.......................................................................................... 21
Η έννοια του λογισμικού σε στρώσεις......................................................................... 24
Στοιχεία δομημένου προγραμματισμού ...................................................................... 27
Αναλυτικός σχεδιασμός ................................................................................................ 33
Υπορουτίνες και συναρτήσεις...................................................................................... 35
Επεξεργασία συμβάντων.............................................................................................. 38
Τάξεις και αντικείμενα ................................................................................................... 39
Βασικά σημεία................................................................................................................ 41
Κεφάλαιο 2: Εισαγωγή στη Microsoft Visual Basic .NET ............................ 43
Προετοιμασία του συστήματος σας ............................................................................. 44
Προετοιμασία για εφαρμογές .NET Windows............................................................... 44
Προετοιμασία για εφαρμογές .NET Ιστού .................................................................... 45
Δυνατότητες του υπολογιστή σας ................................................................................ 46
Πού θα βρείτε το λογισμικό Visual Basic .NET ........................................................... 47
Εγκατάσταση της Visual Basic .NET............................................................................ 48
Εύκολη εισαγωγή στη Visual Basic .NET.................................................................... 50
Χειρισμός παραθύρων του Visual Studio.................................................................... 55
Βοήθεια, περισσότερη βοήθεια, και πέρα από τη βοήθεια........................................ 57
Κατανόηση του συντακτικού της Visual Basic ........................................................... 59
Δημιουργία και εκτέλεση του πρώτου σας προγράμματος....................................... 62
Βασικά σημεία................................................................................................................ 72
6 Περιεχόμενα
Μαύρο 6 Χρώμα 6
Κεφάλαιο 3: Χρήση βασικών εντολών .......................................................... 75
Χρήση τύπων δεδομένων ............................................................................................. 76
Χρήση κυριολεκτικών τιμών......................................................................................... 77
Χρήση μεταβλητών........................................................................................................ 78
Χρήση σταθερών ........................................................................................................... 81
Επιλογές Option Explicit και Option Strict .................................................................. 82
Χρήση πινάκων.............................................................................................................. 85
Εμβέλεια μεταβλητών.................................................................................................... 87
Εντολές απόφασης........................................................................................................ 88
Δημιουργία βρόχων....................................................................................................... 90
Δημιουργία βρόχων με εντολές Do...Loop ................................................................... 90
Δημιουργία βρόχων με εντολές For...Next ................................................................... 92
Δημιουργία βρόχων με εντολές While...End While....................................................... 93
Παράδειγμα: Δημιουργία αριθμομηχανής με ταινία ................................................... 94
Βασικά σημεία.............................................................................................................. 101
Κεφάλαιο 4: Χρήση τελεστών και παραστάσεων ...................................... 103
Εισαγωγή στους τελεστές ........................................................................................... 103
Σχηματισμός παραστάσεων ....................................................................................... 104
Χρήση αριθμητικών τελεστών .................................................................................... 106
Μετατροπή αριθμητικών τύπων................................................................................. 107
Χρήση τελεστών ανάθεσης τιμής ............................................................................... 108
Χρήση σύνθετων τελεστών ........................................................................................ 109
Μετατροπή τύπων ..................................................................................................... 109
Ανάθεση τιμών σε μεταβλητές αναφοράς .................................................................. 111
Χρήση τελεστών σύγκρισης ....................................................................................... 115
Σύγκριση αριθμών...................................................................................................... 115
Σύγκριση αλφαριθμητικών ......................................................................................... 115
Χρήση του τελεστή Like ............................................................................................. 117
Χρήση τελεστών συνένωσης...................................................................................... 118
Χρήση λογικών τελεστών ........................................................................................... 119
Χρήση "βραχυκυκλωμένων" τελεστών....................................................................... 120
Χρήση τελεστών χειρισμού bit ................................................................................... 121
Χρήση των υπόλοιπων (διάφορων) τελεστών ......................................................... 122
Δοκιμή τελεστών και παραστάσεων.......................................................................... 122
Βασικά σημεία.............................................................................................................. 126
Κεφάλαιο 5: Χρήση συναρτήσεων και υπορουτινών ................................ 129
Εισαγωγή στις συναρτήσεις και τις υπορουτίνες..................................................... 129
Συγγραφή δικών σας συναρτήσεων και υπορουτινών............................................ 130
Δήλωση ορισμάτων..................................................................................................... 131
Περιεχόμενα 7
Μαύρο 7 Χρώμα 7
Μεταβίβαση ορισμάτων κατ' αξία............................................................................... 132
Μεταβίβαση ορισμάτων κατ' αναφορά ...................................................................... 135
Παράκαμψη ορισμάτων .............................................................................................. 136
Ορισμός επιστρεφόμενων τιμών ............................................................................... 138
Έξοδος από συναρτήσεις και υπορουτίνες .............................................................. 140
Συναρτήσεις, υπορουτίνες, μεταβλητές, και εμβέλεια.............................................. 141
Αποτελεσματικός σχεδιασμός υπορουτινών και συναρτήσεων ............................ 142
Παράδειγμα: Δημιουργία αριθμομηχανής τεσσάρων πράξεων.............................. 143
Βασικά σημεία.............................................................................................................. 147
Κεφάλαιο 6: Χρήση ενσωματωμένων συναρτήσεων................................. 149
Εύρεση ενσωματωμένων συναρτήσεων................................................................... 149
Χρήση συναρτήσεων μετατροπής τύπου ................................................................. 154
Λογικές συναρτήσεις ................................................................................................... 155
Χειρισμός ημερομηνιών.............................................................................................. 156
Χειρισμός αλφαριθμητικών......................................................................................... 160
Χρήση συναρτήσεων πινάκων .................................................................................. 162
Παραγωγή τυχαίων αριθμών...................................................................................... 164
Παράδειγμα: ανακάτεμα τράπουλας.......................................................................... 165
Απόδοση αρχικών τιμών στα φύλλα της τράπουλας ................................................. 165
Ανακάτεμα της τράπουλας......................................................................................... 170
Βασικά σημεία.............................................................................................................. 173
Κεφάλαιο 7: Δημιουργία τάξεων και αντικειμένων..................................... 175
Εισαγωγή στα αντικείμενα.......................................................................................... 176
Μια ιδέα για τις τάξεις................................................................................................. 176
Ξεκάθαρες μέθοδοι .................................................................................................... 177
Επιθυμητές ιδιότητες.................................................................................................. 177
Ζητήματα εμβέλειας ................................................................................................... 178
Δημιουργία αντικειμένων από τάξεις.......................................................................... 179
Παράδειγμα 1: Ανακάτεμα με τάξη ............................................................................. 181
Μέθοδοι κατασκευής και καταστροφής ..................................................................... 184
Χρήση διαδικασιών ιδιοτήτων ................................................................................... 186
Χρήση δομών............................................................................................................... 189
Επαναληπτικές δοκιμές και περίεργα αποτελέσματα.............................................. 191
Παράδειγμα 2: Ανακάτεμα τράπουλας με διαδικασίες ιδιοτήτων........................... 193
Form1.vb.................................................................................................................... 196
Deck.vb...................................................................................................................... 197
Βασικά σημεία.............................................................................................................. 199
8 Περιεχόμενα
Μαύρο 8 Χρώμα 8
Κεφάλαιο 8: Χρήση τάξεων, υπομονάδων, και φορμών ........................... 201
Χρήση τάξεων του Πλαισίου Εφαρμογών.NET ......................................................... 202
Εύρεση μεθόδων και τάξεων .NET ............................................................................ 202
Αναφορές σε χώρους ονομάτων................................................................................ 205
Εισαγωγή χώρων ονομάτων...................................................................................... 207
Αποδοτική χρήση αντικειμένων και τάξεων.............................................................. 208
Κληρονομικότητα ....................................................................................................... 208
Υπερφόρτωση και πολυμορφισμός............................................................................ 210
Συμβάντα ................................................................................................................... 212
Χρήση φορμών ............................................................................................................ 216
Χρήση υπομονάδων.................................................................................................... 218
Παράδειγμα: Μοίρασμα φύλλων τράπουλας ............................................................ 219
Δημιουργία της κύριας φόρμας .................................................................................. 220
Εμφάνιση των φορμών των παικτών ......................................................................... 221
Μετακίνηση των φορμών των παικτών ...................................................................... 225
Δήλωση μιας τράπουλας ........................................................................................... 225
Μοίρασμα των φύλλων .............................................................................................. 226
Τέλος του παιχνιδιού.................................................................................................. 229
"Παίξιμο" ενός φύλλου ............................................................................................... 229
Βασικά σημεία.............................................................................................................. 236
Κεφάλαιο 9: Σχεδίαση και χρήση φορμών των Windows ......................... 239
Σχεδίαση διασυνδέσεων χρήστη ............................................................................... 240
Καθορισμός ιδιοτήτων για τις φόρμες και τα χειριστήρια ....................................... 242
Χρήση πλαισίων μηνυμάτων...................................................................................... 244
Εύρεση και δημιουργία εικονιδίων ............................................................................ 247
Παράδειγμα: Δημιουργία προγράμματος προβολής εικόνων ................................ 248
Δημιουργία της φόρμας Picture Viewer...................................................................... 248
Δημιουργία εικονιδίων για το πρόγραμμα Picture Viewer .......................................... 251
Διευθέτηση εικονιδίων στη φόρμα και τη γραμμή εργαλείων ..................................... 253
Καθορισμός πληροφοριών για το αρχείο Assembly ................................................... 256
Απόκριση στα συμβάντα File Exit και Help About ...................................................... 258
Εμφάνιση ενός αρχείου εικόνας ................................................................................. 259
Αντιγραφή μιας εικόνας στο Πρόχειρο........................................................................ 265
Εμφάνιση μιας εικόνας από το Πρόχειρο ................................................................... 266
Ενεργοποίηση των κουμπιών της γραμμής εργαλείων .............................................. 267
Βασικά σημεία.............................................................................................................. 270
Κεφάλαιο 10: Αλληλεπίδραση με χειριστήρια φορμών των Windows ...... 273
Κατηγορίες χειριστηρίων για φόρμες ........................................................................ 274
Προσθήκη και διευθέτηση χειριστηρίων φόρμας ..................................................... 275
Περιεχόμενα 9
Μαύρο 9 Χρώμα 9
Ρύθμιση ιδιοτήτων χειριστηρίων ............................................................................... 278
Θέση χειριστηρίων ..................................................................................................... 279
Μέγεθος χειριστηρίων................................................................................................ 279
Εξαφάνιση χειριστηρίων φόρμας ............................................................................... 280
Σειρά ενεργοποίησης χειριστηρίων με το πλήκτρο Tab ............................................. 281
Πλαίσια κειμένου, πλαίσια ελέγχου, και κουμπιά επιλογής .................................... 282
Πλαίσια καταλόγου...................................................................................................... 283
Χρήση πλαισίων καταλόγου μίας επιλογής................................................................ 284
Χρήση πλαισίων καταλόγου πολλαπλών επιλογών .................................................. 286
Προσθήκη και κατάργηση στοιχείων ενός πλαισίου καταλόγου μέσω κώδικα.......... 287
Απόκριση σε συμβάντα των χειριστηρίων μιας φόρμας των Windows ............... 288
Συμβάντα πληκτρολογίου .......................................................................................... 289
Συμβάντα εστίασης .................................................................................................... 293
Συμβάντα πατήματος με το ποντίκι σε χειριστήρια .................................................... 295
Απόκριση σε συμβάντα του ποντικιού ....................................................................... 297
Παράδειγμα: Εμφανίσεις κροκοδείλων ..................................................................... 299
Δημιουργία της φόρμας των κροκοδείλων ................................................................. 301
Επικύρωση των πεδίων εισόδου ............................................................................... 305
Δημιουργία της εγγραφής εξόδου .............................................................................. 311
Βασικά σημεία.............................................................................................................. 321
Κεφάλαιο 11: Προσπέλαση βάσεων δεδομένων.......................................... 323
Έννοιες και συντακτικό της SQL................................................................................ 326
Ανάκτηση δεδομένων με την εντολή SELECT ........................................................... 327
Σύνταξη της φράσης SELECT ................................................................................... 327
Σύνταξη της φράσης FROM....................................................................................... 328
Σύνταξη της φράσης WHERE .................................................................................... 329
Σύνταξη της φράσης GROUP BY .............................................................................. 329
Σύνταξη της φράσης HAVING ................................................................................... 329
Σύνταξη της φράσης ORDER BY .............................................................................. 330
Προσθήκη δεδομένων με την εντολή INSERT ........................................................... 330
Αλλαγή δεδομένων με την εντολή UPDATE .............................................................. 331
Διαγραφή δεδομένων με την εντολή DELETE ........................................................... 331
Εισαγωγή στο λογισμικό ADO.NET ........................................................................... 331
Άνοιγμα και κλείσιμο συνδέσεων ADO.NET .............................................................. 333
Χρήση αντικειμένων εντολών..................................................................................... 337
Χρήση του αναγνώστη δεδομένων ............................................................................ 338
Χρήση των αντικειμένων DataAdapter, DataSet, και DataTable................................ 340
Εμφάνιση και ενημέρωση μιας βάσης δεδομένων................................................... 344
Βασικά σημεία.............................................................................................................. 351
10 Περιεχόμενα
Μαύρο 10 Χρώμα 10
Κεφάλαιο 12: Προγραμματισμός φορμών για τον Ιστό ............................... 353
Εισαγωγή στον Ιστό .................................................................................................... 354
Δημιουργία έργων για τον Ιστό .................................................................................. 356
Εξέταση μιας νέας εφαρμογής Ιστού ASP.NET ......................................................... 358
Σχεδίαση φορμών για τον Ιστό................................................................................... 360
Ο κύκλος ζωής μιας σελίδας ASP.NET ...................................................................... 363
Προσθήκη χειριστηρίων σε μια φόρμα Ιστού............................................................ 364
Χρήση χειριστηρίων διακομιστή HTML ...................................................................... 365
Χρήση χειριστηρίων διακομιστή Ιστού ....................................................................... 367
Απόκριση στα συμβάντα μιας φόρμας Ιστού............................................................ 369
Ανταλλαγή δεδομένων με τον επισκέπτη της ιστοσελίδας ..................................... 371
Δοκιμή του έργου σας για τον Ιστό ............................................................................ 373
Παράδειγμα: Υπολογισμός ημερομηνιών ................................................................. 375
Σχεδίαση της ιστοσελίδας .......................................................................................... 375
Προσθήκη του "παρασκηνιακού" κώδικα της σελίδας
υπολογισμού ημερομηνιών..................................................................................... 378
Βασικά σημεία.............................................................................................................. 380
Προσεχώς... .................................................................................................................. 381
Ευρετήριο...................................................................................................................... 383
75
Χρήση βασικών εντολών
Σε αυτό το κεφάλαιο θα ασχοληθούμε με τρεις έννοιες οι οποίες εφαρμόζονται σε κάθε σχεδόν
πρόγραμμα που μπορεί να γράψει κανείς σε οποιαδήποτε γλώσσα: τις μεταβλητές, τις αποφά-
σεις, και τους βρόχους. Είναι απολύτως βέβαιο ότι, αν δεν κατανοήσετε αυτές τις έννοιες, οι
προσπάθειές σας στον προγραμματισμό θα καταδικαστούν σε αποτυχία.
Οι μεταβλητές (variables) είναι μονάδες μνήμης στις οποίες το πρόγραμμά σας αποθηκεύει οτι-
δήποτε χρειάζεται προκειμένου να παρακολουθεί τις εργασίες που εκτελεί. Όποια και αν είναι η
πηγή των δεδομένων ενός προγράμματος, το πρόγραμμα χρειάζεται μνήμη για να δεχθεί την
είσοδο (τα δεδομένα εισόδου), να εκτελέσει υπολογισμούς, να αποθηκεύσει τα ενδιάμεσα απο-
τελέσματα, και να στείλει τα τελικά αποτελέσματα σε κάποιου είδους "κανάλι" εξόδου. Χωρίς
μεταβλητές δεν είναι δυνατή η χρήση της μνήμης, οπότε δεν υπάρχει πρόγραμμα — τόσο απλό
είναι.
Οι αποφάσεις (decisions) είναι ένα απαραίτητο στοιχείο για κάθε πρόγραμμα. Ένα πρόγραμμα
που δεν μπορεί να κάνει συγκρίσεις τιμών και να ακολουθήσει διαφορετική πορεία ανάλογα με
τα αποτελέσματα είναι, στην καλύτερη περίπτωση, υπερβολικά απλοϊκό. Γι' αυτόν ακριβώς το
λόγο, οι αποφάσεις αποτελούν μια από τις βασικές δομές οποιουδήποτε μοντέλου προγραμμα-
τισμού — συμπεριλαμβανομένου, φυσικά, και αυτού της Visual Basic .NET.
Οι βρόχοι (loops) είναι άλλη μια βασική δομή του προγραμματισμού. Οι βρόχοι ελέγχουν κάθε
διαδικασία την οποία το πρόγραμμά σας πρέπει να εκτελεί επαναληπτικά — να ζητά συνεχώς
δεδομένα εισόδου, να διαβάζει συνεχώς εγγραφές από ένα αρχείο ή βάση δεδομένων, να ανα-
καλεί συνεχώς δεδομένα από το δίκτυο, ή να κάνει συνεχώς οτιδήποτε άλλο. Μόνο τα απλού-
Κεφάλαιο 3
76 Έξυπνα και γρήγορα: Εισαγωγή στον προγραμματισμό
Μαύρο 76 Χρώμα 76
στερα προγράμματα δεν χρειάζονται βρόχους — και εσείς δεν σκοπεύετε να γράφετε τέτοια
προγράμματα, έτσι δεν είναι; Ετοιμαστείτε, λοιπόν.
Χρήση τύπων δεδομένων Οι περισσότεροι υπολογιστές — και, κατά συνέπεια, οι περισσότερες γλώσσες προγραμματι-
σμού — παρέχουν μια μεγάλη ποικιλία τύπων δεδομένων, καθένας από τους οποίους είναι κα-
τάλληλος για ένα συγκεκριμένο είδος δεδομένων. Η οικογένεια επεξεργαστών Pentium και η
Visual Basic .NET δεν αποτελούν εξαίρεση σε αυτόν τον κανόνα. Θα δείτε σε επόμενα κεφά-
λαια ότι η Visual Basic .NET υποστηρίζει ουσιαστικά χιλιάδες τύπους δεδομένων σε αυτό το
κεφάλαιο, όμως, θα επικεντρώσουμε την εξέτασή μας σε αυτούς που παρατίθενται στον Πίνακα
3-1. Αυτοί είναι οι βασικότεροι τύποι δεδομένων και γι' αυτό ονομάζονται και στοιχειώδεις τύ-
ποι δεδομένων (elementary data types).
Πίνακας 3-1 Στοιχειώδεις τύποι δεδομένων της Visual Basic .NET
Κατηγορία Τύπος Bit Byte Περικλείεται σε Επίθεμα Τυπικές τιμές
Χαρακτήρας Char 16 2 " C "A"C
String " (κανένα) "Bits"
Ημερομηνία Date 64 8 # (κανένα) #13/2/2003#
Δεκαδικός Decimal 128 16 (τίποτα) D ή @ 5.00D
Αριθμός κινητής
υποδιαστολής
Single
Double
32
64
4
8
(τίποτα)
(τίποτα)
F ή !
R ή #
5.123S
5.123R
Ακέραιος Byte 1 1 (τίποτα) (κανένα) 0-255
Short 16 2 (τίποτα) S 5S
Integer 32 4 (τίποτα) Ι ή % 5Ι
Long 64 8 (τίποτα) L ή & 5L
Λογική τιμή Boolean 16 2 (τίποτα) (κανένα) True/False
Η στήλη Κατηγορία αυτού του πίνακα έχει στόχο να σας βοηθήσει να κατανοήσετε τους τύπους
δεδομένων και δεν έχει ιδιαίτερο νόημα για τον υπολογιστή. Αντίθετα, η στήλη Τύπος είναι
πολύ πιο σημαντική περιέχει τις δεσμευμένες λέξεις της Visual Basic .NET τις οποίες πρέπει
να χρησιμοποιείτε όταν δηλώνετε στοιχεία δεδομένων αυτών των στοιχειωδών τύπων.
Στις στήλες Bit και Byte μπορείτε να δείτε πόσα byte μνήμης καταλαμβάνει κάθε στοιχειώδης
τύπος δεδομένων. Για τον τύπο δεδομένων String (αλφαριθμητικό) δεν υπάρχει τιμή σε αυτές
τις στήλες επειδή τα αλφαριθμητικά έχουν μεταβλητό μήκος. Θα καταλάβετε τη σημασία των
τριών επόμενων στηλών (όπου παρατίθενται οι χαρακτήρες που περικλείουν τις διάφορες μορ-
φές τύπων δεδομένων, οι χαρακτήρες που προσαρτώνται σε αυτές, και οι τυπικές τιμές των τύ-
πων δεδομένων) στην επόμενη ενότητα αυτού του κεφαλαίου.
Κεφάλαιο 3: Χρήση βασικών εντολών 77
Μαύρο 77 Χρώμα 77
Ορολογία Οι προγραμματιστές δεν λένε ότι ορίζουν (define) στοιχεία δεδομένων αλλά ότι τα δηλώ-νουν (declare). Έτσι, μια εντολή στην οποία ορίζεται ένα στοιχείο δεδομένων είναι μια δήλωση (declaration).
Οι επόμενοι τύποι δεδομένων χρειάζονται ιδιαίτερη μνεία:
String (αλφαριθμητικό). Αυτός ο τύπος δεδομένων μπορεί να "φιλοξενήσει" αλφαριθμητι-
κά με μήκος από μηδέν μέχρι δύο δισεκατομμύρια χαρακτήρες (το ακριβές μέγιστο μήκος
είναι 231
–1).
Date (ημερομηνία). Όλες οι γλώσσες .NET αποθηκεύουν τις ημερομηνίες ως ακέραιους
των 64 bit. Η μηδενική τιμή ημερομηνίας αντιστοιχεί στα μεσάνυχτα της 1ης Ιανουαρίου
του έτους 1, στο γεωγραφικό μήκος 0°. Η τιμή ημερομηνίας 1 αντιστοιχεί σε 100 νανοδευ-
τερόλεπτα αργότερα, η τιμή 2 σε 200 νανοδευτερόλεπτα αργότερα, κ.ο.κ. Η μέγιστη τιμή
ημερομηνίας είναι η 31η Δεκεμβρίου 9999.
Όπως μπορείτε να αντιληφθείτε, οι ημερομηνίες του εικοστού πρώτου αιώνα είναι πολύ μεγά-
λοι αριθμοί — έχουν περάσει πάρα πολλά νανοδευτερόλεπτα από το έτος 1 μέχρι σήμερα. Ευ-
τυχώς, τόσο η Visual Basic .NET όσο και το πλαίσιο εφαρμογών .NET περιλαμβάνουν βολικές
ενσωματωμένες συναρτήσεις οι οποίες διευκολύνουν σημαντικά την επεξεργασία των ημερο-
μηνιών και των ωρών.
Σημείωση Με τον τύπο δεδομένων Date αποθηκεύονται και ώρες εκτός από ημερομηνίες.
Decimal (δεκαδικός). Σε αυτόν τον τύπο δεδομένων αποθηκεύονται αριθμοί με ακρίβεια
μέχρι και 29 ψηφία αριστερά από την υποδιαστολή και μέχρι 28 ψηφία στα δεξιά της. Η πιο
συνηθισμένη χρήση αυτού του τύπου δεδομένων είναι για την επεξεργασία νομισματικών
τιμών, επειδή οι λογιστές χρησιμοποιούν αριθμούς δισεκατομμυρίων και απαιτούν ακρίβεια
μέχρι και το λεπτό.
Boolean (λογική τιμή). Αν αποδώσετε αριθμητικές τιμές σε μια μεταβλητή τύπου Boolean,
το 0 γίνεται False (ψευδές) και όλες οι άλλες τιμές γίνονται True (αληθές). Αν αποδώσετε
τιμές Boolean σε άλλους τύπους δεδομένων, το False γίνεται 0 και το True γίνεται 1.
Η σημασία των τύπων δεδομένων θα αποσαφηνιστεί στις επόμενες τρεις ενότητες, στις οποίες
θα ασχοληθούμε με τις κυριολεκτικές τιμές (literals), τις μεταβλητές, και τις σταθερές (con-
stants).
Χρήση κυριολεκτικών τιμών Όπως και οι περισσότερες άλλες γλώσσες προγραμματισμού, έτσι και η Visual Basic .NET υ-
ποστηρίζει τη χρήση κυριολεκτικών τιμών (literals). Μια κυριολεκτική τιμή — ή, πιο απλά, ένα
κυριολεκτικό — δεν είναι παρά μια τιμή (όπως οι 417, 6.2, ή "Hello") που γράφετε (συμπερι-
78 Έξυπνα και γρήγορα: Εισαγωγή στον προγραμματισμό
Μαύρο 78 Χρώμα 78
λαμβάνετε) στον κώδικα μιας εντολής. Οι κυριολεκτικές τιμές είναι μόνο για ανάγνωση δεν
μπορείτε να αλλάξετε την τιμή του 2 γράφοντας μια εντολή σαν και αυτή:
2 = 1 + 1 + 1
Στη Visual Basic .NET, οι κυριολεκτικές τιμές έχουν τύπο δεδομένων, όπως ακριβώς και οι
μεταβλητές. Αν δεν καθορίσετε τον τύπο δεδομένων μιας κυριολεκτικής τιμής, η Visual Basic
.NET θα εφαρμόσει τους κανόνες του Πίνακα 3-2 για να "μαντέψει" τον τύπο δεδομένων που
υπονοείτε.
Πίνακας 3-2 Προκαθορισμένοι τύποι δεδομένων για κυριολεκτικές τιμές
Τύπος τιμής Παράδειγμα Τύπος δεδομένων
Ακέραιοι αριθμοί 15 Integer
Αριθμοί κινητής υποδιαστολής 1.414 Double
True ή False True Boolean
Τιμές χαρακτήρων "Hello" String
Σημείωση Για να συμπεριλάβετε εισαγωγικά σε ένα αλφαριθμητικό κυριολεκτικό, πρέπει να πλη-κτρολογήσετε δύο εισαγωγικά εκεί που θέλετε να εμφανίζεται ένα. Για παράδειγμα: strText = "Ο Γιάννης είπε ""Λυπάμαι"", αλλά η Μαίρη" & "δεν εντυπωσιάστηκε."
Σπάνια θα χρειάζεται να παρακάμψετε τους κανόνες του Πίνακα 3-2 αν χρειαστεί, όμως, υ-
πάρχουν δύο τρόποι. Στην περίπτωση ορισμένων τύπων δεδομένων, μπορείτε να περικλείσετε
την τιμή σε ειδικούς χαρακτήρες. Για κάποιους άλλους τύπους δεδομένων, μπορείτε να προ-
σαρτήσετε (ως επίθεμα) στην τιμή έναν ειδικό χαρακτήρα. Στον Πίνακα 3-1 που είδατε νωρίτε-
ρα παρατίθενται τόσο οι περικλείοντες χαρακτήρες όσο και οι χαρακτήρες-επιθέματα για κάθε
τύπο δεδομένων. Για παράδειγμα, το κυριολεκτικό 5S είναι τύπου Short με τιμή 5, ενώ τα κυ-
ριολεκτικά 125L και 125& είναι και τα δύο τύπου Long με τιμή 125.
Χρήση μεταβλητών Οι μεταβλητές (variables) είναι θέσεις της μνήμης στις οποίες αποδίδεται ένα όνομα και ένας
τύπος. Για να δηλώσετε μια μεταβλητή, πρέπει να χρησιμοποιήσετε την πρόταση Dim όπως στα
επόμενα παραδείγματα:
Dim strDescription As String Dim intQuantity As Integer = 0 Dim booAnswer As Boolean = False
Ο καθορισμός μιας τιμής, όπως στο δεύτερο και το τρίτο παράδειγμα, είναι προαιρετικός. Αν
δεν αποδώσετε τιμή όταν δηλώνετε μια μεταβλητή, η Visual Basic .NET της αποδίδει ένα κενό
αλφαριθμητικό, ένα μηδενικό, ή την τιμή False, ανάλογα με τον τύπο δεδομένων.
Κεφάλαιο 3: Χρήση βασικών εντολών 79
Μαύρο 79 Χρώμα 79
Κάθε όνομα μεταβλητής πρέπει να ακολουθεί τους επόμενους κανόνες:
Πρέπει να έχει μήκος από έναν μέχρι 16383 χαρακτήρες (ναι, αναφέρομαι στο μήκος του
ονόματος, και όχι στην τιμή δεδομένων).
Πρέπει να περιλαμβάνει μόνο αλφαβητικούς χαρακτήρες, αριθμητικά ψηφία, και χαρακτή-
ρες υπογράμμισης.
Ο πρώτος χαρακτήρας δεν μπορεί να είναι αριθμητικό ψηφίο. Με άλλα λόγια, ο πρώτος
χαρακτήρας πρέπει να είναι γράμμα ή χαρακτήρας υπογράμμισης.
Αν το όνομα μιας μεταβλητής αρχίζει με χαρακτήρα υπογράμμισης, πρέπει να περιέχει του-
λάχιστον ένα επιπλέον γράμμα ή αριθμητικό ψηφίο.
Στα ονόματα μεταβλητών δεν γίνεται διάκριση πεζών/κεφαλαίων. Αν ορίσετε μια μεταβλη-
τή με το όνομα bucket, θα μπορείτε να τη χρησιμοποιείτε και ως Bucket, BUCKET,
bucKet, κ.λπ.
Τα επόμενα ονόματα μεταβλητών είναι έγκυρα στη Visual Basic .NET. Μπορεί να μην αποτε-
λούν απόδειξη καλού προγραμματιστικού στυλ, αλλά η Visual Basic .NET θα τα δεχτεί.
X intCount That_Place_Where_I_Keep_The_Running_Total _X__O__XX_O_X_
Τα επόμενα ονόματα μεταβλητών είναι λανθασμένα για τους λόγους που παρατίθενται:
_ Αρχικός χαρακτήρας υπογράμμισης που δεν ακολουθείται από γράμμα ή ψηφίο. 2003Profit Αρχίζει με αριθμητικό ψηφίο. Isn'tZero Περιέχει ένα χαρακτήρα που δεν είναι γράμμα, αριθμητικό ψηφί-ο, ή χαρακτήρας υπογράμμισης.
Η σωστή απόδοση ονομάτων σε μεταβλητές έχει μεγάλη σημασία στον προγραμματισμό. Το
όνομα κάθε μεταβλητής σας θα πρέπει να δείχνει ξεκάθαρα τη χρήση της και να μην είναι ούτε
πολύ μεγάλο, ούτε πολύ σύντομο, ούτε "κρυπτογραφικό", ούτε δυσανάγνωστο. Ακολουθούν
μερικοί πρακτικοί κανόνες:
Να χρησιμοποιείτε ονόματα μεταβλητών με μήκος μεταξύ 6 και 15 χαρακτήρες.
Να χρησιμοποιείτε συνηθισμένες (ή τουλάχιστον συνεπείς) συντμήσεις. Αν θέλετε μια σύ-
ντμηση της λέξης Address (διεύθυνση), για παράδειγμα, το Addr είναι πιο συνηθισμένο από
το Ad ή το Adrs.
Να διαχωρίζετε τις λέξεις μέσα στο όνομα της μεταβλητής με χαρακτήρες υπογράμμισης ή
κεφαλαία γράμματα. Τα HomeAddress και home_address (διεύθυνση σπιτιού), για παρά-
δειγμα, είναι πιο ευανάγνωστα από το homeaddress.
80 Έξυπνα και γρήγορα: Εισαγωγή στον προγραμματισμό
Μαύρο 80 Χρώμα 80
Να χρησιμοποιείτε προθέματα που θα σας υπενθυμίζουν τον τύπο δεδομένων κάθε μετα-
βλητής. Είναι εύκολο να θυμάται κανείς ότι η μεταβλητή strHomeAddr είναι αλφαριθμητι-
κή. Άλλα συνηθισμένα προθέματα είναι τα int για τις ακέραιες μεταβλητές (Integer), lng
για τις μεταβλητές τύπου Long, sng για τις μεταβλητές τύπου Single, dbl για τις μεταβλητές
τύπου Double, κ.λπ.
Συμβουλή Να χρησιμοποιείτε τα κεφαλαία γράμματα πολύ προσεκτικά όταν πληκτρολογείτε ονόμα-τα μεταβλητών σε εντολές Dim. Με όποιον τρόπο και αν χρησιμοποιήσετε τα κεφαλαία στο ίδιο όνο-μα μεταβλητής σε μια άλλη εντολή, η Visual Basic .NET θα τα αλλάξει ώστε να ταιριάζουν με το όνο-μα που δηλώσατε στην εντολή Dim.
Μπορείτε να δηλώνετε πολλές μεταβλητές με μία μόνο εντολή Dim, όπως στο επόμενο παρά-
δειγμα:
Dim strAlong, strCheese, strGuitar As String
Αν κάνετε κάτι τέτοιο, όλες οι μεταβλητές θα είναι του ίδιου τύπου. Για παράδειγμα, οι μετα-
βλητές strAlong, strCheese, και strGuitar του παραπάνω παραδείγματος θα είναι όλες αλφαριθ-
μητικές.
Συμβουλή Όταν γράφετε ένα πρόγραμμα, δεν μπορείτε να ξέρετε ποια θέση της (φυσικής) μνήμης θα καταλάβει μια μεταβλητή. Αυτό δεν έχει σημασία όμως, επειδή θα αναφέρεστε πάντα στη μετα-βλητή με το όνομά της. Τα Windows κατανέμουν μνήμη όταν φορτώνουν το πρόγραμμά σας για εκτέ-λεση.
Αν δηλώσετε μια μεταβλητή χωρίς να ορίσετε τον τύπο δεδομένων της, η Visual Basic .NET θα
της αποδώσει τον τύπο Object (αντικείμενο). Αργότερα, κατά την εκτέλεση του προγράμματος,
κάθε μεταβλητή Object μπορεί να μετατραπεί σε οποιονδήποτε άλλο τύπο δεδομένων. Αυτό
μπορεί να σας φαίνεται ότι προσφέρει μεγάλη εξοικονόμηση χρόνου για τον προγραμματιστή,
αλλά προκαλεί απώλεια χρόνου στον υπολογιστή. Η απόδοση ή η αλλαγή του τύπου των αντι-
κειμένων κατά το χρόνο εκτέλεσης — μια πρακτική που ονομάζεται όψιμη δέσμευση (late
binding) ή δέσμευση χρόνου εκτέλεσης (run-time binding) — είναι χρονοβόρα διεργασία. Γι'
αυτόν το λόγο, είναι προτιμότερο να χρησιμοποιείτε συγκεκριμένους τύπους δεδομένων όταν
δηλώνετε τις μεταβλητές σας.
Ορολογία Όψιμη δέσμευση (late binding) ή δέσμευση χρόνου εκτέλεσης (run-time binding) είναι η δήλωση μεταβλητών ως αντικειμένων γενικής χρήσης και η μετατροπή τους σε συγκεκριμένους τύ-πους δεδομένων κατά το χρόνο εκτέλεσης. Το αντίθετο αυτής της τακτικής είναι η πρώιμη δέσμευση (early binding) ή δέσμευση χρόνου μεταγλώττισης (compile-time binding). Η πρώιμη δέσμευση είναι σαφώς προτιμότερη επειδή ο μεταγλωττιστής, όταν γνωρίζει προκαταβολικά τον ακριβή τύπο κάθε μεταβλητής, μπορεί να δομήσει πολύ καλύτερα τον κώδικα.
Κεφάλαιο 3: Χρήση βασικών εντολών 81
Μαύρο 81 Χρώμα 81
Χρήση σταθερών Οι σταθερές (constants) είναι επώνυμες τιμές που μπορούν να χρησιμοποιηθούν μόνο για ανά-
γνωση. Με την επόμενη εντολή, για παράδειγμα, ορίζεται μια σταθερά με όνομα PSWD (pass-
word, κωδικός πρόσβασης) και με τιμή "σουσάμι".
Const PSWD = "σουσάμι"
Αφού γράψετε αυτή την πρόταση, θα μπορείτε να χρησιμοποιείτε στον κώδικά σας το όνομα
PSWD αντί για το "σουσάμι". Έτσι, αν χρειαστεί, θα μπορείτε να βρείτε και να αλλάξετε τον
κωδικό πρόσβασης πολύ εύκολα. Οι σταθερές είναι ιδιαίτερα χρήσιμες όταν χρησιμοποιείτε την
ίδια τιμή πολλές φορές στον κώδικά σας.
Οι κανόνες ονομασίας σταθερών είναι ίδιοι με εκείνους που ισχύουν και για τα ονόματα των
μεταβλητών. Πάντως, τα ονόματα των σταθερών γράφονται συνήθως με κεφαλαία γράμματα.
Έτσι ξεχωρίζουν από τις μεταβλητές όταν χρησιμοποιούνται σε άλλα σημεία του κώδικα.
Μπορείτε επίσης να αποδίδετε τιμές σε σταθερές χρησιμοποιώντας απλές παραστάσεις, όπως
στο παρακάτω παράδειγμα:
Const ENOUGH = 100 Const TOO_MUCH = ENOUGH + 1
Ωστόσο, μπορείτε να χρησιμοποιήσετε μόνο παραστάσεις των οποίων ο μεταγλωττιστής μπορεί
να υπολογίσει την τιμή τους πριν εκτελεστεί το πρόγραμμά σας. Η επόμενη δήλωση θα προκα-
λέσει σφάλμα του μεταγλωττιστή, επειδή ο μεταγλωττιστής δεν μπορεί να γνωρίζει ποια θα εί-
ναι η τιμή της συνάρτησης Now() κατά το χρόνο εκτέλεσης:
Const THE_DATE = Now()
Σημείωση Η Now() είναι μια ενσωματωμένη συνάρτηση της Visual Basic .NET που επιστρέφει την τρέχουσα ημερομηνία και ώρα.
Ο προεπιλεγμένος τύπος δεδομένων για μια σταθερά είναι ο τύπος δεδομένων της κυριολεκτι-
κής τιμής της. Πάντως, μπορείτε αν θέλετε να καθορίσετε διαφορετικό τύπο δεδομένων. Οι τύ-
ποι δεδομένων που μπορείτε να χρησιμοποιήσετε είναι οι Boolean, Char, String, Byte, Integer,
Short, Long, Date, Single, Double, και Decimal. Ακολουθούν δύο παραδείγματα:
Const SPEED_OF_LIGHT As Single = 186287 Const START_OF_CENTURY As Date = #1/1/2001#
Υπάρχουν τουλάχιστον τρεις λόγοι για τους οποίους πρέπει να ορίζετε ρητώς έναν τύπο δεδο-
μένων όταν δηλώνετε μια σταθερά:
82 Έξυπνα και γρήγορα: Εισαγωγή στον προγραμματισμό
Μαύρο 82 Χρώμα 82
Όταν ορίζετε ρητά τον τύπο δεδομένων, δεν υπάρχει αμφιβολία ως προς το αποτέλεσμα.
Ο κώδικας με συγκεκριμένους τύπους δεδομένων διαβάζεται και τροποποιείται ευκολότε-
ρα.
Όταν είναι σε ισχύ η επιλογή Option Strict, και δεν δηλώσετε τον τύπο δεδομένων μιας
σταθεράς, θα συμβεί σφάλμα μεταγλωττιστή.
Δείτε επίσης Στην επόμενη ενότητα αυτού του κεφαλαίου θα μάθετε περισσότερα για την επιλογή Option Strict.
Η Visual Basic .NET παρέχει τις ενσωματωμένες σταθερές που παρατίθενται στον Πίνακα 3-3.
Αυτές οι σταθερές αποδεικνύονται συχνά χρήσιμες όταν χρειάζεται να στείλετε στην "έξοδο"
μη εκτυπώσιμους χαρακτήρες. Το Chr(13) αντιστοιχεί στο χαρακτήρα 13 του συνόλου ASCII,
την επαναφορά κεφαλής (carriage return, CR).
Πίνακας 3-3 Σταθερές της Visual Basic .NET για εκτύπωση και εμφάνιση στην οθόνη
Σταθερά Ισοδύναμο Περιγραφή
vbCrLf Chr(13) & Chr(10) Συνδυασμός χαρακτήρων επαναφοράς κεφαλής/ αλλαγής
γραμμής (CR/linefeed).
vbCr Chr(13) Χαρακτήρας επαναφοράς κεφαλής (CR)
vbLf Chr(10) Χαρακτήρας αλλαγής γραμμής (linefeed).
vbNewLine Chr(13) & Chr(10) Χαρακτήρας νέας γραμμής.
vbNullChar Chr(0) Χαρακτήρας μηδενικής τιμής.
vbNullString Αλφαριθμητικό χωρίς τιμή Διαφέρει από το αλφαριθμητικό μηδενικού μήκους ("")
χρησιμοποιείται για την κλήση εξωτερικών διαδικασιών.
vbObjectError –2147221504 Αριθμός σφάλματος. Οι αριθμοί σφάλματος που ορίζονται από
το χρήστη πρέπει να έχουν μεγαλύτερη τιμή από αυτή.
vbTab Chr(9) Χαρακτήρας στηλοθέτη (Tab).
vbBack Chr(8) Χαρακτήρας οπισθοδρόμησης (Backspace).
vbFormFeed Chr(12) Δεν χρησιμεύει στα Microsoft Windows.
vbVerticalTab Chr(11) Δεν χρησιμεύει στα Microsoft Windows.
Επιλογές Option Explicit και Option Strict Η Visual Basic .NET διαθέτει επιλογές που σας βοηθούν να ανακαλύπτετε σφάλματα στα προ-
γράμματά σας πριν την εκτέλεσή τους. Μια από αυτές τις επιλογές είναι η Option Explicit την
οποία μπορείτε να χρησιμοποιήσετε σε μια από τις παρακάτω μορφές:
Option Explicit On Option Explicit Off
Αν χρησιμοποιήσετε την επιλογή Option Explicit On, ο μεταγλωττιστής της Visual Basic .NET
θα σας παρουσιάζει ένα μήνυμα σφάλματος κάθε φορά που θα επιχειρείτε να χρησιμοποιήσετε
ένα όνομα μεταβλητής το οποίο ξεχάσατε να δηλώσετε. Αυτά τα μηνύματα σφάλματος διορθώ-
Κεφάλαιο 3: Χρήση βασικών εντολών 83
Μαύρο 83 Χρώμα 83
νονται συνήθως πολύ εύκολα αρκεί να πληκτρολογήσετε την απαραίτητη εντολή Dim και να
ξανακάνετε τη μεταγλώττιση!
Αν χρησιμοποιήσετε την επιλογή Option Explicit Off και επιχειρήσετε να χρησιμοποιήσετε ένα
όνομα μεταβλητής που δεν έχετε δηλώσει, ο μεταγλωττιστής θα δηλώσει τη μεταβλητή αυτό-
ματα. Με την πρώτη ματιά, αυτό μπορεί να σας φαίνεται καταπληκτική διευκόλυνση έχει, ό-
μως, δύο μεγάλα μειονεκτήματα:
Ο μεταγλωττιστής δηλώνει αυτού του είδους τις μεταβλητές ως τύπου αντικειμένου (Ob-
ject). Έτσι όμως καθυστερεί η εκτέλεση του προγράμματός σας πολύ περισσότερο από το
αν είχατε δηλώσει ρητώς τη μεταβλητή με το σωστό τύπο.
Αν πληκτρολογήσετε λάθος το όνομα μιας μεταβλητής, ο μεταγλωττιστής απλώς θα δηλώ-
σει μια νέα μεταβλητή με το λανθασμένο όνομα και θα συνεχίσει "ελαφρά τη καρδία". Ε-
σείς, βέβαια, θα "φάτε" μετά ένα σωρό ώρες προσπαθώντας να βρείτε γιατί ο κώδικας δεν
δουλεύει σωστά. Δείτε, για παράδειγμα, το επόμενο τμήμα κώδικα:
Dim decDiscntPct As Decimal = 0.1 Dim decDiscntAmt As Decimal = 0 Dim decFullPrice As Decimal = 10.0 Dim decSalePrice As Decimal = 0 decDiscntAmt = decFullPrice * decDiscntPct decSalePrice = decFullPrice — decDiscmtAmt
Αν χρησιμοποιήσετε την επιλογή Option Explicit Off, θα διαπιστώσετε ότι αυτός ο κώδικας δεν
υπολογίζει σωστά την έκπτωση. Ο λόγος είναι ότι, στην τελευταία γραμμή, έχει γίνει λάθος στο
όνομα της μεταβλητής decDiscntAmt (το πρώτο γράμμα m έπρεπε να είναι n), με συνέπεια η
Visual Basic .NET να ορίσει μια καινούργια μεταβλητή με το λανθασμένο όνομα και προεπι-
λεγμένη τιμή 0. Έτσι, στην τελευταία γραμμή του κώδικα αφαιρείται η τιμή της μεταβλητής
decDiscmtAmt (που είναι πάντα 0) αντί για την τιμή της decDiscntAmt, η οποία περιέχει την
έκπτωση που έχει υπολογιστεί.
Σε ένα μεγάλο πρόγραμμα, ο εντοπισμός λανθασμένων ονομάτων μεταβλητών μπορεί να απο-
δειχθεί εφιάλτης. Γι' αυτόν το λόγο, η Visual Basic .NET χρησιμοποιεί ως προεπιλογή την Op-
tion Explicit On. Αν θέλετε να το αλλάξετε αυτό, πληκτρολογήστε την εντολή Option Explicit
Off στην κορυφή του αρχείου που περιέχει τον κώδικά σας.
Η επιλογή Option Strict είναι άλλη μια δυνατότητα που σας βοηθά να εντοπίζετε σφάλματα
στον κώδικά σας. Αν αυτή η επιλογή είναι ενεργοποιημένη (On), ο μεταγλωττιστής θα σας πα-
ρουσιάζει ένα μήνυμα σφάλματος κάθε φορά που θα επιχειρείτε να αντιγράψετε δεδομένα από
μια μεταβλητή σε κάποια άλλη μεταβλητή μικρότερης χωρητικότητας. Υποθέστε, για παρά-
δειγμα, ότι δηλώσατε ένα 16μπιτο αριθμό (τύπου Short) με όνομα srtQty στον οποίο αποδώσα-
τε την τιμή 500. Υποθέστε επίσης ότι επιχειρήσατε να αντιγράψετε αυτή την τιμή σε έναν
8μπιτο αριθμό (τύπου Byte) με όνομα bytAmt. Να πώς θα φαινόταν αυτό στον κώδικα:
84 Έξυπνα και γρήγορα: Εισαγωγή στον προγραμματισμό
Μαύρο 84 Χρώμα 84
Dim srtQty As Short = 500 Dim bytAmt As Byte bytAmt = srtQty
Αν η επιλογή Option Strict δεν είναι ενεργοποιημένη, ο μεταγλωττιστής θα δεχτεί αυτόν τον
κώδικα ως έχει. (Με την ευκαιρία, ο μεταγλωττιστής θα δημιουργήσει αυτόματα κώδικα ο ο-
ποίος θα μετατρέψει την τιμή Short σε μορφή Byte.) Αν η μεταβλητή srtQty τύπου Short περιέ-
χει έναν αριθμό μεταξύ 0 και 255, ο κώδικας θα εκτελεστεί χωρίς πρόβλημα. Αν περιέχει έναν
αρνητικό αριθμό ή έναν αριθμό μεγαλύτερο από 255, η εκτέλεση του προγράμματος θα σταμα-
τήσει αναφέροντας την εξαίρεση System.OverflowException. Για να το διορθώσετε αυτό, θα
πρέπει να κάνετε ένα από τα παρακάτω:
Να εμποδίσετε την απόδοση τιμών που δεν ανήκουν στο εύρος 0-255 στη μεταβλητή srtQty
τύπου Short.
Να αλλάξετε τον τύπο της μεταβλητής bytAmt από Byte σε κάποιον μεγαλύτερο. (Ο τύπος
Short θα ήταν αποδεκτός, φυσικά, αλλά το ίδιο ισχύει και για τους τύπους Integer, Long,
Single, Double, και Decimal, επειδή όλοι αυτοί οι τύποι μπορούν να δεχθούν οποιαδήποτε
τιμή την οποία μπορεί να δεχθεί και ο τύπος Short.)
Να προσθέσετε κώδικα με τον οποίο θα ελέγχεται η τιμή της μεταβλητής srtQty και θα γί-
νονται οι κατάλληλες ενέργειες αν η τιμή της μεταβλητής είναι έξω από το εύρος 0-255.
Ακολουθεί ένα παράδειγμα:
If srtQty < 0 Then bytAmt = 0 Else If srtQty > 255 Then bytAmt = 255 Else bytAmt = srtQty End If End If
Αυτό που έχει σημασία, πάντως, είναι ότι θα ανακαλύψετε την αναγκαιότητα αυτών των λύσε-
ων μόνο μετά την εκτέλεση του προγράμματος, αφού πάρετε το μήνυμα ότι παρουσιάστηκε
εξαίρεση και μετά από μια επώδυνη διαδικασία αποσφαλμάτωσης. Αν η επιλογή Option Strict
ήταν ενεργοποιημένη (On), θα είχατε ανακαλύψει το πρόβλημα κατά τη μεταγλώττιση του προ-
γράμματος.
Πολλοί έμπειροι προγραμματιστές απεχθάνονται όλα εκείνα τα μηνύματα σφάλματος που πα-
ρουσιάζονται όταν η επιλογή Option Strict είναι ενεργοποιημένη. Αυτοί οι προγραμματιστές
έχουν επίγνωση των ζητημάτων που αφορούν τους τύπους δεδομένων κάθε φορά που αντιγρά-
φουν δεδομένα από μια μεταβλητή σε κάποια άλλη, και πιστεύουν ότι δεν έχουν ανάγκη βοή-
θειας. Για να ικανοποιήσει αυτούς τους προγραμματιστές, η Visual Basic .NET χρησιμοποιεί
ως προεπιλογή την επιλογή Option Strict Off. Αυτό το γεγονός, όμως, δεν πρέπει να σας απο-
τρέψει από το να την ενεργοποιήσετε ξανά, επειδή εσείς θα χρειαστείτε στην αρχή κάθε δυνατή
Κεφάλαιο 3: Χρήση βασικών εντολών 85
Μαύρο 85 Χρώμα 85
βοήθεια. Δεν έχετε, λοιπόν, παρά να προσθέσετε την επομένη γραμμή στην κορυφή του αρχεί-
ου που περιέχει τον κώδικά σας:
Option Strict On
Με την ευκαιρία, αυτή η εντολή ενεργοποιεί και την επιλογή Option Explicit (της αποδίδει την
τιμή On). Επομένως, δεν χρειάζεται να προσθέσετε και τις δύο εντολές Option στο ίδιο αρχείο.
Χρήση πινάκων Ένας πίνακας μεταβλητών — ή απλώς πίνακας (array) — είναι μια σειρά μεταβλητών οι οποίες
προσδιορίζονται με το ίδιο όνομα αλλά με διαφορετικό αριθμό (δείκτη). Οι πίνακες διευκολύ-
νουν τη χρήση ενός συνόλου σχετικών μεταξύ τους μεταβλητών σε ένα πρόγραμμα. Υποθέστε,
για παράδειγμα, ότι πρέπει να υπολογίζετε αθροίσματα ανά μήνα. Για να δηλώσετε και τις δώ-
δεκα μεταβλητές (μία για κάθε μήνα) μπορείτε να γράψετε:
Dim decMonTot(11) As Decimal
Αυτή η πρόταση δεσμεύει μνήμη για 12 αριθμούς τύπου Decimal. Για να χρησιμοποιήσετε το
άθροισμα του Ιανουαρίου, μπορείτε να γράψετε decMonTot(0). Το άθροισμα του Φεβρουαρίου
είναι το decMonTot(1), κ.ο.κ. Αν προσπαθήσετε να προσπελάσετε ένα δείκτη που δεν υπάρχει
(σε αυτή την περίπτωση, ένα δείκτη που δεν ανήκει στο εύρος 0-11), το πρόγραμμα θα αποτύ-
χει.
Ορολογία Η λέξη δείκτης (subscript) σημαίνει τον αριθμητικό δείκτη ενός πίνακα. Αν χρησιμοποιή-σετε ένα δείκτη που είναι μεγαλύτερος από το μέγεθος που έχει κατανεμηθεί για τον πίνακα, θα προ-κύψει η εξαίρεση System.IndexOutOfRange.
Αν έχετε αποδώσει τον αριθμό κάποιου μήνα σε μια μεταβλητή, όπως η intMon του παρακάτω
παραδείγματος, θα μπορείτε να χρησιμοποιήσετε αυτή τη μεταβλητή ως δείκτη του πίνακα:
Dim decMonTot(11) As Decimal Dim intMon As Integer = 5 Dim decCurAmount As Decimal = 15.00 decMonTot(intMon) = decMonTot(intMon) + decCurAmount
Στη Visual Basic .NET, το πρώτο στοιχείο ενός πίνακα έχει πάντα δείκτη 0. Επομένως, με τις
παραπάνω εντολές η τιμή 15 προστίθεται στο άθροισμα του Ιουνίου.
Η Visual Basic .NET αποδίδει ως αρχική τιμή στους πίνακες την προεπιλεγμένη τιμή του τύπου
δεδομένων τους. Αν, για παράδειγμα, δηλώσετε έναν πίνακα χρησιμοποιώντας κάποιον αριθμη-
τικό τύπο δεδομένων, όλα τα στοιχεία του θα περιέχουν την τιμή μηδέν. Για να αποδώσετε ο-
ποιεσδήποτε άλλες αρχικές τιμές σε έναν πίνακα, πληκτρολογήστε τις τιμές χωρισμένες με