237 γραμμές
22 KiB
Markdown
237 γραμμές
22 KiB
Markdown
|
+++
|
|||
|
title = 'Xbasic'
|
|||
|
date = '0000-04-01T00:00:00Z'
|
|||
|
description = ''
|
|||
|
author = 'Κώστας Τσακάλογλου(mailto:tsakf@hellug.gr)'
|
|||
|
issue = ['Magaz 24']
|
|||
|
issue_weight = 2
|
|||
|
+++
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
*Μία γλώσσα προγραμματισμού Basic που έχει αρκετά στοιχεία C. Μέρος ΙΙ*
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
Μετα από μια πρώτη ματιά και την πρώτη προσπάθεια να γράψω ένα πρόγραμμα σκέφτηκα ότι πρώτα πρέπει να εξοικειωθώ με το περιβάλλον ανάπτυξης εφαρμογών της XBASIC
|
|||
|
για να μπορώ να δουλέψω καλύτερα. Στο σημερινό άρθρο θα σας παρουσιάσω το περιβάλλον ανάπτυξης για να είναι κατανοητό το παράδειγμα εφαρμογής που θα γραφτεί
|
|||
|
μετά.
|
|||
|
|
|||
|
**1. Περιβάλλον συγγραφής του κώδικα**
|
|||
|
---------------------------------------------------------------
|
|||
|
|
|||
|
**2. Παράθυρο εμφάνισης αποτελεσμάτων**
|
|||
|
----------------------------------------------------------------
|
|||
|
|
|||
|
**3. Παράθυρο κατασκευής γραφικών αντικειμένων**
|
|||
|
-------------------------------------------------------------------------
|
|||
|
|
|||
|
**4. Επίλογος**
|
|||
|
----------------------------------------
|
|||
|
|
|||
|
|
|||
|
### [1. Περιβάλλον συγγραφής του κώδικα]{#s1}
|
|||
|
|
|||
|

|
|||
|
|
|||
|
Σε αυτό το παράθυρο γράφουμε τον κώδικα και έχουμε όλες τις δυνατότητες που έχουν τα σύγχρονα περιβάλλοντα προγραμματισμού. Πχ. σημεία προσωρινής παύσης
|
|||
|
(breakpoints), εμφάνιση τιμών μεταβλητών κ.λ.π.\
|
|||
|
Αναλυτικά θα δούμε τις κυριώτερες επιλογές των μενού.
|
|||
|
|
|||
|
- FileNew\
|
|||
|
Επιλέγεται νέο αρχείο. Διαγράφεται ότι έχει παραμείνει στην μνήμη και διακόπτεται οποιαδήποτε λειτουργία. Τα δεδομένα δεν αποθηκεύονται έτσι πρέπει να έχει
|
|||
|
γίνει πριν αποθήκευση αν θέλουμε να χρησιμοποιήσουμε πάλι το πρόγραμμα που μόλις είχαμε γράψει. Η επιλογή αυτή έχει μας δίνει την δυνατότητα να
|
|||
|
δημιουργήσουμε 3 διαφορετικούς τύπους κώδικα.
|
|||
|
1. Απλό αρχείο χαρακτήρων (text file)
|
|||
|
2. Κανονικό πρόγραμμα BASIC (χωρίς την χρήση γραφικού περιβάλλοντος)
|
|||
|
3. Πρόγραμμα που χρησιμοποιεί γραφικό περιβάλλον (φόρμες, κουμπιά κ.λ.π.)
|
|||
|
- FileTextLoad\
|
|||
|
Με αυτή την επιλογή μπορούμε να φορτώσουμε στο περιβάλλον αρχεία χαρακτήρων (text files) που μπορεί να μην είναι πρόγραμμα πχ. σημειώσεις. Στο περιβάλλον
|
|||
|
δεν υποστηρίζεται η εμφάνιση χαρακτήρων πάνω από το 128 όπου αν υπάρχουν τέτoιοι χαρακτήρες θα φαίνονται περίεργα. Επίσης στο αρχείο χαρακτήρων δεν πρέπει
|
|||
|
να υπάρχουν χαρακτήρες NULL. Βέβαια εδώ δημιουργείται το ερώτημα τι γινέται με τα Ελληνικα; Νομίζω όμως οτι μπορούμε να ξεπεράσουμε αυτόν τον περιορισμό αν
|
|||
|
τα μηνύματα του προγράμματος δεν είναι μέσα στο ν κώδικα αλλά σε αρχείο όπου θα διαβάζεται από το πρόγραμμα. Αυτός ο τρόπος δίνει επίσης την δυνατότητα να
|
|||
|
έχουμε διαφορετικά αρχεία για κάθε γλώσσα και έτσι νομίζω ότι ο περιορισμός του περιβάλλοντος να μην δέχεται χαρακτήρες \> 128 δεν είναι σπουδαίο πρόβλημα.
|
|||
|
- FileLoad\
|
|||
|
Φορτώνεται στο περιβάλλον ένα πρόγραμμα που εχει αποθηκευθεί από πριν.
|
|||
|
- FileSave\
|
|||
|
Αποθηκεύεται το τρέχον πρόγραμμα σε αρχείο.
|
|||
|
- FileMode\
|
|||
|
Επιλέγεται ο τρόπος λειτουργίας του περιβάλλοντος. Text mode είναι για να μπορούμε να επεξεργαζόμαστε οποιοδήποτε κείμενο ενώ το Program Mode μας δίνει τις
|
|||
|
ευκολίες που χρειαζόμαστε για το γράψιμο προγραμμάτων
|
|||
|
- FileRename\
|
|||
|
Το επιλέγουμε για να αλλάξουμε το όνομα του προγράμματος που έχουμε στην μνήμη.
|
|||
|
- FileQuit\
|
|||
|
Δηλώνουμε ότι θέλουμε να εγκαταλείψουμε το περιβάλλον εργασίας και άν έχουμε κάνει μεταβολές στο πρόγραμμά μας το περιβάλλον μας ζητά επιβεβαίωση και φύλαξη
|
|||
|
των τελευταίων αλλαγών άν θέλουμε.
|
|||
|
- EditCut\
|
|||
|
Διαγράφει καί αποθηκεύει σε προσωρική μνήμη (clipboard) το επιλεγμένο κείμενο.
|
|||
|
- EditGrab\
|
|||
|
Αντιγράφει το επιλεγμένο κείμενο στην προσωρινή μνήμη (clipboard).
|
|||
|
- EditPaste\
|
|||
|
Παρεμβάλλει στο τρέχον σημείο ότι είναι αποθηκευμένο στην μνήμη.
|
|||
|
- EditFind\
|
|||
|
Αναζήτηση κειμένου στο πρόγραμμα
|
|||
|
- Edit\_\_\
|
|||
|
Αντικατάσταση κειμένου με άλλο
|
|||
|
- EditRead\
|
|||
|
Ανάγνωση αρχείου στην προσωρινή μνήμη (clipboard).
|
|||
|
- EditWrite\
|
|||
|
Εγγραφή σε αρχείο της προσωρινής μνήμης (clipboard).
|
|||
|
- EditAbandon\
|
|||
|
Ακύρωση όλων των αλλαγών στην τρέχουσα ρουτίνα.
|
|||
|
- ViewFunction\
|
|||
|
Εμφανίζεται παράθυρο με όλες τις ρουτίνες του προγράμματος και επιλέγεται η επιθυμητή.
|
|||
|
- ViewPriorFunction\
|
|||
|
Εμφανίζεται η προηγούμενη ρουτίνα
|
|||
|
- ViewNewFunction\
|
|||
|
Δημιουργούμε μια νέα ρουτίνα και καθορίζουμε το όνομά της, παραμέτρους κλπ.
|
|||
|
- ViewDeleteFunction\
|
|||
|
Εμφανίζεται κατάλογος με όλες τις ρουτίνες και επιλέγουμε αυτήν πρός διαγραφή.
|
|||
|
- ViewRenameFunction\
|
|||
|
Δίνεται η δυνατότητα αλλαγής ονόματος της τρέχουσας ρουτίνας. Με την εντολή αλλαγής όλες οι κλήσεις σε αυτή την ρουτίνα προσαρμόζονται ανάλογα.
|
|||
|
- ViewCloneFunction\
|
|||
|
Αναπαράγεται ένα πιστό αντίγραφο κάποιας ρουτίνας.
|
|||
|
- ViewLoadFunction\
|
|||
|
Φορτώνεται μια ρουτίνα από αρχείο και ενσωματώνεται στο ήδη υπάρχον πρόγραμμα.
|
|||
|
- ViewSaveFunction\
|
|||
|
Αποθηκεύεται μια ρουτίνα σε αρχείο για την μεταφορά της όπως είναι σε άλλο πρόγραμμα.
|
|||
|
- Options\
|
|||
|
Επηρεάζεονται οι παράμετροι εμφάνισης του περιβάλλοντος και οι παράμετροι της μεταγλώττισης (Compile).
|
|||
|
- RunStart\
|
|||
|
Εκτελείται το τρέχον πρόγραμμα
|
|||
|
- RunContinue\
|
|||
|
Συνεχίζεται η εκτέλεση μετά από διακοπή της εκτέλεσης του προγράμματος.
|
|||
|
- RunPause\
|
|||
|
Διακοπή της εκτέλεσης του προγράμματος για τον έλεγχο μεταβλητών ή κλήσεων ρουτινών.
|
|||
|
- RunKill\
|
|||
|
Τερματισμός της λειτουργίας του προγράμματος και μηδενισμός μεταβλητών.
|
|||
|
- RunRecompile\
|
|||
|
Γίνεται μεταγλώττιση του προγράμματος χωρίς να εκτελεστεί για το έλεγχο λαθών σύνταξης κλπ.
|
|||
|
- RunAssembly\
|
|||
|
Γίνεται μεταγλώττιση του προγράμματος σε γλώσσα Assembly και αποθηκεύεται στον δίσκο με το επίθεμα .a
|
|||
|
- RunLibrary\
|
|||
|
Γίνεται μεταγλώττιση του προγράμματος σε γλώσσα Assembly και αποθηκεύεται στον δίσκο με το επίθεμα .a για να χρησιμοποιηθεί για την δημιουργία βιβλιοθηκών
|
|||
|
ρουτινών.
|
|||
|
- DebugToggleBreakpoint\
|
|||
|
Τοποθετείται/ακυρώνεται στην τρέχουσα γραμμή σημείο διακοπής εκτέλεσης (Breakpoint) για έλεγχο της ροής και τνω μεταβλητών του προγράμματος.
|
|||
|
- DebugClearBreakpoints\
|
|||
|
Ακυρώνονται τα σημεία διακοπής (Breakpoints) σε όλο το πρόγραμμα.
|
|||
|
- DebugEraseBreakpoints\
|
|||
|
Ακυρώνονται τα σημεία διακοπής (Breakpoints) στην τρέχουσα ρουτίνα.
|
|||
|
- DebugMemory\
|
|||
|
Εμφανίζονται τα περιεχόμενα της μνήμης σε σημεία πού επιλέγετε.
|
|||
|
- DebugAssembly\
|
|||
|
Εμφανίζεται η τρέχουσα γραμμή σε μορφή Assembly και μπορούμε να προχωράμε τις εντολές βήμα-βήμα.
|
|||
|
- DebugRegisters\
|
|||
|
Εμφανίζονται τα περιεχόμενα των καταχωρητών (Registers) του επεξεργαστή.
|
|||
|
- Help\
|
|||
|
Βοήθεια για την λειτουργία το περιβάλλοντος προγραμματισμού.
|
|||
|
|
|||
|
|
|||
|
### [2. Παράθυρο εμφάνισης αποτελεσμάτων]{#s2}
|
|||
|
|
|||
|

|
|||
|
|
|||
|
Σε αυτό το πραράθυρο εμφανίζονται τα μυνήματα εισόδου/εξόδου όταν η εφαρμογή μας δεν είναι κατασκευασμένη για γραφικό περιβάλλον. Εμφανίζονται τα αποτελέσματα
|
|||
|
(output) ή οι ερωτήσεις για πληκτρολόγηση δεδεομένων (input) με το απλό στύλ της κονσόλας.\
|
|||
|
Για απλά προγράμματα χωρίς περίπλοκη εισαγωγή δεδομένων είναι ότι πρέπει γιατί δεν υπάρχει λόγος να μπλέξουμε με γραφικό περιβάλλον στις απλές εφαρμογές.
|
|||
|
|
|||
|
|
|||
|
### [3. Παράθυρο κατασκευής γραφικών αντικειμένων]{#s3}
|
|||
|
|
|||
|

|
|||
|
|
|||
|
Με την βοήθεια του toolkit μπορούμε να δημιουργήσουμε παράθυρα,κουμπιά και ότι άλλο προσφέρει το GuiDesigner για να κατασκευάσουμε το περιβάλλον της εφαρμογής
|
|||
|
μας. Για να φανούν οι δυνατότητες του, θα αναφέρω παρακάτω ένα-ένα τα εικονίδια και τι κάνει το κάθε ένα. Πρώτα από όλα να δούμε τι κάνουν τα μενού.
|
|||
|
|
|||
|

|
|||
|
|
|||
|
Επιλέγοντας το Window μπορούμε να δημιουργήσουμε νέο παράθυρο, να εξαφανίσουμε το τρέχον, να ανακαλέσουμε κάποιο παλαιό για διόρθωση/συμπλήρωμα, να
|
|||
|
αποθηκεύσουμε αυτό που έχουμε δημιουργήσει ή και να διαγράψουμε μόνιμα το τρέχον παράθυρο. Προσοχή! Δεν υπάρχει τρόπος να ανακληθεί παράθυρο που έχει διαγραφεί.
|
|||
|
Ο τρόπος αποθήκευσης είναι τέτοιος ώστε τα παράθυρα αποθηκεύνται με ειδικές παραμέτρους για να μπορούν να ενσωματωθούν και να επικοινωνούν με την εφαρμογή μας.
|
|||
|
Η τρίτη και δεύτερη επιλογή από το τέλος κάνει αυτή την μετατροπή στην μνήμη για να είναι άμεσα διαθέσιμες οι εντολές στο πρόγραμμά μας. Η τελευταία επιλογή
|
|||
|
είναι φανερό ότι είναι το τέλος λειτουργίας του GuiDesigner.
|
|||
|
|
|||
|

|
|||
|
|
|||
|
Επιλέγοντας το Grid μπορούμε να ρυθμίσουμε την εμφάνιση, την συμεριφορά, την σειρά και την εξάρτηση (ποιό αντικείμενο ανήκει που, ομάδες κλπ) του κάθε
|
|||
|
αντικειμένου. Η τελευταία επιλογή είναι για την διαγραφή του τρέχοντος αντικειμένου.\
|
|||
|
Παρακάτω θα δούμε ένα ένα τα αντικείμενα του γραφικού περιβάλλοντος ένα ένα.
|
|||
|
|
|||
|
----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
|
|||
|
\ XuiColor. Επιλογή χρωμάτων (125 διαθέσιμα)
|
|||
|

|
|||
|
|
|||
|
 XuiLabel. Εμφάνιση γραμμών κειμένου ή εικόνας
|
|||
|
|
|||
|
 XuiCheckBox Επιλογή ανεξαρτήτων επιλογών (όχι μία από ομάδα)..
|
|||
|
|
|||
|
 XuiRadioBox Επιλογή από μια ομάδα XuiRadioBox.
|
|||
|
|
|||
|
 XuiPressButton Επιλέγεται όταν πατήσουμε το ποντίκι.
|
|||
|
|
|||
|
 XuiPushButton Επιλέγεται όταν πατήσουμε και αφήσουμε το ποντίκι.
|
|||
|
|
|||
|
 XuiToggleButton Με το πρώτο πάτημα ένεργοποιείται και με το δεύτερο
|
|||
|
απενεργοποιείται.
|
|||
|
|
|||
|
 XuiScrollBarH Οριζόντια κίνηση/τοποθέτηση.
|
|||
|
|
|||
|
 XuiScrollBarV Κάθετη κίνηση/τοποθέτηση.
|
|||
|
|
|||
|
 XuiTextLine Εισαγωγή κειμένου (μία γραμμή).
|
|||
|
|
|||
|
 XuiTextArea Εισαγωγή κειμένου (πολλές γραμμές).
|
|||
|
|
|||
|
 XuiMenu Δημιουργία μενού εντολών.
|
|||
|
|
|||
|
 XuiMenuBar Μενού επιλογών σε οριζόντια διάταξη.
|
|||
|
|
|||
|
 XuiPullDown Μενού επιλογών σε κάθετη διάταξη.
|
|||
|
|
|||
|
 XuiList Επιλογή ενός στοιχείου διαθέσιμου από μια λίστα.
|
|||
|
|
|||
|
  XuiMessage1B/2B/3B/4B Εμφάνιση μηνύματος με 1/2/3/4 κουμπιά επιλογών
|
|||
|
  αντίστοιχα.
|
|||
|
|
|||
|
 XuiProgress Εμφάνιση ποσοστού εκτέλεσης/υπολοίπου για κάποια
|
|||
|
διαδικασία.
|
|||
|
|
|||
|
  XuiDialog2B/3B/4B Εμφάνιση μηνύματος και αποδοχή απάντησης από τον
|
|||
|
 χρήστη με 2/3/4 κουμπιά επιλογών.
|
|||
|
|
|||
|
 XuiDropButton Εμφάνιση λίστας επιλογών με πάτημα κουμπιού.
|
|||
|
|
|||
|
 XuiDropBox Καταχώρηση κειμένου ή επιλογή από λίστα επιλογών
|
|||
|
|
|||
|
 XuiListButton Εμφάνιση λίστας επιλογών με πάτημα κουμπιού με μπάρα
|
|||
|
μετακίνησης στην λίστα.
|
|||
|
|
|||
|
 XuiListBox Καταχώρηση κειμένου ή επιλογή από λίστα επιλογών με
|
|||
|
μπάρα μετακίνησης στην λίστα .
|
|||
|
|
|||
|
 XuiRange Εμφάνιση τιμής και μεταβολή της +- με το πάτημα
|
|||
|
κουμπιών.
|
|||
|
|
|||
|
 XuiFile Ετοιμο παράθυρο για την επιλογή αρχείου
|
|||
|
|
|||
|
 XuiFont Ετοιμο παράθυρο επιλογής χαρακτήρων. (Είδος, μέγεθος,
|
|||
|
έντονα κλπ.)
|
|||
|
|
|||
|
 XuiListDialog2B Εμφάνιση μηνύματος και αποδοχή απάντησης από τον
|
|||
|
χρήστη με 2 κουμπιά
|
|||
|
|
|||
|
|
|||
|
----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
|
|||
|
|
|||
|
Αυτά είναι τα διάφορα αντικείμενα που μπορούμε να χρησιμοποιήσουμε για να κατασκευάσουμε την παραθυρική εφαρμογή μας.
|
|||
|
|
|||
|
|
|||
|
### [4. Επίλογος]{#s4}
|
|||
|
|
|||
|
Μετά την πρώτη γνωριμία με το περιβάλλον στο επόμενο άρθρο θα δούμε τα βασικά δομικά στοιχεία που αποτελούν μια εφαρμογή XBASIC είτε σε περιβάλλον κονσόλας είτε
|
|||
|
σε παραθυρικό περιβάλλον (φόρμες, κουμπιά, πεδία κλπ.) Θα γίνουν και κάποια συγκριτικά τεστ με τις άλλες δύο Basic που ξέρω (Basic για το DOS και Visual Basic
|
|||
|
gia ta Windows) έτσι για να δούμε και τί γίνεται από ταχύτητες και θα αναφέρω ότι άλλο δώ ότι είναι ενδιαφέρον κάποιος να ξέρει πρίν ξενικήσει να γράψει την
|
|||
|
πρώτη του εφαρμογή. Θα τα ξαναπούμε στο επόμενο Magaz.
|
|||
|
|