Γλώσσα Προγραμματισμού Μ2000 έκδοση 8

Ξεκίνησε από bugman, 24 Ιουλ 2015, 11:59:33 ΜΜ

« προηγούμενο - επόμενο »

bugman

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

Για όσους ασχολούνται με την M2000, όχι μόνο ως εκπαιδευτικό εργαλείο, αλλά και για χρήσιμες άλλες δουλειές:

Ανέβασα ένα ωραίο παράδειγμα (κάνε click εδώ), δουλεύει στην Αναθεώρηση 4, Έκδοση 10 (κατέβασέ την από εδώ). Σε αυτό το παράδειγμα χρησιμοποιώ την εκτύπωση, σε pdf που γίνεται μέσω του εκτυπωτή (βγάζει pdf ασυμπίεστο). Στην αναθεώρηση 4 έκανα διορθώσεις στο τρόπο χειρισμού (έγινε έλεγχος στα Windows 10).

Το παράδειγμα έχει δυο προγράμματα:
Το πρώτο δείχνει πως ανοίγουμε ένα xlsx αρχείο, το οποίο έχει προέλθει από το Autodesk Inventor, είναι πραγματικό αρχείο από βιομηχανία. Το αρχείο δίνεται για να τρέξετε το παράδειγμα. Η εξαγωγή του προγράμματος φαίνεται και σε εικόνα.

Για να ανοίξουμε ένα αρχείο του Excel, μπορούμε αν έχουμε το Excel να ανοίξουμε ένα αντικείμενο (το πρόγραμμα) και να χειριστούμε το αντικείμενο, κάνοντας αυτό που λέμε office automation. Στο παράδειγμα δεν κάνουμε αυτό! Επειδή δεν έχω το MS Office στον υπολογιστή μου, έχω το LibreOffice, κάνω κάτι άλλο: Ανοίγω το excel αρχείο ως βάση δεδομένων. Πώς γίνεται αυτό; Υπάρχει ένα σύστημα που λέγεται ODBC, ή Open Database Connectivity. Μέσω λοιπόν του οδηγού (έτσι τον λέμε) ODBC θα ανοίξω το αρχείο parts.xlsx.
Υπάρχει ένα θέμα με το αρχείο αυτό: Σε κάποιες στήλες οι τιμές είναι κείμενο ή αριθμοί. Μια βάση δεδομένων ορίζει σε στήλες (πεδία) έναν μόνο τύπο. Οπότε το έχουν προβλέψει αυτό οι "μάστορες" και στο λεγόμενο connection string (αλφαριθμητικό σύνδεσης) που δίνουμε ως παράμετρο για την ανάγνωση του αρχείου προσθέτουμε τον όρο/εντολή που επιτρέπει την αλλαγή σε κείμενο των στηλών με μπερδεμένους τύπους!

Βασική ενέργεια για να διαβάσουμε το excel αρχείο είναι να μάθουμε ποια είναι τα πεδία και τι τύπο έχουν. Ενώ λοιπόν του έχουμε δηλώσει ότι θέλουμε τα πεδία σε κείμενο, το σύστημα ανάγνωσης για μια στήλη που την βρίσκει όλη με αριθμούς την δίνει με τύπο αριθμό!

Υπάρχουν πολλά connection strings ανάλογα τι θέλουμε να πετύχουμε, για το excel αρχείο. Στο συγκεκριμένο αρχείο δεν έχουμε τύπους, όλα είναι δεδομένα εξαγόμενα από το Inventor, το CAD πρόγραμμα, και αποτελούν τα μέρη (parts) μιας κατασκευής.

Στο πρόγραμμα φαίνεται πως κάνουμε αναζητήσεις. Ενώ υπάρχουν και σύνθετα SQL ερωτήματα εδώ δίνουμε ότι πιο απλό και κάνουμε τις ομαδοποιήσεις μετά με κώδικα της Μ2000.

Το δεύτερο πρόγραμμα διαβάζει το αρχείο και εκτυπώνει σε Α4, σε οποιοδήποτε εκτυπωτή. Υπάρχει ένα αρχείο zip με την εξαγωγή σε pdf (19 σελίδες).

Οι εκδόσεις πριν την 10 έστελναν μια μια τη σελίδα στον εκτυπωτή, οπότε για Pdf δεν έκανε καλή δουλειά, αφού θα έπρεπε να δίνουμε νέο αρχείο για κάθε σελίδα!

bugman

Θα έπρεπε να υπήρχε ένα μάθημα Computer Graphics, στο λύκειο. Υπάρχουν πολλά θέματα για να ασχοληθεί κανείς!
Έτυχε να ασχοληθώ με την καμπύλη Πεάνο, η οποία γεμίζει το χώρο (μια επιφάνεια) με μια μονοκοντυλιά.

Μπορεί κανείς όμως να πάρει αυτή την καμπύλη και να δημιουργήσει Computer Art, τέχνη δηλαδή, εφαρμόζοντας αλγόριθμο που να αλλοιώνει και να προσθέτει χρώματα στην καμπύλη!

Σχετικά με το θέμα υπάρχει στο Blog μου, καθώς και εδώ:
Υλοποίηση της βασικής καμπύλης: http://rosettacode.org/wiki/Peano_curve
Και εδώ: https://en.wikipedia.org/wiki/Peano_curve (υπάρχει και σε ελληνική γλώσσα)

Δείτε τη συνημμένη εικόνα (δημιούργημα με πρόγραμμα σε Μ2000)

bugman

Έγραψα τα τέσσερα πρώτα κεφάλαια, του βιβλίου Μαθαίνω Προγραμματισμό.
Δείτε Εδώ
Γράψτε την άποψη σας για το αν προχωράει γρήγορα, και σε ποιες ηλικίες θα μπορούσε να χρησιμοποιηθεί.
Περιμένω σχόλια.

dpa2006

Καλησπέρα και ευχαριστούμε! :)
Αφού το διαβάσουμε να κάμουμε σχόλια επί του κειμένου...?
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

bugman

Πρόσθεσα και το 5ο κεφάλαιο μόλις τώρα! Δώδεκα σελίδες!
Εννοείται για τα σχόλια, να γίνουν!

bugman

Προστέθηκαν 2 κεφάλαια ακόμα, συνολικά 7 κεφάλαια!
Περιμένω τα σχόλια!

dpa2006

Καλησπέρα και χρόνια πολλά.
Ευχαριστώ για την απάντηση! :)
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

bugman

@dpa2006,
Το βιβλίο έφτασε στα 9 κεφάλαια. Το 9ο έφτασε τις 19 σελίδες.
Μαθαίνω Προγραμματισμό
Το κατάβεσες;

dpa2006

Παράθεση από: bugman στις 09 Ιαν 2021, 07:56:23 ΜΜ
@dpa2006,
Το βιβλίο έφτασε στα 9 κεφάλαια. Το 9ο έφτασε τις 19 σελίδες.
Μαθαίνω Προγραμματισμό
Το κατάβεσες;
Ναι μόλιις τώρα...!!!
Καλή Χρονιά!
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

oldBugman

Η Μ2000 είναι μια γλώσσα που τρέχει σε ένα δικό της περιβάλλον (μια εφαρμογή). Φτιάχτηκε για εκπαιδευτικούς σκοπούς. Τα πλεονεκτήματα της γλώσσας είναι:

Εύκολη εγκατάσταση χωρίς εξαρτήσεις, από Xp μέχρι και Windows 10. Τρέχει και σε Wine σε Linux. Σε κάθε λειτουργικό η εμφάνιση του περιβάλλοντος, τόσο της δικής του κονσόλας όσο και της γραφικής διεπαφής είναι ίδια.

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

Οι δυνατότητες του περιβάλλοντος είναι αρκετές για να χρησιμοποιηθεί για κείμενο, γραφικά, εικόνες, διαφάνειες (sprites), ήχο, βίντεο, μουσική με νότες, γραφικό περιβάλλον χρήστη (φόρμες με στοιχεία ελέγχου).

Η γλώσσα έχει ως βάση την BASIC, μια παλιά γλώσσα που χρησιμοποιήθηκε πολλά χρόνια στην εκπαίδευση. Ωστόσο είναι πάρα πολύ αναπτυγμένη, με αντικείμενα και συναρτήσεις λάμδα (συναρτήσεις ως πρώτος πολίτης όπως λέγονται).


Μπορούμε να έχουμε απλά προγράμματα με αριθμούς γραμμών και GOTO (ΠΡΟΣ στα ελληνικά). Μπορούμε να έχουμε προγράμματα με διαδικασίες (SUB ή ΡΟΥΤΙΝΑ) οι οποίες βλέπουν τις μεταβλητές του τμήματος που υπάρχουν και μπορούν να έχουν τοπικές μεταβλητές (Όπως στη BBC BASIC, αλλά και στη C, C++). Μπορούμε να έχουμε προγράμματα με Τμήματα (MODULES) και Συναρτήσεις (FUNCTIONS), στα οποία να υπάρχουν άλλα τμήματα και συναρτήσεις, και όλες οι μεταβλητές να είναι τοπικές εξ ορισμού (Ένα τμήμα πχ ΠΡΟΓΡΑΜΜΑ και μερικά τμήματα εσωτερικά δουλεύουν όπως στη ΓΛΩΣΣΑ δηλαδή δεν υπάρχει θέαση μεταβλητών από ένα εσωτερικό τμήμα στο ΠΡΟΓΡΑΜΜΑ).

Η γλώσσα Μ2000 περιλαμβάνει πίνακες όπως η ΓΛΩΣΣΑ αλλά και τους αυτόματους πίνακες (Tuple) όπως πχ το (1,2,3,4) και το (1,) με ένα στοιχείο και το (,) ως μηδενικού μήκους πίνακας, και το ((1,2),(3,4)) ως πίνακας με δυο πίνακες ως στοιχεία. Υπάρχουν έτοιμες συναρτήσεις τύπου LINQ.

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

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

Προγραμματισμός με γεγονότα. Εκτός από το αντικείμενο γεγονός (λίστα συναρτησεων) που είναι ανάλογο του delegate της C#, οι ομάδες μπορούν να έχουν γεγονότα καθώς και διάφορα αντικείμενα COM που συνδέουμε στη γλώσσα κατά την εκτέλεση (ένα παράδειγμα γι' αυτό είναι η χρήση του αντικειμένου SAPI της Microsoft για να διαβάζουμε κείμενα, και με τη χρήση γεγονότων μπορούμε να εμφανίζουμε λέξη προς λέξη το κείμενο καθώς αυτό ακούγεται). Τέλος γεγονότα χρηιμοποιούμε και με το παραθυρικό περιβάλλον χρήστη. Το παραθυρικό περιβάλλον δημιουργείται πολύ εύκολα, με απλό κώδικα, με στοιχεία διάφορων τύπων όπως Button, Listbox, Editbox κ.α.

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

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

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

Το καλό με τη Μ2000 είναι ότι οι εντολές είναι ατα Ελληνικά (ταυτόχρονα μπορούμε να χρησιμοποιούμε και τις ίδιες εντολές στα αγγλικά). Για κάθε εντολή υπάρχει άμεση βοήθεια (και στα ελληνικά για τις ελληνικές και στα αγγλικά για τις αντίστοιχες αγγλικές). Επιπλέον υπάρχουν βιβλία που μπαίνουν κατά την εγκατάσταση, ένα ελληνικό και ένα αγγλικό.  Υπάρχουν ήδη δυο άλλα βιβλία, στα ελληνικά, ένα για προγραμματισμό με αντικείμενα και ένα άλλο με εννιά κεφάλαια για να μάθει κανείς προγραμματισμό με τη Μ2000 (καλύπτονται πολλά θέματα).

Κατά την εγκατάσταση μπαίνει και ένα πρόγραμμα το info το οποίο έχει έναν μεγάλο αριθμό τμημάτων (ανεξάρτητα προγράμματα), τα περισσότερα με αγγλικές εντολές. Το μεγαλύτερο τμήμα στο Info έχει 1000+ γραμμές εντολών, και είναι το σκάκι, το οποίο όπως γράφουν μέσα οι σημειώσεις (στο κώδικα) μπορούμε να το συνδέσουμε με μια μηχανή σκακιού (παίζει με τα μαύρα).

Οι προτάσεις περί python, javascript και ότι άλλο γενικού σκοπού (ως γλώσσες παραγωγής, ή γλώσσες τύπου κόλλα - glue), έχουν πολλά μειονεκτήματα για το σχολείο. Κύριο είναι ότι οι γλώσσες αυτές καλό είναι να διδάσκονται από καθηγητές πανεπιστημίου σε φοιτητές. Δεν κάνουν για νέες ηλικίες. Το πλεονέκτημα με τη Μ2000 είναι ότι αυτή η γλώσσα θα χρησιμοποιηθεί για το σχολείο, οπότε οποιαδήποτε παρανόηση δεν θα "δηλητηριάσει" τη σκέψη του φοιτητή (στη τριτοβάθμια εκπαίδευση).

Στο τεχνικό - επαγγελματικό λύκειο ασφαλώς η χρήση γλωσσών όπως python, c, c++, javascript επιβάλλεται ως σκοπός της επαγγελματικής μόρφωσης. Στο γενικό λύκειο όμως αυτές οι γλώσσες δεν κάνουν και για το λόγο αυτό έχει ως σήμερα χρησιμοποιηθεί η ΓΛΩΣΣΑ.

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


Ρίξτε μια ματιά στη γλώσσα Μ2000, αυτό το καλοκαίρι. Διαβάστε τα βιβλία της (όλα είναι δωρεάν σε pdf που ανοίγουν και ως odf - στο openoffice). Οι γλώσσες, οι"επαγγελματικές", δεν κάνουν για τη γενική εκπαίδευση. Αυτές μπορούν ίσως να καλυφθούν σε προαιρετικά μαθήματα όπως η c++ του Arduino (ελάχιστα στοιχεία της c++ χρειάζονται για εφαρμογές στο Arduino).






dpa2006

Bugman καλημέρα,
λόγω υποχρεώσεων δεν μπόρεσα να διαβάσω το βιβλίο,όμως το ξεφύλλισα...
Με τη λήξη των μαθημάτων θα αρχίσω να το διαβάζω.
Σε γενικές γραμμές δεν έχω να παρατηρήσω κάτι.
Ως προς το θέμα της γραφής και του λόγου δεν είμαι ειδικός,ένας φιλόλογος θα σε βοηθούσε περισσότερο.
Θα ήθελα να δω να κυκλοφορεί το βιβλίο σε ηλεκτρονική και hard copy μορφή.
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

oldBugman

#116
Προς το παρόν υπάρχουν τρία βιβλία εδώ (περιλαμβάνει και το Μαθαίνω Προγραμματισμό)
Ηλεκτρονική μορφή από το eBooks4Greeks

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

dpa2006

Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

oldBugman

Στα αγγλικά λέγεται απλά Ranking. Στα ελληνικά η λέξη αποδίδεται ως κατάταξη αλλά έχει περισσότερο νόημα αν το πούμε αριθμητική αξιολόγηση.

Στο https://en.wikipedia.org/wiki/Ranking της Wikipedia δεν υπάρχει ελληνική απόδοση του κειμένου (κανένας μαθηματικός ή πληροφορικός δεν φιλοτιμήθηκε ακόμα να το συμπληρώσει)

Στη http://rosettacode.org/wiki/Ranking_methods υπάρχουν προγράμματα σε διάφορες γλώσσες που δίνουν το παρακάτω αποτέλεσμα. Δείτε ότι αλλάζει μόνο ο αριθμός δίπλα σε κάθε γραμμή με ζευγάρια τιμή - όνομα.

Θα μπορούσε να γίνει με ΓΛΩΣΣΑ αλλά θέλει κόπο!

Standard ranking:
    1 Solomon (44)
    2 Jason (42)
    2 Errol (42)
    4 Garry (41)
    4 Bernard (41)
    4 Barry (41)
    7 Stephen (39)
Modified ranking:
    1 Solomon (44)
    3 Jason (42)
    3 Errol (42)
    6 Garry (41)
    6 Bernard (41)
    6 Barry (41)
    7 Stephen (39)
Dense ranking:
    1 Solomon (44)
    2 Jason (42)
    2 Errol (42)
    4 Garry (41)
    4 Bernard (41)
    4 Barry (41)
    7 Stephen (39)
Ordinal ranking:
    1 Solomon (44)
    2 Jason (42)
    3 Errol (42)
    4 Garry (41)
    5 Bernard (41)
    6 Barry (41)
    7 Stephen (39)
Fractional ranking:
  1.0 Solomon (44)
  2.5 Jason (42)
  2.5 Errol (42)
  5.0 Garry (41)
  5.0 Bernard (41)
  5.0 Barry (41)
  7.0 Stephen (39)