Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Προηγούμενο  Περιεχόμενα

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 μπορούμε να έχουμε επαναλαμβανόμενη εκτέλεση κώδικα όσες φορές επιθυμούμε και με οποιοδήποτε βήμα.

Επόμενο  Προηγούμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!