Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: komni στις 19 Νοε 2020, 05:33:46 ΜΜ

Τίτλος: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 19 Νοε 2020, 05:33:46 ΜΜ
Καλησπέρα σε όλους,

Ονομάζομαι Κομνηνός και είμαι μαθητής Γ' λυκείου από τον Άλιμο.

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

Λινκ: https://gloglossa.gr (https://gloglossa.gr)
(Δουλεύει σε όλες τις πλατφόρμες, δεν υποστηρίζει Internet Explorer)

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

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


-- Τεχνικές Λεπτομέριες --

Ο parser και ο interpreter είναι γραμμένοι σε Typescript εξ ολοκλήρου(Δεν χρησιμοποίησα κάποιο εργαλείο parser generator).
Το Typescript γίνεται transpiled σε Javascript και έτσι μπορούν όλα αυτά να τρέχουν στον browser χωρίς επικοινωνία με κάποιο server.
Η ιστοσελίδα είναι γραμμένη σε Nuxt.js(Βασισμένο πάνω στο Vue.js).
Η ιστοσελίδα ΔΕΝ περιέχει κανένα κώδικα analytics και δεν συλλέγω κανένα δεδομένο χρηστών.
Ο κώδικας είναι open-source και μπορείτε να τον δείτε στο github μου: https://github.com/komninoschat/glo (https://github.com/komninoschat/glo)

Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: tdrivas στις 19 Νοε 2020, 07:30:09 ΜΜ
Proud of my student...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 19 Νοε 2020, 08:09:19 ΜΜ
Άξιος! Οι web τεχνολογίες (HTML5/Javascript/CSS) πλέον είναι υπερ-ώριμες για ένα τέτοιο εγχείρημα, και θα βοηθήσει αρκετούς μαθητές που έχουν πρόσβαση μόνο σε tablets/κινητά. Να μην παρασυρθείς μόνο και μειώσεις το διάβασμα για τις Πανελλαδικές, γιατί θα είναι κρίμα να φτιάξεις διερμηνευτή και να μην πάρεις 20 στην ΑΕΠΠ!

Να υποθέσω θα σε έχουμε συνάδελφο Πληροφορικό σε λίγα χρόνια;
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 19 Νοε 2020, 09:08:33 ΜΜ
@komni
Καλή η προσπάθεια, της μετατροπής σε javascript.
1. Εκτός από τα μονά ' ' για εισαγωγικά αλφαριθμητικών θα πρέπει να βάλεις και τα διπλά " "
2. Η εξαγωγή σε αρχείο γίνεται σε UTF-8. πράγμα που σημαίνει ότι για να τρέξει στον διερμηνευτή του Άλκη πρέπει να ανοιχτεί με το πρόχειρο, και από εκεί να γίνει αντιγραφή και επικόλληση.
3. To "ανθρωπάκι" που τρέχει εμφανίζει αργά το κώδικα στην οθόνη, και συνεχίζει και όταν οι γραμμές κώδικα περάσουν τις προβαλλόμενες γραμμές. Δεν έχει νόημα να γίνεται κάτι τέτοιο

Δοκίμασα αυτόν τον κώδικα (έβγαλα τις σταθερές, και άλλαξα τα εισαγωγικά σε μονά)

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Κυκλική_Ουρά
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Πίσω, Μπροστά, Ουρα[10], ι, Τιμή
ΑΡΧΗ
  Τιμή <- 0
  Πίσω <- 1
  Μπροστά <- 0
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
    Ουρα[ι] <- 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Προσθήκη 10 στοιχεία 1 έως 10
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
    ΚΑΛΕΣΕ Εισαγωγή_Στοιχείου(ι, Πίσω, Μπροστά, Ουρα)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Αφαίρεση 5 στοιχείων
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5
    ΑΝ Μπροστά <> 0 ΤΟΤΕ
      ΚΑΛΕΣΕ Εξαγωγή_Στοιχείου(Τιμή, Πίσω, Μπροστά, Ουρα)
      ΓΡΑΨΕ 'Εξαγωγή ', Τιμή
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'Λάθος Εξαγωγής, Η ουρά είναι άδεια'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Προσθήκη 5 στοιχεία 11 έως 15
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5
    ΚΑΛΕΣΕ Εισαγωγή_Στοιχείου(ι + 10, Πίσω, Μπροστά, Ουρα)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Αφαίρεση 10 στοιχείων
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
    ΑΝ Μπροστά <> 0 ΤΟΤΕ
      ΚΑΛΕΣΕ Εξαγωγή_Στοιχείου(Τιμή, Πίσω, Μπροστά, Ουρα)
      ΓΡΑΨΕ 'Εξαγωγή ', Τιμή
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'Λάθος Εξαγωγής, Η ουρά είναι άδεια'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Προσθήκη 2 στοιχεία 16 έως 17
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 2
    ΚΑΛΕΣΕ Εισαγωγή_Στοιχείου(ι + 15, Πίσω, Μπροστά, Ουρα)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Αφαίρεση 3 στοιχείων
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 3
    ΑΝ Μπροστά <> 0 ΤΟΤΕ
      ΚΑΛΕΣΕ Εξαγωγή_Στοιχείου(Τιμή, Πίσω, Μπροστά, Ουρα)
      ΓΡΑΨΕ 'Εξαγωγή ', Τιμή
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'Λάθος Εξαγωγής, Η ουρά είναι άδεια'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Στοιχείου(Α, Πίσω, Μπροστά, Ουρα)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α, Πίσω, Μπροστά, Ουρα[10]
ΑΡΧΗ
  ΑΝ Πίσω = Μπροστά ΤΟΤΕ
    ΓΡΑΨΕ 'Η ουρά γέμισε, δεν θα βάλω το ', Α
  ΑΛΛΙΩΣ
    ΑΝ Μπροστά = 0 ΤΟΤΕ
      Μπροστά <- Πίσω
    ΤΕΛΟΣ_ΑΝ
    Ουρα[Πίσω] <- Α
    Πίσω <- Πίσω mod 10 + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Εξαγωγή_Στοιχείου(Α, Πίσω, Μπροστά, Ουρα)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α, Πίσω, Μπροστά, Ουρα[10]
ΑΡΧΗ
  ΑΝ Μπροστά > 0 ΤΟΤΕ
    Α <- Ουρα[Μπροστά]
    Μπροστά <- Μπροστά mod 10 + 1
    ΑΝ Μπροστά = Πίσω ΤΟΤΕ
      Μπροστά <- 0
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Δείξε(Πίσω, Μπροστά, Ουρα)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Πίσω, Μπροστά, Ουρα[10], ι
ΑΡΧΗ
  ΑΝ Μπροστά = 0 ΤΟΤΕ
    ΓΡΑΨΕ 'Η ουρά είναι άδεια'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Αρχή Ουράς ', Μπροστά
    ΑΝ Μπροστά = Πίσω ΤΟΤΕ
      ΓΡΑΨΕ Ουρα[Μπροστά]
      ι <- Μπροστά mod 10 + 1
    ΑΛΛΙΩΣ
      ι <- Μπροστά
    ΤΕΛΟΣ_ΑΝ
    ΟΣΟ ι <> Πίσω ΕΠΑΝΑΛΑΒΕ
      ΓΡΑΨΕ Ουρα[ι]
      ι <- ι mod 10 + 1
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Τέλος ουράς ', Πίσω
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 19 Νοε 2020, 09:20:17 ΜΜ
Παράθεση από: tdrivas στις 19 Νοε 2020, 07:30:09 ΜΜ
Proud of my student...

⛰️⛰️⛰️
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 19 Νοε 2020, 09:28:53 ΜΜ
Παράθεση από: alkisg στις 19 Νοε 2020, 08:09:19 ΜΜ
Άξιος! Οι web τεχνολογίες (HTML5/Javascript/CSS) πλέον είναι υπερ-ώριμες για ένα τέτοιο εγχείρημα, και θα βοηθήσει αρκετούς μαθητές που έχουν πρόσβαση μόνο σε tablets/κινητά. Να μην παρασυρθείς μόνο και μειώσεις το διάβασμα για τις Πανελλαδικές, γιατί θα είναι κρίμα να φτιάξεις διερμηνευτή και να μην πάρεις 20 στην ΑΕΠΠ!

Να υποθέσω θα σε έχουμε συνάδελφο Πληροφορικό σε λίγα χρόνια;

Ευχαριστώ για τα καλά σας λόγια. Δεν πολυασχολούμαι με πανελλήνιες γιατί θα φύγω αλλά καλά υποθέσατε.

Ερώτηση: Έχετε κάποιο test suite για διερμηνευτές της Γλώσσας το οποίο θα μπορέσω να χρησιμοποιήσω για να επιβεβαιώσω την λειτουργικότητα του δικού μου; Αν όχι θα σας ενδιέφερε/έχετε τον χρόνο να ασχοληθείτε με κάτι τέτοιο;
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 19 Νοε 2020, 09:36:15 ΜΜ
Παράθεση από: bugman στις 19 Νοε 2020, 09:08:33 ΜΜ
@komni
Καλή η προσπάθεια, της μετατροπής σε javascript.
1. Εκτός από τα μονά ' ' για εισαγωγικά αλφαριθμητικών θα πρέπει να βάλεις και τα διπλά " "
2. Η εξαγωγή σε αρχείο γίνεται σε UTF-8. πράγμα που σημαίνει ότι για να τρέξει στον διερμηνευτή του Άλκη πρέπει να ανοιχτεί με το πρόχειρο, και από εκεί να γίνει αντιγραφή και επικόλληση.
3. To "ανθρωπάκι" που τρέχει εμφανίζει αργά το κώδικα στην οθόνη, και συνεχίζει και όταν οι γραμμές κώδικα περάσουν τις προβαλλόμενες γραμμές. Δεν έχει νόημα να γίνεται κάτι τέτοιο

Δοκίμασα αυτόν τον κώδικα (έβγαλα τις σταθερές, και άλλαξα τα εισαγωγικά σε μονά)

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Κυκλική_Ουρά
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Πίσω, Μπροστά, Ουρα[10], ι, Τιμή
ΑΡΧΗ
  Τιμή <- 0
  Πίσω <- 1
  Μπροστά <- 0
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
    Ουρα[ι] <- 0
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Προσθήκη 10 στοιχεία 1 έως 10
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
    ΚΑΛΕΣΕ Εισαγωγή_Στοιχείου(ι, Πίσω, Μπροστά, Ουρα)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Αφαίρεση 5 στοιχείων
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5
    ΑΝ Μπροστά <> 0 ΤΟΤΕ
      ΚΑΛΕΣΕ Εξαγωγή_Στοιχείου(Τιμή, Πίσω, Μπροστά, Ουρα)
      ΓΡΑΨΕ 'Εξαγωγή ', Τιμή
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'Λάθος Εξαγωγής, Η ουρά είναι άδεια'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Προσθήκη 5 στοιχεία 11 έως 15
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 5
    ΚΑΛΕΣΕ Εισαγωγή_Στοιχείου(ι + 10, Πίσω, Μπροστά, Ουρα)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Αφαίρεση 10 στοιχείων
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10
    ΑΝ Μπροστά <> 0 ΤΟΤΕ
      ΚΑΛΕΣΕ Εξαγωγή_Στοιχείου(Τιμή, Πίσω, Μπροστά, Ουρα)
      ΓΡΑΨΕ 'Εξαγωγή ', Τιμή
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'Λάθος Εξαγωγής, Η ουρά είναι άδεια'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Προσθήκη 2 στοιχεία 16 έως 17
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 2
    ΚΑΛΕΣΕ Εισαγωγή_Στοιχείου(ι + 15, Πίσω, Μπροστά, Ουρα)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
!! Αφαίρεση 3 στοιχείων
  ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 3
    ΑΝ Μπροστά <> 0 ΤΟΤΕ
      ΚΑΛΕΣΕ Εξαγωγή_Στοιχείου(Τιμή, Πίσω, Μπροστά, Ουρα)
      ΓΡΑΨΕ 'Εξαγωγή ', Τιμή
    ΑΛΛΙΩΣ
      ΓΡΑΨΕ 'Λάθος Εξαγωγής, Η ουρά είναι άδεια'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ Δείξε(Πίσω, Μπροστά, Ουρα)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Στοιχείου(Α, Πίσω, Μπροστά, Ουρα)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α, Πίσω, Μπροστά, Ουρα[10]
ΑΡΧΗ
  ΑΝ Πίσω = Μπροστά ΤΟΤΕ
    ΓΡΑΨΕ 'Η ουρά γέμισε, δεν θα βάλω το ', Α
  ΑΛΛΙΩΣ
    ΑΝ Μπροστά = 0 ΤΟΤΕ
      Μπροστά <- Πίσω
    ΤΕΛΟΣ_ΑΝ
    Ουρα[Πίσω] <- Α
    Πίσω <- Πίσω mod 10 + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Εξαγωγή_Στοιχείου(Α, Πίσω, Μπροστά, Ουρα)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α, Πίσω, Μπροστά, Ουρα[10]
ΑΡΧΗ
  ΑΝ Μπροστά > 0 ΤΟΤΕ
    Α <- Ουρα[Μπροστά]
    Μπροστά <- Μπροστά mod 10 + 1
    ΑΝ Μπροστά = Πίσω ΤΟΤΕ
      Μπροστά <- 0
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Δείξε(Πίσω, Μπροστά, Ουρα)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Πίσω, Μπροστά, Ουρα[10], ι
ΑΡΧΗ
  ΑΝ Μπροστά = 0 ΤΟΤΕ
    ΓΡΑΨΕ 'Η ουρά είναι άδεια'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Αρχή Ουράς ', Μπροστά
    ΑΝ Μπροστά = Πίσω ΤΟΤΕ
      ΓΡΑΨΕ Ουρα[Μπροστά]
      ι <- Μπροστά mod 10 + 1
    ΑΛΛΙΩΣ
      ι <- Μπροστά
    ΤΕΛΟΣ_ΑΝ
    ΟΣΟ ι <> Πίσω ΕΠΑΝΑΛΑΒΕ
      ΓΡΑΨΕ Ουρα[ι]
      ι <- ι mod 10 + 1
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Τέλος ουράς ', Πίσω
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


Ευχαριστώ για την βοήθεια!

1) Νόμιζα πως η Γλώσσα δέχεται μόνο τα μονά, θα το φτιάξω σήμερα.
2) Γιατί γίνεται αυτό; Σε ποιά κωδικοποίηση πρέπει να το εξάγω ώστε να είμαι συμβατός;
3) Όντως, δεν έχει κανένα νόημα. Απλά φαίνεται ωραίο σε Instagram Story και κάνει καλή φιγούρα  :P

Υ.Γ. Ίσως το διατύπωσα λάθως στο ποστ αλλά δεν γίνεται κάποια μεταγλώττηση του προγράμματος σε Javascript απλά ο διερμηνευτής ο ίδιος είναι γραμμένος σε Typescript και μεταγωλττίζεται σε Javascript όχι τα προγράμματα που τρέχει.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 19 Νοε 2020, 11:03:17 ΜΜ
> Ερώτηση: Έχετε κάποιο test suite...

Το καλύτερο είναι τα προγράμματα του βιβλίου! Αλλά αν θες δες και τα Παραδείγματα για το Διερμηνευτή (https://alkisg.mysch.gr/downloads/) σε μορφή .zip.

> Σε ποιά κωδικοποίηση πρέπει να το εξάγω ώστε να είμαι συμβατός;

$ file Φυσαλίδα.glo
Φυσαλίδα.glo: Little-endian UTF-16 Unicode text, with CRLF line terminators

Ο Διερμηνευτής μου χρησιμοποιεί Unicode με BOM, επειδή αυτό είναι το default για τα Windows, ώστε να μπορούν τα προγράμματα να ανοίγουν με το Notepad κλπ. Επίσης υποστηρίζει και άλλες μορφές όπως UTF-8 με BOM, ANSI κλπ.
Το UTF-8 χωρίς BOM είναι το default σε όλα τα άλλα λειτουργικά και στο Internet, εκτός από τα Windows. Αλλά πλέον και τα Windows άρχισαν να γίνονται φιλικά σε open source πρότυπα και τεχνολογίες, και όσο μπορούν προωθούν κι αυτά το UTF-8 χωρίς BOM, ακόμα και στο Notepad. Το "όσο μπορούν" είναι επειδή χωρίς BOM δεν είναι εύκολο να ξεχωρίσει κάποιος το UTF-8 από το ANSI.

Long story short, άστο UTF-8 χωρίς BOM μια χαρά το έχεις, και όποιος θέλει ας κάνει copy/paste...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: nikosx στις 19 Νοε 2020, 11:07:15 ΜΜ
Συγχαρητήρια!!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 19 Νοε 2020, 11:57:11 ΜΜ
Συγχαρητήρια!
τον χρησιμοποιώ ήδη.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: ilias_s στις 20 Νοε 2020, 12:07:30 ΠΜ
ΜΠΡΑΒΟ komni!!!

(μπορεί να ακουστεί χαζό αλλά... εγώ τρελάθηκα και με το night mode!)

Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 20 Νοε 2020, 12:08:16 ΠΜ
Το night mode είναι εκπληκτικό!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 20 Νοε 2020, 01:53:44 ΠΜ
@komni
1.Πληροφορίες για το BOM
https://en.wikipedia.org/wiki/Byte_order_mark
Στο UTF-8 βάζεις τρεις χαρακτήρες, 0xEF,0xBB,0xBF (γράφεις πρώτα αυτούς και μετά το κείμενο)
2. Πράγματι ο διερμηνευτής σου είναι ωραίος! Βλεπω στο Github ότι φτιάχνεις και μια Pascal. Μου θυμίζεις το κόλλημα που έφαγα και εγώ στην ηλικία σου με τις γλώσσες (θέλει προσοχή...εγώ ασχολούμε στα 54 ακόμα...)
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 20 Νοε 2020, 02:02:21 ΠΜ
Χρήσιμο και πιο προσβάσιμο, μιας κι υπάρχουν παιδιά που δεν έχουν PC αλλά έχουν κινητό! Ένα μεγάλο ευχαριστώ που κάθισες κι έφτιαξες αυτό το πράγμα!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 20 Νοε 2020, 04:03:55 ΠΜ
@nikosx @dpa2006 @ilias_s @bugman @George Eco - Ευχαριστώ πολυ!

@alkisg - Τέλεια! Θα τα δοκιμάσω αύριο

@alkisg @bugman - Όσον αφορά την κωδικοποίηση, έχω στείλει σε φίλους για να δω τι μπορεί να ανοίξει που και να καταλάβω αν τελικά θα χρειαστεί αλλαγή

Επίσης, μόλις έβαλα υποστήριξη για αλφαριθμητικούς με διπλά εισαγωγικά και σταθερές, οπότε νομίζω πως πλέον υπάρχει πλήρης υποστήριξη για όλα.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 20 Νοε 2020, 01:18:57 ΜΜ
@komni,
Μπράβο και πάλι! Θα ήθελα να δω τι θα φτιάχνεις δέκα χρόνια αργότερα!  :)
Μόλις δοκίμασα τη Κυκλική Ουρά, όπως ήταν με Σταθερές και διπλά εισαγωγικά. Σφαίρα πήγε! Όλα Καλά!


Να προσθέσω: Ανοίγει άμεσα στο Διερμηνευτή του Αλκη! Είχε ΒΟΜ (και πάλι μπράβο γιατί ανταποκρίθηκες άμεσα).
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: evry στις 20 Νοε 2020, 01:44:21 ΜΜ
Πολύ καλή δουλειά, μπράβο!!

Στο github γράφεις The programming language was created by the AEPP book authors and inspired by Pascal and BASI
έχεις ξεχάσει το C στην BASIC.

Δοκίμασα και το παρακάτω πρόγραμμα να δω πως υλοποίησες τη μεταβίβαση παραμέτρων :
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 20 Νοε 2020, 01:49:56 ΜΜ
H C Θα παίξει μετά!
;D
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dski στις 20 Νοε 2020, 03:52:57 ΜΜ
Πολλά μπράβο για την πρωτοβουλία και, κυρίως, για τη δουλειά σου!

Μια πρόταση, αν έχεις χρόνο και διάθεση, είναι να εντάξεις στον διερμηνευτή και την Ψευδογλώσσα, κυρίως για τους μαθητές της Β' Λυκείου. Υπάρχει βέβαια το πολύ καλό pseudoglossa.gr (https://www.pseudoglossa.gr) όμως βασίζεται σε flash του οποίου η υποστήριξη τελειώνει 31/12/2020 πράγμα που σημαίνει ότι μετά από κάποιο διάστημα το pseudoglossa.gr θα πάψει να είναι λειτουργικό (το ίδιο ισχύει και για το επίσης πολύ καλό και χρήσιμο algo.pk (http://algo.pk)).

Οι συντακτικές διαφορές μεταξύ Γλώσσας και Ψευδογλώσσας είναι λίγες οπότε εκτιμώ ότι δεν θα πρέπει να είναι πολύ δύσκολο αφού έχεις ήδη τον διερμηνευτή για τη Γλώσσα.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 20 Νοε 2020, 04:37:00 ΜΜ
Παράθεση από: bugman στις 20 Νοε 2020, 01:18:57 ΜΜ
@komni,
Μπράβο και πάλι! Θα ήθελα να δω τι θα φτιάχνεις δέκα χρόνια αργότερα!  :)
Μόλις δοκίμασα τη Κυκλική Ουρά, όπως ήταν με Σταθερές και διπλά εισαγωγικά. Σφαίρα πήγε! Όλα Καλά!


Να προσθέσω: Ανοίγει άμεσα στο Διερμηνευτή του Αλκη! Είχε ΒΟΜ (και πάλι μπράβο γιατί ανταποκρίθηκες άμεσα).
Ευχαριστώ πολύ!


Παράθεση από: evry στις 20 Νοε 2020, 01:44:21 ΜΜ
Πολύ καλή δουλειά, μπράβο!!

Στο github γράφεις The programming language was created by the AEPP book authors and inspired by Pascal and BASI
έχεις ξεχάσει το C στην BASIC.

Δοκίμασα και το παρακάτω πρόγραμμα να δω πως υλοποίησες τη μεταβίβαση παραμέτρων :

Πολύ καλό παράδειγμα! Δεν είχα σκεφτεί να περάσω την ίδια μεταβλητή ως παράμετρο πάνω από μια φορά. Υπάρχει ένα bug εδώ γιατί θα έπρεπε να τυπώνει 496 αντί για 28 αλλά ξέρω ακριβώς τι είναι και θα το διορθώσω το βράδυ μαζί με ένα άλλο bug στο ΕΠΙΛΕΞΕ.


Παράθεση από: dski στις 20 Νοε 2020, 03:52:57 ΜΜ
Πολλά μπράβο για την πρωτοβουλία και, κυρίως, για τη δουλειά σου!

Μια πρόταση, αν έχεις χρόνο και διάθεση, είναι να εντάξεις στον διερμηνευτή και την Ψευδογλώσσα, κυρίως για τους μαθητές της Β' Λυκείου. Υπάρχει βέβαια το πολύ καλό pseudoglossa.gr (https://www.pseudoglossa.gr) όμως βασίζεται σε flash του οποίου η υποστήριξη τελειώνει 31/12/2020 πράγμα που σημαίνει ότι μετά από κάποιο διάστημα το pseudoglossa.gr θα πάψει να είναι λειτουργικό (το ίδιο ισχύει και για το επίσης πολύ καλό και χρήσιμο algo.pk (http://algo.pk)).

Οι συντακτικές διαφορές μεταξύ Γλώσσας και Ψευδογλώσσας είναι λίγες οπότε εκτιμώ ότι δεν θα πρέπει να είναι πολύ δύσκολο αφού έχεις ήδη τον διερμηνευτή για τη Γλώσσα.
Ευχαριστώ πολύ - όντως οι διαφορές είναι ελάχιστες. Θα το δω από 'βδομάδα αλλά λογικά θα είναι αρκετά εύκολο.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: evry στις 20 Νοε 2020, 11:53:39 ΜΜ
Όχι δεν θα έπρεπε σωστά το έχεις!  :D :D :D :D
Μην το αλλάξεις!
Παράθεση από: komni στις 20 Νοε 2020, 04:37:00 ΜΜ
Ευχαριστώ πολύ!

Πολύ καλό παράδειγμα! Δεν είχα σκεφτεί να περάσω την ίδια μεταβλητή ως παράμετρο πάνω από μια φορά. Υπάρχει ένα bug εδώ γιατί θα έπρεπε να τυπώνει 496 αντί για 28 αλλά ξέρω ακριβώς τι είναι και θα το διορθώσω το βράδυ μαζί με ένα άλλο bug στο ΕΠΙΛΕΞΕ.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 21 Νοε 2020, 12:08:13 ΠΜ
Παράθεση από: evry στις 20 Νοε 2020, 11:53:39 ΜΜ
Όχι δεν θα έπρεπε σωστά το έχεις!  :D :D :D :D
Μην το αλλάξεις!

Μάλλον δεν έχω καταλάβει κάτι σωστά τότε...

Όταν δίνω την μεταβλητή ως παράμετρο στη διαδικασία είναι pass by reference, σαν τους pointers της C ας πούμε, και η τελευταία εκχώρηση(Χ <- 496) είναι η τελευταία τιμή που εισέρχεται στην θέση μνήμης της μεταβλητής Α οπότε δεν θα έπρεπε να μένει αυτή;

Στην τωρινή έκδοση ο διερμηνευτής απλά loopάρει τις παραμέτρους με τη σειρά που έχουν δηλωθεί και κάνει εκχωρήσεις στο τέλος. Δηλαδή στο παράδειγμα μετά την εκτέλεση της διαδικασίας θα έκανε
Κώδικας [Επιλογή]

Α <- (τιμή του Χ μετά την εκτέλεση της διαδικασίας δηλαδή 496)
Α <- (τιμή του Y μετά την εκτέλεση της διαδικασίας δηλαδή 6)
Α <- (τιμή του Z μετά την εκτέλεση της διαδικασίας δηλαδή 28)

Kαι έτσι βγαίνει αποτέλεσμα 28.

Ποιό από τα δύο είναι το σωστό;

Δεν είχα σκεφτεί να περάσω την ίδια μεταβλητή πάνω από μία φορά όταν το υλοποίησα και τώρα μου βγάζει πιο πολύ λογική το πρώτο.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 21 Νοε 2020, 04:50:10 ΠΜ
Δεν έχουμε by reference στο διερμηνευτή, λέγεται copy in copy out.  Δηλαδή αντιγραφή εισόδου(in) στη τοπική, και στο τέλος αντιγραφή εξόδου (out)

Στον διερμηνευτή του Άλκη δίνει 496. Αυτό συμβαίνει γιατί περνάει τις μεταβλητές με ανάποδη φορά. Έτσι τα X, Y, Z είναι το Α, και η τελευταία τιμή στο Α πάει με το Χ, άρα το Α γίνεται 496 (η φορά αντιγραφής είναι η ανάποδη από τη σειρά που μπήκαν οι μεταβλητές).
Στον δικό σου διερμηνευτή. Φτιάχνεις τις Χ, Υ, Ζ και δίνεις τιμές τα Α,Α,Α. Στο τέλος ο διερμηνευτής σου πάει πάλι την λίστα παραμέτρων από την αρχή (εδώ είναι η διαφορά) και κάνει τις εκχωρήσεις, στο Α το Χ, στο Α το Υ, στο Α το Ζ. Άρα εδώ θα πάρει το Α την τιμή του Ζ, το 28
Αν τις έκανε με την ανάποδη φορά, δηλαδή από το Ζ στο Χ, τότε θα είχε τιμή το Α το 496.

Παρόλα αυτά αν δοκιμάσουμε το παρακάτω πρόγραμμα στον διαδικτυακό διερμηνευτή σου, δηλαδή έχουμε πίνακες, τότε θα λειτουργήσει σωστά! Θα δώσει 496. Πώς γίνεται αυτό;
Κώδικας [Επιλογή]

ΠΡΟΓΡΑΜΜΑ ΤΕΣΤ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α[4]
ΑΡΧΗ
  Α[2] <- 0
  ΚΑΛΕΣΕ ΠΡΟΒΛΗΜΑ(Α, Α, Α)
  ΓΡΑΨΕ Α[2]
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΠΡΟΒΛΗΜΑ(Χ, Υ, Ζ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Χ[4], Υ[4], Ζ[4]
ΑΡΧΗ
  Υ[2] <- 6
  Ζ[2] <- 28
  ΓΡΑΨΕ Υ[2], Ζ[2]
  Χ[2] <- 496
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ



Στην ουσία εδώ δεν κάνεις αντιγραφή του πίνακα! Δηλαδή στους πίνακες κάνεις μεταφορά δείκτη. Οπότε τα Χ[]. Υ[]. Ζ[] είναι το Α[]. Πάλι κάνεις "αντιγραφή" ως copy out, αλλά γίνεται στο δείκτη, άρα αν υποθέσουμε ότι ο φυσικός δείκτης είναι το 7982734 τότε στο Α δίνει από τα Χ, Υ και Ζ την ίδια τιμή το 7982734.
Να γιατί η επιστροφή είναι 496. Έτυχε γιατί το παράδειγμα του Evry είναι περιορισμένο (biassed), να υποθέτει ότι τρέχει για copy in copy out μέθοδο, και απλά να κοιτάει την σειρά που στο τέλος γίνονται οι αντιγραφές. Αν το τσεκάρει σε διερμηνευτή που παίζει με πραγματική αναφορά (by reference), πχ visual basic 6, τότε θα πάρει το επιθυμητό αποτέλεσμα, για λάθος μέθοδο! Στον προγραμματισμό εύκολα πέφτουμε στο λάθος να "υποθέτουμε" μια λειτουργία (χωρίς να την γνωρίζουμε, ή να την γνωρίζουμε μερικώς), να δίνουμε δεδομένα προς έλεγχο και να παίρνουμε τα "σωστά" και να νομίζουμε πως το τεστ δουλεύει!
Τεστ για τον Ervy, και οποιονδήποτε, να βρει ένα πιο σίγουρο τεστ, ώστε να μην ελέγχει μόνο την φορά, αλλά και την λειτουργία ότι όντως είναι copy in copy out.


ΠΡΟΣΘΗΚΗ 1: Με τη γραμμή ΓΡΑΨΕ Υ[2], Ζ[2] στη διαδικασία φαίνεται άμεσα το by reference (object reference). Δηλαδή στο διερμηνευτή του Άλκη θα πάρουμε 6 και 28, και στον διαδικτυακό τα 28 και 28.

ΠΡΟΣΘΗΚΗ 2: Η typescript, και η κάτω από αυτήν javascript δεν θα περάσουν με αναφορά τίποτα! Θα περάσουν όμως το δείκτη του αντικειμένου! Η επιστροφή δείκτη δεν έχει νόημα! Και αυτό γιατί στην ουσία δεν γίνεται! Ο μόνος τρόπος να πάρεις τον δείκτη πίσω είναι να τον δώσεις ως αποτέλεσμα συνάρτησης, άρα να τον εκχωρήσεις στο επίπεδο της κλήσης, μετά τη κλήση. Ο τρόπος να το ξεπεράσει κανείς αυτό είναι με το Boxing, δηλαδή βάζουμε ένα αντικείμενο άλλο, πχ το W να κρατάει το δείκτη του A, και έτσι η αλλαγή δείκτη στο Α να μπορεί να γίνει! Στην επιστροφή το W (που δεν αλλάζει δείκτη) έχει το νέο Α.

ΠΡΟΣΘΗΚΗ 3: Η C δεν περνάει τίποτα με αναφορά! Πάντα με τιμή. Οπότε όταν θέλουμε να περάσει κάτι σαν να είναι με αναφορά έχει τους δείκτες, που είναι μεταβλητές που κρατάνε το δείκτη προς τη μεταβλητή, και αυτές εν συντομία τους λέμε δείκτες! Σε αντίθεση η C++, έχει πέρασμα με αναφορά, και στις οποίες αναφορές γίνεται μια φορά η  "ένωση" με μια μεταβλητή, δεν μπορεί να γίνει δεύτερη φορά. Στη Μ2000 που έχω γράψει ακολουθώ το ίδιο σύστημα, όλα τα περάσματα είναι με τιμή εκτός από εκείνα που δηλώνονται με αναφορά με χρήση του & και ειδικά στη Μ2000 το & πρέπει να εμφανίζεται και στη συνάρτηση ή τη διαδικασία (τμήμα λέγεται στη Μ2000) στην τυπική παράμετρο, πχ Τμήμα Τμήμα1(&Χ) και στη κλήση πχ Τμήμα1 &Α. Και εδώ μόνο μια φορά μπορεί να δοθεί η ένωση, δηλαδή το σε τι θα αναφέρεται το όνομα που λέμε αναφορά. Η υλοποίησή του είναι απλή: όλες οι μεταβλητές είναι σε ένα πίνακα, έτσι πχ αν το Α είναι στη θέση 10, τότε η αναφορά του Α έστω το Χ θα είναι ένα όνομα που θα δείχνει τη θέση 10. Το ζήτημα είναι το πώς θα περάσουμε με τιμή (αφού μόνο με τιμή περνάμε κάτι) στη κλήση την αναφορά! Αυτό γίνεται με την λεγόμενη ισχνή αναφορά, δηλαδή θα περάσουμε κάτι το οποίο κατά την "σύνδεση" θα βρει από αυτό ο διερμηνευτής ότι το Χ θα πρέπει να δείχνει στο 10 και όχι σε μια νέα θέση στο πίνακα μεταβλητών. Ο τρόπος που σκέφθηκα να το κάνω ήταν απλός, να περάσω ένα αλφαριθμητικό με το "απόλυτο όνομα" του A, έτσι αν το Α ανήκει στο τμήμα Αλφα, το απόλυτο όνομα είναι το Αλφα.Α και στην ανάγνωση για την δημιουργία της αναφοράς ο διερμηνευτής "επιλύει" την ισχνή σε πραγματική αναφορά, βρίσκει ότι το Άλφα.Α είναι στην θέση 10, και φτιάχνει την Χ σημειώνοντας ότι είναι αναφορά, και ότι η θέση του είναι στο 10. Η σημείωση ότι είναι αναφορά γίνεται για να μην "μηδενιστεί" η τιμή του 10 κατά την έξοδο, επειδή οι θέσεις "καθαρίζονται" κανονικά στην έξοδο, και αυτό βοηθάει όταν έχουμε κάτι που πρέπει να εκτελεστεί κατά τον καθαρισμό, πχ ένα αντικείμενο.

Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 21 Νοε 2020, 06:42:15 ΠΜ
Στα παραδείγματα Α και Β παρακάτω, στο Διερμηνευτή του Άλκη θα πάρουμε τιμές 2 και 1, ενώ στο διαδικτυακό Διερμηνευτή τα 1 και 2. Φαίνεται η αλλαγή φοράς!
Και στις δυο περιπτώσεις, η copy in copy out διαδικασία ΔΕΝ είναι καλή, δεν έχει αποτελέσματα που θα ήθελε κανείς να έχει, να δώσει την ίδια τιμή και στις δυο περιπτώσεις!
Στο παράδειγμα Γ στη Μ2000 το αποτέλεσμα είναι 3 σε κάθε περίπτωση. Εδώ κάνω χρήση της στατικής ρουτίνας (όχι ενός τμήματος). Στις ρουτίνες δημιουργούνται τοπικές μεταβλητές ενώ παραμένει η θέαση των μεταβλητών του τμήματος που περιέχονται (κάτι που δεν γίνεται στις διαδικασίες της ΓΛΩΣΣΑΣ, καθώς και στα Τμήματα της Μ2000)! Μπορούμε προαιρετικά να καλέσουμε τις ρουτίνες με την ΚΑΛΕΣΕ (και έτσι θα μοιάζει περισσότερο με τη ΓΛΩΣΣΑ).

Στο πέρασμα με αναφορά έχουμε το αποτέλεσμα το ίδιο ανεξάρτητα με τη σειρά που θα βάλουμε τις τυπικές παραμέτρους, ή με τη σειρά που θα τις πειράξουμε εντός!

Παράδειγμα Α
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ΤΕΣΤ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α
ΑΡΧΗ
  Α <- 1
  ΚΑΛΕΣΕ ΠΡΟΒΛΗΜΑ(Α, Α, Α)
  ΓΡΑΨΕ Α
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΠΡΟΒΛΗΜΑ(Χ, Υ, Ζ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Χ, Υ, Ζ
ΑΡΧΗ
  Χ <- Υ + 1
  Χ <- Ζ + 1
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


Παράδειγμα Β
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ΤΕΣΤ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α
ΑΡΧΗ
  Α <- 1
  ΚΑΛΕΣΕ ΠΡΟΒΛΗΜΑ(Α, Α, Α)
  ΓΡΑΨΕ Α
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΠΡΟΒΛΗΜΑ(Χ, Υ, Ζ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Χ, Υ, Ζ
ΑΡΧΗ
  Ζ <- Χ + 1
  Ζ <- Υ + 1
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


Παράδειγμα Γ
Κώδικας [Επιλογή]
Α=1
Κ1(&Α, &Α, &Α)
Τύπωσε Α
Α=1
Κ2(&Α, &Α, &Α)
Τύπωσε Α

Ρουτίνα Κ1(&Χ, &Υ, &Ζ)
Χ=Υ+1
Χ=Ζ+1
Τέλος Ρουτίνας
Ρουτίνα Κ2(&Χ, &Υ, &Ζ)
Ζ=Χ+1
Ζ=Υ+1
Τέλος Ρουτίνας
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: pfan στις 21 Νοε 2020, 03:55:54 ΜΜ
Κομνηνέ χίλια μπράβο !!!!

Να πω και εγώ ότι είμαι περήφανη για τον μαθητή μου!!!! (Αν και φέτος μας έφυγε και πήγε σε ιδιωτικό σχολείο...)

Του έχω πει ήδη από πέρυσι ότι κάποια στιγμή το όνομά του θα το ακούσουμε...

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

Ας τον βοηθήσουμε να κάνει το testing και βελτιώσεις ...

Χίλια μπράβο και πάλι!!!


Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: P.Tsiotakis στις 21 Νοε 2020, 05:14:17 ΜΜ
Συγχαρητήρια αγαπητέ μου και καλή πρόοδο. Σου εύχομαι όλα σου τα όνειρα να γίνουν πραγματικότητα.
Με υγεία...
ΠΤ
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 21 Νοε 2020, 07:42:13 ΜΜ
@bugman Οκ οπότε καλά το είχα. Συμφωνώ ότι δεν είναι η καλύτερη επιλογή για μια γλώσσα προγραμματισμού αλλά αυτό λέει το βιβλίο και πρέπει να συμμορφωθούμε. Υπάρχει κάποιος λόγος που ο Διερμηνευτής του Άλκη κάνει το copy in copy out ανάποδα; Λέει κάτι το βιβλίο γι' αυτό; @alkisg

Όσον αφορά το παράδειγμα με τους πίνακες(πολύ έξυπνο!), αυτό είναι bug!
Φαντάζομαι έχει να κάνει σχέση με το γεγονός ότι η Javascript(στην οποία  τρέχει ο διερμηνευτής) περνάει, όπως είπες και εσύ, τους δείκτες των αντικειμένων by reference (https://jsfiddle.net/komninoschat/8n50q63z/15)(και συνεπώς και των πινάκων γιατί στην Javascript όλα είναι αντικείμενα, αν και υπάρχει μια μικρή εξαίρεση για τα primitive types)
Θα το αλλάξω ώστε να αντιγράφονται σωστά οι πίνακες στο κάλεσμα διαδικασίας και απλά να τους αντιγράφει πάλι πίσω στο τέλος.

@pfan
Ευχαριστώ!! 🔝🔝🔝

@P.Tsiotakis
Ευχαριστώ πολύ!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: ApoAntonis στις 21 Νοε 2020, 09:13:12 ΜΜ
Συγχαρητήρια,
πάντα υγιής και ορεξάτος να είσαι Κομνηνέ.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 21 Νοε 2020, 10:13:32 ΜΜ
@komni, δεν αναφέρει κάτι το βιβλίο, εγώ το θεώρησα φυσικό επειδή συνήθως οι παράμετροι γίνονται push στη στοίβα κατά την κλήση και στη συνέχεια pop κατά την εξαγωγή:
https://users.cs.fiu.edu/~downeyt/cop3402/passing.htm

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

Δες και παλιότερες συζητήσεις π.χ. https://alkisg.mysch.gr/steki/index.php?topic=8141.msg88984#msg88984
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 22 Νοε 2020, 12:05:52 ΠΜ
@komni,
Σε μπερδεύει το by reference. Στη javascript έχουμε by value πραγματικό, αλλά στα αντικείμενα, επειδή μπαίνει ο δείκτης τους και όχι η μνήμη πχ 100bytes που αντιστοιχεί στα δεδομένα τους, οι τυχόν αλλαγές θα φανούν σαν by reference, για το λόγο αυτό το λέμε object reference. Αν το αντικείμενο Α πέρναγε με αναφορά πραγματική και το έπαιρνε μια Β τότε αν δίναμε στη Β ένα νέο αντικείμενο (άλλος δείκτης) το Α θα τον είχε, αφού Α και Β θα έδειχναν (λέγεται Indirect addressing, ή έμμεση διευθυνσιοδότηση σε επίπεδο γλώσσας μηχανής) την ίδια μνήμη που "κάθεται" ο δείκτης. Στη πραγματικότητα η Javascript όπως και η Python, θα περάσουν σε νέα μνήμη το αντίγραφο του δείκτη της Α και έτσι αν το Β αλλάξει δείκτη, αυτός ο δείκτης δεν θα γραφτεί και στην μνήμη του Α, και αυτό είναι by value πέρασμα δείκτη αντικειμένου.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 22 Νοε 2020, 12:41:22 ΠΜ
@ApoAntonis Ευχαριστω!

@alkisg Οκ, κατάλαβα. Εγώ δεν έχω χρησιμοποιήσει καμία στοίβα στον διερμηνευτή και μου βγήκε πιο φυσικό να είναι με τη σειρά. Αυτό γιατί με τα optimizations που κάνει το V8(και τα υπόλοιπα JS engines) πλέον δεν υπάρχει μεγάλη διαφορά και απλά βάζω παντού Arrays. Θα το αλλάξω για να είμαστε συμβατοί...

@bugman Ναι τώρα το κατάλαβα. Ευχαριστώ!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkiez στις 23 Νοε 2020, 08:21:49 ΜΜ
Πολλά πολλά μπράβο Κομνηνέ και χαρά στο κουράγιο σου.

-οι ταπεινοί κι ελάχιστοι χρήστες μακ σε ευχαριστούμε λίίίίγο παραπάνω.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: Νίκος Αδαμόπουλος στις 23 Νοε 2020, 09:32:34 ΜΜ
Συγχαρητήρια κι από μένα Κομνηνέ και ευχαριστούμε για την προσφορά σου.
Καλή συνέχεια και σε ό,τι κι αν κάνεις στο μέλλον!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 24 Νοε 2020, 02:07:23 ΠΜ
@alkiez Ευχαριστω!!

@Νίκος Αδαμόπουλος Ευχαριστώ πολυ!

Ερώτηση προς όλους:
Έστω το ακόλουθο πρόγραμμα με είσοδο 0
Κώδικας [Επιλογή]

Προγραμμα ShortCircuit
Μεταβλητες
Ακεραιες: κ
Αρχη
  Διαβασε κ
  Αν κ <> 0 και 5 mod κ = 2 τοτε
    Γράψε 'Οκ'
  Τελος_Αν
Τελος_Προγραμματος

Προφανώς, δεν γίνεται το δεξί μέρος του mod να είναι ίσο με το μηδέν οπότε θα έπρεπε να σκάσει με Runtime Error.
Αλλά εφόσον η πράξη του mod είναι στο δεξί μέρος ΚΑΙ και η πρώτη συνθήκη του ΚΑΙ αποτιμήται σε ΨΕΥΔΗΣ τότε θα μπρούσε ο διερμηνευτής να μην κοιτάξει καν την δεύτερη(όπως γίνεται σε όλες τις γλώσσες προγραμματισμού) και να αποτιμήσει το ΚΑΙ ως ΨΕΥΔΗΣ χωρίς Runtime Error.

Στον Διερμηνευτή του Άλκη το παράδειγμα σκάει αλλά δεν βρήκα να αναφέρει κάτι το βιβλίο πάνω σε αυτό... Γενικά αυτή είναι μια ιδιότητα που χρησιμοποιείται αρκετά οπότε ας μου ξεκαθαρίσει κάποιος αν είναι ασάφεια για να ξέρω τι να υλοποιήσω. Εγώ πιστεύω πως το παράδειγμα θα έπρεπε να τρέχει μια χαρά με είσοδο 0.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 24 Νοε 2020, 09:36:07 ΠΜ
Είναι μικρο-ασάφεια που έχει συζητηθεί εδώ στο παρελθόν, και η πλειονότητα των καθηγητών συμφώνησε ότι "αφού δεν αναφέρεται κάτι στο βιβλίο, πρέπει να γίνεται πλήρης αποτίμηση λογικών συνθηκών".

Στο διάλογο Εργαλεία → Επιλογές → Γλώσσα του Διερμηνευτή έχω εξ' αρχής σχετική ρύθμιση.
Σχετικά θέματα:
https://alkisg.mysch.gr/steki/index.php?topic=3679.0
https://alkisg.mysch.gr/steki/index.php?topic=752.msg4262#msg4262
https://alkisg.mysch.gr/steki/index.php?topic=2473.0
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: Νίκος Αδαμόπουλος στις 24 Νοε 2020, 10:51:40 ΠΜ
Παράθεση από: komni στις 24 Νοε 2020, 02:07:23 ΠΜ
...(όπως γίνεται σε όλες τις γλώσσες προγραμματισμού)...

Δεν γίνεται σε όλες τις γλώσσες...
Βλ. Short-circuit evaluation  στο https://en.wikipedia.org/wiki/Short-circuit_evaluation

Π.χ. στη pascal γίνεται πλήρης αποτίμηση λογικών εκφράσεων, στις C-like και Python γίνεται μερική αποτίμηση, στη VB net έχει διαφορετικούς τελεστές για πλήρη και μερική, κλπ
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 24 Νοε 2020, 12:43:24 ΜΜ
@alkisg Τέλεια, ευχαριστώ!

@Νίκος Αδαμόπουλος Fair enough, δεν ήξερα για την Pascal και την VB net

Επίσης κάποιος είχε ρωτήσει για υποστήριξη ψευδογλώσσας στον διερμηνευτή: Το κοίταξα χθες και έβαλα υποστήριξη στον lexer και parser αλλά ο διερμηνευτής μου κανει resolve τους τύπους των μεταβλητών πριν αρχίσει την εκτέλεση του προγράμματος και αυτό είναι ένα πρόβλημα καθώς δεν μπορεί να το κάνει στην ψευδογλώσσα λόγω μη ύπαρξης τμήματος δηλώσεων. Θα πρέπει να εισάγω type resolution στον διερμηνευτή που γίνεται αλλά θέλω να πάρω τον χρόνο μου με αυτό για να μην καταλήξω με spaghetti code. Θα προσπαθήσω να το υλοποιήσω πριν τη λήξη υποστήριξης του pseudoglossa.gr
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dski στις 25 Νοε 2020, 10:30:41 ΠΜ
Παράθεση από: komni στις 24 Νοε 2020, 12:43:24 ΜΜ
Επίσης κάποιος είχε ρωτήσει για υποστήριξη ψευδογλώσσας στον διερμηνευτή: Το κοίταξα χθες και έβαλα υποστήριξη στον lexer και parser αλλά ο διερμηνευτής μου κανει resolve τους τύπους των μεταβλητών πριν αρχίσει την εκτέλεση του προγράμματος και αυτό είναι ένα πρόβλημα καθώς δεν μπορεί να το κάνει στην ψευδογλώσσα λόγω μη ύπαρξης τμήματος δηλώσεων. Θα πρέπει να εισάγω type resolution στον διερμηνευτή που γίνεται αλλά θέλω να πάρω τον χρόνο μου με αυτό για να μην καταλήξω με spaghetti code. Θα προσπαθήσω να το υλοποιήσω πριν τη λήξη υποστήριξης του pseudoglossa.gr

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

Επειδή ρώτησες, στη Β' ΓΕΛ υπάρχει το μάθημα "Εισαγωγή στην Επιστήμη των Η/Υ" το οποίο, στο μεγαλύτερο μέρος του, είναι μια εισαγωγή στις βασικές αρχές προγραμματισμού με χρήση της Ψευδογλώσσας. Το μάθημα ήταν μονόωρο και από φέτος δίωρο, συνεπώς αποτελεί μια καλή προετοιμασία εν όψει της ΑΕΠΠ της Γ' ΓΕΛ. Για το λόγο αυτό είναι χρήσιμο να υπάρχει ένα online εργαλείο για την Ψευδογλώσσα, ειδικά αφού το pseudoglossa.gr φαίνεται πως θα μας αποχαιρετίσει...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dimpapadop στις 25 Νοε 2020, 05:44:52 ΜΜ
Συγχαρητήρια komni χρειάζεται μια έκδοση js/html 5 ώστε να "τρέχει" σε οποιοδήποτε λειτουργικό/συσκευή.

Όσον αφορά τη Β' Λυκείου, κατά τη γνώμη μου πολύ καλή ιδέα θα ήταν για να αποκτήσουν ευκολότερα αλγοριθμική σκέψη και να γίνει πολύ πιο αποδοτικό το μάθημα, να ξεκινήσουν με μια blockly like εκδοχή της ψευδογλώσσας βασισμένη σε bockly to javascript. κάτι σαν http://1lyk-florin.flo.sch.gr/pliroforiki/
Με αυτόν τον τρόπο γνώμη μου είναι ότι ευκολότερα θα γινόταν η παράδοση και από ένα σημείο και έπειτα η μετάβαση σε κειμενική γλώσσα θα ήταν παιχνιδάκι.
Από την άλλη το αν η ψευδογλώσσα/ΓΛΩΣΣΑ τελείωσε και θα μας αφήσει, είναι μεγάλη κουβέντα σχετικά με τα πλεονεκτήματα/μειονεκτήματα μετάβασης πχ στην python που περισσότερο συζητείται μιας και ήδη έχουν συγγραφεί και εγχειρίδια
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 25 Νοε 2020, 07:17:05 ΜΜ
Παράθεση από: dski στις 25 Νοε 2020, 10:30:41 ΠΜ
Έχεις δίκιο, το σκέφτηκα εκ των υστέρων ότι, ενώ η σύνταξη είναι σχεδόν ίδια, στην Ψευδογλώσσα οι μεταβλητές είναι typeless και αυτή η σημασιολογική διαφορά είναι σημαντική για τον διερμηνευτή... Μάλιστα, θεωρητικά, κατά την εκτέλεση του προγράμματος η ίδια μεταβλητή μπορεί να φιλοξενήσει δεδομένα διαφορετικού τύπου.

Επειδή ρώτησες, στη Β' ΓΕΛ υπάρχει το μάθημα "Εισαγωγή στην Επιστήμη των Η/Υ" το οποίο, στο μεγαλύτερο μέρος του, είναι μια εισαγωγή στις βασικές αρχές προγραμματισμού με χρήση της Ψευδογλώσσας. Το μάθημα ήταν μονόωρο και από φέτος δίωρο, συνεπώς αποτελεί μια καλή προετοιμασία εν όψει της ΑΕΠΠ της Γ' ΓΕΛ. Για το λόγο αυτό είναι χρήσιμο να υπάρχει ένα online εργαλείο για την Ψευδογλώσσα, ειδικά αφού το pseudoglossa.gr φαίνεται πως θα μας αποχαιρετίσει...

Σίγουρα! Λογικά το Σάββατο θα συναντηθώ με μια καθηγήτρια μέσω Zoom και θα μου εξηγήσει πως να εντάξω την ψευδογλώσσα στον διερμηνευτή.

Παράθεση από: dimpapadop στις 25 Νοε 2020, 05:44:52 ΜΜ
Συγχαρητήρια komni χρειάζεται μια έκδοση js/html 5 ώστε να "τρέχει" σε οποιοδήποτε λειτουργικό/συσκευή.

Όσον αφορά τη Β' Λυκείου, κατά τη γνώμη μου πολύ καλή ιδέα θα ήταν για να αποκτήσουν ευκολότερα αλγοριθμική σκέψη και να γίνει πολύ πιο αποδοτικό το μάθημα, να ξεκινήσουν με μια blockly like εκδοχή της ψευδογλώσσας βασισμένη σε bockly to javascript. https://blockly-demo.appspot.com/static/demos/interpreter/async-execution.html
Με αυτόν τον τρόπο γνώμη μου είναι ότι ευκολότερα θα γινόταν η παράδοση και από ένα σημείο και έπειτα η μετάβαση σε κειμενική γλώσσα θα ήταν παιχνιδάκι.  Μάλιστα είναι σχεδόν ολοκληρωμένη, αν προσθέσουμε μια εισαγωγή δεδομένων από το πληκτρολόγιο, πίνακες και τη Για (μπορούμε και χωρίς αυτήν όμως).

Από την άλλη το αν η ψευδογλώσσα/ΓΛΩΣΣΑ τελείωσε και θα μας αφήσει, είναι μεγάλη κουβέντα σχετικά με τα πλεονεκτήματα/μειονεκτήματα μετάβασης πχ στην python που περισσότερο συζητείται μιας και ήδη έχουν συγγραφεί και εγχειρίδια


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

Ακόμη και να προσθέσουν την Python στην ύλη(μεγάλο λάθος κατ' εμέ), μου φαίνεται λίγο απίθανο να εξαλείψουν τελείως τη Γλώσσα/Ψευδογλώσσα. Ακόμη και στο Computer Science A level(αντίστοιχο πτυχίο λυκείου στην Αγγλία) που έκανα, όπου έχει την Python, έχει επίσης και τη δική τους ψευδογλώσσα η οπόια μοιάζει πολύ με τη δική μας(βλ. εικόνα). Μάλιστα, το διαγώνισμα έδινε ίση βαρύτητα σε ψευδογλώσσα και Python!

Το πιο λογικό αν μπει η Python είναι να ενοποιήσουν τη Γλώσσα και την Ψευδογλώσσα(αυτό θα ήταν μια καλή κίνηση - δεν έχω συναντήσει συμμαθητή μου που μπορεί να μου εξηγήσει γιατί είναι δύο γλώσσες και όχι μία) και αυτή η νέα γλώσσα να διδάσκεται στις προηγούμενες τάξεις του Λυκείου.

Δεν ξέρω πάντως γιατί τόσο hype με την Python... Έτσι κι αλλιώς οι πρωτοετείς φοιτητές κάνουν C, C++ ή Java και η Γλώσσα μπορεί ευκολότερα να τους μάθει τη λογική του προγραμματισμού. Αν θέλουν οι συγγραφείς να κατεβάσουν ύλη στο Λύκειο ας εντάξουν τον αντικειμενοστραφή προγραμματισμό στην Γλώσσα και ας προσθέσουν παραπάνω θεωρία(δίκτυα, βάσεις δεδομένων, λογικά κυκλώματα, κ.λπ.).
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: Νίκος Αδαμόπουλος στις 25 Νοε 2020, 09:51:27 ΜΜ
Παράθεση από: dski στις 25 Νοε 2020, 10:30:41 ΠΜ
... στην Ψευδογλώσσα οι μεταβλητές είναι typeless και αυτή η σημασιολογική διαφορά είναι σημαντική για τον διερμηνευτή... Μάλιστα, θεωρητικά, κατά την εκτέλεση του προγράμματος η ίδια μεταβλητή μπορεί να φιλοξενήσει δεδομένα διαφορετικού τύπου.

Δεν είμαι σίγουρος ότι σε αυτό όλοι συμφωνούν!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 26 Νοε 2020, 09:08:19 ΠΜ
Καθόλου θα έλεγα! Αν κάποιος στις Πανελλαδικές γράψει:
i <- 1
i <- "Καλημέρα"
...σε Ψευδογλώσσα, πιστεύω ότι οι περισσότεροι καθηγητές θα του το πιάσουν λάθος.

Στην υλοποίηση Ψευδογλώσσας του Διερμηνευτή, ο τύπος αποφασίζεται έμμεσα (inferred) και δυναμικά με πολλούς τρόπους.
Για παράδειγμα μια εντολή i <- 1.1 σημαίνει ότι το i είναι πραγματικός. Μια εντολή x <- i mod 2 σημαίνει ότι το i είναι ακέραιος. Όμως, μια εντολή i <- 1 σημαίνει ότι το i είναι είτε πραγματικός είτε ακέραιος. Ο Διερμηνευτής κρατά ακόμα και αυτή τη "μισή" πληροφορία και απαγορεύει στο i να πάρει λογικές ή αλφαριθμητικές τιμές. Το πρόγραμμα μπορεί να ολοκληρωθεί χωρίς να μάθουμε ποτέ τι τύπος ήταν το i, αλλά σίγουρα δεν επιτρέπουμε αλλαγές μεταξύ τύπων. Ακόμα και μια "Διάβασε x" δίνει πληροφορία, π.χ. αν ο χρήστης δώσει "Άλκης" τότε ξέρουμε ότι το x είναι αλφαριθμητικό.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dski στις 26 Νοε 2020, 09:56:33 ΠΜ
@Νίκος Αδαμόπουλος και @alkisg

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

Από την άλλη, στο βιβλίο της Β' ΓΕΛ για τις μεταβλητές αναφέρεται το εξής:

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

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

Να δώσω και ένα παράδειγμα που δεν το θεωρώ και πολύ τραβηγμένο:

Να γραφεί αλγόριθμος ο οποίος να διαβάζει και να προσθέτει αριθμούς. Ο αλγόριθμος τερματίζει όταν ο χρήστης εισάγει τη λέξη ΤΕΛΟΣ:

Κώδικας (pascal) [Επιλογή]
Σ <- 0
Διάβασε α
Όσο α <> 'ΤΕΛΟΣ'
  Σ <- Σ + α
  Διάβασε α
Τέλος_επανάληψης


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

Επαναλαμβάνω ότι "μαζί σας είμαι" :-) απλά νομίζω ότι με βάση το βιβλίο η αλλαγή τύπου μεταβλητής στην ψευδογλώσσα θεωρητικά επιτρέπεται.

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

*Σημείωση-Προσθήκη: Να προλάβω την κριτική ότι στο παράδειγμα που έδωσα (χωρίς βαθιά σκέψη είναι η αλήθεια) η μεταβλητή α, εκτός του ότι μπορεί να δεχτεί τιμές είτε αριθμητικές είτε αλφαριθμητικές, αφού πάρει μια τιμή ο αλγόριθμος τη διαχειρίζεται στη σύγκριση ως αλφαριθμητικό και στην πρόσθεση ως αριθμό που μπορεί να είναι λάθος. Ένα αντεπιχείρημα εδώ είναι ότι το παράθεμα του βιβλίου της Β' ΓΕΛ κάνει λόγο για χαρακτηρισμό και όχι τύπο της μεταβλητής ενώ, μετά την πρώτη ανάθεση επίσης αναφέρει ότι η μεταβλητή αποκτά τιμή (και όχι τύπο). Ίσως εδώ πει κανείς ότι παίζω με τις λέξεις και ότι χαρακτηρισμός=τύπος, όμως όταν δεν υπάρχει στο βιβλίο αναφορά για τύπο μεταβλητής (μόνο για τύπο δεδομένων) στην Ψευδογλώσσα εξακολουθώ να πιστεύω ότι θεωρητικά και τυπικά το παράδειγμα που έδωσα στέκει.

Όταν φυσικά πάμε σε υλοποίηση τότε προκύπτουν όλα αυτά τα ζητήματα που χρειάζονται αποσαφήνιση και αν τελικά ο komni αποφασίσει να συμπεριλάβει και την Ψευδογλώσσα στον διερμηνευτή του τότε μάλλον θα είναι απλούστερο και πιθανότατα καλύτερο να ακολουθήσει την ερμηνεία που δίνετε.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: Νίκος Αδαμόπουλος στις 26 Νοε 2020, 12:32:28 ΜΜ
Παράθεση από: dski στις 26 Νοε 2020, 09:56:33 ΠΜ
Από την άλλη, στο βιβλίο της Β' ΓΕΛ για τις μεταβλητές αναφέρεται το εξής:

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

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

Να δώσω και ένα παράδειγμα που δεν το θεωρώ και πολύ τραβηγμένο:

Να γραφεί αλγόριθμος ο οποίος να διαβάζει και να προσθέτει αριθμούς. Ο αλγόριθμος τερματίζει όταν ο χρήστης εισάγει τη λέξη ΤΕΛΟΣ:

Κώδικας (pascal) [Επιλογή]
Σ <- 0
Διάβασε α
Όσο α <> 'ΤΕΛΟΣ'
  Σ <- Σ + α
  Διάβασε α
Τέλος_επανάληψης


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

Επαναλαμβάνω ότι "μαζί σας είμαι" :-) απλά νομίζω ότι με βάση το βιβλίο η αλλαγή τύπου μεταβλητής στην ψευδογλώσσα θεωρητικά επιτρέπεται.

Συμπληρώνοντας... στο βιβλίο της Γ' Λυκείου αναφέρει (σελ. 37) :

Ανάλογα με το είδος της τιμής που μπορούν να λάβουν, οι μεταβλητές διακρίνονται σε αριθμητικές, αλφαριθμητικές και λογικές.

Αν οι μεταβλητές άλλαζαν τύπο κατά τη διάρκεια της εκτέλεσης τότε για ποιο λόγο θα μιλούσαμε για τύπο στις μεταβλητές; Επίσης, αυτό το "που μπορούν να λάβουν" για ποιο λόγο αναφέρεται αν θα "μπορούσαν" να αλλάζουν τύπο οποιαδήποτε στιγμή!

Ακόμα και το παράδειγμα που αναφέρεις  θεωρώ πως είναι λάθος...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 26 Νοε 2020, 12:48:56 ΜΜ
Ότι ειπώθηκε από Dski με βρίσκει σύμφωνο. Εγώ προβληματίζομαι μάλιστα περισσότερο. Πολλά παιδιά, το εννοώ, πολλά παιδιά, κάθε χρόνο, δυσκολεύονται να διαχωρίσουν τι είναι αλγόριθμος από το τι είναι πρόγραμμα σε ΓΛΩΣΣΑ.
Ο αλγόριθμος υποτίθεται πως είναι μια συνταγή, προς υλοποίηση από σχεδόν οποιαδήποτε γλώσσα. Έλα όμως που η ΓΛΩΣΣΑ ομοιάζει με αλγόριθμο σε ψευδογλώσσα στην Ελληνική. Κι εκεί υπάρχει δυσκολία που κατ εμέ δε θα έπρεπε να υπάρχει. Εργαλεία που μπλέκουν ψευδογλώσσα μαζί με ΓΛΩΣΣΑ κι εκτελούν ψευδοκώδικα, μπορεί να είναι πολύ πρακτικά για να εξηγήσουν και να διδάξουν πως λειτουργούν τα πράγματα, αλλά έχοντας στη Γ Λυκείου τη ΓΛΩΣΣΑ, αυτή όλη "ευκολία" οδηγεί πολλές φορές σε σύγχιση. Προφανώς είναι στο χέρι κάθε εκπαιδευτικού, αλλά μόνο ένας μαθητής στους 10 διακρίνει τη διαφορά, δίχως παρέμβασή μου. Στατιστικό από την εμπειρία μου ξεκάθαρα, δε βασίζεται όμως σε επιστημονική έρευνα, στο περίπου σας το λέω και το δείγμα δεν είναι χιλιάδες μαθητές. Καταλαβαίνετε τι εννοώ όμως. Επι χρόνια, κάθε χρονιά, ΚΑΘΕ χρονιά, καλούμαι να εξηγώ τη διαφορά ψευδοκώδικα και κώδικα. Δε με πειράζει πολύ, αλλά πιστεύω θα μπορούσαμε να το είχαμε αποφύγει, αν το μάθημα έκανε υλοποίηση σε κάποια άλλη γλώσσα προγραμματισμού. Το έχω ξαναθίξει αυτό νομίζω.
Πιστεύω πως ως νέο εργαλείο, ο εν λόγω διερμηνευτής, θα ήταν καλό να μείνει πιστός στη ΓΛΩΣΣΑ, προς διευκόλυνση των παιδιών. Αλλά αυτή είναι η προσωπική μου γνώμη.
Για άλλη μια φορά komni, συγχαρητήρια λεβεντιά, μεγάλη μαγκιά αυτό που έκανες και σ' ευχαριστούμε που το έφτιαξες. Κάπου είδα γραμμένο κι ένα "Proud of my student" και δικάιως το είδα. Πώς να μην είσαι περήφανος συνάδελφε; Μπράβο του και μπράβο σου!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 26 Νοε 2020, 12:56:23 ΜΜ
Παράθεση από: Νίκος Αδαμόπουλος στις 26 Νοε 2020, 12:32:28 ΜΜ
Συμπληρώνοντας... στο βιβλίο της Γ' Λυκείου αναφέρει (σελ. 37) :
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν, οι μεταβλητές διακρίνονται σε αριθμητικές, αλφαριθμητικές και λογικές.

Στο κεφάλαιο 7 βέβαια χάνεται το Αριθμητικές κι αντικαθιστάται με ΑΚΕΡΑΙΕΣ - ΠΡΑΓΜΑΤΙΚΕΣ και στη σελ 132 τα κάνουν μαντάρα με το κόκκινο τριγωνάκι κάτω αριστερά.
Αλλά πέραν αυτού, ναι, πρέπει ακόμα κι από τη Β Λυκείου κατ εμέ, να διδάσκεται πως οι μεταβλητές πρέπει να έχουν τύπο ή τουλάχιστο να μην αλλάζει ad-hoc ο τύπους τους.

Θέλω να πω, στη Python και τη javascript ΜΠΟΡΕΙΣ να αλλάξεις τύπο μεταβλητής, γιατί μπορείς. Δε σημαίνει πως πρέπει να το κάνεις όμως. Όταν λοιπόν καλείσαι να διδάξεις πώς να προγραμματίζει ένα παιδί σε μία γλώσσα προγραμματισμού, with great power comes great responsibility. Άρα μάλλον θα έλεγα πως η ένσταση του κου Αδαμόπουλου είναι πολύ δόκιμη στο θέμα των τύπων. Ακόμα και να γίνονται κατά την ανάθεση τιμής, είναι καλό να διδάσκεται πως μια μεταβλητή ΠΡΕΠΕΙ να έχει σταθερό τύπο, ακόμα κι αν σημαίνει πως ΕΜΕΙΣ πρέπει ως προγραμματιστές να φροντίζουμε γι' αυτό. Αλλιώς εύκολα σπαγγετάρεται το πρόγραμμα.
Πατάει στο ίδιο concept που πιστεύω εγώ. Έμαθα αντικειμενοστραφή σε Java. Μου έβγαλε το λάδι, αλλά έμαθα να προγραμματίζω σωστά. Με "ευκολίες" javascript, δε θα μάθαινα όμως. Διότι όποτε με βόλευε, θα άλλαζα μορφή μιας class (prototype ήθελα να πω) κατά το δοκούν, δίχως μια λογική δομή κληροδότησης. Κακά τα ψέματα, η αυστηρότητα στο πως προγραμματίζεις, είναι σχεδόν πάντα καλό πράγμα,τόσο για το παρόν των μαθητών όσο και για το μέλλον τους ως φοιτητές.

Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 27 Νοε 2020, 05:42:57 ΜΜ
Καλησπέρα σε όλους,

Δοκιμών συνέχεια,

ο παρακάτω κώδικας
τρέχει στον Διερμηνευτή του Άλκη,
ΠαράθεσηΠΡΟΓΡΑΜΜΑ Ρύποι_2

ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: ΝO2, O3
ΑΡΧΗ
!Έλεγχος τιμής για το διοξείδιο του αζώτου,NO2
   ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
     ΓΡΑΨΕ 'Δώσε την τιμή του Διοξειδίου του αζώτου'
     ΔΙΑΒΑΣΕ ΝO2

     ΑΝ ΝO2 < 0 ΤΟΤΕ
       ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Διοξειδίου του αζώτου'
     ΤΕΛΟΣ_ΑΝ
   ΜΕΧΡΙΣ_ΟΤΟΥ ΝO2 >= 0

!Έλεγχος τιμής για το διοξείδιο του όζον,O3
   ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
     ΓΡΑΨΕ 'Δώσε την τιμή του Όζοντος'
     ΔΙΑΒΑΣΕ O3

     ΑΝ O3 < 0 ΤΟΤΕ
       ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Όζον'
     ΤΕΛΟΣ_ΑΝ
   ΜΕΧΡΙΣ_ΟΤΟΥ O3 >= 0

   ΑΝ ΝO2 > 700 Η O3 > 500 ΤΟΤΕ
     ΓΡΑΨΕ 'ΠΑΡΑ ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΑΠΑΓΟΡΕΥΣΗ ΚΥΚΛΟΦΟΡΙΑΣ'
   ΑΛΛΙΩΣ_ΑΝ ΝO2 > 500 Η O3 > 300 ΤΟΤΕ
     ΓΡΑΨΕ 'ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΕΚΤΑΚΤΑ ΜΕΤΡΑ'
   ΑΛΛΙΩΣ_ΑΝ ΝO2 > 400 Η O3 > 250 ΤΟΤΕ
     ΓΡΑΨΕ 'ΠΡΟΣΟΧΗ ΥΨΗΛΟΙ ΡΥΠΟΙ'
   ΑΛΛΙΩΣ
     ΓΡΑΨΕ 'Ρύποι μέσα στα όρια'
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ   
αλλλά στον online νέο διερμηνευτή πρέπει να γίνουν αλλαγές στον κώδικα όπως σημειώνονται παρακάτω:
ΠαράθεσηΠΡΟΓΡΑΜΜΑ Ρύποι_2

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΝΟ2, Ο3
ΑΡΧΗ
!Έλεγχος τιμής για το διοξείδιο του αζώτου,NO2
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε την τιμή του Διοξειδίου του αζώτου'
    ΔΙΑΒΑΣΕ ΝΟ2

    ΑΝ ΝΟ2 < 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Διοξειδίου του αζώτου'
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΝΟ2 >= 0

!Έλεγχος τιμής για το διοξείδιο του όζοντος O3
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε την τιμή του Όζοντος'
    ΔΙΑΒΑΣΕ Ο3

    ΑΝ Ο3 < 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Όζον'
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ Ο3 >= 0

  ΑΝ (ΝΟ2 > 700) Η (Ο3 > 500) ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΑΡΑ ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΑΠΑΓΟΡΕΥΣΗ ΚΥΚΛΟΦΟΡΙΑΣ'
  ΑΛΛΙΩΣ_ΑΝ (ΝΟ2 > 500) Η (Ο3 > 300) ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΕΚΤΑΚΤΑ ΜΕΤΡΑ'
  ΑΛΛΙΩΣ_ΑΝ (ΝΟ2 > 400) Η (Ο3 > 250) ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΡΟΣΟΧΗ ΥΨΗΛΟΙ ΡΥΠΟΙ'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Ρύποι μέσα στα όρια'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Αν αφαιρεθούν οι παρενθέσεις εμφανίζονται τα εξής μηνύματα σφάλματος
Παράθεση

       
  • Σφάλμα: Περίμενα τον αριστερό τελεστέο να είναι τύπου Λογική, αλλά έλαβα μη συμβατό τύπο Ακέραια
Κώδικας για το παραπάνω σφάλμα,
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Ρύποι_2

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΝΟ2, Ο3
ΑΡΧΗ
!Έλεγχος τιμής για το διοξείδιο του αζώτου,NO2
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε την τιμή του Διοξειδίου του αζώτου'
    ΔΙΑΒΑΣΕ ΝΟ2

    ΑΝ ΝΟ2 < 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Διοξειδίου του αζώτου'
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΝΟ2 >= 0

!Έλεγχος τιμής για το διοξείδιο του όζοντος,O3
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε την τιμή του Όζοντος'
    ΔΙΑΒΑΣΕ Ο3

    ΑΝ Ο3 < 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Όζον'
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ Ο3 >= 0

  ΑΝ ΝΟ2 > 700 Η Ο3 > 500 ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΑΡΑ ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΑΠΑΓΟΡΕΥΣΗ ΚΥΚΛΟΦΟΡΙΑΣ'
  ΑΛΛΙΩΣ_ΑΝ ΝΟ2 > 500 Η Ο3 > 300 ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΕΚΤΑΚΤΑ ΜΕΤΡΑ'
  ΑΛΛΙΩΣ_ΑΝ (ΝΟ2 > 400) Η (Ο3 > 250) ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΡΟΣΟΧΗ ΥΨΗΛΟΙ ΡΥΠΟΙ'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Ρύποι μέσα στα όρια'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 27 Νοε 2020, 11:51:46 ΜΜ
Παράθεση από: dpa2006 στις 27 Νοε 2020, 05:42:57 ΜΜ
Καλησπέρα σε όλους,

Δοκιμών συνέχεια,

ο παρακάτω κώδικας
τρέχει στον Διερμηνευτή του Άλκη,αλλλά στον online νέο διερμηνευτή πρέπει να γίνουν αλλαγές στον κώδικα όπως σημειώνονται παρακάτω:Αν αφαιρεθούν οι παρενθέσεις εμφανίζονται τα εξής μηνύματα σφάλματοςΚώδικας για το παραπάνω σφάλμα,
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Ρύποι_2

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΝΟ2, Ο3
ΑΡΧΗ
!Έλεγχος τιμής για το διοξείδιο του αζώτου,NO2
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε την τιμή του Διοξειδίου του αζώτου'
    ΔΙΑΒΑΣΕ ΝΟ2

    ΑΝ ΝΟ2 < 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Διοξειδίου του αζώτου'
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ ΝΟ2 >= 0

!Έλεγχος τιμής για το διοξείδιο του όζοντος,O3
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε την τιμή του Όζοντος'
    ΔΙΑΒΑΣΕ Ο3

    ΑΝ Ο3 < 0 ΤΟΤΕ
      ΓΡΑΨΕ 'Δώσε θετική τιμή ή μηδέν για το Όζον'
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ Ο3 >= 0

  ΑΝ ΝΟ2 > 700 Η Ο3 > 500 ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΑΡΑ ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΑΠΑΓΟΡΕΥΣΗ ΚΥΚΛΟΦΟΡΙΑΣ'
  ΑΛΛΙΩΣ_ΑΝ ΝΟ2 > 500 Η Ο3 > 300 ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΟΛΥ ΥΨΗΛΟΙ ΡΥΠΟΙ ΕΚΤΑΚΤΑ ΜΕΤΡΑ'
  ΑΛΛΙΩΣ_ΑΝ (ΝΟ2 > 400) Η (Ο3 > 250) ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΡΟΣΟΧΗ ΥΨΗΛΟΙ ΡΥΠΟΙ'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Ρύποι μέσα στα όρια'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Ευχαριστώ πολύ για την βοήθεια! Θα διορθωθεί με το αυριανό update.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: evry στις 28 Νοε 2020, 07:50:21 ΜΜ
@komni
Δεν είχα τον χρόνο να παρακολουθήσω την συζήτηση.
Ήθελα να σε ρωτήσω γιατί πήγες σε TypeScript και όχι σε Javascript και τι άλλες βιβλιοθήκες χρησιμοποίησες.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 28 Νοε 2020, 08:30:18 ΜΜ
@evry

Χρησιμοποίησα Typescript διότι το θεωρώ απίθανο να διατηρηθεί μία τόσο μεγάλη εφαρμογή(~7000 γραμμές χωρίς τον κώδικα της ιστοσελίδας) όταν είναι γραμμένη σε Javascript.
Αυτό γιατί το Javascript έχει dynamic type system και σοβαρές ελλείψεις δομών που καλύπτει το Typescript π.χ. Enums, Interfaces, Class private & protected properties(Αν και το τελευταίο είναι tc39 candidate proposal (https://github.com/tc39/proposal-class-fields)).

Στον διερμηνευτή, η μόνη βιβλιοθήκη που χρησιμοποιώ είναι το clone-deep (https://github.com/jonschlinkert/clone-deep) το οποίο απλά κάνει αντιγραφή Objects.
Αποφάσισα να μην χρησιμοποιήσω σχεδόν καμία βιβλιοθήκη για λόγους ταχύτητας και μεγέθους.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 29 Νοε 2020, 04:12:17 ΠΜ
Μόλις ανέβασα νέο update που, ανάμεσα σε άλλα, προσθέτει τη βηματική εκτέλεση και διορθώνει το bug που βρήκε ο @dpa2006. Επίσης, αλλάζει την αναπαράσταση των πραγματικών ώστε να αποθηκεύονται μόνο τα τελευταία 2 δεκαδικά ψηφία, δηλαδή:
Κώδικας [Επιλογή]

Γραψε 1/3       ! -> 0.33
Γραψε 2/3       ! -> 0.66
Γράψε 1/3 + 2/3 ! -> 0.99


Υπάρχει ένα bug το οποίο επηρεάζει την αποτίμηση σταθερών εκφράσεων όταν γίνεται παράνομη πράξη. Τότε, ο διερμηνευτής δεν δίχνει το σωστό σφαλμα αλλά ένα internal σφαλμα της Javascript. Π.χ.:
Κώδικας [Επιλογή]

Γράψε 'α' / 3 ! Παράνομη πράξη (δεν ορίζεται μεταξύ χαρακτήρων και ακεραίων)

Βγάζει σφάλμα:
Παράθεση
Σφάλμα Διερμηνευτή: TypeError: left.divide is not a function
Το συγκεκριμένο αφορά μόνο τις σταθερές εκφράσεις και θα διορθωθεί το επόμενο Σάββατο
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: Σταύρος Φιλιππίδης στις 04 Δεκ 2020, 01:22:05 ΜΜ
Συγχαρητήρια για την εξαιρετική σου προσφορά στο μάθημά μας! :)

Να σου προτείνω να τρέξεις μια υλοποίηση ουράς που έχω γράψει και πρόσεξα ότι "χτυπάει" σε κάποια σημεία!

Η υλοποίηση τρέχει σωστά στη ΓλωσσοΜάθεια, όπου την έχω δοκιμάσει.

Για να την τρέξω και στο δικό σου διερμηνευτή, αντικατέστησα τα

<--

με

<-

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

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

Δηλαδή με τη σειρά εισάγουμε τα εξής στις εντολές ΔΙΑΒΑΣΕ:

1
ένα
1
δύο
2
3
3
1
τρία


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

Και κάτι δευτερεύον:

νομίζω ότι η εντολή

ΓΡΑΨΕ ' '

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

Μπορείς να βρεις την υλοποίηση της ουράς που αναφέρω στην αντίστοιχη ανάρτηση στο ιστολόγιό μου (https://blogs.sch.gr/sfil/2020/12/01/ylopoiisi-chrisimon-algorithmon-os-programmata-se-glossa-gia-to-mathima-pliroforiki-g-gel/) (το αρχείο στην περίπτωση 6Β είναι ο πηγαίος κώδικας).

Και πάλι συγχαρητήρια για την εξαιρετική σου δουλειά! Συνέχισε έτσι!

επεξεργασία 4/12/2020 7:47 μ.μ.: να διευκρινίσω ότι την αλλαγή από <-- σε <- δεν την ανέφερα ως bug. Απλά χρειάζεται στο αρχείο που παρέχω για να δουλέψει με το συγκεκριμένο νέο διερμηνευτή. Για την ακρίβεια, το σωστό (προφανώς!) είναι η χρήση του <- απλά εγώ έχω στο αρχείο το <-- γιατί είναι αρχείο κατάλληλο για χρήση με τη ΓλωσσοΜάθεια.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 04 Δεκ 2020, 05:19:32 ΜΜ
@Σταύρος Φιλιππίδης

Καλησπέρα και ευχαριστώ για τα καλά σας λόγια και για τη βοήθεια σας!

Παράθεση από: Σταύρος Φιλιππίδης στις 04 Δεκ 2020, 01:22:05 ΜΜ
Για να την τρέξω και στο δικό σου διερμηνευτή, αντικατέστησα τα

<--

με

<-

Ναι ο διερμηνευτής μου χρησιμοποιεί <- και όχι <--.
Θέλει προσοχή αυτό διότι μια έκφραση τύπου α <-- 5 αποτιμάται σε α <- -5!

Επίσης, υπήρχε ένα άλλo bug όπου ο type checker δεν επισκεπτόταν τα ΑΛΛΙΩΣ_ΑΝ και ΑΛΛΙΩΣ και έτσι άμα τρέχαμε την original έκδοση του προγράμματός σας στην αρχή δεν έβγαζε error αλλά έβγαζε ένα internal της Javascript όταν διάβαζε χαρακτήρες. Διόρθωσα και αυτό.

Παράθεση από: Σταύρος Φιλιππίδης στις 04 Δεκ 2020, 01:22:05 ΜΜ
Επίσης, είδα ότι δεν υποστηρίζεις σταθερές (εννοώ συμβολικές σταθερές, που δηλώνουμε στο ΣΤΑΘΕΡΕΣ) ως διαστάσεις κατά τη δήλωση του πίνακα, οπότε στον πίνακα έβαλα "καρφωτά" το νούμερο που έχω ως σταθερά Ν.

Πλέον υπάρχει υποστήριξη και γι' αυτό! Μου ξέφυγε  ;D

Παράθεση από: Σταύρος Φιλιππίδης στις 04 Δεκ 2020, 01:22:05 ΜΜ
Σενάριο που δοκίμασα και δεν παίζει σωστά στον δικό σου διερμηνευτή: εισαγωγή δύο τιμών στην ουρά, εξαγωγή μιας τιμής, επιλογή 3 για μετακίνηση της ουράς στην αρχή δύο φορές (η δεύτερη δεν χρειάζεται και εμφανίζει σχετικό μήνυμα), εισαγωγή μιας τιμής στην ουρά.

Δηλαδή με τη σειρά εισάγουμε τα εξής στις εντολές ΔΙΑΒΑΣΕ:

1
ένα
1
δύο
2
3
3
1
τρία

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

Fixed! Τώρα λειτουργεί σωστά. Το πρόβλημα ήταν πως έκανα μια αλλαγή στον Parser και άρχισε να ερμηνεύει τις αριθμητικές εκφράσεις με right associativity και έτσι υπήρε πρόβλημα εδώ:
125        ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πίσω - εμπρός + 1

Παράθεση από: Σταύρος Φιλιππίδης στις 04 Δεκ 2020, 01:22:05 ΜΜ
νομίζω ότι η εντολή

ΓΡΑΨΕ ' '

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

Εδώ υπήρχε πρόβλημα με τον κώδικα της ιστοσελίδας(αν χρησιμοποιούσατε το CLI θα το έβγαζε σωστά). Fixed και αυτό!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: Σταύρος Φιλιππίδης στις 04 Δεκ 2020, 07:34:29 ΜΜ
Απίστευτα γρήγορη απόκριση και διόρθωση όλων των bug! Και πάλι συγχαρητήρια! :)
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 05 Δεκ 2020, 09:17:51 ΠΜ
Καλημέρα σε όλους!
Ευχαριστούμε για την προσφορά Κομνηνέ και τις (διαρκείς) διορθώσεις.
Να προτείνω κάτι που θεωρώ πως χρειάζεται να υλοποιήσεις όταν έχεις χρόνο:
την αρχικοποίηση του Διερμηνευτή με χρήση πλήκτρου ή επιλογής σε μενού για δημιουργία νέου(αρχείου)(screen cleaning)
Αν εγω δεν πρόσεξα την ύπαρξη του, να με συγχωρείς...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 05 Δεκ 2020, 04:27:37 ΜΜ
Παράθεση από: dpa2006 στις 05 Δεκ 2020, 09:17:51 ΠΜ
Καλημέρα σε όλους!
Ευχαριστούμε για την προσφορά Κομνηνέ και τις (διαρκείς) διορθώσεις.
Να προτείνω κάτι που θεωρώ πως χρειάζεται να υλοποιήσεις όταν έχεις χρόνο:
την αρχικοποίηση του Διερμηνευτή με χρήση πλήκτρου ή επιλογής σε μενού για δημιουργία νέου(αρχείου)(screen cleaning)
Αν εγω δεν πρόσεξα την ύπαρξη του, να με συγχωρείς...

Καλησπέρα αν εννοείτε κουμπί που θα καθαρίζει τον γραμμένο πηγαίο κώδικα, αποφάσισα να μην κάνω τέτοιο κουμπί γιατί μπορεί ο χρήστης να πατήσει Ctrl+A και μετά Backspace ή ακόμη να επιλέξει τον κώδικα με το ποντίκι και να τον διαγράψει.

Γενικά θέλω να κρατήσω το UI όσο πιο clean γίνεται ώστε να είναι απλό και να μην φοβίζει.

Άμα δεν κατάλαβα σωστά πάντως πείτε μου τι εννοούσατε.

Να σας ξαναευχαριστήσω για την βοήθειά σας στο project.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 06 Δεκ 2020, 01:42:11 ΠΜ
Παράθεση από: komni στις 05 Δεκ 2020, 04:27:37 ΜΜ
Καλησπέρα αν εννοείτε κουμπί που θα καθαρίζει τον γραμμένο πηγαίο κώδικα, αποφάσισα να μην κάνω τέτοιο κουμπί γιατί μπορεί ο χρήστης να πατήσει Ctrl+A και μετά Backspace ή ακόμη να επιλέξει τον κώδικα με το ποντίκι και να τον διαγράψει.

Γενικά θέλω να κρατήσω το UI όσο πιο clean γίνεται ώστε να είναι απλό και να μην φοβίζει.

Άμα δεν κατάλαβα σωστά πάντως πείτε μου τι εννοούσατε.

Να σας ξαναευχαριστήσω για την βοήθειά σας στο project.

Καλημέρα Κομηνέ,
ναι αυτό εννοούσα,
δεν το θεωρώ έλλειψη,
καλά κάνεις και κρατάς απλό το UI.
Και πάλι συγχαρητήρια για την εξαιρετική δουλειά και την άμεση διόρθωση σφαλμάτων!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 12 Δεκ 2020, 03:05:28 ΠΜ
Βρήκα Bug (τι Bugman θα ήμουν).
Αν το αλφαριθμητικό εισόδου (από το αρχείο εισόδου) έχει δυο λέξεις (δηλαδή έχει διάστημα εντός, και όχι σε άκρες), τότε ο διερμηνευτής γυρίζει ένα μυστήριο μήνυμα ότι "Σφάλμα: Περίμενα να διαβάσω 1 μεταβλητή αλλά μου δόθηκαν 2 μεταβλητές".
Δεν υπάρχουν τέτοια μηνύματα!  Η μεταβλητή μπορεί να είναι αλφαριθμητική και να έχει διαστήματα. Το κόμμα διαχωρίζει τις εισαγωγές "παραμέτρων" όχι "μεταβλητών". Αν δεν θέλουμε το διαχωρισμό με το κόμμα κάνουμε κάτι που λέγεται Line Input, δηλαδή τραβάμε όλη την εισαγωγή μέχρι την αλλαγή γραμμής ή το τέλος αρχείου!

Τσέκαρα και με τα νούμερα στο ίδιο πρόγραμμα (έβαλα στις λέξεις όπου είχε διάστημα το _) και πάλι έβγαλε λάθος λίγο διαφορετικό "Σφάλμα: Περίμενα να διαβάσω 2 μεταβλητές αλλά μου δόθηκε 1 μεταβλητή" γιατί μια Διάβασε με τρεις μεταβλητές περιμένει να τις βρει όπου αυτό θέλει, και όχι σε κάθε γραμμή ξεχωριστά όπως κάνει ο διερμηνευτής του Άλκη. Πάλι εδώ η κάθε εισαγωγή πρέπει να γίνεται μέχρι την αλλαγή γραμμής (ή το κόμμα, ή το τέλος αρχείου, όποιο έρθει πρώτο).

Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 12 Δεκ 2020, 03:51:49 ΠΜ
Παράθεση από: bugman στις 12 Δεκ 2020, 03:05:28 ΠΜ
Βρήκα Bug (τι Bugman θα ήμουν).
Αν το αλφαριθμητικό εισόδου (από το αρχείο εισόδου) έχει δυο λέξεις (δηλαδή έχει διάστημα εντός, και όχι σε άκρες), τότε ο διερμηνευτής γυρίζει ένα μυστήριο μήνυμα ότι "Σφάλμα: Περίμενα να διαβάσω 1 μεταβλητή αλλά μου δόθηκαν 2 μεταβλητές".
Δεν υπάρχουν τέτοια μηνύματα!  Η μεταβλητή μπορεί να είναι αλφαριθμητική και να έχει διαστήματα. Το κόμμα διαχωρίζει τις εισαγωγές "παραμέτρων" όχι "μεταβλητών". Αν δεν θέλουμε το διαχωρισμό με το κόμμα κάνουμε κάτι που λέγεται Line Input, δηλαδή τραβάμε όλη την εισαγωγή μέχρι την αλλαγή γραμμής ή το τέλος αρχείου!

Τσέκαρα και με τα νούμερα στο ίδιο πρόγραμμα (έβαλα στις λέξεις όπου είχε διάστημα το _) και πάλι έβγαλε λάθος λίγο διαφορετικό "Σφάλμα: Περίμενα να διαβάσω 2 μεταβλητές αλλά μου δόθηκε 1 μεταβλητή" γιατί μια Διάβασε με τρεις μεταβλητές περιμένει να τις βρει όπου αυτό θέλει, και όχι σε κάθε γραμμή ξεχωριστά όπως κάνει ο διερμηνευτής του Άλκη. Πάλι εδώ η κάθε εισαγωγή πρέπει να γίνεται μέχρι την αλλαγή γραμμής (ή το κόμμα, ή το τέλος αρχείου, όποιο έρθει πρώτο).

Πολύ καλός, Fixed! Τώρα μια γραμμή = μια μεταβλητή.

EDIT: Ο χαρακτήρας _ δεν επιτρέπεται σε νούμερα γιατί το 1_000 π.χ. δεν είναι νούμερο αλλά αλφαριθμητικός. Εκτός αν το λέει κάπου το σχολικό και μου έχει διαφύγει.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 12 Δεκ 2020, 12:55:47 ΜΜ
Το underscore το εβαλα στα αλφαριθμητικά σε αντικατάσταση του διαστήματος.Οποτε δεν υπάρχει τέτοιο ζήτημα για αριθμούς.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 12 Δεκ 2020, 10:09:44 ΜΜ
Καλησπέρα σε όλους,
η ακόλουθη δοκιμή

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ΛΟΓΑΡΙΑΣΜΟΣ_ΝΕΡΟΥ
ΣΤΑΘΕΡΕΣ
  ΦΠΑ = 0.18
  ΤΙΜΗ1 = 0.34
  ΤΙΜΗ2 = 0.52
  ΤΙΜΗ3 = 1.51
  ΤΙΜΗ4 = 2.11
  ΤΙΜΗ5 = 2.64
  ΠΑΓΙΟ = 1.47
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Μετρητής
  ΠΡΑΓΜΑΤΙΚΕΣ: Κατανάλωση, Τιμή, Αποχέτευση, Άλλα, Αξία_ΦΠΑ, Αξία,
  & Τελική_Τιμή
  ΧΑΡΑΚΤΗΡΕΣ: Όνομα, Επώνυμο
ΑΡΧΗ
  ΓΡΑΨΕ 'Δώσε Αριθμό του μετρητή (0 για τέλος)'
  ΔΙΑΒΑΣΕ Μετρητής
  ΟΣΟ Μετρητής <> 0 ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ 'Δώσε το Ονοματεπώνυμο'
    ΔΙΑΒΑΣΕ Επώνυμο, Όνομα
    ΓΡΑΨΕ 'Δώσε την Κατανάλωση'
    ΔΙΑΒΑΣΕ Κατανάλωση
    ΕΠΙΛΕΞΕ Κατανάλωση
      ΠΕΡΙΠΤΩΣΗ 0..15
        Αξία <- Κατανάλωση*ΤΙΜΗ1
      ΠΕΡΙΠΤΩΣΗ 15..60
        Αξία <- 15*ΤΙΜΗ1 + (Κατανάλωση - 15)*ΤΙΜΗ2
      ΠΕΡΙΠΤΩΣΗ 60..81
        Αξία <- 15*ΤΙΜΗ1 + 45*ΤΙΜΗ2 + (Κατανάλωση - 60)*ΤΙΜΗ3
      ΠΕΡΙΠΤΩΣΗ 81..105
        Αξία <- 15*ΤΙΜΗ1 + 45*ΤΙΜΗ2 + 21*ΤΙΜΗ3 + (Κατανάλωση - 81)*ΤΙΜΗ4
      ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
        Αξία <- 15*ΤΙΜΗ1 + 45*ΤΙΜΗ2 + 21*ΤΙΜΗ3 + 24*ΤΙΜΗ4 + (Κατανάλωση - 105)*ΤΙΜΗ5
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
    Αποχέτευση <- Αξία*0.4
    Άλλα <- Αξία*0.01
    Τιμή <- Αξία + Αποχέτευση + Άλλα + ΠΑΓΙΟ
    Αξία_ΦΠΑ <- Τιμή* ΦΠΑ
    Τελική_Τιμή <- Τιμή + Αξία_ΦΠΑ
    ΓΡΑΨΕ 'Ο λογαριασμός του ', Επώνυμο, ' είναι ', Τελική_Τιμή
    ΓΡΑΨΕ 'Αξία νερού:', Αξία
    ΓΡΑΨΕ 'άλλα:', Αποχέτευση + Άλλα, 'ΦΠΑ:', Αξία_ΦΠΑ
    ΓΡΑΨΕ 'Δώσε Αριθμό του επόμενου μετρητή (0 για τέλος)'
    ΔΙΑΒΑΣΕ Μετρητής
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


'Εδωσε το παρακάτω μήνυμα σφάλματος,
στο διερμηνευτή του Άλκη εκτελείται κανονικά.

Παρατήρηση: στο Τετράδιο Εργασιών υπάρχει λάθος στη δήλωση μερικών σταθερών με κόμμα το οποίο έχω διορθώσει και η δήλωση  των περιπτώσεων ακολουθεί την δομή π.χ. 1..60 κα όχι αυτή του βιβλίου (π.χ.  <=60) όπως στο παράδειγμα του αχολικού ετραδίου
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 13 Δεκ 2020, 08:42:17 ΜΜ
Παράθεση από: dpa2006 στις 12 Δεκ 2020, 10:09:44 ΜΜ
Καλησπέρα σε όλους,
η ακόλουθη δοκιμή

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ΛΟΓΑΡΙΑΣΜΟΣ_ΝΕΡΟΥ
ΣΤΑΘΕΡΕΣ
  ΦΠΑ = 0.18
  ΤΙΜΗ1 = 0.34
  ΤΙΜΗ2 = 0.52
  ΤΙΜΗ3 = 1.51
  ΤΙΜΗ4 = 2.11
  ΤΙΜΗ5 = 2.64
  ΠΑΓΙΟ = 1.47
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Μετρητής
  ΠΡΑΓΜΑΤΙΚΕΣ: Κατανάλωση, Τιμή, Αποχέτευση, Άλλα, Αξία_ΦΠΑ, Αξία,
  & Τελική_Τιμή
  ΧΑΡΑΚΤΗΡΕΣ: Όνομα, Επώνυμο
ΑΡΧΗ
  ΓΡΑΨΕ 'Δώσε Αριθμό του μετρητή (0 για τέλος)'
  ΔΙΑΒΑΣΕ Μετρητής
  ΟΣΟ Μετρητής <> 0 ΕΠΑΝΑΛΑΒΕ
    ΓΡΑΨΕ 'Δώσε το Ονοματεπώνυμο'
    ΔΙΑΒΑΣΕ Επώνυμο, Όνομα
    ΓΡΑΨΕ 'Δώσε την Κατανάλωση'
    ΔΙΑΒΑΣΕ Κατανάλωση
    ΕΠΙΛΕΞΕ Κατανάλωση
      ΠΕΡΙΠΤΩΣΗ 0..15
        Αξία <- Κατανάλωση*ΤΙΜΗ1
      ΠΕΡΙΠΤΩΣΗ 15..60
        Αξία <- 15*ΤΙΜΗ1 + (Κατανάλωση - 15)*ΤΙΜΗ2
      ΠΕΡΙΠΤΩΣΗ 60..81
        Αξία <- 15*ΤΙΜΗ1 + 45*ΤΙΜΗ2 + (Κατανάλωση - 60)*ΤΙΜΗ3
      ΠΕΡΙΠΤΩΣΗ 81..105
        Αξία <- 15*ΤΙΜΗ1 + 45*ΤΙΜΗ2 + 21*ΤΙΜΗ3 + (Κατανάλωση - 81)*ΤΙΜΗ4
      ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
        Αξία <- 15*ΤΙΜΗ1 + 45*ΤΙΜΗ2 + 21*ΤΙΜΗ3 + 24*ΤΙΜΗ4 + (Κατανάλωση - 105)*ΤΙΜΗ5
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
    Αποχέτευση <- Αξία*0.4
    Άλλα <- Αξία*0.01
    Τιμή <- Αξία + Αποχέτευση + Άλλα + ΠΑΓΙΟ
    Αξία_ΦΠΑ <- Τιμή* ΦΠΑ
    Τελική_Τιμή <- Τιμή + Αξία_ΦΠΑ
    ΓΡΑΨΕ 'Ο λογαριασμός του ', Επώνυμο, ' είναι ', Τελική_Τιμή
    ΓΡΑΨΕ 'Αξία νερού:', Αξία
    ΓΡΑΨΕ 'άλλα:', Αποχέτευση + Άλλα, 'ΦΠΑ:', Αξία_ΦΠΑ
    ΓΡΑΨΕ 'Δώσε Αριθμό του επόμενου μετρητή (0 για τέλος)'
    ΔΙΑΒΑΣΕ Μετρητής
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


'Εδωσε το παρακάτω μήνυμα σφάλματος,
στο διερμηνευτή του Άλκη εκτελείται κανονικά.

Παρατήρηση: στο Τετράδιο Εργασιών υπάρχει λάθος στη δήλωση μερικών σταθερών με κόμμα το οποίο έχω διορθώσει και η δήλωση  των περιπτώσεων ακολουθεί την δομή π.χ. 1..60 κα όχι αυτή του βιβλίου (π.χ.  <=60) όπως στο παράδειγμα του αχολικού ετραδίου

Καλησπέρα,

Έπρεπε να το είχα αναφέρει αλλά ο διερμηνευτής δεν έχει υποστήριξη για τον τελεστή &.

Αυτό γιατί ο τελεστής αυτός δημιουργήθηκε για το χαρτί όπου αν δεν μπορούμε να γράψουμε άλλο, πρέπει αναγκαστικά να αλλάξουμε γραμμή.

Δεν υπάρχει τέτοιο πρόβλημα στον υπολογιστή αφού μπορούμε να γράφουμε όσο θέλουμε σε μία γραμμή και επίσης η υλοποίηση αυτού θα μου χάλαγε τα error messages πολύ.

Πλέον δίνεται συγκεκριμένο σφάλμα όταν χρησιμοποιείται αυτός ο τελεστής.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 14 Δεκ 2020, 02:47:29 ΠΜ
Παράθεση από: komni στις 13 Δεκ 2020, 08:42:17 ΜΜ
Καλησπέρα,
Έπρεπε να το είχα αναφέρει αλλά ο διερμηνευτής δεν έχει υποστήριξη για τον τελεστή &.
Αυτό γιατί ο τελεστής αυτός δημιουργήθηκε για το χαρτί όπου αν δεν μπορούμε να γράψουμε άλλο, πρέπει αναγκαστικά να αλλάξουμε γραμμή.

Πω πω δίκιο που έχει.......  ;D ;D ;D
Αλλά Komnni σε ανάλυση 800x600 τι κάνουμε; Σκέψου το ενδεχόμενο να προσθέσεις τον ειδικό χαρακτήρα (δε νομίζω να θεωρείται τελεστής) έτσι για να κάνεις τη ζωή όσων τρέχουν σε χαμηλότερες αναλύσεις λειτουργικό, για να έχουν άνετη χρήση  του προγράμματός σου.  :) 
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 14 Δεκ 2020, 11:42:00 ΜΜ
Παράθεση από: komni στις 13 Δεκ 2020, 08:42:17 ΜΜ
Καλησπέρα,

Έπρεπε να το είχα αναφέρει αλλά ο διερμηνευτής δεν έχει υποστήριξη για τον τελεστή &.

Αυτό γιατί ο τελεστής αυτός δημιουργήθηκε για το χαρτί όπου αν δεν μπορούμε να γράψουμε άλλο, πρέπει αναγκαστικά να αλλάξουμε γραμμή.

Δεν υπάρχει τέτοιο πρόβλημα στον υπολογιστή αφού μπορούμε να γράφουμε όσο θέλουμε σε μία γραμμή και επίσης η υλοποίηση αυτού θα μου χάλαγε τα error messages πολύ.

Πλέον δίνεται συγκεκριμένο σφάλμα όταν χρησιμοποιείται αυτός ο τελεστής.
Καλησπέρα
Πολύ ωραία Κομνηνέ,
Η ύπαρξη ενός μηνύματος σφάλματος είναι χρήσιμη...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 15 Δεκ 2020, 01:32:10 ΠΜ
Κομνηνέ, θα μπορούσες κατά το Paste του κώδικα να το πέταγες το & και να έκανες συνένωση γραμμών. Δεν νομίζω να μην μπορείς να το κάνεις!
;D
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 16 Δεκ 2020, 10:52:16 ΠΜ
Παράθεση από: George Eco στις 14 Δεκ 2020, 02:47:29 ΠΜ
Πω πω δίκιο που έχει.......  ;D ;D ;D
Αλλά Komnni σε ανάλυση 800x600 τι κάνουμε; Σκέψου το ενδεχόμενο να προσθέσεις τον ειδικό χαρακτήρα (δε νομίζω να θεωρείται τελεστής) έτσι για να κάνεις τη ζωή όσων τρέχουν σε χαμηλότερες αναλύσεις λειτουργικό, για να έχουν άνετη χρήση  του προγράμματός σου.  :)

Ακόμη και σε μικρές οθόνες υπάρχει το scroll. Για εμένα το & θεωρείται πολύ κακή πρακτική έτσι κι αλλιώς.
Θα μπορούσε να είναι τελεστής με τελεστέο το newline που προηγείται αν και στα Αγγλικά το λένε escape character οπότε ναι χαρακτήρας καλύτερα.

Παράθεση από: bugman στις 15 Δεκ 2020, 01:32:10 ΠΜ
Κομνηνέ, θα μπορούσες κατά το Paste του κώδικα να το πέταγες το & και να έκανες συνένωση γραμμών. Δεν νομίζω να μην μπορείς να το κάνεις!
;D

Καλή ιδέα, θα το βάλω στην επόμενη έκδοση το ΣΚ.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: annastasios στις 11 Ιαν 2021, 09:16:43 ΠΜ
Συγχαρητήρια, πολύ καλή δουλειά!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: ikariofil στις 11 Ιαν 2021, 02:24:42 ΜΜ
 δεν ανοίγει ο ιστότοπος
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 11 Ιαν 2021, 06:44:26 ΜΜ
Παράθεση από: ikariofil στις 11 Ιαν 2021, 02:24:42 ΜΜ
δεν ανοίγει ο ιστότοπος

Ηρώ δοκίμασε ctrl + F5 να τον ξαναφορτώσει όλον εκ νέου. Σ' εμένα ανοίγει κανονικά.
Firefox, Chrome κι opera μου φορτώνει.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 14 Ιαν 2021, 03:49:27 ΠΜ
Παράθεση από: annastasios στις 11 Ιαν 2021, 09:16:43 ΠΜ
Συγχαρητήρια, πολύ καλή δουλειά!
Ευχαριστώ!

Παράθεση από: ikariofil στις 11 Ιαν 2021, 02:24:42 ΜΜ
δεν ανοίγει ο ιστότοπος
Καλησπέρα πείτε μου ποιο browser και OS χρησιμοποιείται για να σας βοηθήσω. Ο διερμηνευτής δεν υποστηρίζει καθόλου Internet Explorer και πολύ παλίες εκδόσεις Chrome/Firefox/Opera.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 14 Ιαν 2021, 03:50:34 ΠΜ
Πλέον και με υποστήριξη Ψευδογλώσσας στο pseudo.gloglossa.gr (https://pseudo.gloglossa.gr)!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 14 Ιαν 2021, 08:28:08 ΠΜ
Μπράβο Κομνηνέ!

Δοκίμασα το παρακάτω και δεν τρέχει, υποτίθεται ότι πρέπει να ζητήσει ως είσοδο τον πίνακα Α, και στη συνέχεια να εμφανίσει το πρώτο στοιχείο του:

Κώδικας (pseudoglossa) [Επιλογή]

Αλγόριθμος Πίνακες
Δεδομένα // Α //
Εμφάνισε Α[1]
Τέλος
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 14 Ιαν 2021, 08:40:59 ΠΜ
Παράθεση από: alkisg στις 14 Ιαν 2021, 08:28:08 ΠΜ
Μπράβο Κομνηνέ!

Δοκίμασα το παρακάτω και δεν τρέχει, υποτίθεται ότι πρέπει να ζητήσει ως είσοδο τον πίνακα Α, και στη συνέχεια να εμφανίσει το πρώτο στοιχείο του:

Κώδικας (pseudoglossa) [Επιλογή]

Αλγόριθμος Πίνακες
Δεδομένα // Α //
Εμφάνισε Α[1]
Τέλος


Γίνεται να δωθεί πίνακας στα δεδομένα;; Πως θα ξέρω αν είναι πίνακας ή μεταβλητή ή ακόμη τις διαστάσεις του πίνακα και το μέγεθος της κάθε μιας;
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 14 Ιαν 2021, 08:47:41 ΠΜ
Ναι, δες για παράδειγμα στη σελίδα 58 του βιβλίου μαθητή:

Κώδικας (pseudoglossa) [Επιλογή]

Αλγόριθμος Ελάχ_Πίνακα
Δεδομένα // table //
Min ← table[1]
Για i από 2 μέχρι 100
  Αν table[i] < Min τότε Min ← table[i]
Τέλος_επανάληψης
Αποτελέσματα //Min//
Τέλος Ελάχ_Πίνακα


Μπορείς να συμπεράνεις ότι είναι πίνακας επειδή χρησιμοποιείται με αγκύλες εντός του προγράμματος.
Για μία λύση στο πώς μπορείς να πάρεις το μέγεθος και τα δεδομένα, τρέξε το παράδειγμα π.χ. στον Διερμηνευτή μου.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 14 Ιαν 2021, 01:42:09 ΜΜ
Να επισημάνουμε εδώ Άλκη βέβαια, πως η αυτή η απορία, του Κομνηνού είναι πάρα πολύ σωστή κατά τη γνώμη μου.
Εννοώ, πως στη ΓΛΩΣΣΑ ορίζεις μέγεθος πίνακα πριν την εκτέλεση, κατά τη δήλωση των μεταβλητών.
Οπότε δεν είναι και τόσο συμβατή η ΓΛΩΣΣΑ με τη ψευδογλώσσα αν το καλοσκεφτούμε,
στην υλοποίηση πίνακα με την εντολή ΔΕΔΟΜΕΝΑ // //.
Δικαίως λοιπόν έχει το παιδί την απορία, αφού αν κατά την εκτέλεση ορίζεις το μέγεθος, το μεταβάλλεις, άρα και τη θεωρείς δυναμική δομή δεδομένων, αλλά ο πίνακας στα πλαίσια του μαθήματος και των δυνατοτήτων της ΓΛΩΣΣΑΣ, είναι στατική δομή.
Να σημειωθεί εδώ το ερώτημα: Σε ψευδογλώσσα ο ορισμός δεδομένων πότε γίνεται; Κατά τον ορισμό ή κατά την εκτέλεση; Αν σπεύσουμε να πούμε κατά τον ορισμό, για να το σώσουμε το θέμα, τότε θυμόμαστε πως κατά τον ορισμό μεταβλητών στη ΓΛΩΣΣΑ, δε μπορούμε να... αρχικοποιήσουμε τιμές.
Απ' όπου κι αν το δεις δε μαζεύεται.
Οπότε πιστεύω πως ήταν τέλεια επιλογή να υλοποιηθεί ως ξεχωριστό εργαλείο διερμηνευτής για ψευδογλώσσα.
Άλλωστε η ψευδογλώσσα ΔΕΝ εκτελείται από υπολογιστή, οπότε κάθε τέτοιος περιορισμός είναι εσφαλμένος. Αλλά αν πάμε να την κάνουμε να εκτελεστεί... συναντάμε τέτοια θέματα, πού έτσι κι αλλιώς συναντάμε αν πάμε να μετατρέψουμε αλγόριθμο ψευδογλώσσας στην Ελληνική, σε ΓΛΩΣΣΑ. Το ίδιο το βιβλίο έχει θέματα. Πολλά.
Κομνηνέ μπράβο παρεμπιπτόντως και για την υλοποίηση και για την απορία σου!
Αυτό που αναφέρεις είναι μεγάλο πρόβλημα με τη ΓΛΩΣΣΑ ως διδακτικό εργαλείο, σε συνδυασμό με ψευδογλώσσα στην Ελληνική. Βάλτο δίπλα στο πρόβλημα με το ότι τα παιδιά τα μπερδεύουν αυτά τα δύο, ως το ίδιο πράγμα καικαταλαβαίνεις γιατί κάποιες φορές με τόσο πάθος υποστηρίζω την αναβάθμιση του μαθήματος σε κάποια γλώσσα που... να μπορούμε να διδάξουμε κι αντικειμενοστραφή προγραμματισμό (που πολύ βολικά και φέτος βγήκε εκτός ύλης).
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 15 Ιαν 2021, 01:24:26 ΠΜ
Παράθεση από: George Eco στις 14 Ιαν 2021, 01:42:09 ΜΜ
Να επισημάνουμε εδώ Άλκη βέβαια, πως η αυτή η απορία, του Κομνηνού είναι πάρα πολύ σωστή κατά τη γνώμη μου.
Εννοώ, πως στη ΓΛΩΣΣΑ ορίζεις μέγεθος πίνακα πριν την εκτέλεση, κατά τη δήλωση των μεταβλητών.
Οπότε δεν είναι και τόσο συμβατή η ΓΛΩΣΣΑ με τη ψευδογλώσσα αν το καλοσκεφτούμε,
στην υλοποίηση πίνακα με την εντολή ΔΕΔΟΜΕΝΑ // //.
Δικαίως λοιπόν έχει το παιδί την απορία, αφού αν κατά την εκτέλεση ορίζεις το μέγεθος, το μεταβάλλεις, άρα και τη θεωρείς δυναμική δομή δεδομένων, αλλά ο πίνακας στα πλαίσια του μαθήματος και των δυνατοτήτων της ΓΛΩΣΣΑΣ, είναι στατική δομή.
Να σημειωθεί εδώ το ερώτημα: Σε ψευδογλώσσα ο ορισμός δεδομένων πότε γίνεται; Κατά τον ορισμό ή κατά την εκτέλεση; Αν σπεύσουμε να πούμε κατά τον ορισμό, για να το σώσουμε το θέμα, τότε θυμόμαστε πως κατά τον ορισμό μεταβλητών στη ΓΛΩΣΣΑ, δε μπορούμε να... αρχικοποιήσουμε τιμές.
Απ' όπου κι αν το δεις δε μαζεύεται.
Οπότε πιστεύω πως ήταν τέλεια επιλογή να υλοποιηθεί ως ξεχωριστό εργαλείο διερμηνευτής για ψευδογλώσσα.
Άλλωστε η ψευδογλώσσα ΔΕΝ εκτελείται από υπολογιστή, οπότε κάθε τέτοιος περιορισμός είναι εσφαλμένος. Αλλά αν πάμε να την κάνουμε να εκτελεστεί... συναντάμε τέτοια θέματα, πού έτσι κι αλλιώς συναντάμε αν πάμε να μετατρέψουμε αλγόριθμο ψευδογλώσσας στην Ελληνική, σε ΓΛΩΣΣΑ. Το ίδιο το βιβλίο έχει θέματα. Πολλά.
Κομνηνέ μπράβο παρεμπιπτόντως και για την υλοποίηση και για την απορία σου!
Αυτό που αναφέρεις είναι μεγάλο πρόβλημα με τη ΓΛΩΣΣΑ ως διδακτικό εργαλείο, σε συνδυασμό με ψευδογλώσσα στην Ελληνική. Βάλτο δίπλα στο πρόβλημα με το ότι τα παιδιά τα μπερδεύουν αυτά τα δύο, ως το ίδιο πράγμα καικαταλαβαίνεις γιατί κάποιες φορές με τόσο πάθος υποστηρίζω την αναβάθμιση του μαθήματος σε κάποια γλώσσα που... να μπορούμε να διδάξουμε κι αντικειμενοστραφή προγραμματισμό (που πολύ βολικά και φέτος βγήκε εκτός ύλης).
Συμφωνώ με όλα αλλά ο διερμηνευτής της Ψευδογλώσσας μου είναι ξεχωριστός από αυτόν της Γλώσσας. Απλά μοιράζονται το ίδιο front-end(AST, symbol table) για να δουλεύει η βηματική εκτέλεση(και άλλα debugging εργαλεία που θα προσθέσω) σε ανώτερο abstraction level.

Παράθεση από: alkisg στις 14 Ιαν 2021, 08:47:41 ΠΜ
Ναι, δες για παράδειγμα στη σελίδα 58 του βιβλίου μαθητή:

Κώδικας (pseudoglossa) [Επιλογή]

Αλγόριθμος Ελάχ_Πίνακα
Δεδομένα // table //
Min ← table[1]
Για i από 2 μέχρι 100
  Αν table[i] < Min τότε Min ← table[i]
Τέλος_επανάληψης
Αποτελέσματα //Min//
Τέλος Ελάχ_Πίνακα


Μπορείς να συμπεράνεις ότι είναι πίνακας επειδή χρησιμοποιείται με αγκύλες εντός του προγράμματος.
Για μία λύση στο πώς μπορείς να πάρεις το μέγεθος και τα δεδομένα, τρέξε το παράδειγμα π.χ. στον Διερμηνευτή μου.
Έστω το παρακάτω πρόγραμμα σε Ψευδογλώσσα
Κώδικας [Επιλογή]

Αλγόριθμος _
    Δεδομένα // πίνακας //
    Για ι από 1 μέχρι 100
        αποτέλεσμα[ι] <- πίνακας[πίνακας[ι]]
    Τέλος_επανάληψης
    Αποτελέσματα // αποτέλεσμα //
Τέλος _

Πώς ξέρει ο διερμηνευτής πόσες γραμμές και στήλες να διαβάσει για τον πίνακα 'πίνακας'; (Δεν έχω μηχανή Windows για να το τεστάρω με τον διερμηνευτή σου αυτή τη στιγμή)
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 15 Ιαν 2021, 01:36:53 ΠΜ
Ναι Κομνηνέ, το κατάλαβα και γι' αυτό και μπράβο σου.  Στη Β Λυκείου και πίσω θα είναι πολύ χρήσιμος!
Το ότι δεν εκτελείται η ψευδογλώσσα το ανάφερα πιο πολύ για το βιβλίο παρά για το διερμηνευτή σου.
Και δικαίως είχες και την απορία αυτή που είχες.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 15 Ιαν 2021, 07:11:16 ΠΜ
Κομνηνέ ρωτάω τον χρήστη για τις διαστάσεις του πίνακα στην εντολή δεδομένα, δες το screenshot εδώ:
https://alkisg.mysch.gr/steki/index.php?topic=4061.0
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 15 Ιαν 2021, 08:18:10 ΠΜ
Παράθεση από: komni στις 14 Ιαν 2021, 03:50:34 ΠΜ
Πλέον και με υποστήριξη Ψευδογλώσσας στο pseudo.gloglossa.gr (https://pseudo.gloglossa.gr)!

Συγχαρητήρια Κομνηνέ,
εξαιρετική εργασία.
Θα αρχίσω δοκιμές.
και η Ψευδογλώσσα είναι χρήσιμη ακόμη περισσότερο η Online υποστήριξη που μας παρέχεις!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 17 Ιαν 2021, 06:24:07 ΜΜ
Έβγαλα νέα έκδοση που διορθώνει πολλά bugs και βάζει υποστήριξη για διάβασμα πινάκων. Πείτε μου άμα το έχω υλοποιήσει σωστά.

Επίσης, έπρεπε να περάσω από 100 Bad Gateways για να ποστάρω, κάτι τρέχει με τον server...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 17 Ιαν 2021, 09:31:07 ΜΜ
Άξιος!!!

Για το 100 Bad Gateway άστα, δεν παλεύεται άλλο, μάλλον πρέπει να φύγει τελικά το Στέκι από το Πανελλήνιο Σχολικό Δίκτυο... συνεχώς κάνω αναφορές σφαλμάτων, υποτίθεται διορθώνουν τους servers, και ξανά πάλι πεσμένοι είναι.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 21 Ιαν 2021, 01:04:28 ΜΜ
Ευχαριστούμε!
Άλκη πρέπει να επισπευτεί η μετάβαση...
Η χρήση Backup domain είναι επιβεβλξμένη πιστεύω...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 21 Ιαν 2021, 01:11:02 ΜΜ
@dpa2006, η μετάβαση του Στεκιού σε άλλον server έγινε στις 18/01/2021, και πλέον φαίνεται σταθερότατο:
https://alkisg.mysch.gr/steki/index.php?topic=288.msg93472#msg93472
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 21 Ιαν 2021, 06:54:51 ΜΜ
Άψογα δεν το είχα καταλάβει,
να υποθέσω πως όλα πήγαν καλά και δεν θα πάψουν τα προβλήματα του παρελθόντος.
Καλή αρχή στο νέο Σερβερ τότε. :)
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 14 Φεβ 2021, 07:09:05 ΜΜ
Καλησπέρα σε όλους,

Με ειδοποίησαν μέσω email πως στη Γλώσσα και στην Ψευδογλώσσα επιτρέπεται να καλέσω προγράμματα και αλγορίθμους, π.χ. φωτογραφία (0).

Μπορεί να μου εξηγήσει κανείς πως ακριβώς δουλεύει αυτός ο μηχανισμός; Τι γίνεται αν έχω πολλά διάβασε και πολλά γράψε; Αν είναι κάπως έτσι:
Κώδικας [Επιλογή]

Αλγόριθμος καλούμενος
  Διάβασε α, β
  Γράψε 10
  Διάβασε δ
  Γράψε 20
Τέλος καλεσμένος

Αλγόριθμος καλών
  α <- 1
  β <- 2
  γ <- 3
  δ <- 4
  ε <- 5
  Κάλεσε καλούμενος(α, β, γ, δ, ε)
  Γράψε α, β, γ, δ, ε
Τέλος καλών

Πως ακριβώς θα εκτελεστεί;;
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: George Eco στις 14 Φεβ 2021, 09:33:40 ΜΜ
Αν καταλαβαίνω σωστά την ερώτηση, η εκτέλεση γίνεται σε stack.

Αν το κεντρικό Κ καλεί μία διαδικασία Χ που καλεί με τη σειρά της μια Ψ, που καλεί με τη σειρά της μια Ζ έχεις στοίβα με 4 στοιχεία, πάντα "στο πάτο" είναι το κεντρικό. Όπως καταλαβαίνεις πρώτα ΤΕΡΜΑΤΙΖΕΙ η Ζ, μετά τερματίζει η Ψ, μετά η Χ και κατόπιν προχωράς με την Κ.

Ζ  <-- top
Ψ
Χ
Κ

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

Καλείς τον καλόυμενος με 5 πραγματικές παραμέτρους σε παρένθεση, δίχως να έχεις ορίσει τυπικές.
Αυτό είναι το πρόβλημα με τους αλγορίθμους της ψευδογλώσσας. Ομοιάζουν και διαφέρουν ΑΠΙΣΤΕΥΤΑ με της ΓΛΩΣΣΑΣ.

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

ΣΤΗ ΓΛΩΣΣΑ:
1) Ξεκινάμε πάντα με το κεντρικό πρόγραμμα, τόσο στην εκτέλεση, όσο και στη σύνταξη.
2) Ακολουθούν τα υποπρογράμματα, με αδιάφορη σειρά.
3) Δες στο υποπρόγραμμα πως η πραγματική παράμετρος α στο κάλεσμα, "κουμπώνει" στη τυπική παράμετρο τυπική1
4) Δες στο υποπρόγραμμα πως η πραγματική παράμετρος β στο κάλεσμα, "κουμπώνει" στη τυπική παράμετρο τυπική2
5) Δες στο υποπρόγραμμα πως η πραγματική παράμετρος γ στο κάλεσμα, "κουμπώνει" στη τυπική παράμετρο ψ
6) Σε ΔΙΑΔΙΚΑΣΙΕΣ οι τυπικές επηρεάζουν τις τιμές των πραγματικών παραμέτρων, αν μεταβληθούν μέσα στη διαδικασία.
7) Αν περάσεις σταθερά ως παράμετρο, φέρει πειν το 12, δε θα μεταβληθεί στο κεντρικό πρόγραμμα.
8 ) ΣΥΝΑΡΤΗΣΕΙΣ ΔΕΝ επηρεάζουν τις πραγματικές παραμέτρους, σε αντίθεση με τις διαδικασίες.
9) Μπορείς να περάσεις πίνακα ως παράμετρο, δηλώνοντάς τον με την ονομασία του, και με τυπική παράμετρο πίνακα ιδίου τύπου και διαστάσεων.
10) Όλες οι πραγματικές παράμετροι πρέπει να είναι ίδιου τύπου με τις πραγματικές και να τις περνάμε με την ίδια σειρά που είναι δηλωμένες οι αντίστοιχες τυπικές.

Βάλε βήμα-βήμα στο διερμηνευτή του Άλκη το παρακάτω:

ΠΡΟΓΡΑΜΜΑ Κεντρικό_και_καλών
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: α, β, γ
ΑΡΧΗ
  α <- 1
  β <- 2
  ΚΑΛΕΣΕ Κ(α, β,12, γ)
  ΓΡΑΨΕ α, β, γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


ΔΙΑΔΙΚΑΣΙΑ Κ(τυπική1, τυπική2,τυπική3, ψ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: τυπική1, τυπική2, τυπική3,χ, ψ
ΑΡΧΗ
  ΔΙΑΒΑΣΕ χ
  ΓΡΑΨΕ χ, τυπική1, τυπική2
  ψ <- χ^ 2
  τυπική3 <- τυπική3+1
  τυπική2 <- τυπική2 +1+τυπική3
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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



Επί τη ευκαιρία, μία πρόταση. Ο Διερμηνευτής του Άλκη, χρωματίζει διαφορετικά τα λατινικά από τα Ελληνικά, για να αποφεύγονται κακοτοπιές (λατινικό Α κι ελληνικό Α ως μεταβλητές είναι διαφορετικό όνομα) οπότε θα το χαρώ πολύ να το δω αυτό στο διερμηνευτή σου.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 18 Φεβ 2021, 11:47:59 ΜΜ
Καλησπέρα Κομνηνέ,
Στη Σελίδα 100 νομίζω πως αναφέρεται αυτό το οποίο ζητάς
http://iep.edu.gr/images/IEP/Modules/Sj_K2_Extra_Slider/Fakeloi_Ylikou/Pliroforiki-odigies-meletis-mathiti-v.2.0.pdf

Βέβαια αναφέρει οτι η κλήση μπορεί να γίνει από εξωτερικό πρόγραμμα αλλά δεν δίνει κάποιο παράδειγμα και δεν αναφέρει αν αυτό μπορεί να συμβεί από εξωτερικό αρχείο,μάλλον το υπονοεί. ???
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 19 Φεβ 2021, 05:10:23 ΜΜ
Καλησπέρα σε όλους,

Κομηνέ καλησπέρα,
δεν θα το χαρακτήριζα ως Bug...

έτρεξα το εξής πρόγραμμα σε gloslossa
Παράθεση
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_2

ΜΕΤΑΒΛΗΤΕΣ

  ΠΡΑΓΜΑΤΙΚΕΣ:X,Y

ΑΡΧΗ

ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ X= '

ΔΙΑΒΑΣΕ X

ΑΝ X MOD 2 =0 ΤΟΤΕ

    Y <- X DIV 2
   
    ΑΝ Y<= 10 ΤΟΤΕ
        Y<-2*X+Y
    ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
   Y<-X^2
ΤΕΛΟΣ_ΑΝ

ΓΡΑΨΕ 'ΤΟ Y ΕΙΝΑΙ =',Y

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ



και το σφάλμα που έδωσε ήταν το εξής:

Σφάλμα: Cannot promote n to n

Η αλλαγή των μεταβλητών σε ΑΚΕΡΑΙΑ από ΠΡΑΓΜΑΤΙΚΗ το έλυσε,αλλά το μήνυμα σφάλματος δυστυχώς δεν βοηθάει και πολύ.Κάποια στιγμή αν μπορείς να το διοθρθώσεις
Επίσης ως kindly request αν ήταν εφικτό να δώσεις Code Formatting ως εντολή κάποοια στιγμή.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 25 Φεβ 2021, 01:46:04 ΠΜ
Καλησπέρα και πάλι,

Το σφάλμα που επισήμανε ο dpa, το code formatting(αντί για κουμί θα γίνεται αυτόματα οταν ο χρήστης πατάει το κουμπί εκτέλεση) και η πρόταση του George Eco θα εχουν υλοποιηθεί μέχρι την Κυριακή.

Όσο για το κάλεσμα αλγορίθμων/προγραμμάτων, θα αργήσει λιγάκι. Πιθανότατα να το κάνω την επόμενη βδομάδα.

Υ.Γ. δεν μου έρχονται πλέον email για απαντήσεις στο ποστ @alkisg
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 25 Φεβ 2021, 01:51:14 ΠΜ
Θα ήθελα επίσης να ρωτήσω αν κανείς έχει πρόβλημα με το site να φορτώνει/αλληλεπιδρά αργά. Δεν έχω ασχοληθεί πολύ με optimizations, γι' αυτό ρωτάω.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 25 Φεβ 2021, 07:32:11 ΠΜ
Παράθεση από: komni στις 14 Φεβ 2021, 07:09:05 ΜΜ
Μπορεί να μου εξηγήσει κανείς πως ακριβώς δουλεύει αυτός ο μηχανισμός; Τι γίνεται αν έχω πολλά διάβασε και πολλά γράψε; Αν είναι κάπως έτσι:

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

Παράθεση από: komni στις 25 Φεβ 2021, 01:46:04 ΠΜ
Υ.Γ. δεν μου έρχονται πλέον email για απαντήσεις στο ποστ @alkisg

Κομνηνέ δες λίγο στα spam σου, μόλις το δοκίμασα και μου δούλεψε κανονικά.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: pgrontas στις 25 Φεβ 2021, 03:50:38 ΜΜ
Καλησπέρα,

στον παρακάτω αλγόριθμο
Κώδικας [Επιλογή]

Αλγόριθμος Ασκ6
χ <- 1200
ετ <- 0
Όσο χ <= 2000 επανάλαβε
  χ <- χ + χ*0.038
  ετ <- ετ + 1
  Εμφάνισε ετ, χ
Τέλος_επανάληψης
Εμφάνισε ετ
Τέλος Ασκ6

ο διερμηνευτής δίνει:
1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
14

ενώ το https://pseudo.gloglossa.gr/ δίνει

1 1236
2 1273.08
3 1311.27
4 1350.6
5 1391.11
6 1432.84
7 1475.82
8 1520.09
9 1565.69
10 1612.66
11 1661.04
12 1710.87
13 1762.19
14 1815.05
15 1869.5
16 1925.58
17 1983.34
18 2042.84
18
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 25 Φεβ 2021, 04:17:46 ΜΜ
Παράθεση από: pgrontas στις 25 Φεβ 2021, 03:50:38 ΜΜ
Καλησπέρα,

στον παρακάτω αλγόριθμο
Κώδικας [Επιλογή]

Αλγόριθμος Ασκ6
χ <- 1200
ετ <- 0
Όσο χ <= 2000 επανάλαβε
  χ <- χ + χ*0.038
  ετ <- ετ + 1
  Εμφάνισε ετ, χ
Τέλος_επανάληψης
Εμφάνισε ετ
Τέλος Ασκ6

ο διερμηνευτής δίνει:
1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
14

ενώ το https://pseudo.gloglossa.gr/ δίνει

1 1236
2 1273.08
3 1311.27
4 1350.6
5 1391.11
6 1432.84
7 1475.82
8 1520.09
9 1565.69
10 1612.66
11 1661.04
12 1710.87
13 1762.19
14 1815.05
15 1869.5
16 1925.58
17 1983.34
18 2042.84
18


Καλησπέρα,

Θα το κοιτάζω βραδάκι αλλά φαντάζομαι έχει σχέση με τον τρόπο που χειρίζομαι τους πραγματικούς. Σε κάθε πράξη κάνω truncate τα δεκαδικά ψηφία και αφήνω μόνο τα πρώτα δύο. Δεν είμαι σίγουρος τι κάνει ο @alkisg

Άρχισαν να μου ξαναέρχονται τα email, τέλεια.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: alkisg στις 25 Φεβ 2021, 04:25:43 ΜΜ
Παράθεση από: komni στις 25 Φεβ 2021, 04:17:46 ΜΜ
Σε κάθε πράξη κάνω truncate τα δεκαδικά ψηφία και αφήνω μόνο τα πρώτα δύο. Δεν είμαι σίγουρος τι κάνει ο @alkisg

Ο Διερμηνευτής δεν κάνει ποτέ truncate σε πράξεις ώστε τα αποτελέσματα να είναι όσο σωστά υποστηρίζει ο επεξεργαστής.
Κάνει όμως σε συγκρίσεις, ώστε π.χ. η συνθήκη 0.9999999999999 = 1 να είναι ΑΛΗΘΗΣ, στην Α_Μ(0.9999999999999) ώστε να βγαίνει 1, και φυσικά τυπώνει με πεπερασμένα δεκαδικά ψηφία τους αριθμούς. Και για τις δύο αυτές λειτουργίες υπάρχουν σχετικές επιλογές στον διάλογο ρυθμίσεων.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: pgrontas στις 25 Φεβ 2021, 09:02:44 ΜΜ
Ναι μάλλον έτσι εξηγείται. Οπότε αφού πολλαπλασιάζεις με το 0.03 αντί για το 0.038 υπάρχει αυτή η αποκλιση.
Παράθεση από: komni στις 25 Φεβ 2021, 04:17:46 ΜΜ
Καλησπέρα,

Θα το κοιτάζω βραδάκι αλλά φαντάζομαι έχει σχέση με τον τρόπο που χειρίζομαι τους πραγματικούς. Σε κάθε πράξη κάνω truncate τα δεκαδικά ψηφία και αφήνω μόνο τα πρώτα δύο. Δεν είμαι σίγουρος τι κάνει ο @alkisg

Άρχισαν να μου ξαναέρχονται τα email, τέλεια.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 28 Φεβ 2021, 04:22:18 ΜΜ
Παράθεση από: komni στις 25 Φεβ 2021, 01:46:04 ΠΜ
Καλησπέρα και πάλι,

Το σφάλμα που επισήμανε ο dpa, το code formatting(αντί για κουμί θα γίνεται αυτόματα οταν ο χρήστης πατάει το κουμπί εκτέλεση) και η πρόταση του George Eco θα εχουν υλοποιηθεί μέχρι την Κυριακή.

Όσο για το κάλεσμα αλγορίθμων/προγραμμάτων, θα αργήσει λιγάκι. Πιθανότατα να το κάνω την επόμενη βδομάδα.

Υ.Γ. δεν μου έρχονται πλέον email για απαντήσεις στο ποστ @alkisg

Ευχαριστώ και πάλι.
Ελπίζω να μπορείς να λαμβάνεις email από το στέκι πλέον.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 28 Φεβ 2021, 05:21:49 ΜΜ
Παράθεση από: pgrontas στις 25 Φεβ 2021, 03:50:38 ΜΜ
Καλησπέρα,

στον παρακάτω αλγόριθμο
Κώδικας [Επιλογή]

Αλγόριθμος Ασκ6
χ <- 1200
ετ <- 0
Όσο χ <= 2000 επανάλαβε
  χ <- χ + χ*0.038
  ετ <- ετ + 1
  Εμφάνισε ετ, χ
Τέλος_επανάληψης
Εμφάνισε ετ
Τέλος Ασκ6

ο διερμηνευτής δίνει:
1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
14

ενώ το https://pseudo.gloglossa.gr/ (https://pseudo.gloglossa.gr/) δίνει

1 1236
2 1273.08
3 1311.27
4 1350.6
5 1391.11
6 1432.84
7 1475.82
8 1520.09
9 1565.69
10 1612.66
11 1661.04
12 1710.87
13 1762.19
14 1815.05
15 1869.5
16 1925.58
17 1983.34
18 2042.84
18


Ο αλγόριθμος και σε Python

# Αλγόριθμος Άσκηση_6

x=1200
et=0

while x<=2000:
    x=x+0.038*x
    et=et+1
    print('{:d}'.format(et),'{:6.2f}'.format(x))

   
print("et=",et)
   

Έξοδος

1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
et= 14
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 28 Φεβ 2021, 10:34:17 ΜΜ
Το λάθος βγαίνει σε οποιαδήποτε γλώσσα όταν το 0.038  λαμβάνεται ως 0.03.
Δηλαδή κατά τη σάρωση του κώδικα, η μετατροπή του 0.038 γίνεται με αποκοπή από το τρίτο δεκαδικό (truncate και όχι round). Κανονικά θα έπρεπε να μην γίνει αποκοπή και το round (στρογγυλοποίηση) να είναι στο 15 ή 16 δεκαδικό αν μιλάμε για double τύπο πραγματικού των 80bit - IEEE 754).
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 16 Μαρ 2021, 10:31:40 ΠΜ
Καλημέρα σε όλους,
δοκίμασα να τρέξω το Mastermind του Άλκη σε ΓΛΩΣΣΑ ΚΑΙ gloglossa
Στον Διερμηνευτή της ΓΛΩΣΣΑΣ τρέχει κανονικά,
στον Online Διερμηνευτή βγάζει σφάλμα:


ΚΩΔΙΚΑΣ ΠΑΡΑΔΕΙΓΜΑΤΟΣ

Κώδικας [Επιλογή]


ΠΡΟΓΡΑΜΜΑ MasterMind
!Το πρόγραμμα επιδεικνύει την εκτενή χρήση υποπρογραμμάτων.
!Οδηγίες για το παιχνίδι δίνονται κατά την εκτέλεσή του.
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμαΠροσπάθειας, κατάστασηΕκτέλεσης
ΑΡΧΗ
  ΚΑΛΕΣΕ ΕμφάνισεΟδηγίες
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε έναν τετραψήφιο αριθμό ή 0 (μηδέν) αν παραιτείσαι:  '
    ΔΙΑΒΑΣΕ προσπάθειαΧρήστη
    αποτέλεσμαΠροσπάθειας <- ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη)
    ΕΠΙΛΕΞΕ αποτέλεσμαΠροσπάθειας
      ΠΕΡΙΠΤΩΣΗ 2222
        ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι:  '
        ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
        ΚΑΛΕΣΕ ΕμφάνισεΣυγχαρητήρια
      ΠΕΡΙΠΤΩΣΗ -1
        ΚΑΛΕΣΕ ΕμφάνισεΜήνυμαΠαραίτησης
      ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
        ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι:  '
        ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ αποτέλεσμαΠροσπάθειας = 2222 Η αποτέλεσμαΠροσπάθειας = -1
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΟδηγίες
ΑΡΧΗ
  ΓΡΑΨΕ '                 ▄   ▄  ▄  ▄▄▄ ▄▄▄ ▄▄▄ ▄▄  ▄   ▄ ▄ ▄   ▄ ▄▄▄'
  ΓΡΑΨΕ '                 █▀▄▀█ █▄█ ▀▄   █  █▄  █▄▀ █▀▄▀█ █ █▀▄ █ █  █'
  ΓΡΑΨΕ '                 █   █ █ █ █▄▄  █  █▄▄ █ █ █   █ █ █  ▀█ █▄▄▀'
  ΓΡΑΨΕ 'Οδηγίες:'
  ΓΡΑΨΕ 'Στο παιχνίδι αυτό ο σκοπός είναι να μαντέψουμε έναν τετραψήφιο αριθμό'
  ΓΡΑΨΕ 'τον οποίο κρατάει κρυφό ο υπολογιστής. Τα ψηφία του αριθμού είναι'
  ΓΡΑΨΕ 'διαφορετικά μεταξύ τους, αλλά επιτρέπεται το πρώτο ψηφίο να είναι μηδέν,'
  ΓΡΑΨΕ 'για παράδειγμα ο μυστικός αριθμός μπορεί να είναι 0248.'
  ΓΡΑΨΕ 'Αν προσπαθώντας να το βρούμε εισάγουμε τον αριθμό 1234,'
  ΓΡΑΨΕ 'τότε ο υπολογιστής θα μας απαντήσει με το κείμενο ΟΝΟΠ.'
  ΓΡΑΨΕ 'Τα γράμματα αυτά σημαίνουν:'
  ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 1.'
  ΓΡΑΨΕ '«Ν»αι, ο μυστικός αριθμός περιέχει το ψηφίο 2.'
  ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 3.'
  ΓΡΑΨΕ '«Π»ερίπου, υπάρχει 4 στο μυστικό αριθμό αλλά όχι σ'' αυτή τη θέση.'
  ΓΡΑΨΕ ''
  ΓΡΑΨΕ 'Η εκτέλεση συνεχίζεται μέχρι να πετύχουμε τον αριθμό,'
  ΓΡΑΨΕ 'ή να δώσουμε 0000, το οποίο σημαίνει ότι παραιτούμαστε.'
  ΓΡΑΨΕ ''
!  ΓΡΑΨΕ '...............................................................................'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΣΥΝΑΡΤΗΣΗ ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη): ΑΚΕΡΑΙΑ
!Η συνάρτηση αυτή υπολογίζει το αποτέλεσμα, π.χ. 'ΟΝΟΠ'. Αλλά επειδή η ΓΛΩΣΣΑ
!δεν υποστηρίζει χειρισμό αλφαριθμητικών, χρησιμοποιεί αριθμούς, π.χ. 0201.
!Το 2222 σημαίνει ότι ο χρήστης πέτυχε τον αριθμό,
!ενώ το -1 σημαίνει ότι παραιτείται, αφού έδωσε μηδέν σαν είσοδο.
ΣΤΑΘΕΡΕΣ
!Οι πράξεις είναι απλά για να μη φαίνεται ο μυστικός αριθμός
  Μυστικός = 1234*9876 MOD 10000
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμα, ι, κ
  ΛΟΓΙΚΕΣ: υπάρχει
ΑΡΧΗ
  ΑΝ προσπάθειαΧρήστη = 0 ΤΟΤΕ
    αποτέλεσμα <- -1
  ΑΛΛΙΩΣ
    αποτέλεσμα <- 0
    ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
      ΑΝ Ψηφίο(Μυστικός, ι) = Ψηφίο(προσπάθειαΧρήστη, ι) ΤΟΤΕ
        αποτέλεσμα <- 10*αποτέλεσμα + 2
      ΑΛΛΙΩΣ
        υπάρχει <- ΨΕΥΔΗΣ
        ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 4
          ΑΝ Ψηφίο(προσπάθειαΧρήστη, ι) = Ψηφίο(Μυστικός, κ) ΤΟΤΕ
            υπάρχει <- ΑΛΗΘΗΣ
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
        ΑΝ υπάρχει ΤΟΤΕ
          αποτέλεσμα <- 10*αποτέλεσμα + 1
        ΑΛΛΙΩΣ
          αποτέλεσμα <- 10*αποτέλεσμα
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΑΝ
  ΑξιολόγησεΠροσπάθεια <- αποτέλεσμα
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


ΣΥΝΑΡΤΗΣΗ Ψηφίο(αριθμός, ποιο): ΑΚΕΡΑΙΑ
!Απομονώνει το #ποιο ψηφίο του αριθμού.
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αριθμός, ποιο
ΑΡΧΗ
  Ψηφίο <- αριθμός DIV Α_Μ(10^(ποιο - 1)) MOD 10
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΣυγχαρητήρια
ΑΡΧΗ
  ΓΡΑΨΕ '              ▄▄▄ ▄   ▄ ▄▄▄ ▄   ▄  ▄  ▄▄  ▄ ▄ ▄▄▄ ▄ ▄ ▄▄  ▄  ▄  ▄'
  ΓΡΑΨΕ '              ▀▄   ▀▄▀  █    ▀▄▀  █▄█ █▄▀ █▄█  █  █▄█ █▄▀ █ █▄█ █'
  ΓΡΑΨΕ '              █▄▄   █   █   ▄▀ ▀▄ █ █ █   █ █  █  █ █ █   █ █ █ ▄'
  ΓΡΑΨΕ '                  Είσαι ιδιοφυία, πέτυχες το μυστικό αριθμό!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΜήνυμαΠαραίτησης
ΑΡΧΗ
  ΓΡΑΨΕ '              ▄▄▄ ▄   ▄ ▄▄▄ ▄   ▄  ▄  ▄▄  ▄ ▄ ▄▄▄ ▄ ▄ ▄▄  ▄  ▄  ▄'
  ΓΡΑΨΕ '              ▀▄   ▀▄▀  █    ▀▄▀  █▄█ █▄▀ █▄█  █  █▄█ █▄▀ █ █▄█ █'
  ΓΡΑΨΕ '              █▄▄   █   █   ▄▀ ▀▄ █ █ █   █ █  █  █ █ █   █ █ █ ▄'
  ΓΡΑΨΕ '         ...θα πάρεις την επόμενη φορά αν καταφέρεις να τον πετύχεις!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αποτέλεσμαΠροσπάθειας, ι
ΑΡΧΗ
  ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
    ΕΠΙΛΕΞΕ Ψηφίο(αποτέλεσμαΠροσπάθειας, ι)
      ΠΕΡΙΠΤΩΣΗ 0
        ΓΡΑΨΕ 'Ο '
      ΠΕΡΙΠΤΩΣΗ 1
        ΓΡΑΨΕ 'Π '
      ΠΕΡΙΠΤΩΣΗ 2
        ΓΡΑΨΕ 'Ν '
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ ''
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

όταν δοκίμασα να το εκτελέσω στο


https://gloglossa.gr/ (https://gloglossa.gr/)


Πήρα το εξής μήνυμα σφάλματος
Γραμμή 6: Σφάλμα: Περίμενα άνοιγμα παρένθεσης μετά από όνομα διαδικασίας[/size]
αρχικά[/size]
και αφού έβαλα παρενθέσεις το εξής μήνυμα σφάλματος[/size]
Γραμμή 6: Σφάλμα: Περίμενα όνομα μεταβλητής[/size]

https://postimg.cc/gallery/q6psh5f (https://postimg.cc/gallery/q6psh5f)

(https://postimg.cc/s1Myg7ms)


(https://postimg.cc/dDgFk3Nd)

Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: bugman στις 18 Μαρ 2021, 06:04:27 ΜΜ
Υπάρχουν προβλήματα. Αν κάθε λάθος με τη σειρά τα αντιμετωπίσουμε, όπως εκεί που καλούμε διαδικασία χωρίς ορίσματα πρέπει να βάλουμε () για να κληθεί σωστά,  τότε θα φτάσουμε να μην δέχεται τη συνάρτηση Ψηφίο. Δοκίμασα και την γύρισα σε κεφαλαία και πάλι είχε πρόβλημα, οπότε την μετακίνησα ακριβώς μετά τη διαδικασία ΕμφάνισεΟδηγίες και ξεκίνησε το πρόγραμμα χωρίς πρόβλημα.
Αυτό ξεκίνησε αν και δεν είχα χρόνο να το δοκιμάσω, δηλαδή δεν το είδα όλο, αν θέλει κάποιος να το δει, ας το δοκιμάσει.

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ MasterMind
!Το πρόγραμμα επιδεικνύει την εκτενή χρήση υποπρογραμμάτων.
!Οδηγίες για το παιχνίδι δίνονται κατά την εκτέλεσή του.
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμαΠροσπάθειας, κατάστασηΕκτέλεσης
ΑΡΧΗ
  ΚΑΛΕΣΕ ΕμφάνισεΟδηγίες()
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε έναν τετραψήφιο αριθμό ή 0 (μηδέν) αν παραιτείσαι:  '
    ΔΙΑΒΑΣΕ προσπάθειαΧρήστη
    αποτέλεσμαΠροσπάθειας <- ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη)
    ΕΠΙΛΕΞΕ αποτέλεσμαΠροσπάθειας
      ΠΕΡΙΠΤΩΣΗ 2222
        ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι:  '
        ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
        ΚΑΛΕΣΕ ΕμφάνισεΣυγχαρητήρια()
      ΠΕΡΙΠΤΩΣΗ -1
        ΚΑΛΕΣΕ ΕμφάνισεΜήνυμαΠαραίτησης()
      ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
        ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι:  '
        ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ αποτέλεσμαΠροσπάθειας = 2222 Η αποτέλεσμαΠροσπάθειας = -1
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΟδηγίες
ΑΡΧΗ
  ΓΡΑΨΕ '                 ▄   ▄  ▄  ▄▄▄ ▄▄▄ ▄▄▄ ▄▄  ▄   ▄ ▄ ▄   ▄ ▄▄▄'
  ΓΡΑΨΕ '                 █▀▄▀█ █▄█ ▀▄   █  █▄  █▄▀ █▀▄▀█ █ █▀▄ █ █  █'
  ΓΡΑΨΕ '                 █   █ █ █ █▄▄  █  █▄▄ █ █ █   █ █ █  ▀█ █▄▄▀'
  ΓΡΑΨΕ 'Οδηγίες:'
  ΓΡΑΨΕ 'Στο παιχνίδι αυτό ο σκοπός είναι να μαντέψουμε έναν τετραψήφιο αριθμό'
  ΓΡΑΨΕ 'τον οποίο κρατάει κρυφό ο υπολογιστής. Τα ψηφία του αριθμού είναι'
  ΓΡΑΨΕ 'διαφορετικά μεταξύ τους, αλλά επιτρέπεται το πρώτο ψηφίο να είναι μηδέν,'
  ΓΡΑΨΕ 'για παράδειγμα ο μυστικός αριθμός μπορεί να είναι 0248.'
  ΓΡΑΨΕ 'Αν προσπαθώντας να το βρούμε εισάγουμε τον αριθμό 1234,'
  ΓΡΑΨΕ 'τότε ο υπολογιστής θα μας απαντήσει με το κείμενο ΟΝΟΠ.'
  ΓΡΑΨΕ 'Τα γράμματα αυτά σημαίνουν:'
  ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 1.'
  ΓΡΑΨΕ '«Ν»αι, ο μυστικός αριθμός περιέχει το ψηφίο 2.'
  ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 3.'
  ΓΡΑΨΕ '«Π»ερίπου, υπάρχει 4 στο μυστικό αριθμό αλλά όχι σ΄ αυτή τη θέση.'
  ΓΡΑΨΕ ''
  ΓΡΑΨΕ 'Η εκτέλεση συνεχίζεται μέχρι να πετύχουμε τον αριθμό,'
  ΓΡΑΨΕ 'ή να δώσουμε 0000, το οποίο σημαίνει ότι παραιτούμαστε.'
  ΓΡΑΨΕ ''
!  ΓΡΑΨΕ '...............................................................................'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ ΨΗΦΙΟ(αριθμός, ποιο): ΑΚΕΡΑΙΑ
!Απομονώνει το #ποιο ψηφίο του αριθμού.
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αριθμός, ποιο
ΑΡΧΗ
  Ψηφίο <- αριθμός DIV Α_Μ(10^(ποιο - 1)) MOD 10
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


ΣΥΝΑΡΤΗΣΗ ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη): ΑΚΕΡΑΙΑ
!Η συνάρτηση αυτή υπολογίζει το αποτέλεσμα, π.χ. 'ΟΝΟΠ'. Αλλά επειδή η ΓΛΩΣΣΑ
!δεν υποστηρίζει χειρισμό αλφαριθμητικών, χρησιμοποιεί αριθμούς, π.χ. 0201.
!Το 2222 σημαίνει ότι ο χρήστης πέτυχε τον αριθμό,
!ενώ το -1 σημαίνει ότι παραιτείται, αφού έδωσε μηδέν σαν είσοδο.
ΣΤΑΘΕΡΕΣ
!Οι πράξεις είναι απλά για να μη φαίνεται ο μυστικός αριθμός
  Μυστικός = 1234*9876 MOD 10000
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμα, ι, κ
  ΛΟΓΙΚΕΣ: υπάρχει
ΑΡΧΗ
  ΑΝ προσπάθειαΧρήστη = 0 ΤΟΤΕ
    αποτέλεσμα <- -1
  ΑΛΛΙΩΣ
    αποτέλεσμα <- 0
    ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
      ΑΝ ΨΗΦΙΟ(Μυστικός, ι) = ΨΗΦΙΟ(προσπάθειαΧρήστη, ι) ΤΟΤΕ
        αποτέλεσμα <- 10*αποτέλεσμα + 2
      ΑΛΛΙΩΣ
        υπάρχει <- ΨΕΥΔΗΣ
        ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 4
          ΑΝ ΨΗΦΙΟ(προσπάθειαΧρήστη, ι) = ΨΗΦΙΟ(Μυστικός, κ) ΤΟΤΕ
            υπάρχει <- ΑΛΗΘΗΣ
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
        ΑΝ υπάρχει ΤΟΤΕ
          αποτέλεσμα <- 10*αποτέλεσμα + 1
        ΑΛΛΙΩΣ
          αποτέλεσμα <- 10*αποτέλεσμα
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΑΝ
  ΑξιολόγησεΠροσπάθεια <- αποτέλεσμα
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ



ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΣυγχαρητήρια
ΑΡΧΗ
  ΓΡΑΨΕ '              ▄▄▄ ▄   ▄ ▄▄▄ ▄   ▄  ▄  ▄▄  ▄ ▄ ▄▄▄ ▄ ▄ ▄▄  ▄  ▄  ▄'
  ΓΡΑΨΕ '              ▀▄   ▀▄▀  █    ▀▄▀  █▄█ █▄▀ █▄█  █  █▄█ █▄▀ █ █▄█ █'
  ΓΡΑΨΕ '              █▄▄   █   █   ▄▀ ▀▄ █ █ █   █ █  █  █ █ █   █ █ █ ▄'
  ΓΡΑΨΕ '                  Είσαι ιδιοφυία, πέτυχες το μυστικό αριθμό!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΜήνυμαΠαραίτησης
ΑΡΧΗ
  ΓΡΑΨΕ '              ▄▄▄ ▄   ▄ ▄▄▄ ▄   ▄  ▄  ▄▄  ▄ ▄ ▄▄▄ ▄ ▄ ▄▄  ▄  ▄  ▄'
  ΓΡΑΨΕ '              ▀▄   ▀▄▀  █    ▀▄▀  █▄█ █▄▀ █▄█  █  █▄█ █▄▀ █ █▄█ █'
  ΓΡΑΨΕ '              █▄▄   █   █   ▄▀ ▀▄ █ █ █   █ █  █  █ █ █   █ █ █ ▄'
  ΓΡΑΨΕ '         ...θα πάρεις την επόμενη φορά αν καταφέρεις να τον πετύχεις!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αποτέλεσμαΠροσπάθειας, ι
ΑΡΧΗ
  ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
    ΕΠΙΛΕΞΕ ΨΗΦΙΟ(αποτέλεσμαΠροσπάθειας, ι)
      ΠΕΡΙΠΤΩΣΗ 0
        ΓΡΑΨΕ 'Ο '
      ΠΕΡΙΠΤΩΣΗ 1
        ΓΡΑΨΕ 'Π '
      ΠΕΡΙΠΤΩΣΗ 2
        ΓΡΑΨΕ 'Ν '
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ ''
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Προφανώς πρέπει να γίνει έλεγχος με πολλές διαδικασίες και συναρτήσεις με ανακατεμένους ορισμούς για να βρεθεί το λάθος!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 20 Μαρ 2021, 02:20:29 ΜΜ
Παράθεση από: bugman στις 18 Μαρ 2021, 06:04:27 ΜΜ
Υπάρχουν προβλήματα. Αν κάθε λάθος με τη σειρά τα αντιμετωπίσουμε, όπως εκεί που καλούμε διαδικασία χωρίς ορίσματα πρέπει να βάλουμε () για να κληθεί σωστά,  τότε θα φτάσουμε να μην δέχεται τη συνάρτηση Ψηφίο. Δοκίμασα και την γύρισα σε κεφαλαία και πάλι είχε πρόβλημα, οπότε την μετακίνησα ακριβώς μετά τη διαδικασία ΕμφάνισεΟδηγίες και ξεκίνησε το πρόγραμμα χωρίς πρόβλημα.
Αυτό ξεκίνησε αν και δεν είχα χρόνο να το δοκιμάσω, δηλαδή δεν το είδα όλο, αν θέλει κάποιος να το δει, ας το δοκιμάσει.

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ MasterMind
!Το πρόγραμμα επιδεικνύει την εκτενή χρήση υποπρογραμμάτων.
!Οδηγίες για το παιχνίδι δίνονται κατά την εκτέλεσή του.
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμαΠροσπάθειας, κατάστασηΕκτέλεσης
ΑΡΧΗ
  ΚΑΛΕΣΕ ΕμφάνισεΟδηγίες()
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Δώσε έναν τετραψήφιο αριθμό ή 0 (μηδέν) αν παραιτείσαι:  '
    ΔΙΑΒΑΣΕ προσπάθειαΧρήστη
    αποτέλεσμαΠροσπάθειας <- ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη)
    ΕΠΙΛΕΞΕ αποτέλεσμαΠροσπάθειας
      ΠΕΡΙΠΤΩΣΗ 2222
        ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι:  '
        ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
        ΚΑΛΕΣΕ ΕμφάνισεΣυγχαρητήρια()
      ΠΕΡΙΠΤΩΣΗ -1
        ΚΑΛΕΣΕ ΕμφάνισεΜήνυμαΠαραίτησης()
      ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
        ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι:  '
        ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ αποτέλεσμαΠροσπάθειας = 2222 Η αποτέλεσμαΠροσπάθειας = -1
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΟδηγίες
ΑΡΧΗ
  ΓΡΑΨΕ '                 ▄   ▄  ▄  ▄▄▄ ▄▄▄ ▄▄▄ ▄▄  ▄   ▄ ▄ ▄   ▄ ▄▄▄'
  ΓΡΑΨΕ '                 █▀▄▀█ █▄█ ▀▄   █  █▄  █▄▀ █▀▄▀█ █ █▀▄ █ █  █'
  ΓΡΑΨΕ '                 █   █ █ █ █▄▄  █  █▄▄ █ █ █   █ █ █  ▀█ █▄▄▀'
  ΓΡΑΨΕ 'Οδηγίες:'
  ΓΡΑΨΕ 'Στο παιχνίδι αυτό ο σκοπός είναι να μαντέψουμε έναν τετραψήφιο αριθμό'
  ΓΡΑΨΕ 'τον οποίο κρατάει κρυφό ο υπολογιστής. Τα ψηφία του αριθμού είναι'
  ΓΡΑΨΕ 'διαφορετικά μεταξύ τους, αλλά επιτρέπεται το πρώτο ψηφίο να είναι μηδέν,'
  ΓΡΑΨΕ 'για παράδειγμα ο μυστικός αριθμός μπορεί να είναι 0248.'
  ΓΡΑΨΕ 'Αν προσπαθώντας να το βρούμε εισάγουμε τον αριθμό 1234,'
  ΓΡΑΨΕ 'τότε ο υπολογιστής θα μας απαντήσει με το κείμενο ΟΝΟΠ.'
  ΓΡΑΨΕ 'Τα γράμματα αυτά σημαίνουν:'
  ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 1.'
  ΓΡΑΨΕ '«Ν»αι, ο μυστικός αριθμός περιέχει το ψηφίο 2.'
  ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 3.'
  ΓΡΑΨΕ '«Π»ερίπου, υπάρχει 4 στο μυστικό αριθμό αλλά όχι σ΄ αυτή τη θέση.'
  ΓΡΑΨΕ ''
  ΓΡΑΨΕ 'Η εκτέλεση συνεχίζεται μέχρι να πετύχουμε τον αριθμό,'
  ΓΡΑΨΕ 'ή να δώσουμε 0000, το οποίο σημαίνει ότι παραιτούμαστε.'
  ΓΡΑΨΕ ''
!  ΓΡΑΨΕ '...............................................................................'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ ΨΗΦΙΟ(αριθμός, ποιο): ΑΚΕΡΑΙΑ
!Απομονώνει το #ποιο ψηφίο του αριθμού.
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αριθμός, ποιο
ΑΡΧΗ
  Ψηφίο <- αριθμός DIV Α_Μ(10^(ποιο - 1)) MOD 10
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


ΣΥΝΑΡΤΗΣΗ ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη): ΑΚΕΡΑΙΑ
!Η συνάρτηση αυτή υπολογίζει το αποτέλεσμα, π.χ. 'ΟΝΟΠ'. Αλλά επειδή η ΓΛΩΣΣΑ
!δεν υποστηρίζει χειρισμό αλφαριθμητικών, χρησιμοποιεί αριθμούς, π.χ. 0201.
!Το 2222 σημαίνει ότι ο χρήστης πέτυχε τον αριθμό,
!ενώ το -1 σημαίνει ότι παραιτείται, αφού έδωσε μηδέν σαν είσοδο.
ΣΤΑΘΕΡΕΣ
!Οι πράξεις είναι απλά για να μη φαίνεται ο μυστικός αριθμός
  Μυστικός = 1234*9876 MOD 10000
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμα, ι, κ
  ΛΟΓΙΚΕΣ: υπάρχει
ΑΡΧΗ
  ΑΝ προσπάθειαΧρήστη = 0 ΤΟΤΕ
    αποτέλεσμα <- -1
  ΑΛΛΙΩΣ
    αποτέλεσμα <- 0
    ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
      ΑΝ ΨΗΦΙΟ(Μυστικός, ι) = ΨΗΦΙΟ(προσπάθειαΧρήστη, ι) ΤΟΤΕ
        αποτέλεσμα <- 10*αποτέλεσμα + 2
      ΑΛΛΙΩΣ
        υπάρχει <- ΨΕΥΔΗΣ
        ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 4
          ΑΝ ΨΗΦΙΟ(προσπάθειαΧρήστη, ι) = ΨΗΦΙΟ(Μυστικός, κ) ΤΟΤΕ
            υπάρχει <- ΑΛΗΘΗΣ
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
        ΑΝ υπάρχει ΤΟΤΕ
          αποτέλεσμα <- 10*αποτέλεσμα + 1
        ΑΛΛΙΩΣ
          αποτέλεσμα <- 10*αποτέλεσμα
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΑΝ
  ΑξιολόγησεΠροσπάθεια <- αποτέλεσμα
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ



ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΣυγχαρητήρια
ΑΡΧΗ
  ΓΡΑΨΕ '              ▄▄▄ ▄   ▄ ▄▄▄ ▄   ▄  ▄  ▄▄  ▄ ▄ ▄▄▄ ▄ ▄ ▄▄  ▄  ▄  ▄'
  ΓΡΑΨΕ '              ▀▄   ▀▄▀  █    ▀▄▀  █▄█ █▄▀ █▄█  █  █▄█ █▄▀ █ █▄█ █'
  ΓΡΑΨΕ '              █▄▄   █   █   ▄▀ ▀▄ █ █ █   █ █  █  █ █ █   █ █ █ ▄'
  ΓΡΑΨΕ '                  Είσαι ιδιοφυία, πέτυχες το μυστικό αριθμό!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΜήνυμαΠαραίτησης
ΑΡΧΗ
  ΓΡΑΨΕ '              ▄▄▄ ▄   ▄ ▄▄▄ ▄   ▄  ▄  ▄▄  ▄ ▄ ▄▄▄ ▄ ▄ ▄▄  ▄  ▄  ▄'
  ΓΡΑΨΕ '              ▀▄   ▀▄▀  █    ▀▄▀  █▄█ █▄▀ █▄█  █  █▄█ █▄▀ █ █▄█ █'
  ΓΡΑΨΕ '              █▄▄   █   █   ▄▀ ▀▄ █ █ █   █ █  █  █ █ █   █ █ █ ▄'
  ΓΡΑΨΕ '         ...θα πάρεις την επόμενη φορά αν καταφέρεις να τον πετύχεις!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: αποτέλεσμαΠροσπάθειας, ι
ΑΡΧΗ
  ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
    ΕΠΙΛΕΞΕ ΨΗΦΙΟ(αποτέλεσμαΠροσπάθειας, ι)
      ΠΕΡΙΠΤΩΣΗ 0
        ΓΡΑΨΕ 'Ο '
      ΠΕΡΙΠΤΩΣΗ 1
        ΓΡΑΨΕ 'Π '
      ΠΕΡΙΠΤΩΣΗ 2
        ΓΡΑΨΕ 'Ν '
    ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ ''
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Προφανώς πρέπει να γίνει έλεγχος με πολλές διαδικασίες και συναρτήσεις με ανακατεμένους ορισμούς για να βρεθεί το λάθος!

Ευχαριστώ Bugman!
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: komni στις 21 Μαρ 2021, 08:52:18 ΜΜ
Καλησπέρα σε όλους,

Ζητώ συγγνώμη που αργώ με τα bugs αλλά αυτό τον καιρό έχω πολύ λίγο χρόνο. Θα προσπαθήσω να διορθώσω όσα μπορώ το επόμενο ΣΚ.

Στο κομμάτι κώδικα που έστειλε ο dpa, το σφάλμα δεν βρίσκεται στην γραμμή 6 αλλά στην γραμμή όπου ορίζεται η διαδικασία ΕμφάνισεΟδηγίες. Οπότε εδώ έχουμε 2 bugs: ένα στο ότι δεν επιτρέπω ορισμό διαδικασίας χωρίς () και ένα άλλο στο error handling.
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 26 Μαρ 2021, 08:22:21 ΠΜ
Παράθεση από: komni στις 21 Μαρ 2021, 08:52:18 ΜΜ
Καλησπέρα σε όλους,

Ζητώ συγγνώμη που αργώ με τα bugs αλλά αυτό τον καιρό έχω πολύ λίγο χρόνο. Θα προσπαθήσω να διορθώσω όσα μπορώ το επόμενο ΣΚ.

Στο κομμάτι κώδικα που έστειλε ο dpa, το σφάλμα δεν βρίσκεται στην γραμμή 6 αλλά στην γραμμή όπου ορίζεται η διαδικασία ΕμφάνισεΟδηγίες. Οπότε εδώ έχουμε 2 bugs: ένα στο ότι δεν επιτρέπω ορισμό διαδικασίας χωρίς () και ένα άλλο στο error handling.

Καλημέρα Κομηνέ,
δεν πειράζει που αργείς
Ευχαριστώ για το Feedback
Τίτλος: Πρόβλημα με αρχείο εισόδου
Αποστολή από: VAIOS στις 28 Μαρ 2021, 09:18:46 ΜΜ
Πρόβλημα με αρχείο εισόδου
Βάζω αριθμητικές τιμές στο παραθυράκι αφού πατήσω το αρχείο εισόδου αλλά τις βλέπει ως χαρακτήρες. Τι κάνω λάθος;;;

εμφανίζεται το μήνυμα
Διαβάζω από αρχείο εισόδου
5
Γραμμή 8: Σφάλμα: Περίμενα οι τελεστέοι να είναι του ίδιου τύπου, αλλά έλαβα μη συμβατούς τύπους Αριθμός και Χαρακτήρες
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 30 Μαρ 2021, 01:38:59 ΠΜ
Καλημέρα σε όλους,

Δοκίμασα τον παρακάτω κώδικα:

Παράθεση

ΠΡΟΓΡΑΜΜΑ Αεροπορικές_εταιρείες
ΜΕΤΑΒΛΗΤΕΣ                   
  ΑΚΕΡΑΙΕΣ: Ν, Ι, Εισπράξεις[50], Σύνολο
  ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ
  ΧΑΡΑΚΤΗΡΕΣ: Εταιρεία[50]
ΑΡΧΗ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΓΡΑΨΕ 'Αριθμός εταιρειών.. (μικρότερο από 50)'
    ΔΙΑΒΑΣΕ Ν
  ΜΕΧΡΙΣ_ΟΤΟΥ Ν <= 50
  Σύνολο <-- 0
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΓΡΑΨΕ 'Δώσε αεροπορική εταιρεία...'
    ΔΙΑΒΑΣΕ Εταιρεία[Ι]
    ΓΡΑΨΕ 'Δώσε εισπράξεις...'
    ΔΙΑΒΑΣΕ Εισπράξεις[Ι]
    Σύνολο <-- Σύνολο + Εισπράξεις[Ι]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΜΟ <-- Σύνολο/Ν
  ΓΡΑΨΕ 'Μεγαλύτερες από το μέσο όρο'
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΑΝ Εισπράξεις[Ι] > ΜΟ ΤΟΤΕ
      ΓΡΑΨΕ 'Η Εταιρεία:', Εταιρεία[Ι],', με εισπράξεις:', Εισπράξεις[Ι]
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Το μήνυμα σφάλματος ήταν:
Σφάλμα Διερμηνευτή: TypeError: t.left.promote is not a function

Στον Διερμηνευτή του Άλκη εκτελείται κανονικά,είναι το γνωστό παράδειγμα
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 08 Μαΐου 2022, 04:53:19 ΜΜ
Καλησπέρα σε όλους
Ο Κώδικος στο Github είναι ακόμη διαθέσιμος?
το project είναι ενεργό?
Thanks in advance  :)
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: ioannis.giftakis στις 17 Μαΐου 2022, 11:59:27 ΠΜ
Χαίρετε, και εμένα θα με ενδιέφερε να δω τον κώδικα.
Επίσης εντοπίσει κάποια bugs που τα κάνω mention;
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: sstergou στις 18 Μαΐου 2022, 09:52:15 ΜΜ
Ο κώδικας κατέβηκε αλλά ένα στιγμιότυπό του υπάρχει εδώ - https://github.com/markoutso/glo/
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 28 Μαΐου 2022, 05:09:39 ΠΜ
Ευχαριστώ πολύ...!
:)
Είναι για ψευδογλώσσα ή και για γλώσσα?
Μάλλον Γλώσσα...
Τίτλος: Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
Αποστολή από: dpa2006 στις 20 Αυγ 2022, 07:11:16 ΠΜ
Βρήκα το στιγμιότυπο και της Ψευδογλώσσας!

https://github.com/markoutso/pseudoglossa.gr