Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

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

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

Για να τρέξει το περιβάλλον χρειάζεται μόνο ένα αρχείο το m2000.exe (το οποίο είναι υπογεγραμμένο, και υπάρχει και το ca.crt ως ριζικό αρχείο αν θέλει κανείς να ενημερώσει τα windows για την υπογραφή). Όμως καλό είναι να υπάρχει μαζί το helpM2000.mdb το αρχείο με την βοήθεια στα Ελληνικά και Αγγλικά.

 

Έχω Blog στο οποίω δημοσιεύω προγράμματα που τρέχουν στο περιβάλλον της γλώσσας

georgekarras   blogspot gr (δεν το βάζω με σύνδεση για να μην κάνω referral link στο blog μου).

Τα παραπάνω αρχεία και ο κώδικας της γλώσσας (σε visual basic 6) παρέχονται μαζί σε φάκελο από το Dropbox (όπου μπαίνουν οι νέες αναθεωρήσεις). Το φάκελο αυτό το βρίσκουμε από το "Κώδικας Γλώσσας" στη σελίδα στο blog.

 

Λίγα λόγια για τη γλώσσα:

Η γλώσσα είναι διερμηνευτής που τρέχει σε δικό του περιβάλλον. Τα αρχεία που χρησιμοποιεί είναι αρχεία κειμένου σε Utf8. Όλες οι εντολές είναι και σε αγγλικά και σε ελληνικά. Η γλώσσα δεν είναι wrapper μιας άλλης γλώσσας, αλλά είναι πρωτότυπη, δηλαδή έχει στοιχεία που δεν έχουν άλλες γλώσσες (όπως και το ανάποδο, δεν έχει στοιχεία που έχουν άλλες γλώσσες). Αυτό που σίγουρα έχει είναι ότι πλησιάζει το 99% της Basic, Ενώ η Basic δεν φτάνει ούτε το 20% από την Μ2000. Και αυτό γιατί η Μ2000 έχει αντικείμενα, που η Basic δεν έχει (τέτοια αντικείμενα δεν έχει ούτε η VB6 στην οποία έχει γραφτεί η γλώσσα).

Υπάρχουν όρια στην απόδοση, όπως για παράδειγμα οι συναρτήσεις δεν μπορούν να περάσουν τις 128 συνεχόμενες κλήσεις στην αναδρομή, ενώ οι ρουτίνες μπορούν να έχουν όσο θέλουμε (βάζουμε όμως όριο αν θέλουμε). Ένα άλλο όριο είναι ότι πίνακες μπορούν να έχουν μέχρι δέκα διαστάσεις (αρκετές πιστεύω). Οι μεταβλητές έχουν ότι χαρακτήρες θέλουμε (και όσους θέλουμε) αλλά το πρώτο να είναι γράμμα και εξαιρούνται κάποια σύμβολα που έχουν νόημα όπως το ίσον. Όμως όσο μεγαλύτερα είναι τα ονόματα τόσο επιβαρύνουμε το διερμημευτή (αφού τα χειρίζεται ως έχουν και όχι με διπλή μετάφραση, σε κάτι πιο απλό). Τα αλφαριθμητικά είναι σε UTF16LE αλλά όπως στα Windows, δηλαδή δυο μόνο bytes ανά χαρακτήρα, όπως το UCS-2. Οι πραγματικοί είναι double και οι ακέραιοι είναι double χωρίς δεκαδικά! Υπάρχουν οι Long (Μακρύς) που είναι πραγματικός ακέραιος 32bit. Επίσης υπάρχει το Έγγραφο που εσωτερικά είναι λίστα συνδεδεμένων αλφαριθμητικλων (ανά παράγραφο). Τέλος υπάρχουν δυο τύποι αντικειμένων η ομάδα και το όρισμα (το τελευταίο είναι ένα κανονικό COM αντικείμενο, π.χ. μπορεί να είναι το Word)

 

Εκτός από τις κλασικές εντολές, υπάρχουν άλλες για γραφικά, εικόνες, βάσεις δεδομένων και πολυμέσα.

 

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

Γράφουμε εντολές με τόνους! Π.χ. Τύπωσε 10*3, 10 δια 4     ' εδώ το διά είναι η ακέραια διαίρεση

 

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

 

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

 

Εκτός όμως από εφαρμογές για παιδιά μπορεί κανείς να κάνει και πιο προχωρημένα πράγματα, όπως να φτιάχνει παιχνίδια με sprites (διαφάνειες, software sprites) ή και players (παίκτες, ως hardware sprites), να παίζει μουσική (έχει εντολές που παίζουν νότες που δίνουμε ως παρτιτούρα παράλληλα με την εκτέλεση του προγράμματος. με χρήση μέχρι δεκαέξι φωνών, ουσιαστικά καθοδηγούμε το midi συνθεσάιζερ του υπολογιστή). Και άλλα πολλά που δεν θέλω να κουράσω.

 

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

 

Μια απλή απάντηση λοιπόν στο "γιατί τη Μ2000" είναι στο δες και σκέψου αυτό που ο άλλος το ετοίμασε στο περιβάλλον, πώς θα το ετοιμάσεις στη Python; Π.χ. στην Μ2000 μπορείς να εμφανίζεις κείμενο με αναλογική γραφή και σε πλήρη στοίχιση...Έχει η Python τέτοια εντολή; Όχι απλά πρέπει να βρει κανείς τη βιβλιοθήκη να μάθε π,.χ. προγραμματισμό σε GTK και ...τελικά τίποτα δεν γίνεται...θες τρία εξάμηνα μελέτη για να κάνεις αυτό που έχω έτοιμο! Ασφαλώς με τη C++ κάνεις τα πάντα, αν έχεις χρόνο και είσαι κλάσης προγραμματιστής, ενώ αν δεν είσαι δεν κάνεις τίποτα.

 

Η Μ2000 φτιάχτηκε για εκείνον που βλέπει τις άλλες γλώσσες και τις παρατάει αμέσως διότι δεν ξέρει τι είναι "τούτα" τα wprintf,

Η Μ2000 έχει το όμοιο με τη Basic

Για ι=1 έως 1000
Τύπωσε ι
Επόμενο ι

 

Αλλά και το πιο γρήγορο

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

Οι αγκύλες είναι το μπλοκ εντολών.

 

Αυτά για την ώρα. 

Για οποιαδήποτε σκέψη ή ιδέα ας τη συζητήσουμε εδώ!

Γ.Κ.

Επεξ/σία από M2000
  • Like 4
  • Moderators
Δημοσ.
Γράφουμε εντολές με τόνους!

 

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

 

 

 

Στα υπέρ της γλώσσας είναι ότι έχει ότι χρειάζεται, δεν κάνει το χρήστη να ψάχνει για βιβλιοθήκες.

 

Το να γράψω 5-10 include/import/using/whatever δε νομίζω ότι βάζει κάνα τρελό overhead.

 

 

 

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

 

...

Δεν έχω ασχοληθεί σχεδόν καθόλου με Python, αλλά το να κατεβάσω ένα IDE και να ξεκινήσω τι διαφορά έχει από το να κατεβάσω το executable της Μ2000;

 

Κοίταξα το blog με βίντεο και παραδείγματα και αυτό που είδα είναι ένα περιβάλλον από εποχές προ 2000, με κώδικα εξαιρετικά δυσανάγνωστο και μπερδευτικό με ένα σωρό εντολές που ακόμη και αν προσπαθούσα να τις μεταφράσω στα Αγγλικά (γιατί με τα Ελληνικά μου βγαίνει το μάτι) δε θα καταλάβαινα τι γινόταν.

 

Ειλικρινά δεν καταλαβαίνω γιατί κάποιος μικρός σε ηλικία ή/και αρχάριος να ξεκινήσει με αυτή τη γλώσσα αντί της Python ή ακόμα και της Scratch. Τι πλεονεκτήματα έχει και πώς διευκολύνει;

 

Τέλος, μια καθαρά προσωπική γνώμη/προτίμηση. Δε μπορώ κώδικα γραμμένο στα Ελληνικά. Μπορεί να μου έχει μείνει απωθημένο απ' το Λύκειο, αλλά δυσκολεύομαι πολύ περισσότερο να κατανοήσω κώδικα γραμμένο στα Ελληνικα.

  • Like 3
Δημοσ.

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

Ε; :mellow:

  • Moderators
Δημοσ.

Δεν πιστευω πισω από αυτό το νικ να κρυβεται ο θρυλικοs Ντελαπόρτας :D

 

Όχι, του Δελαπόρτα θα ήταν στο cloud, δε θα κατέβαζες τίποτα.

  • Like 4
Δημοσ. (επεξεργασμένο)

Kercyn:

Οι τόνοι στις λέξεις είναι προαιρετικοί. Όλο το λεξιλόγιο είναι και στα Αγγλικά. Το θέμα με τις εξωτερικές βιβλιοθήκες δεν είναι οι αναφορές σε μια γραμμή αλλά η χρήση τους. Η γνώση αυτή είναι ανεκτή για επαγγελματίες αλλά βαριά για μαθητές. Δεν αναφέρομαι για τις βασικές εισόδου εξόδου. Πες ότι θες να φτιάξεις αυτό (να περιστρέφεται το σχήμα και τα μικρά πολύγωνα μαζί)...Διάλεξε γλώσσα και περιέγραψέ μου τι θα κάνεις!

 

polikes.png

Επεξ/σία από M2000
  • Moderators
Δημοσ.

 

 

Το θέμα με τις εξωτερικές βιβλιοθήκες δεν είναι οι αναφορές σε μια γραμμή αλλά η χρήση τους.

Μα έχει διαφορά αν η συνάρτηση που θα καλέσεις είναι από βιβλιοθήκη ή όχι; Και πάλι δεν πρέπει να μάθεις πώς γίνεται αυτό που θες να κάνεις;

 

 

 

Διάλεξε γλώσσα και περιέγραψέ μου τι θα κάνεις!

C++ και OpenGL γιατί με αυτά έχω ασχοληθεί και έχω την περισσότερη ευχέρεια. Αλλά ούτε η C++ ούτε η OpenGL φημίζονται για την ευκολία τους και τη φιλικότητά τους προς άτομα που δεν έχουν ξανασχοληθεί με προγραμματισμό. Είμαι σίγουρος ότι μπορεί να γίνει πολύ πιο εύκολα (όπου εύκολα = με λιγότερα και πιο απλά βήματα) από άλλες γλώσσες/εργαλεία που προσφέρουν υψηλότερου επιπέδου συναρτήσεις από την OpenGL.

Δημοσ. (επεξεργασμένο)

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

 

Η C++ για να στήσεις εφαρμογή παίρνεις μια βιβλιοθήκη για 2D γραφικά Να μια εντολή:

SDL_Delay(1000);

Στη Μ2000 είναι Αναμονή 1000 ή αγγλικά Wait 1000. Δεν βλέπουμε πολλές διαφορές.

Πώς θα γράψουμε ελληνικά στην οθόνη μας; Να βάλουμε true type fonts, τίποτα λιγότερο.

Βλέπουμε εδώ τον τρόπο να κάνουμε SetUp για TTF στην C++. Περιγράφεται ως εύκολος τρόπος!

http://www.lazyfoo.net/tutorials/SDL/16_true_type_fonts/index.php

Φοβερό!

Άντε να το δείξεις στο μπόμπιρα! Και δεν πάει για μπάλα;

 

Ενώ αυτό δεν είναι πιο ωραίο;

πένα #7700ff
ποιότητα = αληθής
κέντρο = 2
οθόνη #fccbb7, 0 \\ ακύρωση τυχόν διαχωρισμού οθόνης
διπλα : Αναφορά κέντρο, "Παράδειγμα Επιγραφής" : κανονικα
οθόνη #efbbf7, 2 \\ διαχωρισμός οθόνης από τη τρίτη γραμμή (0 και 1 είναι οι δυο πρώτες)
θέση 6000,6000
παλιά_τιμή_Φ = Φαρδιά
παλιά_τιμή_Π = Πλάγια
Φαρδιά 1 : Πλάγια 1
Πένα #224488 { \\ χρώμα γύρω από τα γράμματα
      Πάχος 3 {
           Χρώμα #ff55aa { \\ χρώμα μέσα στο σχήμα, εδώ είναι η Επιγραφή.
                        Επιγραφή  {Γειά σου
                        Το όνομά μου είναι Γιώργος
                        }"Arial Black", 48, pi/6, κέντρο, ποιότητα, -30
                        \\ π.χ.  60 twips είναι 4 pixels στα 15 dpi οθόνης η 5 pixels στα 12 dpi
           }
   }
}
Πλάγια παλιά_τιμή_Π : Φαρδιά παλιά_τιμή_Φ
θέση 12000, 6000
Επιγραφή  {Γειά σου
Το όνομά μου είναι Γιώργος}, "Arial Black", 40, pi/6, κέντρο, ποιότητα

α$=κομ$ \\ περιμένει ένα πλήκτρο να πατηθεί, πριν τελειώσει το πρόγραμμα

 

fonts.png


Δεν ξέρω γιατί δεν μπήκε με χρώμα ο κώδικας...ενώ το είχα βάλει με χρώμα;

Επεξ/σία από M2000
  • Like 1
Δημοσ.

 

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

 

Μια απλή απάντηση λοιπόν στο "γιατί τη Μ2000" είναι στο δες και σκέψου αυτό που ο άλλος το ετοίμασε στο περιβάλλον, πώς θα το ετοιμάσεις στη Python; Π.χ. στην Μ2000 μπορείς να εμφανίζεις κείμενο με αναλογική γραφή και σε πλήρη στοίχιση...Έχει η Python τέτοια εντολή; Όχι απλά πρέπει να βρει κανείς τη βιβλιοθήκη να μάθε π,.χ. προγραμματισμό σε GTK και ...τελικά τίποτα δεν γίνεται...θες τρια εξάμηνα μελέτη για να κάνεις αυτό που έχω έτοιμο! Ασφαλώς με τη C++ κάνεις τα πάντα, αν έχεις χρόνο και είσαι κλάσης προγραμματιστής, ενώ αν δεν είσαι δεν κάνεις τίποτα.

 

bullshit_everywhere-e1345505471862.jpeg

  • Like 1
  • Moderators
Δημοσ.

Μα η SDL δεν είναι για να μαθαίνει ο μπόμπιρας να ζωγραφίζει γραμματάκια στην οθόνη (και εκτός αυτού υπάρχει πιο απλός τρόπος να δείξεις SDL TTF στην οθόνη, απλώς ο Lazy Foo τα γράφει όλα αναλυτικά και προσπαθεί να γράφει reusable κώδικα απ' το να βάζει 10 γραμμές).

 

Παρόλο που δεν είμαι στο target group της γλώσσας, δε μου φαίνεται καθόλου απλό. Μου φαίνεται ότι πρέπει να απομνημονεύσεις πάρα πολλά πράγματα για να κάνεις κάτι τόσο απλό. Επίσης δεν καταλαβαίνω γιατί να σχεδιάσεις GUI με κώδικα (για μια γλώσσα που έχει καθαρά εκπαιδευτικό χαρακτήρα και μάλιστα απευθύνεται σε παιδιά). Γιατί όχι ένα WYSIWYG εργαλείο με κάποια στοιχεία scripting;

 

Δε νομίζω ότι ένα παιδί θα βρει ιδιαίτερα βολικό να μετράει στο περίπου πού θέλει να μπει κάτι. Αλήθεια, αυτά τα νούμερα δίπλα από το θέση τι είναι; Δε νομίζω να είναι pixels ούτε % offset. Τι είναι;

Στο οθόνη #efbbf7, 2 δεν καταλαβαίνω γιατί είναι 2. Εμείς μία γραμμή δεν έχουμε; Δε θα έπρεπε να είναι 1; Μήπως οι γραμμές έχουν συγκεκριμένο μέγεθος; Γιατί θα πρέπει να το θυμάμαι και να υπολογίζω πόσες γραμμές θέλω να αφήσω βάσει αυτού του μεγέθους;

(Προφανώς αυτά που γράφω δεν είναι πράγματα που ρωτάω εγώ αλλά πράγματα που θα μπορούσε να ρωτήσει κάποιος μαθητής)

 

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

Επιγραφη ΕπιγραφηΜου
 
ΕπιγραφηΜου.Κειμενο = "Δε μου αρέσουν οι φακές!"
 
ΕπιγραφηΜου.Γραμματοσειρα = Γραμματοσειρες.Arial
ΕπιγραφηΜου.Γραμματοσειρα.Μεγεθος = 26
 
ΕπιγραφηΜου.Περιγραμμα.Χρωμα = Χρωματα.Κοκκινο    // Θα μπορούσε μπει και κατευθείαν μια hex τιμή εδώ
ΕπιγραφηΜου.Περιγραμμα.Παχος = 3    // Σε pixels
ΕπιγραφηΜου.Περιγραμμα.Στυλ = ΣτυλΠεριγραμματος.Διακεκομμενο
 
ΕπιγραφηΜου.Θεση.Οριζοντια = Οθονη.Οριζοντια.Κεντρο
ΕπιγραφηΜου.Θεση.Καθετα = Οθονη.Καθετα.Κεντρο
ΕπιγραφηΜου.Θεση.Περιστροφη = 45    // Σε μοίρες

όπου Χρωματα, Γραμματοσειρες, ΣτυλΠεριγραμματος και Οθονη κάποια structs/enums/whatever της γλώσσας με προκαθορισμένες τιμές. Προφανώς όλα με auto-complete κλπ. Μια τέτοια προσέγγιση πιστεύω ότι είναι πιο απλή και φιλική για έναν μαθητή.

  • Like 1
Δημοσ.

Οι συντεταγμένες είναι σε twips. Στον εκτυπωτή πάντα τα 1440 twips είναι μια ίντσα. Στην οθόνη έχουμε τα λογικά twips, δηλαδή αν βάλουμε μεγάλη η μικρή οθόνη ο υπολογιστής δεν δίνει σημασία στο μέγεθος το πραγματικό αλλά στο σχετικό. 

οι μεταβλητές Χ.ΣΗΜΕΙΑ και Υ.ΣΗΜΕΙΑ δίνουν τις διαστάσεις του τρέχον επιπέδου. Μπορούμε τις ίδιες εντολές να τις βάλουμε για τον εκτυπωτή.

Η εντολή Οθόνη παίρνει χρώμα και ύψος χωριστής οθόνης. Αν χωρίσω την οθόνη στο 2 τότε ο καθαρισμός με το χρώμα  #efbbf7 θα γίνει από την τρίτη γραμμή και αυτό θέλω αφού στις δυο πρώτες έχω διπλού ύψους γράμματα!

διπλα : Αναφορά κέντρο, "Παράδειγμα Επιγραφής" : κανονικα

 

Δεν είναι τώρα κατανοητό;

 

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

 

Εδώ είναι πολύ απλό το πρόγραμμα, έχει και αριθμούς γραμμών!

\\ Μαθαίνω τη κατάταξη
\\ Έστω ότι έχω ένα περίβολο 30 μέτρων
\\ θέλω να βάλω διακοσμητικες πέτρες
\\ ξέρω ότι υπάρχουν σε εικοσάδες για 3 μέτρα
\\ Πόσες πέτρες χρειάζομαι (1) και πόσες τελικά εικοσάδες (2)
010 άλφα=' μέτρα
012 \\ βήτα=20  ' πέτρες
015 Εισαγωγή "βήτα=", βήτα
020 γάμα=30 ' μέτρα
030 δέλτα=βήτα*γάμα/άλφα ' πέτρες
040 Επιγραφή$="για {0} μέτρα θέλω {1} πέτρες"
050 Φόρμα 40,15 : Πένα 1 : Οθονη #88BBEF,0 : Τυπωσε $(4), ' αναλογική γραφή
060 Διαμέσου Βάλε.τίτλο("Κατάταξη μέτρα/πέτρες")
065 \\ για άλφα μέτρα θέλω βήτα πέτρες 
070 Τύπωσε "Γνωστό:", μορφή$(Επιγραφή$,άλφαβήτα)
075 \\ για γάμα μέτρα θέλω δέλτα πέτρες
080 Τύπωσε "Ζητούμενο:", μορφή$(Επιγραφή$,γάμαδέλτα)
090 άλφα=20 ' πέτρες
100 βήτα=' ανά 1 εικοσάδα
110 γάμα=δέλτα ' πέτρες
120 δέλτα=βήτα*γάμα/άλφα ' εικοσάδες
130 Επιγραφή$="οι {0} πέτρες είναι {1} εικοσάδ"
140 Διαμέσου Βάλε.τίτλο("Κατάταξη πέτρες/εικοσάδες")
150 Τύπωσε "Γνωστό:", μορφή$(Επιγραφή$+"α",άλφαβήτα)
160 αν δέλτα=1 τότε {ε$="α"αλλιώς ε$="ες"
170 Τύπωσε "Ζητούμενο:", μορφή$(Επιγραφή$+ε$γάμα,  δέλτα)
180 Οθόνη 5, -5 ' χωριστή οθόνη στις πέντε τελευταίες γραμμές 
190 Πένα 14
200 Ρουτίνα Βάλε.τίτλο(α$)
210    Διπλά
220    παλιό_πλάτος_στήλης=στήλη
225    Πένα 10 {
230       Τύπωσε @(θέσηγραμμήπλάτοςγραμμή+1,2,2)$(6, πλάτος)α$,
235    }
240    Τύπωσε $(4,παλιό_πλάτος_στήλης)
250    Κανονικά
260 Τέλος Ρουτίνας

 

 

katataxi.png

Δημοσ.

Να προσθέσω εδώ ότι στην εικόνα έχω ανοίξει τον διορθωτή. Ο διορθωτής "στοιχίζεται" στο μέρος που ορίζουμε ως χωριστή οθόνη (μπορεί να βγει και σε μια γραμμή!). Η γραμμή αναφοράς (ή κατάστασης) του διορθωτή δείχνει σε πιο τμήμα διορθώνουμε. Η Μ2000 κρατάει τμήματα με ονόματα χωριστά. Και μάλιστα κρατάει και τον δρομέα σε κάθε τμήμα για να ξαναπάμε Στις αγκύλες βλέπουμε το που είναι ο δρομέας στη παράγραφο, σε πoια γραμμή βρισκόμαστε, και πόσες είναι οι γραμμές, απ΄ έξω έχει το σήμα της παραγράφου και μας λέει πόσες παραγράφους έχουμε (με F1 βάζουμε/βγάζουμε την αναδίπλωση λέξεων) Τα F7 έως F8 είναι μνήμες για θέσεις του δρομέα. Οι μνήμες δεν χάνονται αν παρεμβληθούν/αφαιρεθούν παράγραφοι και δουλεύουν με ένα κουμπί (την πρώτη φορά απομνημονεύουν, την δεύτερη φορά αν δεν είναι στη θέση τους...πάνε ενώ αν είναι διαγράφουν τη μνήμη). Τέλος εμφανίζεται η θέση γλώσσας του πληκτρολογίου (το έχω δοκιμάσει και με Γεωργιανό και δουλεύει κανονικά- τα Γεωργιανά έχουν γράμματα που δεν υπάρχουν στο ANSI).

Για να ανοίξει ο διορθωτής γράφουμε:

Σ Α

ή

Συγγραφή Α

αλλά προτιμώ το πρώτο!

Βγαίνουμε με Esc (υπάρχει τρόπος να βγούμε με απόρριψη αλλαγών)

Ο κώδικας χρωματίζεται αυτόματα, και με αντιγραφή μπορούμε να τον φέρουμε εδώ με χρώματα!

Δημοσ.

Ρίξε μια ματιά εδώ πως χαράζεις μια γραμμή σε vb net

https://msdn.microsoft.com/en-us/library/bb823229.aspx

 

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

Εδώ δίνει και παράδειγμα για τον εκτυπωτή:

Dim pr As New Printer
pr.CurrentX = 500
pr.CurrentY = 500
pr.Line(pr.CurrentX, pr.CurrentY, 2000, 2000, vbRed, True, False)
pr.EndDoc()

 

Τι θα βγάλει το παραπάνω πρόγραμμα;

Το τίποτα, αφού δεν ξέρουμε τι είναι το 2000

 

 

Ενώ στη Μ2000, το 1440 σημαίνει μια ίντσα! το 1000/1440 είναι η θέση σε ίντσες

Τώρα πόσο δύσκολο είναι να το κάνεις εκατοστά;

Εδώ το κόκκινο το έδωσα με το 4. Υπάρχουν τα βασικά χρώματα των windows από 0 έως 15. Αυτά τα μαθαίνει κανείς απ΄έξω. Στην vbnet τα έχουν με ονόματα. Άρα πάλι πρέπει να μάθεις τα ονόματα, δεν μπορείς να τα φανταστείς!

 

Εκτυπωτής {
      θέση 1000,1000
      Χάραξε Έως 3000,3000, 4 ' 4 το κόκκινο στα βασικά χρώματα
}

 

Η Χάραξε Έως χαράζει γραμμή από την απόλυτη θέση 1000,1000 στην απόλυτη  θέση 3000,3000

Χωρίς το Έως χαράζει στη σχετική θέση 3000 δεξιά και 3000 κάτω

Για να το κάνεις στη Vbnet πρέπει να προσθέσεις την απόλυτη θέση pr.CurrentX+2000, pr.CurrentY+2000

 

Αυτά τα κάνει αυτόματα η Μ2000, άρα κρύβει πολυπλοκότητα δεν προσθέτει!

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

Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.
  • Δημιουργία νέου...