ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ενότητα: ΜΕΤΑΒΛΗΤΕΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2
Περιεχόμενα 1. Τι είναι οι Μεταβλητές... 4 2. ΤΟΠΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ... 6 3. Η ιδιότητα «Enabled»... 13 4. ΑΣΚΗΣΗ... 15 5. Παράρτημα... 15 3
1. Τι είναι οι Μεταβλητές Με τον όρο Μεταβλητές εννοούμε χώρο αποθήκευσης. Ένα από τα βασικά ατού του προγραμματισμού είναι ότι μπορούμε να αποθηκεύσουμε δεδομένα και να τα χρησιμοποιήσουμε αναλόγως κατά την διάρκεια ζωής του προγράμματος. Μέχρι τώρα χρησιμοποιήσαμε εργαλεία και τροποποιήσαμε τις ιδιότητες τους. Για παράδειγμα «lblmessage.caption= Hello World», η ακόμη «txtno3.text=val(txtno1.text)+val(txtno2.text)» Το τι συνέβαινε σε κάθε μια από τις πιο πάνω περιπτώσεις είναι να χρησιμοποιούμε το όνομα του εργαλείου και να αποθηκεύσουμε την τιμή ή το αποτέλεσμα στην ιδιότητα του εργαλείου. Στην πραγματικότητα τι συμβαίνει όμως; Σε κάθε περίπτωση η προκαθορισμένη ιδιότητα του κάθε εργαλείου (ιδιότητα Caption ή Text) κατακρατεί μέρος της μνήμης όπου αποθηκεύει την τιμή που θα της δοθεί. Το σύστημα γνωρίζει επακριβώς ποιο μέρος της μνήμης έχει κατακρατηθεί και από ποια ιδιότητα και ποιου εργαλείου. Με αυτό τον τρόπο όταν σε μία γραμμή κώδικα το σύστημα συναντήσει το όνομα της ιδιότητας και εργαλείου, ξέρει που να ανατρέξει στην μνήμη, και ποια τιμή να ανακαλέσει και να επεξεργαστεί. Η κάθε μια από τις ιδιότητες των πιο πάνω παραδειγμάτων μπορεί να πάρει οποιανδήποτε τιμή, δηλαδή θα μπορούσα το τροφοδοτήσω το lblmessage.caption με την τιμή Hello World και σε μια άλλη γραμμή κώδικα με την τιμή My Name Is Mike, κ.ο.κ. Οι ιδιότητες εδώ έχουν μεταβαλλόμενες τιμές. Οι τιμές όμως των ιδιοτήτων αυτών είναι απλό κείμενο. Τι γίνεται τότε αν θέλω να δουλέψω με αριθμούς, είτε ακέραιους είτε πραγματικούς, ή ακόμη με τιμές τύπου «Boolean» (Ορθό/Λάθος). Η ακόμη αν δεν θέλω να χρησιμοποιήσω ιδιότητες εργαλείων για να αποθηκεύσω τις τιμές μου. Σε αυτό το σημείο η Visual Basic (αλλά και όλες οι γλώσσες προγραμματισμού) μας επιτρέπουν να προκρατήσουμε μικρές περιοχές στην μνήμη, να τους δώσουμε το όνομα που θέλουμε εμείς και να μπορούμε να δηλώνουμε αν τα δεδομένα μας θα θέλαμε να διατηρούν την αριθμητική τους ιδιότητα, ή αν είναι κείμενο ή οτιδήποτε άλλο. Οι μικρές προκρατημένες περιοχές στην μνήμη ονομάζονται μεταβλητές διότι οι τιμές που μπορεί να αποθηκεύσουμε εκεί συνέχεια μεταβάλλονται, και είναι κάτι παρόμοιο με τις μεταβλητές που συναντούμε στην άλγεβρα (μαθηματικά) αλλά και σε άλλες επιστήμες. Η Visual Basic έχει συγκεκριμένη εντολή που ειδοποιεί το σύστημα για την δημιουργία μιας μεταβλητής. Είναι όμως απαραίτητο να δηλώσουμε κάθε μεταβλητή με συγκεκριμένο τρόπο, προκαθορίζοντας τον τύπο της μεταβλητής. Η Visual Basic έχει αρκετούς τύπους μεταβλητών αλλά θα επικεντρωθούμε σε 4: 4
Τύπος Μεταβλητής στην Visual Basic String Integer Double Boolean Εξήγηση Κείμενο Ακέραιοι Αριθμοί μόνο Πραγματικοί Αριθμοί Παίρνει μόνο δύο τιμές True / False Ο τρόπος δήλωσης μίας μεταβλητής γίνετε με την εντολή «DIM», ακολουθούμενη από το όνομα της μεταβλητής, την εντολή «AS» και τον τύπο της μεταβλητής στα Αγγλικά DIM «Όνομα Μεταβλητής» AS «Τύπος μεταβλητής» Παραδείγματα (1) DIM Myname AS STRING (2) DIM Ix AS INTEGER (3) DIM MyMoney AS DOUBLE (4) DIM Married AS BOOLEAN Στο παράδειγμα (1) Η μεταβλητή «Myname» δημιουργείται στην μνήμη και είναι τύπου κειμένου STRING Στο παράδειγμα (2) Η μεταβλητή «Ix» δημιουργείται στην μνήμη και είναι τύπου ακέραιου αριθμού (INTEGER) δηλαδή δέχεται μόνο αριθμούς χωρίς δεκαδικά ψηφία. Στο παράδειγμα (3) Η μεταβλητή «MyMoney» δημιουργείται στην μνήμη και είναι τύπου DOUBLE, δηλαδή παίρνει και τιμές με δεκαδικά ψηφία Στο παράδειγμα (4) Η μεταβλητή «Married» δημιουργείται στην μνήμη και είναι τύπου BOOLEAN, δηλαδή παίρνει μόνο μεταξύ δύο τιμών: «True» (Ορθό) ή «False» (Λάθος) 5
2. ΤΟΠΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ Στην επόμενη άσκηση θα μετατρέψουμε το πρόγραμμα που δημιουργήσαμε στο κεφάλαιο 5, στο να χρησιμοποιεί τρεις μεταβλητές, μια για τον πρώτο αριθμό, μια για τον δεύτερο, και μια για το αποτέλεσμα. Θα αλλάξετε τον κώδικα σας έτσι ώστε να δημιουργεί σε κάθε πράξη τις μεταβλητές να παίρνει τις τιμές από τον χρήστη, να υπολογίζει το αποτέλεσμα, και να τυπώνει τις μεταβλητές μέσα στα κουτάκια, και το αποτέλεσμα στην ετικέτα. Για πρώτη φορά σε αυτή την άσκηση θα χρησιμοποιήσουμε ένα νέο εργαλείο εισόδου το «inputbox» το οποίο επιτρέπει στον χρήστη να πληκτρολογήσει τα δεδομένα του μέσα σε ένα νέο παραθυράκι. Επίσης θα μάθουμε να θέτουμε τα κουτιά «textboxes» εκτός λειτουργίας ούτως ώστε οι χρήστες να μην μπορούν να πληκτρολογήσουν δεδομένα, και να χρησιμοποιήσουμε εμείς τα κουτιά σαν εργαλεία εξόδου. (1) Ανοίξτε το προηγούμενο αρχείο σας «MathOps» από το κεφάλαιο 5. (2) Αποθηκεύστε τ την φόρμα σας χρησιμοποιώντας την εντολή «Save MathOps.frm AS» με το όνομα «MathVar.frm» (Σχήμα 1) και το «Project» επίσης με το όνομα «MathVar.prj» (Σχήμα 2) Σχήμα 1 Σχήμα 2 (3) Επιλέξτε το αντικείμενο «txtno1», και στο παράθυρο ιδιοτήτων μετατρέψετε την τιμή «Enable» σε «False» (Σχήμα 3). Επαναλάβετε το ίδιο για το «txtno2» 6
Αντικείμενο «txtno1» Αντικείμενο «txtno2» Σχήμα 3 Κάνοντας την εντολή «Enable» Λάθος, τα αντικείμενα «textboxes» μετατρέπονται αυτόματα από εργαλεία εισόδου σε εργαλεία εξόδου, και οι χρήστες δεν μπορούν να τα χρησιμοποιήσουν για να εισάγουν δεδομένα. (4) Διπλό πατήστε το αντικείμενο «Πρόσθεση» και γράψετε τον κώδικα που φαίνεται στο Σχήμα 4 Ας εξηγήσουμε αυτό τον κώδικα. Οι πρώτες τρεις γραμμές Σχήμα 4 7
Dim no1 As Double Dim no2 As Double Dim no3 As Double Απλός δημιουργόυν τις μεταβλητές στην μνήμη του συστήματος μας. Όλες οι μεταβλητές είναι τύπου «DOUBLE». Πιο κάτω θα δείτε ότι μερικές πράξεις δεν μπορούν να επιτελεσθούν με «DOUBLE» και χρειάζεται να δηλώσουμε τις μεταβλητές σαν INTEGER (Ακέραιοι) και το ανάποδο. Η δεύτερη σειρά με εντολές είναι οι νέες εντολές εισόδου no1 = Val(InputBox("Παρακαλώ όπως Πληκτρολογήσετε τον Πρώτο Αριθμό")) no2 = Val(InputBox("Παρακαλώ όπως Πληκτρολογήσετε τον Δεύτερο Αριθμό")) Η εντολή «inputbox» μας επιτρέπει να γράψουμε ένα μήνυμα το οποίο το σύστημα μας δείχνει μέσα σε ένα νέο παράθυρο, και περιμένει από εμάς να πληκτρολογήσουμε τα δεδομένα και να πατήσουμε «ΟΚ» (Σχήμα 5). Το μήνυμα είναι απαραίτητο να βρίσκεται μεταξύ διπλών εισαγωγικών Αν η τιμή που θα πάρουμε από το εργαλείο είναι αριθμητική, καλό θα είναι να το περάσουμε από την εντολή «VAL» για να είμαστε σίγουροι ότι έχει μετατραπεί σε αριθμό. Πρώτος Αριθμός Δεύτερος Αριθμός Σχήμα 5 Οι τιμές που παίρνουμε από τα παράθυρα αποθηκεύονται στις μεταβλητές no1, no2 Η Τρίτη σειρά με εντολές κάνει τον υπολογισμό και τυπώνει τους αριθμούς στις θέσεις τους. no3 = no1 + no2 lblresult.caption = no3 Η εντολή αυτή προσθέτει το περιεχόμενο των μεταβλητών no1, no2, και αποθηκεύει το αποτέλεσμα στην μεταβλητή no3 Η εντολή αυτή αποθηκεύει το περιεχόμενο της μεταβλητής no3 στην ιδιότητα «caption» του 8
αντικειμένου «lblresult». Επειδή το αντικείμενο αυτό είναι ετικέτα η ιδιότητα «caption» το τυπώνει αμέσως στη οθόνη txtno1.text = no1 txtno2.text = no2 Το περιεχόμενο της μεταβλητής no1 αποθηκεύεται στην ιδιότητα «TEXT» του αντικειμένου «txtno1». Επειδή και αυτό το αντικείμενο είναι «TextBox» η τιμή εμφανίζεται αμέσως μέσα στο κουτί Το περιεχόμενο της μεταβλητής no2 αποθηκεύεται στην ιδιότητα «TEXT» του αντικειμένου «txtno2». Επειδή και αυτό το αντικείμενο είναι «TextBox» η τιμή εμφανίζεται αμέσως μέσα στο κουτί (5) Πληκτρολογείστε τον κώδικα για την αφαίρεση όπως φαίνεται στο Σχήμα 6 Σχήμα 6 9
(6) Πληκτρολογείστε τον κώδικα για τον πολλαπλασιασμό όπως φαίνεται στο Σχήμα 7 Σχήμα 7 (7) Πληκτρολογείστε τον κώδικα για την διαίρεση πραγματικών αριθμών όπως φαίνεται στο Σχήμα 8 Σχήμα 8 10
(7) Πληκτρολογείστε τον κώδικα για τον υπολογισμό του πηλίκου της διαίρεσης ακεραίων αριθμών όπως φαίνεται στο Σχήμα 9 Σχήμα 9 Παρατηρούμε ότι όλες οι μεταβλητές είναι ακέραιοι. Αυτή η εντολή δεν δουλεύει με μη ακέραιους αριθμούς. Εάν ένα πραγματικός αριθμός της δοθεί, θα αγνοήσει το δεκαδικό μέρος. (8) Πληκτρολογείστε τον κώδικα για τον υπολογισμό του υπολοίπου της διαίρεσης ακεραίων αριθμών όπως φαίνεται στο Σχήμα 10 11
Σχήμα 10 (9) Πληκτρολογείστε τον κώδικα για τον υπολογισμό του αποτελέσματος, όταν ένας αριθμός υψωθεί σε μία ακέραια δύναμη όπως φαίνεται στο Σχήμα 11 Σχήμα 11 12
(10) Τρέξετε το πρόγραμμα σας. Θα δείτε ότι αμέσως ζητά δεδομένα για τον υπολογισμό της «πρόσθεσης» η οποία είναι επιλεγμένη αυτόματα μόλις αρχίσει το πρόγραμμα. Αυτό το μικρό λάθος θα το διορθώσουμε αργότερα. (11) Αποθηκεύσετε την εργασία σας. 3. Η ιδιότητα «Enabled» Και τώρα έχει έλθει η στιγμή να διορθώσουμε το πρόβλημα που αντιμετωπίζαμε στο πρόγραμμα. Θα έχετε προσέξει ότι μόλις εκκινήσει μας ζητά να πληκτρολογήσουμε τα δεδομένα, πριν εμείς ακόμη να επιλέξουμε πράξη. Ο λόγος που το πρόγραμμα δουλεύει έτσι είναι διότι τα μόνα ενεργά εργαλεία εισόδου που είχε το πρόγραμμα είναι τα κουμπιά επιλογής «option buttons». Όταν ένα πρόγραμμα της Visual Basic εκκινήσει, το σύστημα ψάχνει να βρει εργαλεία εισόδου, Το σύστημα μόλις βρει το πρώτο εργαλείο εισόδου το οποίο μπορεί να δεχθεί δεδομένα, το ενεργοποιεί και περιμένει το χρήστη να τα πληκτρολογήσει. Στο δικό μας παράδειγμα το πρόγραμμα από μόνο του πηγαίνει και εκτελεί τις εντολές του πρώτου κουμπιού επιλογής (την πρόσθεση). Οι εντολές που εσωκλείονται στη κουμπί της πρόσθεσης είναι να ζητήσουν από τον χρήστη να πληκτρολογήσει δεδομένα, για αυτό τον λόγο έχομε τα παράθυρα του «inputbox» να εμφανίζονται μόλις το πρόγραμμα εκκινήσει Αφού το πρόβλημα βρίσκετε στην κατασκευή της Visual Basic που ψάχνει ενεργά εργαλεία εισόδου κατά την εκκίνηση του προγράμματος και τα εκτελεί, δεν απομένει τίποτε άλλο από το να θέσουμε όλα τα ενεργά εργαλεία εισόδου σε απενεργοποίηση. (1) Αλλάξτε την ιδιότητα «enabled» όλων των αντικειμένων εργαλείου «option buttons».στην τιμή «False». Δηλαδή αλλάξετε την τιμή της ιδιότητας «enabled» των κουμπιών «Προσθεση», «Αφαίρεση», «Πολλαπλασιασμός», «Διαίρεση», «Πηλίκο», «Υπόλοιπο», και «Δύναμη» σε «FALSE» (2) Δημιουργήστε ένα καινούργιο «κουμπί εντολών (Command Button)» με την ιδιότητα «caption» να παίρνει την τιμή «Έναρξη». (3) Διπλό-πατήστε το κουμπί που δημιουργήσατε για να μπείτε στο παράθυρο κώδικα και πληκτρολογήστε τις εντολές του σχήματος 12 13
Σχήμα 12 (4) Τρέξτε το πρόγραμμα σας, θα δείτε ότι τα κουμπιά των πράξεων είναι απενεργοποιημένα (Σχήμα 13) Τα κουμπιά των πράξεων είναι απενεργοποιημένα, έτσι ο κώδικας τους δεν μπορεί να εκτελεσθεί αυτόματα Σχήμα 13 (5) Πατήστε το κουμπί Έναρξη, τα κουμπιά των πράξεων ενεργοποιούνται (Σχήμα 14), και μπορούμε τώρα να προχωρήσουμε στην επιλογή της πράξης που θέλουμε. Όταν αυτό συμβεί, ο κώδικάς που αντιστοιχεί στο κουμπί της κάθε πράξης θα εκτελεσθεί και το σύστημα θα μας ζητήσει να πληκτρολογήσουμε τα δεδομένα μας. 14
Πατώντας το κουμπί «Έναρξη», ενεργοποιεί όλα τα κουμπιά των πράξεων Σχήμα 14 (6) Αποθηκεύστε την δουλειά σας. 4. ΑΣΚΗΣΗ Δημιουργήστε ένα πρόγραμμα στην Visual Basic το οποίο θα επιτρέπει του χρήστη να επιλέξει μεταξύ 5 διαφορετικών γλωσσών και ανάλογα από την επιλογή του να τυπώνει το μήνυμα «Καλωσόρισες» στην ανάλογη γλώσσα καθώς και την σημαία της χώρας. Ελληνικά Αγγλικά Γαλλικά Ισπανικά Ιταλικά Καλωσόρισες welcome bienvenue recepción benvenuto 5. Παράρτημα Σημείωμα Αναφοράς. 15
Copyright ΤΕΙ Δυτικής Μακεδονίας, ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. «ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ». Έκδοση: 1.0. Κοζάνη 2015. Σημείωμα Αδειοδότησης. Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Διατήρηση Σημειωμάτων. Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 16