Τετάρτη, 30 Σεπτεμβρίου 2015

Προγραμματισμός 0004

Νέα αναθεώρηση 57
Μία βελτίωση, μια επαναφορά, μια διόρθωση (ένας προγραμματιστής...)
Οι αναθεωρήσεις λέγονται και "συντήρηση"..τεχνηέντως...Μεγάλες επιχειρήσεις τις λένε Service Release, ή Patch αν είναι κάτι σύντομο και απαραίτητο, ή επίκαιρο (update) αν είναι κάτι που πρέπει να συμβαδίζει με κάτι νέο (δηλαδή μια βελτίωση ουσιαστικά). Συντήρηση γενικά λέμε την διατήρηση ενός προγράμματος και των απαραίτητων δεδομένων του σε καλή λειτουργία. Για εμπορικά προγράμματα που στηρίζονται σε βάσεις δεδομένων, όταν λέμε συντήρηση σημαίνει ότι κάνουμε καθάρισμα της βάσης (και ότι άλλο μπορεί να την κάνει περισσότερο γρήγορη άρα και λειτουργική)

1. Τώρα η συνάρτηση Ταύτιση() παίρνει και ελληνικούς χαρακτήρες, το ίδιο ισχύει και για την εντολή Σωρός.

αδειασε           \\ αδειάζει το σωρό
\\ μετά φτιάχνουμε μια λίστα και την περνάμε σε ένα αλφαριθμητικό
α$=παραθεση$(1,2,"αλφα", 45*56)
Τύπωσε α$   \\ εδώ τυπώνουμε τη λίστα ως έχει
σωρος α$,"αα"   \\ εδώ ζητάμε από τη λίστα δυο αριθμούς (και το "νν" δουλεύει)
\\ προσοχή όμως εδώ τους αναστρέφει, δηλαδή βάζει το τελευταίο ως πρώτο (στη κορυφή)
σωρος    \\ χωρίς παράμετρο βλέπουμε το σωρό στην οθόνη
\\ εδώ κοιτάμε αν ο σωρός έχει δυο αριθμούς, αλλά δεν τους τραβάμε
Τύπωσε Ταύτιση("αα")
\\ εδώ διαβάζουμε τους δυο αριθμούς
διαβασε Α, Β
σωρος α$,"γ"               \\ γ από το γράμμα ή γράμματα
διάβασε Β$
Τύπωσε Α, Β,Β$, α$
         1        2αλφα             2520

πριν την αναθεώρηση ήθελε N αγγλικό για αριθμό και S για αλφαριθμητικό
Παρόλα αυτά η Φάκελος$() γυρίζει πάντα N ή S (αγγλικά).
α$=παραθεση$(1,2,"αλφα", 45*56)
τύπωσε φάκελος$(α$)  \\ θα δώσει τα αγγλικά
NNSN 
Επειδή για κάθε στοιχείο επιστρέφει η φάκελος$() ένα γράμμα, μπορούμε να ξέρουμε πόσα στοιχεία έχει μέσα το αλφαριθμητικό:
τύπωσε μήκος(φάκελος$(α$))
αν θέλουμε να ξέρουμε τι έχει το πρώτο στοιχείο
Τύπωσε φάκελος$(α$,"α")<>""      \\ τυπώνει -1 (αληθές)
Τύπωσε φάκελος$(α$,"γ")<>""       \\ τυπώνει 0 (ψευδές)

Οι λίστες στα αλφαριθμητικά δεν μπορούν να έχουν ομάδες ή πίνακες, όπως μπορεί να έχει ο σωρός, για στοιχεία.
β$=α$+","+α$  ενώνουμε δυο λίστες
β$=α$+","+α$ 
α$="1 1 2;σκουπίδια"   \\ το κόμμα δεν είναι απαραίτητο, μπορούμε να βάλουμε "σκουπίδια".

Τύπωσε φακελος$(α$)
σωρος α$,"ααα"

Τύπωσε α$     \\ τυπώνει το ";σκουπίδια".

α$="1 1 2;5 6 7"
σωρος α$     \\ αν δεν δώσουμε επακριβώς τι θέλουμε..τα σκουπίδια θα χαθούν...

Τύπωσε α$
Μέχρι εδώ είδαμε την απλή μορφή λίστας
Η συνάρτηση σωρός$() φτιάχνει σωρούς με αλφαριθμητικά που δεν βρίσκονται εντός εισαγωγικών αλλά με αριθμό στοιχείων πρώτα. Έτσι η εντολή σωρός και η φάκελος() λειτουργούν τώρα με δυνατότητα να έχουμε λίστες σε λίστες.
α$=σωρος$(1,2,3,4,"άλφα")
τυπωσε α$
β$=σωρος$(α$,10, σωρος$(1,2,3))
Τύπωσε φακελος$(β$)   \\ SNS
Σωρος Νεος { Σωρος β$,"γν" }  \\ πετάω τα πρώτα δύο στοιχεία
Σωρος β$ : Διαβασε β$
Σωρος β$
Διαβασε Α,Β,Γ
Τύπωσε Α,Β,Γ   \\ τυπώνει το 1 2 3


Ο λόγος που χρησιμοποιούμε τα αλφαριθμητικά ως λίστες είναι για να τα περάσουμε σε αρχεία, ή σε πίνακες ή να τα στείλουμε μέσω αυλών (pipes) σε άλλο πρόγραμμα που τρέχει στο δίκτυο. Οι αυλοί στην Μ2000 (είναι στοιχεία των Windows) χρησιμοποιούνται μόνο για να "ακούνε" για στοιχεία. Έτσι μια εφαρμογή μπορεί να στήσει έναν αυλό και να περιμένει να πάρει "εντολές". Αυτές τις εντολές έρχονται σε λίστα και εκεί μπορεί ένα άλλο πρόγραμμα να γνωστοποιήσει τον δικό του αυλό "επικοινωνίας". Με αυτό το τρόπο φτιάχνουμε συστήματα (δηλαδή τουλάχιστον δυο εφαρμογές σε M2000 να τρέχουν) ως "πελάτη-εξυπηρετητή". Δείτε εντολές USE και PIPE (Χρήση και Αυλός).


2. Επιπλέον επανήλθε η Βοήθεια με κανονική χρήση των τόνων. π.χ. (είχε "σπάσει" μετά την 44).
Βοήθεια Φάκελος δίνει το Φάκελος$()

3. Επιπλέον διορθώθηκε αυτό (το περιγράφω για να δει κανείς πόσο εύκολα γίνονται λάθη. Εδώ δεν το είχα προσέξει μέχρι που το χρησιμοποίησα...):
class aa {name$, module aa { read .name$ }} 
dim a(1)=aa("OK")
' είχαμε λάθος στις επόμενες γραμμές γιατί δεν δέχονταν τα \ και ; όταν
' χρησιμοποιούσαμε τη μορφή ανάγνωσης ιδιότητας από αντικείμενο στην εκτύπωσε!
'  ενώ δέχονταν αυτό for a(0) { print .name$; }
' το πρόβλημα ήταν ότι μια συνάρτηση που "κοίταζε μπροστά"...όταν έφθανε στην ). 
' μετά έπαιρνε όχι μόνο το .name$ αλλά και το ; μαζί και αναζητούσε την "name$;"
' το ίδιο έκανε για την ' και την \ (που χρησιμοποιούμε για σημειώσεις στο κώδικα).
' το ? είναι η Τύπωσε (Print)
? a(0).name$  \\ hello
? a(0).name$;"..."

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου