Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ........

17
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

Transcript of Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ........

Page 1: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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

Page 2: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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

Page 3: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

Περιεχόμενα 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

Page 4: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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

Page 5: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

Περιεχόμενα 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

Page 6: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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

Page 7: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

75

Χρήση βασικών εντολών

Σε αυτό το κεφάλαιο θα ασχοληθούμε με τρεις έννοιες οι οποίες εφαρμόζονται σε κάθε σχεδόν

πρόγραμμα που μπορεί να γράψει κανείς σε οποιαδήποτε γλώσσα: τις μεταβλητές, τις αποφά-

σεις, και τους βρόχους. Είναι απολύτως βέβαιο ότι, αν δεν κατανοήσετε αυτές τις έννοιες, οι

προσπάθειές σας στον προγραμματισμό θα καταδικαστούν σε αποτυχία.

Οι μεταβλητές (variables) είναι μονάδες μνήμης στις οποίες το πρόγραμμά σας αποθηκεύει οτι-

δήποτε χρειάζεται προκειμένου να παρακολουθεί τις εργασίες που εκτελεί. Όποια και αν είναι η

πηγή των δεδομένων ενός προγράμματος, το πρόγραμμα χρειάζεται μνήμη για να δεχθεί την

είσοδο (τα δεδομένα εισόδου), να εκτελέσει υπολογισμούς, να αποθηκεύσει τα ενδιάμεσα απο-

τελέσματα, και να στείλει τα τελικά αποτελέσματα σε κάποιου είδους "κανάλι" εξόδου. Χωρίς

μεταβλητές δεν είναι δυνατή η χρήση της μνήμης, οπότε δεν υπάρχει πρόγραμμα — τόσο απλό

είναι.

Οι αποφάσεις (decisions) είναι ένα απαραίτητο στοιχείο για κάθε πρόγραμμα. Ένα πρόγραμμα

που δεν μπορεί να κάνει συγκρίσεις τιμών και να ακολουθήσει διαφορετική πορεία ανάλογα με

τα αποτελέσματα είναι, στην καλύτερη περίπτωση, υπερβολικά απλοϊκό. Γι' αυτόν ακριβώς το

λόγο, οι αποφάσεις αποτελούν μια από τις βασικές δομές οποιουδήποτε μοντέλου προγραμμα-

τισμού — συμπεριλαμβανομένου, φυσικά, και αυτού της Visual Basic .NET.

Οι βρόχοι (loops) είναι άλλη μια βασική δομή του προγραμματισμού. Οι βρόχοι ελέγχουν κάθε

διαδικασία την οποία το πρόγραμμά σας πρέπει να εκτελεί επαναληπτικά — να ζητά συνεχώς

δεδομένα εισόδου, να διαβάζει συνεχώς εγγραφές από ένα αρχείο ή βάση δεδομένων, να ανα-

καλεί συνεχώς δεδομένα από το δίκτυο, ή να κάνει συνεχώς οτιδήποτε άλλο. Μόνο τα απλού-

Κεφάλαιο 3

Page 8: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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 (αλφαριθμητικό) δεν υπάρχει τιμή σε αυτές

τις στήλες επειδή τα αλφαριθμητικά έχουν μεταβλητό μήκος. Θα καταλάβετε τη σημασία των

τριών επόμενων στηλών (όπου παρατίθενται οι χαρακτήρες που περικλείουν τις διάφορες μορ-

φές τύπων δεδομένων, οι χαρακτήρες που προσαρτώνται σε αυτές, και οι τυπικές τιμές των τύ-

πων δεδομένων) στην επόμενη ενότητα αυτού του κεφαλαίου.

Page 9: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

Κεφάλαιο 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") που γράφετε (συμπερι-

Page 10: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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, ανάλογα με τον τύπο δεδομένων.

Page 11: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

Κεφάλαιο 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.

Page 12: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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

Page 13: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

Κεφάλαιο 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#

Υπάρχουν τουλάχιστον τρεις λόγοι για τους οποίους πρέπει να ορίζετε ρητώς έναν τύπο δεδο-

μένων όταν δηλώνετε μια σταθερά:

Page 14: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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

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

ένα όνομα μεταβλητής το οποίο ξεχάσατε να δηλώσετε. Αυτά τα μηνύματα σφάλματος διορθώ-

Page 15: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

Κεφάλαιο 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. Να πώς θα φαινόταν αυτό στον κώδικα:

Page 16: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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. Αυτό το γεγονός, όμως, δεν πρέπει να σας απο-

τρέψει από το να την ενεργοποιήσετε ξανά, επειδή εσείς θα χρειαστείτε στην αρχή κάθε δυνατή

Page 17: Περιεχόμενα - klidarithmos.gr · 5 Περιεχόμενα Ευχαριστίες ..... 11

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

δεδομένων τους. Αν, για παράδειγμα, δηλώσετε έναν πίνακα χρησιμοποιώντας κάποιον αριθμη-

τικό τύπο δεδομένων, όλα τα στοιχεία του θα περιέχουν την τιμή μηδέν. Για να αποδώσετε ο-

ποιεσδήποτε άλλες αρχικές τιμές σε έναν πίνακα, πληκτρολογήστε τις τιμές χωρισμένες με