+++ title = 'Xbasic' date = '2000-11-01T00:00:00Z' description = '' author = 'Κώστας Τσακάλογλου(mailto:tsakf@hellug.gr)' issue = ['Magaz 28'] issue_weight = 2 +++ ---------------------------------------------------------------------------------------------------------------------------------------------------------------- *Μία γλώσσα προγραμματισμού Basic που έχει αρκετά στοιχεία C. Μέρος 4ο* ---------------------------------------------------------------------------------------------------------------------------------------------------------------- **1. Σχεσιακοί τελεστές** -------------------------------------------------- - [1.1 Παραδείγματα χρήσης σχεσιακών τελεστών](#ss1.1) **2. Η εντολή IF** ------------------------------------------- **3. Παραδείγματα** -------------------------------------------- - [3.1 Παράδειγμα 1. Εντολή IF χωρίς ELSE](#ss3.1) - [3.2 Παράδειγμα 2 Εντολή IF μαζί με ELSE.](#ss3.2) - [3.3 Επόμενο τεύχος](#ss3.3) ### [1. Σχεσιακοί τελεστές]{#s1} Οι σχεσιακοί τελεστές της Xbasic χρησιμοποιούνται για να συγκρίνουν μεταβλητές με σταθερές ή μεταβλητές μεταξύ τους. Π.χ. Είναι η τιμή της μεταβλητής x μεγαλύτερη από 100; Η τιμή της μεταβλητής a είναι ίση με την τιμή της μεταβλητής d; Αυτοί οι τελεστές μας επιστρέφουν τιμές \$\$TRUE ή \$\$FALSE αντίστοιχα αν η σχέση ισχύει ή όχι. Παραθέτω παρακάτω ένα πίνακα με τους σχεσιακούς τελεστές που υπάρχουν στην Xbasic. ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Μεγαλύτερο >, !<= Το x είναι μεγαλύτερο του y x>y x!<=y Μεγαλύτερο ή ίσο >=, !< Το x είναι μεγαλύτερο ή ίσο του y x>=y x! Το x είναι μικρότερο ή ίσο του y x<=y x!>y Μικρότερο <, !>= Το x είναι μικρότερο του y x=y Διάφορο (όχι ίσο) <>, != Το x είναι διάφορο του y x<>y x!=y Ισο =,== Το x είναι ίσο με το y x=y x==y ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [1.1 Παραδείγματα χρήσης σχεσιακών τελεστών]{#ss1.1} - 5 = 1 Είναι το 5 ίσο με το 1; \$\$FALSE - 5 \> 1 Είναι το 5 μεγαλύτερο από το 1 \$\$TRUE - 5 - 1 Είναι το 5 διάφορο του 1 \$\$TRUE ### [2. Η εντολή IF]{#s2} Οι σχεσιακοί τελεστές χρησιμοποιούνται για να γίνονται οι έλεγχοι στις εντολές IF και WHILE που θα μελετήσουμε. Αυτές οι εντολές χρειάζονται για να αποφασίζεται η εκτέλεση διαφορετικών κομματιών κώδικα, ανάλογα με το αν ισχύουν ή όχι οι σχεσιακοί τελεστές που αναφέρονται στην εντολή IF ή WHILE αντίστοιχα. Από τα προηγούμενα παραδείγματα είδαμε ότι η εκτέλεση των προγραμμάτων γίνεται με εκτέλεση των εντολών από πάνω προς τα κάτω. Έτσι, η εντολή IF υπολογίζει το αποτέλεσμα των σχεσιακών τελεστών και εκτελεί το κομμάτι του κώδικα αντιστοιχεί για την κάθε περίπτωση αληθές/ψευδές (\$\$TRUE/\$\$FALSE). Στην Xbasic η εντολή if μπορεί να έχει τις εξής μορφές: - IF (σχεσιακός τελεστής.) ΤΗΕΝ (εντολή 1) Αν ισχύει ο σχεσιακός τελεστής (\$\$TRUE) τότε θα εκτελεστεί η εντολή 1 - IF (σχεσιακός τελεστής) ΤΗΕΝ (εντολή 1) ELSE (εντολή 2) Αν ισχύει ο σχεσιακός τελεστής (\$\$TRUE) τότε θα εκτελεστεί η εντολή 1 αλλιώς αν δεν ισχύει (\$\$FALSE) τότε θα εκτελεστεί η εντολή 2 - IF (σχεσιακός τελεστής) ΤΗΕΝ (εντολή 1 εντολή εντολη) END IF Αν ισχύει ο σχεσιακός τελεστής (\$\$TRUE) τότε θα εκτελεστεί η εντολή 1 και όλες οι υπόλοιπες που ακολουθούν μέχρι το END IF. - IF (σχεσιακός τελεστής) ΤΗΕΝ (εντολή 1 εντολή εντολη) ELSE (εντολή 2 εντολή εντολη) END IF Αν ισχύει ο σχεσιακός τελεστής (\$\$TRUE) τότε θα εκτελεστεί η εντολή 1 και όλες οι υπόλοιπες που ακολουθούν μέχρι το ELSE αλλιώς αν δεν ισχύει ο τελεστής (\$\$FALSE) τότε θα εκτελεστεί η εντολή 2 και όλες οι υπόλοιπες που ακολουθούν μέχρι το END IF. ### [3. Παραδείγματα]{#s3} Για να κατανοήσουμε καλύτερα την χρήση των σχεσιακών τελεστών θα δούμε δύο παραδείγματα με την εντολή IF. Στο ένα παράδειγμα θα χρησιμοποιήσουμε την εντολή IF χωρίς το ELSE και στο επόμενο θα την χρησιμοποιήσoυμε μαζί με το ELSE. ### [3.1 Παράδειγμα 1. Εντολή IF χωρίς ELSE]{#ss3.1} Ας δούμε όμως μερικά παραδείγματα. ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 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 αριθμός2. Αν δεν ισχύει αυτό τότε η εκτέλεση του προγράμματος θα συνεχιστεί παρακάτω χωρίς να εκτελεστεί η γραμμή 57. **Γραμμές 59..61**\ Γίνεται ο έλεγχος για την περίπτωση που ο πρώτος αριθμός είναι μικρότερος. Αν αυτό ισχύει τότε στην κονσόλα της XBASIC εμφανίζεται το μήνυμα αριθμός1 \< αριθμός2. Τότε δεν θα εκτελεστεί η γραμμή 60. Αυτός είναι ο απλός τρόπος να κάνουμε συγκρίσεις και λαμβάνει υπ\' όψιν του όλες τις περιπτώσεις. Έχει όμως ένα μειονέκτημα. Αν οι δύο αριθμοί είναι ίσοι τότε θα τυπωθεί αριθμός1 = αριθμός2 όμως στην συνέχεια θα γίνουν οι επόμενες συγκρίσεις που δεν χρειάζονται. Έτσι για να βελτιστοποιήσουμε την ταχύτητα εκτέλεσης χρησιμοποιούμε την εντολή IF μαζί με την ELSE. Παρακάτω θα δούμε πως διαφοροποιείται το πρόγραμμα με την χρήση της ELSE. ### [3.2 Παράδειγμα 2 Εντολή IF μαζί με ELSE.]{#ss3.2} ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 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 num1num2 THEN . ELSE .. END IF END IF ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Εδώ τώρα, ανάλογα με τις τιμές των μεταβλητών θα εκτελεστούν. - Αν οι δύο αριθμοί είναι ίσοι γίνεται η πρώτη σύγκριση και παραλείπονται τα υπόλοιπα - Αν ο πρώτος αριθμός είναι μεγαλύτερος τότε γίνονται και οι δύο συγκρίσεις num1=num2 και num1\>num2. - Αν ο πρώτος αριθμός είναι μικρότερος τότε πάλι γίνονται οι δύο συγκρίσεις num1=num2 και num1\>num2. Όπως βλέπουμε στο πρώτο παράδειγμα γίνονται πάντα τρεις συγκρίσεις; ενώ στο δεύτερο γίνονται μία ή και δύο. Είναι φανερό πια γιατί προτιμάμε να χρησιμοποιούμε το ELSE από το να κάνουμε διαδοχικές συγκρίσεις. Γράφουμε μικρότερο και ταχύτερο κώδικα. ### [3.3 Επόμενο τεύχος]{#ss3.3} Στο επόμενο, θα αναλύσουμε τις συναρτήσεις στην XBasic. Θα πούμε ποιός είναι ο σκοπός τους, πως δημιουργούνται, και πως τις χρησιμοποιούμε. Θα αναλύσουμε επίσης