Το μάθημα απαιτεί κάποιος να έχει εγκαταστήσει και να γνωρίζει πως να ξεκινήσει τον μεταφραστή. Συνήθως κάποιος μαθαίνει προγραμματισμό μαζί με κάποιον που ξέρει κάτι περισσότερο, τουλάχιστον στα πρώτα βήματα.
Μπορεί κανείς να δει στις πηγές το Μαθαίνω Προγραμματισμό, το πρώτο κεφάλαιο (έχει αρκετές εικόνες), για να πάρει τις πρώτες ιδέες, ως πως το πως γράφουμε ένα πρόγραμμα
Στη θεωρία τώρα:
Ένα πρόγραμμα στη Μ2000 γράφεται σε ένα τμήμα. Η σύνταξή του είναι απλή:
Τμήμα Άλφα {
Τύπωσε "Γράμματα ίσου πάχους"
}
Άλφα
Οι μπλε λέξεις είναι οι γνωστές λέξεις (οδηγίες ή εντολές) για τον μεταφραστή της γλώσσας! Λέμε για μεταφραστή διότι έχουμε ένα κείμενο το οποίο μεταφράζεται σε ενέργειες, σε πράγματα που συμβαίνουν στον υπολογιστή μας!
Η εντολή Τμήμα δημιουργεί ένα τμήμα με ένα όνομα, εδώ το Άλφα. Μέσα στις αγκύλες βάζουμε το πρόγραμμα που θα εκτελεστεί όταν καλέσουμε το τμήμα. Η κλήση του τμήματος γίνεται με το όνομά του. Οι τόνοι στα ελληνικά ονόματα αφαιρούνται, καθώς και κεφαλαία/μικρά είναι το ίδιο. Έτσι το Άλφα και το ΑΛΦΑ και το Αλφα είναι το ίδιο πράγμα. Αυτό γίνεται και για τις εντολές και για τα ονόματα που δίνουμε σε κάτι που σημαίνει κάτι. Σε ονόματα ετικετών (που σημαδεύουν κώδικα) οι τόνοι, τα μικρά και τα μεγάλα κάνουν τα ονόματα διαφορετικά.
Το πρόγραμμά μας έχει μια εντολή, την Τύπωσε και δίπλα της έχει κάτι που το λέμε συμβολοσειρά, δηλαδή μια σειρά με σύμβολα (γράμματα, αριθμοί, οτιδήποτε) τα οποία βρίσκονται ανάμεσα σε δυο διπλά εισαγωγικά. Η συμβολοσειρά λέγεται και "σταθερό αλφαριθμητικό". Σταθερό εδώ σημαίνει ότι στο πρόγραμμά μας δεν θα αλλάξει, δηλαδή κάθε φορά που θα εκτελεστεί η Τύπωσε θα έχει αυτό το αλφαριθμητικό, ή με άλλη έκφραση: αυτή την τιμή αλφαριθμητικού.
Στο μυαλό του προγραμματιστή μένει τώρα ότι κάθε φορά που θα βάλω την οδηγία ή εντολή Άλφα θα εμφανίσει ένα συγκεκριμένο μήνυμα. Αυτό που δεν βλέπουμε εδώ είναι ότι θα γίνει και αλλαγή γραμμής στην οθόνη μας. Έτσι αν δώσουμε τρεις φορές την εντολή: Άλφα : Άλφα : Άλφα θα πάρουμε αυτό:
Γράμματα ίσου πάχους
Γράμματα ίσου πάχους
Γράμματα ίσου πάχους
Στη Μ2000 είναι ότι μπορούμε να γράψουμε τμήματα μέσα σε τμήματα! Ότι είναι μέσα σε ένα τμήμα είναι "γνωστό" στο τμήμα και "άγνωστο" στο τμήμα που περιέχεται και επίσης "άγνωστο" στα τμήματα που το ίδιο περιλαμβάνει. Εδώ συζητάμε για τη θέαση των τμημάτων. Τα τμήματα που δεν περιέχονται σε άλλα τμήματα είναι θεατά από παντού και λέγονται Γενικά (καθολικά ή σφαιρικά θα το δούμε σε άλλες γλώσσες).
Ότι ονόματα δημιουργούμε σε ένα τμήμα είναι "δικά του", είναι τοπικά (σε αντίθεση με αυτό που λέμε γενικό), εκτός αν το δηλώσουμε ως γενικό. Εδώ δεν θα δούμε αυτή την περίπτωση.
Εντός του Άλφα δεν μπορούμε να καλέσουμε το Άλφα (όχι με τον απλό τρόπο γράφοντας το όνομά του), γιατί δεν το γνωρίζει (ακόμα και γενικό τμήμα να έχουμε η Μ2000 αποκλείει την αναδρομή σε κλήση με το όνομα του τμήματος).
Αν ρίξουμε μια γρήγορη ματιά στο πρόγραμμα παρακάτω θα δούμε ότι με μαύρο χρώμα είναι τα άγνωστα στο διερμηνευτή ονόματα:
YinYang
Σχήμα1
Όνομα_Αρχείου$
Φ
Το (1) είναι όνομα τμήματος, δηλαδή είναι πρόγραμμα. Το (2) έχει ένα σχήμα (το πως το έχει δεν μας ενδιαφέρει τώρα). Το (3) είναι μια μεταβλητή που κρατάει το αλφαριθμητικό (σταθερή τιμή: "yin and yang.emf"). Το (4) είναι μια αριθμητική μεταβλητή και κρατάει τον "αριθμό χειριστή αρχείου". Η εντολή Άνοιξε παράγει έναν αριθμό και όταν θέλουμε να δώσουμε (επειδή εδώ είναι για εξαγωγή, λέμε δίνουμε) λέμε σε ποιο αρχείο με τον αριθμό αρχείου Φ. (είναι πρακτικό).
Το (3) θα μπορούσαμε να μην το χρησιμοποιήσουμε και όπου το έχουμε τώρα στο κώδικα να το αλλάξουμε με την σταθερή τιμή: "yin and yang.emf". Για πρακτικούς λόγους εδώ βάζουμε την μεταβλητή. Κάνει δυο δουλειές: Κρατάει τη τιμή αλφαριθμητικού και με το όνομά της μας λέει τι είναι!
Ο καλύτερος τρόπος να δει κανείς ένα πρόγραμμα είναι να το χαλάσει επιλεκτικά! Δηλαδή να βάλει το // ή το \\ ή το ' ή το ΣΗΜ πριν από μια εντολή για να τη κάνει σημείωση (άρα να μην εκτελεστεί).
Σε επίπεδο επαγγελματικό, ο ικανός προγραμματιστής βρίσκει γρήγορα τα λάθη του βάζοντας σε κάποια σημεία του κώδικα διακοπές εκτέλεσης για θέαση τιμών (να δει τι αλλάζει σε σχέση με αυτό που έχει σκεφτεί ότι θα γίνει). Ο χρόνος εκσφαλμάτωσης (διόρθωσης λαθών) είναι περίπου τα 7/10 του συνολικού χρόνου συγγραφής του προγράμματος. Δηλαδή αν κάτι θέλει τρεις ώρες για να γραφτεί, θα θέλει άλλες επτά για να διορθωθεί! Έτσι το να κάνει κανείς λάθος δεν είναι κάτι πρωτόγνωρο ή κάτι που κάνουν μόνο οι νέοι. Όλοι κάνουν λάθη γιατί κάθε φτασμένος προγραμματιστής πάντα καταπιάνεται με κάτι της δυνατότητάς του ή και περισσότερο (πάντα θα είναι δύσκολο). Οτιδήποτε άλλο λέγεται συντήρηση λογισμικού. Εδώ για παράδειγμα συντήρηση λογισμικού θα ήταν να αλλάξουμε το τίτλο, πχ το Yin and Yang να γίνει Γιν και Γιανγκ. Δηλαδή απλά πράγματα που δεν αλλάζουν την ουσία του προγράμματος.
Κάποιοι μιλάνε για αλγόριθμο = προγραμματισμός = αλγοριθμική σκέψη. Είναι ένας τρόπος να πλανάται ο κόσμος με ορισμούς. Το πρόγραμμα που βλέπουμε εδώ δεν εκτελεί κανένα ονομαστό αλγόριθμο, παρά μια ακολουθία εντολών. Το ενδιαφέρον στο κώδικα είναι ένα μπλοκ εντολών που εκτελείται κάθε 60 χιλιοστά του δευτερολέπτου. Δείτε την εντολή Κάθε 1000/60 { } (δείτε τις αγκύλες που περιέχουν το μπλοκ εντολών). Τα 60 και 1000 λέγονται σταθερές αριθμητικές τιμές, ενώ το 1000/60 αποτελεί μια θέση Αριθμητικής Έκφρασης (ή παράστασης). Η εντολή Κάθε απαιτεί μια αριθμητική παράμετρο σε χιλιοστά του δευτερολέπτου, ακριβώς μετά το όνομα της και ένα μπλοκ εντολών. Για να βγούμε από το μπλοκ πρέπει να κάνουμε Έξοδο με την εντολή Έξοδος. Με το 1000 θα λέγαμε κάθε ένα δευτερόλεπτο, ενώ το 1000/60 λέει κάθε 1/60 του δευτερόπλεπτου (αφού το 1000 είναι 1 δευτερόλεπτο). Αν κάνουμε λάθος και δώσουμε το 60/1000 τότε έχουμε κάτω από ένα χιλιοστό δευτερολέπτου (ο διερμηνευτής δεν αφήνει να πάει ο χρόνος κάτω από 5 χιλιοστά, δηλαδή αυτορυθμίζεται).
Επίσης υπάρχει και ένα άλλο μπλοκ που λέγεται σχέδιο και μέσα σε αυτό υπάρχουν δυο άλλα με ίδιο όνομα εντολής Πάχος. Το πρώτο συντάσεται ως εξής Σχέδιο { } ως ΌνομαΜεταβλητής (έχει και παραλλαγή που δεν θα δούμε εδώ). Οι εντολές γραφικών εντός του μπλοκ πάνε σε ένα αρχείο το οποίο κρύβεται μέσα σε ένα αντικείμενο "Διάρθρωση Μνήμης" το οποίο έχει μια έκταση μνήμης. Αυτό το αρχείο το γράφουμε στο δίσκο στο τέλος του προγράμματος. Επίσης το χρησιμοποιούμε για να το αναπαράγουμε στην Οθόνη μας με την εντολή Εικόνα.
Το μπλοκ Πάχος Αριθμητική_Έκφραση { } κάνει εντός του μπλοκ να τα γραφικά να χρησιμοποιούν το Πάχος που ορίζουμε στην Αριθμητική έκφραση (ενός Pixel). Στα σχέδια οι μονάδες λέγονται twips, όπου 1440 twips είναι μια ίντσα (στον εκτυπωτή, ενώ στην οθόνη έχουμε τη λογική ίντσα, κάτι που δεν ισούτε με το μήκος με τη πραγματική ίντσα).
Τμήμα YinYang {
Οθόνη 5,0
Φόντο 0, 5
Διπλά
Τύπωσε Πάνω
Δρομέας 0,0
Αναφορά 2, "阴阳 Yin and yang 음양"
Κανονικά
Σχέδιο {
Κύκλος Γέμισμα 0, 3000,1, 0
Κύκλος Γέμισμα 15, 3000,1,0, πι/2, -πι/2
Βήμα 0, -1500
Κύκλος Γέμισμα 15, 1500,1,15
Πάχος 4 {
Κύκλος Γέμισμα 0, 500,1,0
}
Βήμα 0, 3000
Κύκλος Γέμισμα 0, 1500,1,0
Πάχος 4 {
Κύκλος Γέμισμα 15, 500,1,15
Βήμα 0, -1500
Κύκλος 3000,1,0
}
} ως Σχήμα1
Θέση 6000, 5000-1500
Εικόνα Σχήμα1, 6000
Θέση 2000, 5000
Εικόνα Σχήμα1, 3000
Θέση 2000+1500, 5000+1500
κράτησε
Δείκτη.Μορφή Κρύψε
ι=0
Κάθε 1000/60 {
Αν ενκομ$=" " η Δείκτης=2 Τότε exit
Άφησε
Θέση δείκτης.χ, δείκτης.ψ
Εικόνα Σχήμα1, 3000, ,ι : ι+=5:Αν ι>355 Τότε ι=0
Ανανέωση 20
Αν mouse=1 Τότε κράτησε
}
Δείκτη.Μορφή Δείξε
Όνομα_Αρχείου$="yin and yang.emf"
Άνοιξε Όνομα_Αρχείου$ για εξαγωγή ως #Φ
Δώσε #Φ, Σχήμα1, 1
Κλείσε #Φ
Σύστημα "mspaint", Παράθεση$(Κατ$+Όνομα_Αρχείου$)
}
YinYang
Το πρόγραμμα YinYang κάνει τα παρακάτω:
Εμφανίζει το σχήμα γιν-γιανγ σε δυο μεγέθη με περιστροφή το μικρότερο στην οθόνη του υπολογιστή μας.
Εμφανίζει τίτλο με ελληνικά και κινέζικα, με αναλογική γραφή (το i στο Yin έχει μικρό πάχος σε σχέση με το Υ)
Εξαφανίζει τον δείκτη του ποντικιού και στη θέση του εμφανίζει το σχέδιο να περιστρέφεται!
Αν πατήσουμε το αριστερό πλήκτρο του ποντικιού βάφουμε με αυτό το σχήμα!
Με το δεξί πλήκτρο τερμαρίζουμε τη σχεδίαση.
Εξαγωγή του σχήματος σε πρόγραμμα όπως η Ζωγραφική. Αυτό γίνεται όταν τεσρματίσει η σχεδίαση.
Εδώ έχουμε δυο εικόνες με την εξαγωγή του προγράμματος