Αποστολέας Θέμα: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας  (Αναγνώστηκε 10742 φορές)

George Eco

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 469
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #45 στις: 26 Νοε 2020, 12:56:23 μμ »
Συμπληρώνοντας... στο βιβλίο της Γ' Λυκείου αναφέρει (σελ. 37) :
Ανάλογα με το είδος της τιμής που μπορούν να λάβουν, οι μεταβλητές διακρίνονται σε αριθμητικές, αλφαριθμητικές και λογικές.

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

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

dpa2006

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 830
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #46 στις: 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) ΤΟΤΕ
    ΓΡΑΨΕ 'ΠΡΟΣΟΧΗ ΥΨΗΛΟΙ ΡΥΠΟΙ'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Ρύποι μέσα στα όρια'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
« Τελευταία τροποποίηση: 27 Νοε 2020, 05:56:51 μμ από dpa2006 »
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #47 στις: 27 Νοε 2020, 11:51:46 μμ »
Καλησπέρα σε όλους,

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

ο παρακάτω κώδικας
τρέχει στον Διερμηνευτή του Άλκη,αλλλά στον 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

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3609
  • to Iterate is human to Recurse divine
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #48 στις: 28 Νοε 2020, 07:50:21 μμ »
@komni
Δεν είχα τον χρόνο να παρακολουθήσω την συζήτηση.
Ήθελα να σε ρωτήσω γιατί πήγες σε TypeScript και όχι σε Javascript και τι άλλες βιβλιοθήκες χρησιμοποίησες.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #49 στις: 28 Νοε 2020, 08:30:18 μμ »
@evry

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

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

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #50 στις: 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
Το συγκεκριμένο αφορά μόνο τις σταθερές εκφράσεις και θα διορθωθεί το επόμενο Σάββατο
« Τελευταία τροποποίηση: 29 Νοε 2020, 07:32:02 μμ από komni »

Σταύρος Φιλιππίδης

  • Οπαδός
  • **
  • Μηνύματα: 10
    • Personal and academic website of Dr. Stavros K. Filippidis
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #51 στις: 04 Δεκ 2020, 01:22:05 μμ »
Συγχαρητήρια για την εξαιρετική σου προσφορά στο μάθημά μας! :)

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

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

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

<--

με

<-

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

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

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

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


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

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

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

ΓΡΑΨΕ ' '

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

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

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

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

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #52 στις: 04 Δεκ 2020, 05:19:32 μμ »
@Σταύρος Φιλιππίδης

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

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

<--

με

<-

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

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

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

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

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

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

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

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

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

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

ΓΡΑΨΕ ' '

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

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

Σταύρος Φιλιππίδης

  • Οπαδός
  • **
  • Μηνύματα: 10
    • Personal and academic website of Dr. Stavros K. Filippidis
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #53 στις: 04 Δεκ 2020, 07:34:29 μμ »
Απίστευτα γρήγορη απόκριση και διόρθωση όλων των bug! Και πάλι συγχαρητήρια! :)

dpa2006

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 830
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #54 στις: 05 Δεκ 2020, 09:17:51 πμ »
Καλημέρα σε όλους!
Ευχαριστούμε για την προσφορά Κομνηνέ και τις (διαρκείς) διορθώσεις.
Να προτείνω κάτι που θεωρώ πως χρειάζεται να υλοποιήσεις όταν έχεις χρόνο:
την αρχικοποίηση του Διερμηνευτή με χρήση πλήκτρου ή επιλογής σε μενού για δημιουργία νέου(αρχείου)(screen cleaning)
Αν εγω δεν πρόσεξα την ύπαρξη του, να με συγχωρείς...
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #55 στις: 05 Δεκ 2020, 04:27:37 μμ »
Καλημέρα σε όλους!
Ευχαριστούμε για την προσφορά Κομνηνέ και τις (διαρκείς) διορθώσεις.
Να προτείνω κάτι που θεωρώ πως χρειάζεται να υλοποιήσεις όταν έχεις χρόνο:
την αρχικοποίηση του Διερμηνευτή με χρήση πλήκτρου ή επιλογής σε μενού για δημιουργία νέου(αρχείου)(screen cleaning)
Αν εγω δεν πρόσεξα την ύπαρξη του, να με συγχωρείς...

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

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

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

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

dpa2006

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 830
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #56 στις: 06 Δεκ 2020, 01:42:11 πμ »
Καλησπέρα αν εννοείτε κουμπί που θα καθαρίζει τον γραμμένο πηγαίο κώδικα, αποφάσισα να μην κάνω τέτοιο κουμπί γιατί μπορεί ο χρήστης να πατήσει Ctrl+A και μετά Backspace ή ακόμη να επιλέξει τον κώδικα με το ποντίκι και να τον διαγράψει.

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

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

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

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

bugman

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

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


komni

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

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

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

EDIT: Ο χαρακτήρας _ δεν επιτρέπεται σε νούμερα γιατί το 1_000 π.χ. δεν είναι νούμερο αλλά αλφαριθμητικός. Εκτός αν το λέει κάπου το σχολικό και μου έχει διαφύγει.

bugman

  • Επισκέπτης
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #59 στις: 12 Δεκ 2020, 12:55:47 μμ »
Το underscore το εβαλα στα αλφαριθμητικά σε αντικατάσταση του διαστήματος.Οποτε δεν υπάρχει τέτοιο ζήτημα για αριθμούς.