Xbasic: Η εντολή FOR ... NEXT
Description: This is issue 30 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #30
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Προηγούμενο Περιεχόμενα ### 2. Η εντολή FOR ... NEXT Αυτή την εντολή την χρησιμοποιούμε για να έχουμε την εκτέλεση μιας ή μιας ομάδας εντολών για προκαθορισμένο αριθμό επαναλήψεων. Η μορφή της είναι:
    FOR [μεταβλητή] = [αρχική τιμή] ΤΟ [τελική τιμή] STEP [βήμα]
    ..
    [εντολές που θα εκτελεστούν επαναλαμβανόμενα]
    ..
    NEXT [μεταβλητή]
### 2.1 Παράδειγμα Θα δούμε ένα παράδειγμα χρήσης της FOR ... NEXT
    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. '
    37. '
    38. ' ######################
    39. ' #####  Entry ()  #####
    40. ' ######################
    41. '
    42. ' Programs contain:
    43. '   1. A PROLOG with type/function/constant declarations.
    44. '   2. This Entry() function where execution begins.
    45. '   3. Zero or more additional functions.
    46. '
    47. FUNCTION  Entry ()
    48.  SSHORT i
    49.  FOR i=1 TO 20
    50.     PRINT i
    51.  NEXT i
    52. END FUNCTION
    53. END PROGRAM
#### Γραμμές 1..35 Ορισμοί Οι γνωστές πια σε όλους γραμμές ορισμού του προγράμματος των βιλιοθηκών και των συναρτήσεων του προράμματος. #### Γραμμές 47..52 Η συνάρτηση ENTRY() Εδώ έχουμε την συνάρτηση `ENTRY()` όπου και θα αναλύσουμε για να δούμε τον τρόπο λειτουργίας της `FOR ... NEXT` Η εκτέλεση του προγράμματος ξεκινά από την γραμμή 49 όπου υπάρχει και η εντολή `FOR`. Έχοντας ορίσει ακριβώς παραπάνω το είδος της μεταβλητής `i` μπορούμε να την χρησιμοποιήσουμε. Αναφέρω ξανά τα παραπάνω προασμοσμένα στο παράδειγμά μας.
    FOR [μεταβλητή] = [αρχική τιμή] ΤΟ [τελική τιμή] STEP [βήμα]
    ..
    [εντολές που θα εκτελεστούν επαναλαμβανόμενα]
    ..
    NEXT [μεταβλητή]
Όπου έχουμε :
    [μεταβλητή] = i
    [αρχική τιμή] = 1
    [τελική τιμή] =20
Το `STEP` έχει παραλειφθεί γιατί θεωρείται ότι η απουσία της STEP δηλώνει αύξηση κατά 1
    [εντολές που θα εκτελεστούν επαναλαμβανόμενα]= PRINT i
Θα ξεκινήσουμε παρακολουθώντας βήμα-βήμα την εκτέλεση του προγράμματος για να δούμε τι γίνεται. Η εκτέλεση ξεκινά από την γραμμή 49 όπου η μεταβλητή `i` παίρνει την τιμή `1` και γίνεται έλεγχος άν αυτή η τιμή είναι μεγαλύτερη από την τελική τιμή της. Εφ' όσον η τιμή της μεταβλητής είναι μικρότερη από την τελική τιμή, τότε συνεχίζεται η εκτέλεση της γραμμής 50. Στην γραμμή 50 γίνεται εμφάνιση της τιμής της `i` στο παράθυρο κοσόλας της XBASIC. Στην γραμμή 51 γίνεται αύξηση της τιμής της `i` κατά το βήμα που έχει ορισθεί (1) και εκτελείται ξανά η εντολή 49. Τώρα πάλι γίνεται έλεγχος άν η τιμή της `i` που είναι πια 2 είναι μικρότερη από την μέγιστη (20). Είναι, οπότε έχουμε πάλι την εκτέλεση της γραμμής 50 και εμφανίζεται πάλι στο παράθυρο κονσόλας η τιμή της i. Συνεχίζουμε ξανά με την ΝΕΧΤ όπου η τιμή της i γίνεται 3. Πάλι εκτέλεση της 49, έλεγχος και επανάληψη όλων των παραπάνω μέχρι η τιμή της `i` να γίνει 20. Μόλις η τιμή γίνει 20 τότε ο έλεγχος στην γραμμή 49 δίνει ότι έχουμε φτάσει στην τελική τιμή της μεταβλητής. Τότε παταλείπονται όλες οι εντολές μέχρι την εντολή `NEXT` και η εκτέλεση του προγράμματος συνεχίζεται μετά από αυτήν. Στο παράδειγμά μας, δεν έχουμε τίποτε άλλο έτσι η εκτέλεση του προγράμματος τελειώνει. Με την βοήθεια ορισμού του βήματος μπορούμε να έχουμε διάφορες περιπτώσεις που η μεταβλητή `i` δεν αυξάνει κατά 1 αλλά με διαφορετικό βήμα. Π.χ.
    FOR i= 1 to 16 STEP 3
Σε αυτή την περίπτωση το βήμα για κάθε ανακύκλωση αυξάνει κατά 3 και οι διαδοχικές τιμές που μπορεί λαμβάνει η `i` είναι 1,4,7,10,13,16. Επίσης μπορούμε να έχουμε αντί για αύξηση της τιμής της `i` μείωση με την παρακάτω σύνταξη.
    FOR i = 16 to 1 STEP -1
Σε αυτή την περίπτωση η διαδοχικές τιμές της `i` θα είναι 16,15,14,...3,2,1. Συνοψίζοντας βλέπουμε ότι με την εντολή `FOR ... NEXT` μπορούμε να έχουμε επαναλαμβανόμενη εκτέλεση κώδικα όσες φορές επιθυμούμε και με οποιοδήποτε βήμα. Επόμενο Προηγούμενο Περιεχόμενα