ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Η Γλώσσα Προγραμματισμού Basic

 

Γενικά για τη Basic

Η γλώσσα προγραμματισμού Basic είναι μια γλώσσα ειδικά φτιαγμένη για όσους είναι αρχάριοι στον προγραμματισμό, όπως δηλώνουν και τα αρχικά του ονόματός της : Beginners' All-purpose Symbolic Instruction Code, δηλ. Συμβολικός Κώδικας Οδηγιών Γενικής Χρήσης για Αρχάριους.

Για να φορτώσουμε τη γλώσσα Basic γράφουμε από την προτροπή του DOS : C:\>GWBASIC και αφού φορτωθεί η γλώσσα και βγει το σύμβολο ΟΚ στην οθόνη, μπορούμε να αρχίσουμε να γράφουμε το πρόγραμμά μας.

Τα προγράμματα της Basic χρησιμοποιούν μπροστά απ' όλες τις εντολές τους έναν ακέραιο αριθμό. Όταν τρέχει το πρόγραμμα, τότε εκτελούνται όλες οι εντολές με την αριθμητική σειρά που έχουν, από την πρώτη μέχρι την τελευταία. Μέσα στο πρόγραμμα μπορεί να υπάρχουν, όμως, και εντολές ελέγχου, που κατευθύνουν τη ροή του προγράμματος σ’ άλλες εντολές εκτός αριθμητικής σειράς.

Οι αριθμοί των εντολών του προγράμματος πρέπει να είναι ακέραιες τιμές και συνήθως χρησιμοποιούμε τα πολλαπλάσια του 10, δηλ. 10, 20, 30 κοκ και αυτό γίνεται για να μπορούμε αργότερα να προσθέσουμε και άλλες εντολές ενδιάμεσα, αν χρειαστεί βέβαια.

Η Basic χρησιμοποιεί μια λίστα από εντολές, όπως οι Rem, Input, Print, Cls, End, Goto κ.ά. όπου η καθεμία κάνει και από μια διαφορετική δουλειά. Πρέπει να γράφουμε μόνο με αγγλικούς χαρακτήρες και τα ελληνικά επιτρέπονται μόνο όταν χρησιμοποιούμε εισαγωγικά για μηνύματα, όπως π.χ.

30 Print "Δώσε το Ύψος : "

ή και στην εντολή Rem :

5 Rem Πρόγραμμα Υπολογισμού Εμβαδού Τετραγώνου 

Ένα παράδειγμα προγράμματος σε Basic είναι το εξής :

            5 Rem Πρόγραμμα Υπολογισμού Εμβαδού Τριγώνου

            10 Cls

            20 Input "Δώσε τη Βάση : ", B

            30 Input "Δώσε το Ύψος : ",Y

            40 E = B * Y / 2

            50 Print "Το εμβαδόν είναι : "; E

            60 End

            List

            Run

Οι εντολές List και Run δεν έχουν αριθμό εντολής, γιατί δεν είναι μέρη του προγράμματος, αλλά είναι εντολές του συστήματος. Για να επιστρέψουμε από τη γλώσσα Basic στο Dos, γράφουμε : System.

 

Η Εντολή Load

Είναι μια εντολή που δεν δέχεται αριθμό και φορτώνει ένα πρόγραμμα από τον σκληρό δίσκο ή τη δισκέτα στη μνήμη RAM για να μπορέσουμε να το διορθώσουμε ή να το τρέξουμε.

Η σύνταξή της είναι ως εξής :

            Load "program1"

Η παραπάνω εντολή φορτώνει από τον σκληρό δίσκο ή τη δισκέτα στη μνήμη RAM το πρόγραμμα που έχει όνομα "program1". Η επέκταση των προγραμμάτων της Basic είναι πάντα η .BAS.

 

Η Εντολή Save

Είναι μια εντολή που δεν δέχεται αριθμό και αποθηκεύει ένα πρόγραμμα από τη μνήμη RAM στον σκληρό δίσκο ή τη δισκέτα για να μπορέσουμε να το διορθώσουμε ή να το τρέξουμε αργότερα.

Η σύνταξή της είναι ως εξής :

            Save "program1"

Η παραπάνω εντολή αποθηκεύει στον σκληρό δίσκο ή τη δισκέτα το πρόγραμμα που γράφουμε εκείνη τη στιγμή και το οποίο θα έχει όνομα "program1" με επέκταση .BAS.

Με την επιλογή Save "program1",P το πρόγραμμα αποθηκεύεται σε προστατευμένη μορφή, δηλ. δεν μπορούμε να το δούμε αργότερα και να το διορθώσουμε, ενώ με την επιλογή Save "program1",Α το πρόγραμμα αποθηκεύεται σε μορφή χαρακτήρων ASCII.

 

Η Εντολή Run

Με την εντολή αυτή, που δεν δέχεται αριθμό, μπορούμε να εκτελέσουμε (τρέξουμε) ένα πρόγραμμα, αφού πρώτα το έχουμε φορτώσει στη μνήμη RAM. Γράφουμε RUN ή μπορούμε να πατήσουμε και το πλήκτρο F2.

 

Η Εντολή List

Με την εντολή αυτή, που δεν δέχεται αριθμό, μπορούμε να δούμε στην οθόνη όλη τη λίστα του προγράμματός μας, αφού πρώτα το έχουμε φορτώσει στη μνήμη RAM. Γράφουμε LIST ή μπορούμε να πατήσουμε και το πλήκτρο F1.

 

Οι Μεταβλητές της Basic

Για να μπορέσουμε να δουλέψουμε με τη Basic, πρέπει να χρησιμοποιούμε μεταβλητές, όπως γίνεται και μ’ όλες τις γλώσσες προγραμματισμού, οι οποίες χρησιμοποιούν στην ονομασία τους έναν συνδυασμό από αγγλικά γράμματα ή και αριθμούς, πάντα όμως το πρώτο σύμβολο είναι γράμμα.

Οι μεταβλητές της Basic είναι περιοχές στη μνήμη RAM και είναι δύο ειδών : αριθμητικές και αλφαριθμητικές.

Οι αριθμητικές μεταβλητές δέχονται μόνο αριθμητικές τιμές και μ’ αυτές μπορούμε να κάνουμε πράξεις.

Π.χ. a, b, a1, b23, ypsos, basi κ.ά.

Οι αλφαριθμητικές μεταβλητές δέχονται γράμματα ή και αριθμούς, αλλά δεν μπορούμε μ' αυτές να κάνουμε πράξεις. Έχουν πάντα στο τέλος της ονομασίας τους το σύμβολο του δολαρίου ($).

Π.χ. name$, onoma$, address$ κ.ά.

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

            Αποδεκτές Μεταβλητές       Μη Αποδεκτές Μεταβλητές

            a                                              1a        (αρχίζει από αριθμό)

            a1                                            -b         (αρχίζει από -)

            name$                                     $c        (αρχίζει από $)

Η Basic χρησιμοποιεί ορισμένα επιθέματα (suffixes) για να ξεχωρίσει τις μεταβλητές των ακεραίων από τις μεταβλητές των πραγματικών (δεκαδικών) αριθμών. Τα επιθέματα αυτά είναι :

i%                   μικρός ακέραιος (2 bytes) με τιμές από -32768 έως +32767

i&                    μεγάλος ακέραιος (4 bytes)

i! ή iΕ              πραγματικός απλής ακρίβειας (4 bytes)

i# ή iD            πραγματικός διπλής ακρίβειας (8 bytes)

Δηλαδή, όποια μεταβλητή έχει στο τέλος του ονόματός της το %, αυτό σημαίνει ότι δέχεται μόνο ακέραιες τιμές στο διάστημα -32768 έως +32767.

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

            i%=150

            j&=135263

            k!=1235.256

            l#=125752236621.9984

Στη Basic μπορούμε να προσθέσουμε (επικολλήσουμε) αλφαριθμητικά με τη χρήση του συμβόλου +, ως εξής :

            A$ = "Φλώρινας"

B$ = "Παιδαγωγική " + "Ακαδημία " + A$

Έτσι, η αλφαριθμητική μεταβλητή (string) B$ θα γίνει ίση με : "Παιδαγωγική Ακαδημία Φλώρινας"

 

Η Εντολή Cls

Με την εντολή αυτή καθαρίζει η οθόνη και ο δρομέας πηγαίνει στην πάνω αριστερή γωνία της. Μπορεί να μπει σε οποιοδήποτε μέρος του προγράμματος, συνήθως όμως τη βάζουμε σαν πρώτη εκτελέσιμη εντολή στο πρόγραμμα, μετά από την εντολή Rem :

            5 Rem Η Εντολή Cls

            10 Cls

 

Η Εντολή End

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

            ...

            100 End

 

Η Εντολή Input

Με την εντολή αυτή μπορούμε να εισάγουμε τιμές στις μεταβλητές της Basic από το πληκτρολόγιο. Μπορούμε να γράψουμε και ένα μήνυμα μέσα σε εισαγωγικά "..." για να διευκρινίσουμε τι είδους μεταβλητή είναι και τι τιμή πρέπει να δώσουμε.

Η σύνταξη της εντολής είναι ως εξής :

            20 Input "Δώσε το ύψος του τριγώνου : ",Υ

     αριθμός  εντολή          μήνυμα                       μεταβλητή

     εντολής

 

Η Εντολή Print

Με την εντολή αυτή μπορούμε να τυπώσουμε στην οθόνη ή στον εκτυπωτή τις τιμές των μεταβλητών της Basic. Μπορούμε να γράψουμε και ένα μήνυμα μέσα σε εισαγωγικά "..." για να διευκρινίσουμε ποια τιμή είναι αυτή που τυπώνεται.

Η σύνταξη της εντολής είναι ως εξής :

            20 Print "Το εμβαδόν του τριγώνου είναι : ";Ε

   αριθμός  εντολή            μήνυμα                         μεταβλητή

    εντολής

Με την εντολή Print Using μπορούμε να στοιχίσουμε αριθμούς ως εξής:

            10 Print Using "+###,###.##"; a

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

Η αριθμητική μεταβλητή a θα τυπωθεί μαζί με το πρόσημό της, με δύο δεκαδικά ψηφία και με έξι θέσεις για το ακέραιο μέρος της. Το σύμβολο # δηλώνει από μία θέση για κάθε ψηφίο. Αν τα ψηφία της μεταβλητής είναι λιγότερα, μερικές θέσεις θα μείνουν κενές.

 

Οι Εντολές Read και Data

Καταχωρήσεις τιμών σε μεταβλητές μπορούμε να κάνουμε και με συνδυασμό των εντολών Read και Data. Σ’ αυτή την περίπτωση πρέπει να γράψουμε τις τιμές μέσα στο πρόγραμμα. Αυτός ο τρόπος καταχώρησης τιμών χρησιμοποιείται για σταθερές τιμές και όχι για τιμές που εισάγονται από το πληκτρολόγιο τη στιγμή που εκτελείται το πρόγραμμα.

Παράδειγμα :

            5 Rem Οι εντολές Read και Data

            10 Cls

            20 Read a, b, c

            30 Read eponymo$, onoma$

            40 Data 10, 13, 15

            50 Data "Παιδαγωγική", "Ακαδημία"

Στο παραπάνω παράδειγμα, η μεταβλητή a θα πάρει την τιμή 10, η b την 13, η c την 15, η eponymo$ την "Παιδαγωγική" και η onoma$ την "Ακαδημία". Οι τιμές που υπάρχουν στις εντολές Data πρέπει να είναι ίσες ή περισσότερες από τις μεταβλητές που υπάρχουν στις εντολές Read, γιατί το πρόγραμμα αντιστοιχεί μία τιμή μιας εντολής Data σε μία μεταβλητή μιας εντολής Read.

 

Η Εντολή Restore

Με την εντολή αυτή μπορούμε να κάνουμε μια εντολή Read να ξαναδιαβάζει κάποιες τιμές από μια εντολή Data.

Παράδειγμα :

            5 Rem Οι εντολές Read και Data μαζί με την εντολή Restore

            10 Cls

            20 Read a, b, c

            30 Read eponymo$, onoma$

            40 Data 10, 13, 15

            50 Data "Παιδαγωγική", "Ακαδημία"

            60 Restore

            70 Read d, e, f

Στο παραπάνω παράδειγμα, οι μεταβλητές d, e και f παίρνουν τις τιμές 10, 13 και 15, που είχαν δοθεί βέβαια νωρίτερα και σ’ άλλες μεταβλητές, αλλά με την εντολή Restore ο δείκτης της εντολής Data τοποθετείται στην πρώτη εντολή Data, την 40.

 

Η Εντολή Rem

Είναι μια μη-εκτελέσιμη εντολή, δηλ. μόλις τη συναντήσει η Basic μέσα στο πρόγραμμα, την αγνοεί παντελώς και πηγαίνει στην επόμενη εντολή του προγράμματος. Είναι, όμως, πολύ χρήσιμη για να μπορέσουμε να γράφουμε σχόλια και στοιχεία για το πρόγραμμά μας, έτσι ώστε να μπορεί να καταλάβει κάποιος τρίτος τι κάνει το πρόγραμμα.

Η εντολή αυτή είναι καλό να μπαίνει στην αρχή του προγράμματος, πριν ακόμα από τις πρώτες εκτελέσιμες εντολές, για να δηλώνει τον σκοπό του προγράμματος, αλλά μπορεί να μπει και οπουδήποτε αλλού νομίζουμε εμείς μέσα στο πρόγραμμα. Στην εντολή αυτή μπορούμε να γράψουμε και με ελληνικούς χαρακτήρες.

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

            5 Rem Πρόγραμμα Υπολογισμού Εμβαδού και Περιμέτρου Τετραγώνου

            ...

            35 Rem Εδώ γίνεται ο υπολογισμός του Εμβαδού

            ...

            55 Rem Εδώ γίνεται ο υπολογισμός της Περιμέτρου

            ...

 

Η Εντολή Αντικατάστασης

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

Η τιμή της παράστασης υπολογίζεται από τη Basic και μετά καταχωρείται στη μεταβλητή στο αριστερό μέρος. Ό,τι τιμή είχε από πριν η μεταβλητή αυτή χάνεται. Για την καταχώρηση των τιμών χρησιμοποιείται το σύμβολο ίσον (=).

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

αρχικές τιμές : a = 1, b = 2, c = 10

            c = 3                           c = 3                          (το c γίνεται 3)

            c = a                            c = a                          (το c γίνεται 1)

            c = (a + b) * 5            c = (a + b ) * 5         (το c γίνεται 15)

            c = c + 1                     c = c + 1                   (αυξάνει το c κατά 1, δηλ. γίνεται 16)

 

Οι Προτεραιότητες στις Αριθμητικές Πράξεις

Η Basic για να κάνει τις αριθμητικές πράξεις χρησιμοποιεί τα εξής σύμβολα :

            + πρόσθεση

            - αφαίρεση

            * πολλαπλασιασμός

            / διαίρεση

\ ακέραια διαίρεση

            ^ ύψωση σε δύναμη

Οι αριθμητικές πράξεις στη Basic δεν έχουν όλες την ίδια προτεραιότητα. Πιο συγκεκριμένα, όταν το πρόγραμμα συναντήσει μια αριθμητική παράσταση, τότε εκτελεί πρώτα τις πράξεις που είναι μέσα στις παρενθέσεις, μετά τις δυνάμεις, μετά τους πολλαπλασιασμούς ή τις διαιρέσεις και τέλος τις προσθέσεις ή τις αφαιρέσεις.

Από τις πράξεις που έχουν ίδια προτεραιότητα, δηλ. (πολλαπλασιασμοί και διαιρέσεις) και (προσθέσεις και αφαιρέσεις), εκτελούνται πρώτα οι πράξεις που είναι στα αριστερά.

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

αρχικές τιμές : a = 1, b = 2, c = 10

            c = a + b * 2                           c = 5

            c = (a + b) * 2                        c = 6

            c = a * b / 2 * 5                      c = 5

            c = (a * b) / ( 2 * 5)               c = 0.2

 

Εντολές Ελέγχου Χωρίς Συνθήκη

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

 

Η Εντολή GoTo

Η σημαντικότερη από τις εντολές ελέγχου χωρίς συνθήκη είναι η εντολή Goto, η οποία και κατευθύνει τη ροή του προγράμματος σε κάποια άλλη εντολή, χωρίς να ελέγχει τίποτα.

            Παράδειγμα :

            5 Rem Η Εντολή Goto

            10 Cls

            20 Input "Δώσε ένα όνομα : ", name$

            30 Goto 10

            40 End

Στο παραπάνω πρόγραμμα η εντολή 5 θα εκτελεστεί μία φορά, η εντολή 40 δεν θα εκτελεστεί ποτέ και οι εντολές 10, 20 και 30 θα εκτελούνται συνέχεια μέχρι να διακόψουμε το πρόγραμμα ή να κλείσουμε τον υπολογιστή.

 

Εντολές Ελέγχου Υπό Συνθήκη

Η Εντολή if

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

Η γενική σύνταξη της εντολής είναι η εξής :

if <συνθήκη> then <εντολή1> else <εντολή2>

όπου η <συνθήκη> είναι συνήθως μια σύγκριση για ισότητα ή ανισότητα μεταξύ αριθμών ή και ονομάτων και αν η συνθήκη είναι αληθής, τότε εκτελείται η <εντολή1>, αλλιώς εκτελείται η <εντολή2>.

Η εντολή else ακολουθεί πάντα μια εντολή if και δεν μπορεί να σταθεί μόνη της. Η εντολή if, όμως, δεν είναι απαραίτητο να ακολουθείται πάντα από μια εντολή else.

Παράδειγμα :

Να γίνει πρόγραμμα σε γλώσσα Basic που να διαβάζει δύο αριθμούς Α και Β και να βρίσκει ποιος είναι ο μεγαλύτερος.

            5 Rem Εύρεση μεγαλύτερου αριθμού

            10 Cls

            20 Input "Δώσε τον αριθμό Α : ", A

            30 Input "Δώσε τον αριθμό B : ", B

            40 If A>B then print "Μεγαλύτερος είναι ο Α"

            50 If Β>Α then print "Μεγαλύτερος είναι ο Β"

            60 If A=Β then print "Οι δύο αριθμοί είναι ίσοι"

            70 End

με χρήση της εντολής else, οι εντολές 40, 50 και 60 μπορούσαν να γραφούν και ως εξής :

            40 If A>B then print "Μεγαλύτερος είναι ο Α" else

                        If Β>Α then print "Μεγαλύτερος είναι ο Β" else

                                    print "Οι δύο αριθμοί είναι ίσοι"

Παράδειγμα :

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

            5 Rem Αριθμός θετικός, αρνητικός ή μηδέν

            10 Cls

            20 Input "Δώσε τον αριθμό Α : ", A

            30 If A>0 then print "Ο αριθμός είναι θετικός"

            40 If Α<0 then print "Ο αριθμός είναι αρνητικός"

            50 If A=0 then print "Ο αριθμός είναι ίσος με μηδέν"

            60 End

Παράδειγμα :

Να γίνει πρόγραμμα σε γλώσσα Basic που να διαβάζει τον βαθμό Β ενός μαθητή σ’ ένα μάθημα και να βγάζει το μήνυμα αν πέρασε ή όχι το μάθημα.

            5 Rem Βαθμός μαθητή

            10 Cls

            20 Input "Δώσε τον βαθμό Β : ", Β

            30 If Β>=10 then print "Πέρασες το μάθημα"

            40 If Β<10 then print "Δεν πέρασες το μάθημα"

            50 End

με χρήση της εντολής else, οι εντολές 30 και 40 μπορούσαν να γραφούν και ως εξής :

            30 If Β>=10 then print "Πέρασες το μάθημα" else

                        print "Δεν πέρασες το μάθημα"

Παράδειγμα :

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

            5 Rem Έλεγχος ορθογωνίου παραλληλογράμμου

            10 Cls

            20 Input "Δώσε την πλευρά Α : ", A

            30 Input "Δώσε την πλευρά B : ", B

            40 If A=B then print "Το παραλληλόγραμμο είναι ορθογώνιο"

            50 If Α<>Β then print " Το παραλληλόγραμμο δεν είναι ορθογώνιο "

            60 End

 

Η Εντολή On ... GoTo

Η εντολή αυτή κατευθύνει τη ροή του προγράμματος σε κάποια άλλη εντολή ανάλογα με την τιμή μιας μεταβλητής. Με τη χρήση της εντολής αυτής, το προπροηγούμενο πρόγραμμα θα γραφόταν ως εξής :

            5 Rem Αριθμός θετικός, αρνητικός ή μηδέν

            10 Cls

            20 Input "Δώσε τον αριθμό Α : ", A

            30 If A>0 then K=1 else If Α<0 then K=2 else K=3

            40 On K Goto 50, 70, 90

            50 Print "Ο αριθμός είναι θετικός"

            60 Goto 100

            70 Print "Ο αριθμός είναι αρνητικός"

            80 Goto 100

            90 Print "Ο αριθμός είναι μηδέν"

            100 End

Δηλαδή η μεταβλητή Κ μπορεί να πάρει μία από τις τιμές 1, 2 ή 3 και η ροή του προγάμματος πηγαίνει αντίστοιχα στην εντολή 50, 70 ή 90. Η Κ πρέπει να είναι ακέραια μεταβλητή.

Παράδειγμα :

Να γίνει πρόγραμμα στη Basic που να διαβάζει δύο ακέραιες τιμές Α και Β και έναν αριθμό Κ από 1-4 και ανάλογα με την τιμή του Κ, το πρόγραμμα θα υπολογίζει και τυπώνει το άθροισμα, τη διαφορά, το γινόμενο ή το πηλίκο των Α και Β.

5 Rem Εκμάθηση της εντολής On ... Goto

            10 Cls

            20 Input "Δώσε τον αριθμό Α : ", A

            30 Input "Δώσε τον αριθμό B : ", B

            40 Input "Δώσε μια τιμή για το Κ (1-4) : ", Κ

            50 On K Goto 60, 80, 100, 120

            60 Print A+B

            70 Goto 130

            80 Print A-B

            90 Goto 130

            100 Print A*B

            110 Goto 130

120 Print A\B

130 End

 

Οι Λογικοί Τελεστές

Οι λογικοί τελεστές είναι ειδικά σύμβολα με τα οποία μπορούμε να κάνουμε διάφορες συγκρίσεις μεταξύ αριθμών. Οι λογικοί τελεστές που χρησιμοποιεί η Basic για να συγκρίνει αριθμούς ή και γράμματα είναι οι εξής : 

            Σύμβολο         Νόημα

            =                      ίσο

            >                      μεγαλύτερο

            <                      μικρότερο

            >=                   μεγαλύτερο ή ίσο

            <=                   μικρότερο ή ίσο

            <>                   διάφορο

            Χρησιμοποιούνται και οι εξής λογικοί τελεστές για να κάνουμε διάφορους συνδυασμούς :

            Σύμβολο         Νόημα

            AND               λογική σύζευξη

            OR                  λογική διάζευξη

            NOT                λογική άρνηση

Η χρήση των τελεστών αυτών θα φανεί καλύτερα με παραδείγματα :

Παράδειγμα :

Να γίνει πρόγραμμα σε γλώσσα Basic που να διαβάζει τις τρεις πλευρές Α1, Α2 και Α3 ενός τριγώνου και να βγάζει το μήνυμα αν το τρίγωνο είναι ισόπλευρο ή όχι.

            5 Rem Ισόπλευρο τρίγωνο - Λογικός τελεστής AND

            10 Cls

            20 Input "Δώσε την 1η πλευρά : ", Α1

            30 Input "Δώσε την 2η πλευρά : ", Α2

            40 Input "Δώσε την 3η πλευρά : ", Α3

            50 If (Α1=A2) AND (A2=A3) then

print "Το τρίγωνο είναι ισόπλευρο" else

print "Το τρίγωνο δεν είναι ισόπλευρο"

            60 End

Για να είναι αληθής η εντολή 50, που περιέχει τον τελεστή AND, πρέπει να είναι αληθείς και οι δύο προτάσεις που αυτή συνδέει.

Παράδειγμα :

Να γίνει πρόγραμμα σε γλώσσα Basic που να διαβάζει τις τρεις πλευρές Α1, Α2 και Α3 ενός τριγώνου και να βγάζει το μήνυμα αν το τρίγωνο είναι ισοσκελές ή όχι.

            5 Rem Ισοσκελές τρίγωνο - Λογικός τελεστής OR

            10 Cls

            20 Input "Δώσε την 1η πλευρά : ", Α1

            30 Input "Δώσε την 2η πλευρά : ", Α2

            40 Input "Δώσε την 3η πλευρά : ", Α3

            50 If (Α1=A2) OR (A2=A3) OR (A1=A3) then

                        print "Το τρίγωνο είναι ισοσκελές" else

                                    print "Το τρίγωνο δεν είναι ισοσκελές"

            60 End

Για να είναι αληθής η εντολή 50, που περιέχει τον τελεστή OR, πρέπει να είναι αληθείς τουλάχιστον μία από τις τρεις ισότητες που αυτή περιέχει.

Παράδειγμα :

Να γίνει πρόγραμμα σε γλώσσα Basic που να διαβάζει δύο αριθμούς Α και Β και να βγάζει το μήνυμα αν αυτοί οι αριθμοί είναι ίσοι με χρήση του τελεστή ΝΟΤ.

            5 Rem Ισότητα αριθμών - Λογικός τελεστής ΝΟΤ

            10 Cls

            20 Input "Δώσε τον 1ο αριθμό : ",Α

            30 Input "Δώσε τον 2ο αριθμό : ",Β

            40 If  ΝΟΤ (Α=Β) then print "Οι αριθμοί δεν είναι ίσοι" else

                                    print "Οι αριθμοί είναι ίσοι"

            50 End

Ο τελεστής ΝΟΤ ελέγχει το αντίθετο της πρότασης (Α=Β), δηλ. η εντολή 40 είναι αληθής όταν το Α είναι διάφορο του Β.

Παράδειγμα :

Να γίνει πρόγραμμα σε γλώσσα Basic που να διαβάζει τρεις αριθμούς Α, Β και C και να βρίσκει ποιος είναι ο μεγαλύτερος.

            5 Rem Εύρεση μεγαλύτερου από τρεις αριθμούς

            10 Cls

            20 Input "Δώσε τον αριθμό Α : ", A

            30 Input "Δώσε τον αριθμό B : ", B

            40 Input "Δώσε τον αριθμό C : ", C

            50 If A>B AND A>C then print "Μεγαλύτερος είναι ο Α"

            60 If B>A AND B>C then print "Μεγαλύτερος είναι ο Β"

            70 If C>A AND C>B then print "Μεγαλύτερος είναι ο C"

            80 End

 

Οι Πίνακες (Arrays)

Οι πίνακες είναι ένα είδος μεταβλητών και πιο συγκεκριμένα είναι μεταβλητές με δείκτη. Χρησιμοποιούνται όταν θέλουμε να καταχωρήσουμε πολλές τιμές του ιδίου τύπου δεδομένων, όπως για παράδειγμα ονόματα ή βαθμούς μαθητών κ.ά. Οι τιμές που υπάρχουν σ’ έναν πίνακα προσδιορίζονται από το όνομα του πίνακα και από τη θέση τους μέσα στον πίνακα.

Οι πίνακες δηλώνονται με την εντολή Dim.

Π.χ. η εντολή 10 Dim BATHMOI(20), ορίζει έναν πίνακα 20 θέσεων που θα περιέχει βαθμούς και η εντολή 10 Dim NAME$(30), ορίζει έναν πίνακα 30 θέσεων που θα περιέχει ονόματα (αλφαριθμητικά). Μπορούμε να έχουμε πρόσβαση στα στοιχεία ενός πίνακα γράφοντας το όνομα του πίνακα και μέσα σε παρένθεση τη θέση του πίνακα. Η θέση του πίνακα μπορεί να είναι κάποια σταθερά ή και μεταβλητή, οι τιμές όμως της θέσης πρέπει να έχουν τιμές από 1 έως το μέγεθος του πίνακα.

Π.χ., με την εντολή 40 BATHMOI(3)=15, δίνουμε την τιμή 15 στο 3ο στοιχείο του πίνακα και με την εντολή 50 NAME$(I)="Αντωνιάδης", δίνουμε το όνομα αυτό στο στοιχείο του πίνακα που είναι στη θέση Ι, όπου το Ι βέβαια πρέπει να έχει πάρει κάποια τιμή νωρίτερα.

Οι πίνακες έχουν το μεγάλο πλεονέκτημα ότι αποθηκεύουν στη μνήμη RAM κάποιες τιμές, τις οποίες μπορούμε μετά να επεξεργαστούμε όπως θέλουμε. Η χρησιμότητα των πινάκων θα φανεί καλύτερα με παραδείγματα.

Παράδειγμα :

            5 Rem Ορισμός πίνακα αλφαριθμητικών

            10 Dim Α$(10)

            20 Cls

            30 I=1

            40 If I>10 Then 80

            50 Input "Δώσε όνομα : ", A$(I)

            60 I=I+1

            70 Goto 40

            80 End

Στο παραπάνω πρόγραμμα καταχωρούμε 10 ονόματα στον πίνακα A$(10). Μπορούμε μετά να επεξεργαστούμε όποια από τις 10 αυτές τιμές θέλουμε.

Παράδειγμα :

            5 Rem Ορισμός πίνακα αριθμητικών τιμών

            10 Dim Β(20)

            20 Cls

            30 I=1

            40 SUM=0

            50 If I>20 Then 100

            60 Input "Δώσε τιμή : ", Β(I)

            70 SUM=SUM+B(Ι)

            80 I=I+1

            90 Goto 50

            100 Print "Ο μέσος όρος των τιμών είναι : "; SUM/20

            110 End

Στο παραπάνω πρόγραμμα καταχωρούμε 20 βαθμούς στον πίνακα Β(20). Μπορούμε μετά να επεξεργαστούμε όποια από τις 20 αυτές τιμές θέλουμε. Εδώ τις αθροίσαμε στον αθροιστή SUM και υπολογίσαμε τον μέσο όρο τους.

 

Εντολές Επανάληψης

Η Εντολή For ... Next

Είδαμε στα προηγούμενα παραδείγματα το πώς κάναμε 10 ή 20 επαναλήψεις για να καταχωρήσουμε 10 και 20 τιμές αντίστοιχα σε κάποιους πίνακες. Η Basic διαθέτει μια εντολή που είναι κατάλληλη γι’ αυτή τη δουλειά.

Η εντολή αυτή είναι η For ... Next και η σύνταξή της είναι η εξής :

            For I=<αρχική τιμή> Το <τελική τιμή> STEP <βήμα>

                        <εντολές>

            Next I

Δηλαδή, η μεταβλητή Ι ξεκινάει με μια <αρχική τιμή>, εκτελούνται οι <εντολές> μέχρι την εντολή Next I, μετά η μεταβλητή αυξάνει όσο είναι το <βήμα>, το πρόγραμμα ελέγχει αν έχει ξεπεράσει την <τελική τιμή> και αν όχι, εκτελεί πάλι τις <εντολές>, διαφορετικά συνεχίζει μετά την εντολή Next I. Αν δεν χρησιμοποιήσουμε <βήμα>, αυτό θεωρείται ότι είναι ίσο με 1.

Παράδειγμα :

Να γίνει πρόγραμμα στη γλώσσα Basic που να τυπώνει τους αριθμούς από το 1 μέχρι το 20.

            5 Rem Οι αριθμοί από το 1 - 20 με τη βοήθεια της εντολής For ... Next

            10 Cls

20 For I=1 To 20

            30 Print I

            40 Next I

Παράδειγμα :

            5 Rem Υπολογισμός μέσου όρου βαθμών - Η εντολή For ... Next

            10 Dim Β(20)

            20 Cls

            30 SUM=0

            40 For I=1 To 20

            50 Input "Δώσε βαθμό : ", Β(I)

            60 SUM=SUM+B(Ι)

            70 Next I

            80 Print "Ο μέσος όρος των βαθμών είναι : "; SUM/20

            90 End

Στο παραπάνω παράδειγμα, οι εντολές 40, 50, 60 και 70 εκτελούνται 20 φορές και μέσα σε κάθε επανάληψη εισάγουμε μια τιμή στον πίνακα Β(Ι) στη θέση Ι, όπου το Ι ξεκινάει με την τιμή 1, αυξάνεται κατά ένα σε κάθε επανάληψη και βγαίνουμε από τον βρόχο όταν το Ι γίνει ίσο με 21.

 

Η Εντολή While ... Wend

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

Η εντολή που το κάνει αυτό είναι η While ... Wend και η σύνταξή της είναι η εξής :

            While <συνθήκη>

                        <εντολές>

Wend

Ελέγχουμε αν ισχύει η <συνθήκη> και αν ναι, εκτελούμε τις <εντο-λές> μέχρι την εντολή Wend^ αν όχι η ροή του προγράμματος συνεχίζεται μετά την εντολή Wend. Η <συνθήκη> μπορεί να περιέχει και μια αριθμητική μεταβλητή και τότε θεωρείται αληθής όταν η μεταβλητή αυτή είναι διάφορη του μηδενός.

Παράδειγμα :

            5 Rem Υπολογισμός μέσου όρου βαθμών - Η εντολή While ... Wend

            10 Cls

            20 B=1

            30 SUM=0

            40 While B<>0

            50 Input "Δώσε βαθμό : ", Β

            60 SUM=SUM+B

            70 Wend

            80 Print "Ο μέσος όρος των βαθμών είναι : "; SUM/20

            90 End

Στο παραπάνω πρόγραμμα, οι εντολές 40, 50, 60 και 70 θα εκτελούνται συνέχεια όσο το Β είναι διάφορο του 0. Προσέξτε ότι στην εντολή 20 δώσαμε επίτηδες την αρχική τιμή 1 στο Β για να μπορέσουμε να μπούμε στον βρόχο.

Όταν δώσουμε την τιμή 0 στο Β, τότε η συνθήκη του βρόχου While θα πάψει να είναι αληθής και το πρόγραμμα θα συνεχίσει μετά την εντολή Wend. Η εντολή 40 θα μπορούσε να γραφεί και σαν : 40 While B ή και σαν 40 While Not B=0 και θα έκανε την ίδια ακριβώς δουλειά.

Παράδειγμα :

Να γίνει πρόγραμμα σε Basic που να διαβάζει συνέχεια ονόματα και βαθμούς μαθητών και να σταματάει όταν διαβαστεί κάποιος βαθμός ίσος με -1. Το πρόγραμμα θα μετράει από πόσους μαθητές διαβάστηκαν στοιχεία.

            5 Rem Καταμέτρηση μαθητών - Η εντολή While ... Wend

            10 Cls

            20 B=1

            30 I=0

            40 While B<>-1

            50 Input "Δώσε όνομα : ", NAME$

            60 Input "Δώσε βαθμό : ", Β

            70 If B<>-1 Then I=I+1

            80 Wend

            90 Print "Διαβάστηκαν στοιχεία από ";Ι; "μαθητές"

            100 End

 

Υπορουτίνες

Όταν μέσα σ’ ένα πρόγραμμα, μερικές εντολές που κάνουν κάποια συγκεκριμένη δουλειά, επαναλαμβάνονται αρκετές φορές, μπορούμε να τις συγκεντρώσουμε κάπου και να αποτελέσουν ένα ανεξάρτητο υποπρόγραμμα ή υπορουτίνα ή απλά ρουτίνα. Όπως όλες οι γλώσσες προγραμματισμού, έτσι και η Basic έχει δύο ειδών υπορουτίνες : τις διαδικασίες και τις συναρτήσεις.

 

Η Εντολή Gosub

Η εντολή Gosub μοιάζει με την απλή εντολή Goto, καθώς στέλνει τη ροή του προγράμματος σ’ ένα άλλο σημείο, αλλά μόλις το πρόγραμμα συναντήσει την εντολή Return, τότε επιστρέφει αμέσως μετά την εντολή Gosub στο σημείο απ’ όπου κλήθηκε. Η εντολή Gosub ορίζει δηλ. αυτό που σ’ άλλες γλώσσες προγραμματισμού ονομάζουμε διαδικασία (procedure).

Παράδειγμα :

Να γίνει πρόγραμμα σε γλώσσα Basic που να τυπώνει τρεις φορές στην οθόνη τον τίτλο : Παιδαγωγική Ακαδημία Φλώρινας.

            5 Rem Εκμάθηση της εντολής Gosub

            10 Cls

            20 For I=1 To 3

            30 Gosub 1000

            40 Next I

            50 End

            990 Rem Αρχίζει μια διαδικασία Gosub

            1000 Print "Παιδαγωγική Ακαδημία Φλώρινας "

            1010 Return

 

Ορισμός Συνάρτησης

Η συνάρτηση (function) είναι μια υπορουτίνα που δέχεται κάποιες τιμές (ορίσματα) και επιστρέφει μία μόνο τιμή. Για να ορίσουμε μια συνάρτηση στη Basic, χρησιμοποιούμε την εντολή DEF FN και δίπλα στο FN γράφουμε το όνομα της συνάρτησης. Τη συνάρτηση την καλούμε μέσα στο πρόγραμμα με τ’ όνομά της.

Για παράδειγμα, η συνάρτηση

            10 DEF  FNA(A, B, C) = (A+B+C)/3

υπολογίζει τον μέσο όρο τριών αριθμών που της δίνονται σαν ορίσματα.

Μέσα στο πρόγραμμα μπορεί να κληθεί ως εξής :

            40 MO=FN(12, 34, 56)

            ή

            60 MO=FN(A1, A2 ,A3)

όπου τα Α1, Α2 και Α3 είναι αριθμητικές μεταβλητές που έχουν ήδη πάρει τιμές.

Σ’ ένα άλλο παράδειγμα, η συνάρτηση :

            10 DEF  FNSQ (X, Y) = X*X + Y*Y

υπολογίζει το άθροισμα των τετραγώνων δύο ακεραίων και μπορεί να κληθεί κι’ αυτή με δύο τρόπους :

            40 A=SQ(3, 4)

            ή

            60 A=SQ(A1, A2)

 

Συναρτήσεις Αλφαριθμητικών

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

Η συνάρτηση Len(A$) υπολογίζει το μήκος ενός αλφαριθμητικού, η συνάρτηση Left$(A$, 5) εξάγει τους 5 αριστερούς χαρακτήρες ενός αλφαριθμητικού, η συνάρτηση Right$(A$, 4) εξάγει τους 4 δεξιούς χαρακτήρες ενός αλφαριθμητικού και η συνάρτηση Mid$(A$, 2, 3) εξάγει 3 χαρακτήρες από ένα αλφαριθμητικό, ξεκινώντας από τη θέση 2.

            Παράδειγμα :

            5 Rem Χρήσιμες συναρτήσεις αλφαριθμητικών

            10 Cls

            20 A$="Βούλα Πατουλίδου"

            30 Print Len(A$)

            40 Rem Τυπώνει 16

            50 Print Left(A$, 5)

            60 Rem Τυπώνει "Βούλα"

            70 Print Right(A$, 10)

            80 Rem Τυπώνει "Πατουλίδου"

            90 Print Mid(A$, 3, 2)

            100 Rem Τυπώνει "ύλ"

 

Τα Αρχεία στη Basic

Τα αρχεία (files) στη Basic είναι δύο ειδών : σειριακά και άμεσης προσπέλασης. Τα σειριακά δεν έχουν σταθερό μήκος εγγραφής (record), ενώ τα άμεσης προσπέλασης αποτελούνται από εγγραφές με συγκεκριμένο μήκος και κάθε εγγραφή αποτελείται από συγκεκριμένα πεδία (fields).

 

Εντολές των Σειριακών Αρχείων

Ένα σειριακό αρχείο μπορούμε να το ανοίξουμε για να γράψουμε στοιχεία σ’ αυτό ή για να διαβάσουμε στοιχεία απ’ αυτό. Δεν μπορούμε, δηλ. να κάνουμε και τις δύο αυτές ενέργειες μαζί.

Για να δημιουργήσουμε ένα σειριακό αρχείο, δίνουμε την εξής εντολή:

            Open  "Data.dat"  for Output  as #1

Με την παραπάνω εντολή θα δημιουργηθεί στον δίσκο ένα αρχείο με όνομα "Data.dat", στο οποίο θα μπορούμε να καταχωρούμε στοιχεία. Αν το αρχείο αυτό υπάρχει ήδη, τότε θα διαγραφεί και θα δημιουργηθεί ένα καινούργιο κενό αρχείο με το ίδιο όνομα. Το σύμβολο # χαρακτηρίζει τον αριθμό του αρχείου, με τον οποίο θα αναφερόμαστε στο αρχείο από δω και πέρα μέσα στο πρόγραμμα.

Για να μπορούμε να προσθέσουμε στοιχεία σ’ ένα σειριακό αρχείο, δίνουμε την εξής εντολή :

            Open "Data.dat"  for Append  as #1

Για να καταχωρίσουμε στοιχεία σ’ ένα σειριακό αρχείο, δίνουμε την εξής εντολή :

            Write#1, A, B$, ...

όπου τα Α, Β$ κοκ είναι ονόματα μεταβλητών.

Με κάθε εντολή καταχώρισης στοιχείων σ’ ένα σειριακό αρχείο, δημιουργείται μια εγγραφή του αρχείου, ο τελευταίος χαρακτήρας της οποίας είναι ο <enter>. Οι εγγραφές ενός σειριακού αρχείου έχουν διαφορετικό πλήθος χαρακτήρων.

Για την καταχώριση στοιχείων σε σειριακό αρχείο, υπάρχει και η εντολή Print :

            Print#1, A;B$;...

Για να κλείσουμε ένα σειριακό αρχείο, δίνουμε την εξής εντολή :

            Close#1

Για να ανοίξουμε ένα σιεριακό αρχείο για ανάγνωση των στοιχείων του, δίνουμε την εξής εντολή :

            Open  "Data.dat"  for  Input  as #1

Για να διαβάσουμε τα περιεχόμενα ενός σειριακού αρχείου, δίνουμε την εξής εντολή :

            Input#1, Α, Β$,...

όπου τα Α, Β$ κοκ είναι ονόματα μεταβλητών.

Με την εντολή Line Input μπορούμε να διαβάσουμε μια ολόκληρη εγγραφή ενός σειριακού αρχείου :

            Line Input#1, M$

όπου η μεταβλητή Μ$ θα περιέχει όλα τα δεδομένα της εγγραφής.

 

Εντολές των Αρχείων Άμεσης Προσπέλασης

Σ’ ένα αρχείο άμεσης προσπέλασης μπορούμε να γράψουμε και να διαβάσουμε στοιχεία ταυτόχρονα. Τα αρχεία άμεσης προσπέλασης αποτελούνται από εγγραφές καθορισμένου μήκους και η κάθε εγγραφή αποτελείται από πεδία καθορισμένου μεγέθους.

Όλα τα πεδία αποθηκεύονται σαν τύπου δεδομένων χαρακτήρα (αλ­φαριθ­μη­τικά). Υπάρχουν ειδικές εντολές για να αποθηκευτούν και για να διαβαστούν τα πεδία που περιέχουν αριθμητικά δεδομένα.

Η εντολή με την οποία δημιουργούμε ή ανοίγουμε ένα τέτοιο αρχείο είναι :

            Open  "F"  as #1  Len=60

με την Len=60, δηλώνουμε το μήκος της εγγραφής του αρχείου.

Η δομή της εγγραφής ενός αρχείου άμεσης προσπέλασης, ορίζεται ως εξής :

            Field#1, 20 as EPONYMO$, 10 as ONOMA$, 20 as ADDRESS$, 10 as POSO$

Για να καταχωρίσουμε τιμές στα πεδία ενός τέτoιου αρχείου, υπάρχουν οι εξής εντολές :

            Lset EPONYMO$=SURNAME$

            Rset ONOMA$=FIRSTNAME$

            Lset POSO$=MKI$(POSOTHTA)

            Lset POSO$=MKD$(POSOTHTA)

            Lset POSO$=MKS$(POSOTHTA)

Η εντολή Lset στοιχίζει τα στοιχεία στο αριστερό άκρο του πεδίου και η εντολή Rset στοιχίζει τα στοιχεία στο δεξί άκρο του πεδίου. Η εντολή MKI$ χρησιμοποιείται για να καταχωρούνται οι ακέραιες τιμές, η MKD$ για να καταχωρούνται οι πραγματικές τιμές και η MKS$ για να καταχωρούνται οι πραγματικοί διπλής ακριβείας.

Για να μεταφερθούν τα περιεχόμενα του πεδίου σε μια εγγραφή του αρχείου, πρέπει να δώσουμε την εξής εντολή :

            Put#1, 10

έτσι θα γραφούν στην 10η εγγραφή τα περιεχόμενα των πεδίων.

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

            Get#1, 10

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

            SURNAME$=EPONYMO$

            POSOTHTA=CVI(POSO$)

            POSOTHTA=CVD(POSO$)

            POSOTHTA=CVS(POSO$)

Οι εντολές CVI, CVD και CVS είναι οι αντίστοιχες των MKI$, MKD$ και MKS$ για να διαβάσουμε αριθμητικές τιμές από ένα αρχείο.     

 

back.gif (9867 bytes)

Επιστροφή