Xbasic: Παραδείγματα
Description: This is issue 28 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #28
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Προηγούμενο Περιεχόμενα ### 3. Παραδείγματα Για να κατανοήσουμε καλύτερα την χρήση των σχεσιακών τελεστών θα δούμε δύο παραδείγματα με την εντολή IF. Στο ένα παράδειγμα θα χρησιμοποιήσουμε την εντολή IF χωρίς το ELSE και στο επόμενο θα την χρησιμοποιήσoυμε μαζί με το ELSE. ### 3.1 Παράδειγμα 1. Εντολή IF χωρίς ELSE Ας δούμε όμως μερικά παραδείγματα.
    1. '
    2. ' ####################
    3. ' #####  PROLOG  #####
    4. ' ####################
    5. '
    6. PROGRAM      "progname"  ' 1-8 char program/file name without .x or any .extent
    7. VERSION      "0.0000"    ' version number - increment before saving altered program
    8. '
    9. ' You can stop the PDE from inserting the following PROLOG comment lines
    10.' by removing them from the prolog.xxx file in your \xb\xxx directory.
    11.'
    12.' Programs contain:  1: PROLOG          - no executable code - see below
    13.'                    2: Entry function  - start execution at 1st declared func
    14.' * = optional       3: Other functions - everything else - all other functions
    15.'
    16.' The PROLOG contains (in this order):
    17.' * 1. Program name statement             PROGRAM "progname"
    18.' * 2. Version number statement           VERSION "0.0000"
    19.' * 3. Import library statements          IMPORT  "libName"
    20.' * 4. Composite type definitions         TYPE typename ... END TYPE
    21.'   5. Internal function declarations     DECLARE/INTERNAL FUNCTION Func (args)
    22.' * 6. External function declarations     EXTERNAL FUNCTION FuncName (args)
    23.' * 7. Shared constant definitions        $$ConstantName = literal or constant
    24.' * 8. Shared variable declarations       SHARED  variable
    25.'
    26.' ******  Comment libraries in/out as needed  *****
    27.'
    28.'    IMPORT  "xma"   ' Math library     : SIN/ASIN/SINH/ASINH/LOG/EXP/SQRT...
    29.'    IMPORT  "xcm"   ' Complex library  : complex number library  (trig, etc)
    30.'    IMPORT  "xst"   ' Standard library : required by most programs
    31.'    IMPORT  "xgr"   ' GraphicsDesigner : required by GuiDesigner programs
    32.'    IMPORT  "xui"   ' GuiDesigner      : required by GuiDesigner programs
    33.'
    34. DECLARE FUNCTION  Entry ()
    35.'
    36.'
    37.' ######################
    38.' #####  Entry ()  #####
    39.' ######################
    40.'
    41.' Programs contain:
    42.'   1. A PROLOG with type/function/constant declarations.
    43.'   2. This Entry() function where execution begins.
    44.'   3. Zero or more additional functions.
    45.'
    46.FUNCTION  Entry ()
    47.STRING in1,in2
    48.SSHORT num1,num2
    49.in1=INLINE$("Number 1... ")
    50.in2=INLINE$("Number 2... ")
    51.num1=SSHORT(in1)
    52.num2=SSHORT(in2)
    53.IF num1=num2 THEN
    54.     PRINT num1; " = "; num2
    55.END IF
    56.IF num1>num2 THEN
    57.     PRINT num1; " > "; num2
    58.END IF
    59.IF num1<num2 THEN
    60.     PRINT num1; " < "; num2
    61.END IF
    62.END FUNCTION
    63.END PROGRAM
Ανάλυση του παραδείγματος. Γραμμές 1..45 PROLOG Σε αυτό το τμήμα ορίζονται το όνομα του προγράμματος, οι βιβλιοθήκες και οι συναρτήσεις. Γραμμές 46..62 Συνάρτηση ENTRY Εδώ θα σταθούμε λίγο πιο αναλυτικά για να εξηγήσουμε την λειτουργία του προγράμματος. Γραμμές 47,48 Εδώ ορίζονται οι τοπικές μεταβλητές που θα χρησιμοποιήσουμε στην συνάρτηση. Γραμμές 49..52 Εδώ χρησιμοποιούμε την γνωστή πια συνάρτηση INLINE$ για να πάρουμε το αποτέλεσμα της πληκτρολόγησης των δύο αριθμών από τον χρήστη και ακολούθως με τις εντολές SSHORT μετατρέπουμε τις αλφαριθμητικές μεταβλητές σε αριθμητικές για να μπορούμε να κάνουμε σωστά τις συγκρίσεις. Γραμμές 53..55 Γίνεται ο έλεγχος για την ισότητα των δύο αριθμών. Αν ισχύει η ισότητα τότε στην κονσόλα της XBASIC εμφανίζεται το μήνυμα αριθμός1 = αριθμός2. Σε περίπτωση που οι αριθμοί δεν είναι ίσοι τότε η εκτέλεση του προγράμματος θα προχωρήσει παρακάτω χωρίς να γίνει εκτέλεση της εντολής στην γραμμή 54. Γραμμές 56..58 Γίνεται ο έλεγχος για την περίπτωση που ο πρώτος αριθμός είναι μεγαλύτερος. Αν αυτό ισχύει,τότε στην κονσόλα της XBASIC εμφανίζεται το μήνυμα αριθμός1 > αριθμός2. Αν δεν ισχύει αυτό τότε η εκτέλεση του προγράμματος θα συνεχιστεί παρακάτω χωρίς να εκτελεστεί η γραμμή 57. Γραμμές 59..61 Γίνεται ο έλεγχος για την περίπτωση που ο πρώτος αριθμός είναι μικρότερος. Αν αυτό ισχύει τότε στην κονσόλα της XBASIC εμφανίζεται το μήνυμα αριθμός1 < αριθμός2. Τότε δεν θα εκτελεστεί η γραμμή 60. Αυτός είναι ο απλός τρόπος να κάνουμε συγκρίσεις και λαμβάνει υπ' όψιν του όλες τις περιπτώσεις. Έχει όμως ένα μειονέκτημα. Αν οι δύο αριθμοί είναι ίσοι τότε θα τυπωθεί αριθμός1 = αριθμός2 όμως στην συνέχεια θα γίνουν οι επόμενες συγκρίσεις που δεν χρειάζονται. Έτσι για να βελτιστοποιήσουμε την ταχύτητα εκτέλεσης χρησιμοποιούμε την εντολή IF μαζί με την ELSE. Παρακάτω θα δούμε πως διαφοροποιείται το πρόγραμμα με την χρήση της ELSE. ### 3.2 Παράδειγμα 2 Εντολή IF μαζί με ELSE.
    1.'
    2.' ####################
    3.' #####  PROLOG  #####
    4.' ####################
    .
    .
    .
    .
    .
    37.' ######################
    38.' #####  Entry ()  #####
    39.' ######################
    40.'
    41.' Programs contain:
    42.'   1. A PROLOG with type/function/constant declarations.
    43.'   2. This Entry() function where execution begins.
    44.'   3. Zero or more additional functions.
    45.'
    46.FUNCTION  Entry ()
    47.STRING in1,in2
    48.SSHORT num1,num2
    49.in1=INLINE$("Number 1... ")
    50.in2=INLINE$("Number 2... ")
    51.num1=SSHORT(in1)
    52.num2=SSHORT(in2)
    53.IF num1=num2 THEN
    54.     PRINT num1;" = ";num2
    55.ELSE
    56.     IF num1>num2 THEN
    57.             PRINT num1;" > ";num2
    58.     ELSE
    59.             PRINT num1;" < ";num2
    60.     END IF
    61.END IF
    62.END FUNCTION
    63.END PROGRAM
Ανάλυση του παραδείγματος. Γραμμές 1..45 PROLOG , Γραμμές 46..62 Συνάρτηση ENTRY, Γραμμές 47,48 και οι γραμμές 49..52 Έχουν την ίδια ακριβώς σημασία με το προηγούμενο παράδειγμα και έτσι δεν θα ασχοληθούμε με αυτές εδώ. Στις γραμμές 53..61 φαίνεται η διαφορά στις εντολές του παραδείγματος με το προηγούμενο, γι' αυτό θα σταθούμε λίγο πιο αναλυτικά. Γραμμές 53..55 Στην περίπτωση που οι δύο αριθμοί είναι ίσοι τότε θα εκτελεστεί η γραμμή 54. Η παρουσία του ELSE στην γραμμή 55 που σημαίνει ότι αν δεν ισχύει η ισότητα τότε θα εκτελεστεί ο κώδικας που βρίσκεται ανάμεσα στις γραμμές 56..61 αναγκάζει το πρόγραμμα να συνεχίσει την εκτέλεση στην γραμμή 62. Με αυτόν τον τρόπο αποφεύγουμε τις υπόλοιπες συγκρίσεις. Γραμμές 56..58 Αν ο αριθμός1 είναι μεγαλύτερος, τότε θα εκτελεστεί η γραμμή 57. Η παρουσία του ELSE στην γραμμή 58 που σημαίνει ότι αν ο αριθμός1 δεν είναι μεγαλύτερος τότε θα εκτελεστεί η εντολή στην γραμμή 59 αναγκάζει το πρόγραμμα να συνεχίσει την εκτέλεση .στην γραμμή 61.Έτσι ανάλογα με το αν ο αριθμός1 είναι μεγαλύτερος ή όχι εκτελείται η γραμμή 57 ή η γραμμη 61 αντίστοιχα. Για να ανακεφαλαιώσουμε τα παραπάνω επιγραμματικά έχουμε: Πρώτο παράδειγμα
    IF num1=num2 THEN
     .
    END IF
    IF num1>num2 THEN
     .
    END IF
    IF num1<num2 THEN
     .
    END IF
Ανεξάρτητα από τις τιμές των μεταβλητών θα εκτελεστούν και οι τρείς συγκρίσεις. Δεύτερο παράδειγμα
    IF num1=num2 THEN
     .
    ELSE
        IF num1>num2 THEN
          .
        ELSE
          ..
        END IF
    END IF
Εδώ τώρα, ανάλογα με τις τιμές των μεταβλητών θα εκτελεστούν. Αν οι δύο αριθμοί είναι ίσοι γίνεται η πρώτη σύγκριση και παραλείπονται τα υπόλοιπα Αν ο πρώτος αριθμός είναι μεγαλύτερος τότε γίνονται και οι δύο συγκρίσεις num1=num2 και num1>num2. Αν ο πρώτος αριθμός είναι μικρότερος τότε πάλι γίνονται οι δύο συγκρίσεις num1=num2 και num1>num2. Όπως βλέπουμε στο πρώτο παράδειγμα γίνονται πάντα τρεις συγκρίσεις; ενώ στο δεύτερο γίνονται μία ή και δύο. Είναι φανερό πια γιατί προτιμάμε να χρησιμοποιούμε το ELSE από το να κάνουμε διαδοχικές συγκρίσεις. Γράφουμε μικρότερο και ταχύτερο κώδικα. ### 3.3 Επόμενο τεύχος Στο επόμενο, θα αναλύσουμε τις συναρτήσεις στην XBasic. Θα πούμε ποιός είναι ο σκοπός τους, πως δημιουργούνται, και πως τις χρησιμοποιούμε. Θα αναλύσουμε επίσης τι είναι ο δομημένος προγραμματισμός και τα πλεονεκτήματα του. Προηγούμενο Περιεχόμενα