Τρίτη 30 Μαΐου 2017

Συντακτικό της Μ2000 σε μορφή Πίνακα


Υπάρχει νέα αναθεώρηση 6 η οποία απλά διορθώνει ή προσθέτει λίγα πράγματα.

Γράφω το βιβλίο "Προγραμματισμός στη Μ2000" και αυτή είναι μια προδημοσίευση ενός πίνακα, με το συντακτικό της Μ2000 όπως το χειρίζεται ο διερμηνευτής της Μ2000 σε κώδικα πολλών γραμμών (υπάρχει και διερμηνευτής για γραμμή εντολών).

Η πρώτη στήλη του πίνακα δείχνει το πώς σχηματοποιείται το κείμενο που τελικά είναι κώδικας για τη Μ2000, ανά περίπτωση. Σε κάθε γραμμή στη συνέχεια υπάρχει το τι περιμένει ο διερμηνευτής αμέσως μετά. Βλέπουμε το συντακτικό του δηλαδή, σε μια μορφή πίνακα.

Για παράδειγμα το παρακάτω, και ειδικά η πρώτη γραμμή:

Για ι=1 έως 20 {
    Τύπωσε ι
}

Έχουμε ένα Γνωστό Όνομα την Για μετά ακολουθούν ορίσματα τα οποία αναλύονται ως εξής: Όρισμα1 ι=1 που αναλύεται σε ι (εδώ είναι άγνωστο όνομα, θα μπορούσε να ήταν γνωστό όμως, απλά δεν βλέπουμε άλλο κώδικα για να κρίνουμε) και έχει τελεστή το = και ακολουθεί έκφραση, η τιμή 1, μετά έχουμε το έως που είναι γνωστό όνομα και εδώ έχει θέση αντί του κόμμα και μετά έχουμε το άλλο όρισμα2 η έκφραση με τιμή το 20 και τέλος ακολουθεί μπλοκ εντολών.



{
Μπορεί να περιέχει Παραγράφους
}

Μπλοκ κώδικα, που περιέχει παραγράφους. Στο διορθωτή δεν βλέπουμε το μπλοκ όλου του κειμένου, αλλά εννοείται και υπάρχει στο αρχείο που σώνουμε
Μπορεί να περιέχει και άλλα μπλοκ κώδικα.
Παράγραφος Κειμένου
Α$ = {
αυτή είναι μια παράγραφος κειμένου μόνο
}
Παράγραφος ως μέρος αλφαριθμητικού με πολλές παραγράφους. Δείτε ότι χρησιμοποιούνται άγκιστρα εδώ, ενώ δεν είναι Μπλοκ κώδικα.
Παράγραφος ως μέρος της ροής εκτέλεσης
Παράγραφος ως μέρος της ροής εκτέλεσης
Αριθμός, μέχρι 5 ψηφία μπορούν να υπάρχουν 0 στην αρχή, πχ 00001. Προαιρετική χρήση, έχει ρόλο ετικέτας και δεν έχει σχέση με τον σχετικό αριθμό γραμμής, στο διορθωτή.
Αριστερή Έκφραση
Κενό

Προαιρετικά Σημειώσεις



Σημειώσεις

Κενό

Σημειώσεις
\ ή '
Γράφουμε τις σημειώσεις μας σε μια γραμμή
Αριστερή Έκφραση
Γνωστό όνομα
( εδώ λέγεται ότι είναι σε πρώτη θέση)










Προαιρετικά το διαχωριστικό εντολών άνω και κάτω τελεία
:
εκτός ελαχίστων περιπτώσεων που δεν επιτρέπεται δεύτερη εντολή (πρέπει να μπει μπλοκ εντολών)
μπορούν να μπουν όσα θέλουμε
αν υπάρχει διαχωριστικό εντολών τότε προαιρετικά
Αριστερή Έκφραση

Τύπωσε
και η ? λειτουργεί ως τύπωσε σαν αριστερή έκφραση, αλλά δεν δέχεται τις λέξεις Πάνω, Μέρος, Υπό αλλά μόνο τις αγγλικές Over, Part, Under
κενό
#
Πάνω
Μέρος
Υπό
Λίστα Εκφράσεων2
σύμβολο @ προαιρετικό

Αριστερή Έκφραση
(εκτελεί την αρχική εντιλή, και όχι άλλη που έχει ίδιο όνομα και έχουμε φτιάξει)
Άγνωστο όνομα
μπορεί να έχει % στο τέλος
Δημιουργεί Γνωστό όνομα
=

Αριθμητική Παράσταση


Άγνωστο όνομα
που έχει $ στο τέλος
Δημιουργεί Γνωστό όνομα
=

Αλφαριθμητική Παράσταση


Άγνωστο όνομα με παρένθεση ( στο τέλος
Προαιρετικά μπορούν να υπάρχει
Όρισμα ή
ορίσματα

Παρένθεση )
Από το σημείο αυτό λογαριάζεται ως
Γνωστό όνομα
έτσι η συνέχεια είναι όπως περιγράφεται πιο πάνω
Άγνωστο όνομα με σύμβολο άνω και κάτω τελεία αμέσως μετά το όνομα, χωρίς διάστημα μεταξύ τους. Λέγεται Ετικέτα
Προαιρετικά Σημειώσεις
Αν δεν υπάρχουν σημειώσεις και ακολουθεί Όνομα τότε το πρώτο όνομα δεν είναι ετικέτα αλλά λογαριάζεται ως Γνωστό Όνομα χωρίς ορίσματα.
Ο τελεστής =
μπορεί να βρίσκεται ως Γνωστό όνομα
σε συναρτήσεις
Έκφραση
Λίστα Εκφράσεων (δημιουργείται πίνακας με τιμές)
Ετικέτα
Προαιρετικά Σημειώσεις

Γνωστό όνομα
(σε πρώτη θέση)


προαιρετικά σύμβολα λέγονται μεταλλάκτες όταν αλλάζουν κάτι στη λειτουργία της εντολής ή λέγονται τελεστές όταν αλλάζουν την τιμή της μεταβλητής, ανάλογα το τι είναι το Γνωστό όνομα.
Ορίσματα




Σύμβολο ; (σε ορισμένες μόνο περιπτώσεις αλλιώς βγαίνει λάθος).
Άγνωστο όνομα

Μπορεί να ακολουθεί μπλοκ εντολών


Μπορούν να
ακολουθούν εντολές σχετικές με το μπλοκ εντολών
Κενό
(να μην περιέχει τίποτα από τα δύο παραπάνω)
Γνωστό όνομα
(εκτός πρώτης θέσης)
σύμβολο & προαιρετικό μόνο για ειδικά ονόματα (μεταβλητές/συναρτήσεις)



αναγνωριστικό

Μπορεί να περιλαμβάνονται στο τέλος του αναγνωριστικού ένα από τα %,$, (, %(, $(

Ορίσματα
Όρισμα

προαιρετικό κόμμα

Αν υπάρχει κόμμα τότε
Ορίσματα
'Όρισμα
Έκφραση

σύμβολα
ή γνωστά ονόματα ή άγνωστα ονόματα που σχετίζονται με το Γνωστό Όνομα σε πρώτη θέση

σε περιπτώσεις που το σύμβολο πριν είναι το :=
ακολουθεί έκφραση

ομοίως σε μια εντολή υπάρχει και το σύμβολο = που ορίζει ότι ακολουθεί έκφραση.


? σημαίνει χωρίς όρισμα πάρε την εξ ορισμού τιμή


κενό
σημαίνει χωρίς όρισμα τώρα, πάρε ότι υπάρχει ήδη ορισμένο από πιο πριν.

Έκφραση
σύμβολα προαιρετικά
παράσταση
σύμβολα προαιρετικά
Λίστα Εκφράσεων
Έκφραση
κόμμα
Λίστα Εκφράσεων
Λίστα Εκφράσεων2
Έκφραση
ειδικές συναρτήσεις:
$()
@()
~()
κόμμα
ελληνικό ερωτηματικό
Λίστα Εκφράσεων2
ή
Κενό
Παράσταση
Αριθμητική Παράσταση
δίνει αριθμητικό αποτέλεσμα ή
μπορεί να δώσει αντικείμενο και το 0
Αλφαριθμητική Παράσταση
δίνει αλφαριθμητικό (ή το κενό αλφαριθμητικό) ή αντικείμενο.
Λογική Παράσταση (έχει αποτέλεσμα πάντα αριθμητικό, 0 ή -1)
Αριθμητική Παράσταση
προαιρετικά + ή -
όσα θέλουμε


Παρένθεση ( προαιρετικά
όσες θέλουμε
Αριθμητική ή Λογική παράσταση
ή
Αριθμητική Πράξη
ή
Απλή Αριθμητική Παράσταση

Παρένθεση ) αν έχει ανοιχτεί ήδη παρένθεση


Αριθμητική Πράξη
προαιρετικά + ή -
όσα θέλουμε
Αριθμητική Παράσταση
ή
Απλή Αριθμητική Παράσταση

προαιρετικά

Τελεστής
Πράξης
+ - * / ** ^
υπόλοιπο
υπόλοιπο#
υπολ, υπολ#
διά, δια#
<<
Αν υπάρχει τελεστής πράξης
Αριθμητική Παράσταση
ή
Απλή Αριθμητική Παράσταση
Απλή Αριθμητική Παράσταση
Γνωστό Όνομα
μπορεί να
έχει % στο τέλος του ονόματος
ή να έχει ( ή %(
ή
Αριθμός
ή
Αυτόματος Πίνακας
αν έχουμε το ( στο όνομα τότε μπορεί να ακολουθεί λίστα ορισμάτων
Παρένθεση ) αν έχει ανοιχτεί ήδη παρένθεση

Αλφαριθμητική Παράσταση

Απλή Αλφαριθμητική Παράσταση
ή
Αλφαριθμητική Παράσταση
προαιρετικά
+
αν υπάρχει +
θα πρέπει να υπάρχει
Αλφαριθμητικό
Απλή Αλφαριθμητική Παράσταση
Γνωστό Όνομα που έχει $ στο τέλος του ονόματος
ή έχει $(

αν έχουμε το $( τότε μπορεί να ακολουθεί λίστα ορισμάτων

Παρένθεση ) αν έχει ανοιχτεί ήδη παρένθεση


"Αλφαριθμητικό"
κενό αλφαριθμητικό ""
Μπλοκ Παραγράφου { }
Λογική Παράσταση
Παρένθεση ( προαιρετικά




Τελεστής
Όχι ή Δεν

Απλή Λογική Παράσταση
Ή
Λογική Παράσταση
Παρένθεση ) αν έχει ανοιχτεί ήδη παρένθεση

Απλή Λογική Παράσταση
Συνθήκη
ή
Αριθμητική Παράσταση
Τελεστές
Και Ή Από
(And Or Xor)

Συνθήκη
ή
Αριθμητική Παράσταση
Συνθήκη
Αριθμητική Παράσταση
Τελεστές
> < = <= >= <>
==
Αριθμητική Παράσταση
Αλφαριθμητική Παράσταση


Τελεστές
> < = <= >= <>
~
Αλφαριθμητική Παράσταση
Αυτόματος Πίνακας

παρένθεση (



έκφραση
και κόμμα
αν ακολουθεί έκφραση
παρένθεση )
ή
κόμμα και παρένθεση )
αν υπάρχει μόνο μια έκφραση
Τελεστές
Σύμβολα ή Γνωστά ονόματα
ενδέχεται να έχουν οριστεί τελεστές σε αντικείμενα ομάδα που δεν γυρνούν τιμή, οπότε το συντακτικό αναπρογραμματίζεται!


Παρασκευή 26 Μαΐου 2017

Παράδειγμα με διαμόρφωση τμημάτων (decoration)

Στο παράδειγμα έχουμε ένα τμήμα Εμφάνιση και έστω ότι είναι ένα ξένο τμήμα, στο οποίο γνωρίζουμε ότι δέχεται δυο αριθμούς και δίνει ένα αποτέλεσμα βάσει ενός τρόπου που καθορίζουμε με διαμόρφωση απ' έξω, δηλαδή του λέμε το τμήμα τρόπος που περιέχει ότι θα έχει μια άλλη λειτουργία. Αν δεν δώσουμε εξωτερικό τρόπο τότε το τμήμα το γνωρίζει με την χρήση μια γενικής που φτιάχνει τοπικά, άρα με θέαση μόνο εντός του τμήματος Εμφάνιση, και για ότι άλλο έχει εκεί, άρα και για τον τρόπο. Ο ορισμός γενικής Κ σκιάζει όποια γενική Κ υπήρχε μέχρι να τερματίσει το τμήμα.

Στη Μ2000 τα τμήματα δεν ελέγχουν τον αριθμό ορισμάτων στην κλήση, αλλά οφείλει ο προγραμματιστής να δει τι θα κάνει για αυτά. Τα ορίσματα κατά τη κλήση βρίσκονται σε ένα σωρό τιμών. Μπορούμε άμεσα να τα διαβάσουμε σε μεταβλητές. Αν έχουμε λάθος τύπο, θα βγει λάθος στο διάβασμα, Σε άλλες γλώσσες το πρόβλημα του λάθους βρίσκεται στην πλευρά της κλήσης, ενώ στη Μ2000 στη πλευρά του τμήματος που καλέστηκε. Αν ένα τμήμα δεν διαβάσει τα ορίσματα, και δεν πειράξει το σωρό τιμών τότε θα παραμείνουν εκεί.

Στο τμήμα Εμφάνιση αν δεν δώσουμε ορίσματα και δεν έχουμε επιλέξει τρόπο εξωτερικά με την χρήση της διαμόρφωσης, τότε ο εσωτερικός τρόπος θα πετάξει μέχρι δυο "οτιδήποτε", δηλαδή δυο στοιχεία (αυτό μπορεί να είναι κακό αν έχουμε τιμές που χρειαζόμαστε), και θα εμφανίσει σε όλο το πλάτος στήλης παύλες.  Μπορούμε βέβαια να δώσουμε τιμές το ? δυο φορές, δηλαδή το Εμφάνιση ?, ? που σημαίνει "αδιάφορο" αλλά ότι θα μπουν δυο "κάτι" στο σωρό, και αυτό είναι πιο σωστό!

Μετά φτιάχνουμε τμήματα που αναλογούν στον τρόπο. Δηλαδή διαβάζουν δυο τιμές (ορίσματα) σε δυο μεταβλητές (παραμέτρους) και εκτελούν έναν υπολογισμό βάζοντας το αποτέλεσμα στο σωρό.

Κάθε τμήμα κληρονομεί το πατρικό σωρό, και μπορεί να αφήνει τιμές σε αυτόν. Έτσι η εξαγωγή του ενός τμήματος γίνεται εισαγωγή για το επόμενο. Οι συναρτήσεις έχουν δικό τους σωρό τιμών, και αν έχουν δικά τους τμήματα τότε και αυτά κληρονομούν τον σωρό του πατρικού, εδώ της συνάρτησης.

Ουσιαστικά σωρός τιμών είναι ένα ρεύμα εισόδου/εξόδου, ως μια στοίβα, από την οποία διαβάζουμε και στην οποία βάζουμε τιμές (με την Βάλε στην κορυφή της, ενώ με την Σειρά βάζουμε στο τέλος της, ή στο πυθμένα)
Το Βάλε 5, 3 θα βάλει τελικά το 3 στην κορυφή και το 5 ένα κάτω από την κορυφή.
Το Σειρά 4,2 θα βάλει το 2 στο τέλος και το 4 ένα από το τέλος (ή πυθμένα της στοίβας, ή σωρού τιμών όπως την λέμε στη Μ2000).

Ο σωρός τιμών έχει ενδιαφέροντα χαρακτηριστικά, μπορεί να πάρει αριθμούς, αλφαριθμητικά, αντικείμενα, και στα αντικείμενα μπορεί να είναι αντικείμενα σωροί επίσης. Μια απλούστευση της ιδέας του σωρού είναι ότι έχουμε μια γραμμική διάταξη στοιχείων με δυνατότητα μετακίνησης χωρίς κόστος. Βάζουμε και βγάζουμε με μεγάλη ευκολία! Εδώ δεν μας ενδιαφέρουν άλλα χαρακτηριστικά και δεν θα δούμε άλλα. Αυτό που μας ενδιαφέρει είναι ότι εντολές για το σωρό εκτελούνται σε αυτό που λέμε τρέχον σωρός τιμών. Η Μέγεθος.Σωρού μας λέει πόσα στοιχεία έχει ο σωρός (ένας πίνακας εγγράφεται στο σωρό ως ένα στοιχείο, ενώ μπορεί να έχει χιλιάδες), δηλαδή πόσα είναι διατεταγμένα σε αυτόν. Η εντολή Πέτα χωρίς όρισμα είναι ισοδύναμη με την Πέτα 1, και θα πετάξει την κορυφή και το αμέσως επόμενο θα γίνει η νέα κορυφή. Αν δεν υπάρχει όμως στοιχείο να πετάξει θα βγάλει λάθος. Η Πέτα 0 δεν βγάζει λάθος. Μπορεί να φαίνεται άχρηστο αλλά στη θέση του 0 μπορούμε να έχουμε αριθμητική παράσταση, και να προκύπτει πότε 0 ή πότε κάτι άλλο.

Η Αριθμός τραβάει τη κορυφή του σωρού τιμών, αν έχουμε αριθμός αλλιώς βγάζει λάθος. Η Γράμμα$ δίνει το αλφαριθμητικό στη κορυφή του σωρού αλλιώς βγάζει λάθος.

Όταν καλούμε ένα τμήμα έστω εδώ την Εμφάνιση με ορίσματα έστω το 5 και το 7 τότε ο διερμηνευτής βάζει αυτά σε ένα σωρό πρόσκαιρο, με την εντολή Σειρά, δηλαδή το 7 θα είναι τελευταίο και μετά κάνει ένωση σωρών, βάζοντας τον πρόσκαιρο στη κορυφή του τρέχοντος σωρού. Έτσι το 5 θα είναι στη κορυφή, μετά το 7 και μετά ότι ήδη υπήρχε στο σωρό.

Στα τμήματα Διαίρεση, Γινόμενο, Σούμα. Διαφορά και Σούμα έχουμε βάλει λίστα παραμέτρων σε παρενθέσεις δίπλα από το όνομα (αλλά με διάστημα μεταξύ του ονόματος και της πρώτης παρένθεσης). Αυτή η λίστα παραμέτρων γράφεται ως Διάβασε χ, υ σε μια γραμμή που βάζει αυτόματα ο διερμηνευτής κατά την αποθήκευση του ορισμού (κώδικα) του τμήματος. Στο τμήμα Ακέραιοι δεν βάλαμε λίστα παραμέτρων, όχι γιατί δεν παίρνει αλλά για να φανεί και ο τρόπος με την Διάβασε.

Μετά φτιάχνουμε την ΝέαΕμφάνιση όπου εκεί βάζουμε και ένα στάδιο ακόμα, την προσαρμογή. Έχουμε μια Εμφάνισε εσωτερική που απευθείας δίνει τις παύλες όσο το μήκος στήλης εκτύπωσης στην οθόνη μας. Η Στήλη μας λέει πόσους χαρακτήρες έχει η στήλη. Αυτές καθορίζονται αυτόματα με την Φόρμα Χ, Υ αλλά μπορούμε να την αλλάξουμε, γιατί υπάρχει ως δεύτερη παράμετρος σε μια $(), μια εσωτερική συνάρτηση της Τύπωσε.

Στο παράδειγμα έχουμε το πρόσθετο τμήμα για προσαρμογή τιμών εισόδου, το οποίο διαβάζει αλφαριθμητικά και τα μετατρέπει σε αριθμούς, αλλά και άλλα όπως αυτό που μετατρέπει σε ακέραιες τιμές, καθώς και μια άλλη που κάνει στρογγυλοποίηση. Δεν είναι το ίδιο με τη προσαρμογή ακεραίου., διότι η Στρογγ(2.2, 0) στρογγυλοποιεί στο πενηνταράκι όπως λέμε ενώ ο Ακ() δίνει τον αμέσως μικρότερο ακέραιο.
Το Στρογγ(-2.2, 0) θα δώσει το -2, ενώ το Ακ(-2.2) θα δώσει το -3

Οι εικόνες είναι από linux με Wine. Αναφέρει ο διερμηνευτής ότι είναι Windows 7 επειδή αυτό δείχνει το Wine, και ορθώς αναφέρει ότι είναι 64bit το λειτουργικό γιατί 64bit είναι το Linux  στον υπολογιστή δοκιμής!
(ο χρωματισμός στον διορθωτή διαφέρει ανάλογα με το αν έχουμε σκούρο ή φωτεινό φόντο. Στην εξαγωγή σε Html (με απλή αντιγραφή στο πρόχειρο το κάνει) χρησιμοποιεί τον χρωματισμό που έχει οριστεί στις Ρυθμίσεις - υπάρχει τέτοια εντολή). Σε Linux την εξαγωγή σε html την διαβάζει το Libreoffice και το χρησιμοποιούμε ως ενδιάμεσο για να το ξανά αντιγράψουμε και μετά να το επικολλήσουμε στο Blogger εδώ, ενώ σε Windows δεν θέλουμε ενδιάμεσο.

Ο διορθωτής φαίνεται περιορισμένος στο κάτω τμήμα (ολίσθησης). Αν δώσουμε Οθόνη , 0 τότε η ολίσθηση θα πιάσει όλη την οθόνη και θα ανοίξει το παράθυρο του διορθωτή σε όλη την οθόνη (δεν γράφει πάνω στην οθόνη, αλλά σε δικό του χώρο, οπότε με Esc γυρνάμε στη κονσόλα και βλέπουμε ότι είχε). Με Οθόνη , -10 δηλαδή με αρνητικό το δεύτερο νούμερο λέμε να έχουμε ολίσθηση στις δέκα τελευταίες γραμμές, άρα δίνουμε δέκα γραμμές στον διορθωτή μαζί με την επικεφαλίδα (το πρώτο δεν το δίνουμε εδώ και είναι το χρώμα φόντου)
Με Ctrl +C  καθαρίζουμε την κονσόλα (είναι ίδιο με το CLS ή Οθόνη)





Τμήμα Εμφάνιση {
      Γενική Κ=Αληθές
      Τμήμα τρόπος {
            Αν Μέγεθος.Σωρού>=2 Τότε Πέτα 2
            Κ<=Ψευδές
      }
      τρόπος
      \\ το $(4)  βάζει αναλογική γραφή. το $(0) επαναφέρει σε μη αναλογική
      Αν Κ Τότε {
            Τύπωσε $("0.00"), $(4), Αριθμός
            Τύπωσε $(""),$(0),
      } Αλλιώς {
            Τύπωσε Επαν$("-", Στήλη)
      }
}
Εμφάνιση 10,2
Τμήμα Διαίρεση (χ,υ) {
      αν υ==0 Τότε Βάλε 0 : έξοδος
      Βάλε χ/υ
}
Τμήμα Γινόμενο (χ,υ) {
      Βάλε χ*υ
}
Τμήμα Διαφορά (χ, υ) {
      Βάλε χ-υ
}
Τμήμα Σούμα (χ,υ) {
      Βάλε χ+υ
}
Εμφάνιση 5, 7 ; τρόπος ως διαίρεση
Εμφάνιση 5, 7 ; τρόπος ως γινόμενο
Εμφάνιση 5, 7 ; τρόπος ως διαφορά
Εμφάνιση 5, 7 ; τρόπος ως σούμα
Τμήμα ΑριθμοίΩςΧαρακτήρες {
      Διάβασε α$, β$
      Βάλε Τιμή(β$),Τιμή(α$)
}
Τμήμα ΝέαΕμφάνιση {
      Τμήμα Προσαρμογή {}
      Τμήμα Εμφάνιση {
            Τύπωσε Επαν$("-", Στήλη)
      }
      Προσαρμογή
      Εμφάνιση ; τρόπος
}
ΝέαΕμφάνιση "5", "7" ; Εμφάνιση, τρόπος ως σούμα, προσαρμογή ως ΑριθμοίΩςΧαρακτήρες
ΝέαΕμφάνιση 5, 7 ; Εμφάνιση, τρόπος ως γινόμενο
Τμήμα ΕμφάνισηΩςΧαρακτήρες {
      Γενική Κ=Αληθές
      Τμήμα τρόπος {
            Αν Μέγεθος.Σωρού>=2 Τότε Πέτα 2
            Κ<=Ψευδές
      }
      τρόπος
      Αν Κ Τότε {
            Τύπωσε $(4),Γραφη$(Αριθμός, "0.00")
            Τύπωσε $(0),
      } Αλλιώς {
            Τύπωσε Επαν$("-", Στήλη)
      }
}
ΝέαΕμφάνιση 5, 7 ; Εμφάνιση ως ΕμφάνισηΩςΧαρακτήρες, τρόπος ως διαίρεση
Τμήμα Ακέραιοι {
      Διάβασε χ, υ
      Βάλε Ακ(υ), Ακ(χ)
}
Τμήμα ΑκέραιοιΜεΣτρογγυλοποίηση {
      Διάβασε χ, υ
      Βάλε Στρογγ(υ,0), Στρογγ(χ,0)
}
ΝέαΕμφάνιση 5.5, 7.8 ; Εμφάνιση, τρόπος ως σούμα, προσαρμογή ως ακέραιοι
ΝέαΕμφάνιση 5.5, 7.8 ; Εμφάνιση, τρόπος ως σούμα, προσαρμογή ως ΑκέραιοιΜεΣτρογγυλοποίηση
ΝέαΕμφάνιση 5.5, 7.8 ; Εμφάνιση, τρόπος ως σούμα
Τμήμα ΕμφάνισηΜεΜονάδες {
      Γενική Κ=Αληθές
      Τμήμα τρόπος {
            Αν Μέγεθος.Σωρού>=2 Τότε Πέτα 2
            Κ<=Ψευδές
      }
      τρόπος
      Αν Κ Τότε {
            Τύπωσε $(7),Γραφη$(Αριθμός, "0.00 ")+Γράμμα$
            Τύπωσε $(0),
      } Αλλιώς {
            Τύπωσε Επαν$("-", Στήλη)
      }
}
ΝέαΕμφάνιση
ΝέαΕμφάνιση 5,7, "Km" ; Εμφάνιση ως ΕμφάνισηΜεΜονάδες, τρόπος ως γινόμενο
ΝέαΕμφάνιση 5,7, "Km" ; Εμφάνιση ως ΕμφάνισηΜεΜονάδες, τρόπος ως σούμα
ΝέαΕμφάνιση