Xbasic: Παράδειγμα συνάρτησης.
Description: This is issue 29 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

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

    x1 = 10
    x2 = cube(x1)
Επόμενο Προηγούμενο Περιεχόμενα