ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας

Ξεκίνησε από komni, 19 Νοε 2020, 05:33:46 ΜΜ

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

komni

Παράθεση από: 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

Ναι Κομνηνέ, το κατάλαβα και γι' αυτό και μπράβο σου.  Στη Β Λυκείου και πίσω θα είναι πολύ χρήσιμος!
Το ότι δεν εκτελείται η ψευδογλώσσα το ανάφερα πιο πολύ για το βιβλίο παρά για το διερμηνευτή σου.
Και δικαίως είχες και την απορία αυτή που είχες.

alkisg

Κομνηνέ ρωτάω τον χρήστη για τις διαστάσεις του πίνακα στην εντολή δεδομένα, δες το screenshot εδώ:
https://alkisg.mysch.gr/steki/index.php?topic=4061.0

dpa2006

Παράθεση από: komni στις 14 Ιαν 2021, 03:50:34 ΠΜ
Πλέον και με υποστήριξη Ψευδογλώσσας στο pseudo.gloglossa.gr!

Συγχαρητήρια Κομνηνέ,
εξαιρετική εργασία.
Θα αρχίσω δοκιμές.
και η Ψευδογλώσσα είναι χρήσιμη ακόμη περισσότερο η Online υποστήριξη που μας παρέχεις!
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

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

Επίσης, έπρεπε να περάσω από 100 Bad Gateways για να ποστάρω, κάτι τρέχει με τον server...

alkisg

Άξιος!!!

Για το 100 Bad Gateway άστα, δεν παλεύεται άλλο, μάλλον πρέπει να φύγει τελικά το Στέκι από το Πανελλήνιο Σχολικό Δίκτυο... συνεχώς κάνω αναφορές σφαλμάτων, υποτίθεται διορθώνουν τους servers, και ξανά πάλι πεσμένοι είναι.

dpa2006

Ευχαριστούμε!
Άλκη πρέπει να επισπευτεί η μετάβαση...
Η χρήση Backup domain είναι επιβεβλξμένη πιστεύω...
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

alkisg

@dpa2006, η μετάβαση του Στεκιού σε άλλον server έγινε στις 18/01/2021, και πλέον φαίνεται σταθερότατο:
https://alkisg.mysch.gr/steki/index.php?topic=288.msg93472#msg93472

dpa2006

#83
Άψογα δεν το είχα καταλάβει,
να υποθέσω πως όλα πήγαν καλά και δεν θα πάψουν τα προβλήματα του παρελθόντος.
Καλή αρχή στο νέο Σερβερ τότε. :)
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

Καλησπέρα σε όλους,

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

Μπορεί να μου εξηγήσει κανείς πως ακριβώς δουλεύει αυτός ο μηχανισμός; Τι γίνεται αν έχω πολλά διάβασε και πολλά γράψε; Αν είναι κάπως έτσι:
Αλγόριθμος καλούμενος
  Διάβασε α, β
  Γράψε 10
  Διάβασε δ
  Γράψε 20
Τέλος καλεσμένος

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

Πως ακριβώς θα εκτελεστεί;;

George Eco

#85
Αν καταλαβαίνω σωστά την ερώτηση, η εκτέλεση γίνεται σε 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

Καλησπέρα Κομνηνέ,
Στη Σελίδα 100 νομίζω πως αναφέρεται αυτό το οποίο ζητάς
http://iep.edu.gr/images/IEP/Modules/Sj_K2_Extra_Slider/Fakeloi_Ylikou/Pliroforiki-odigies-meletis-mathiti-v.2.0.pdf

Βέβαια αναφέρει οτι η κλήση μπορεί να γίνει από εξωτερικό πρόγραμμα αλλά δεν δίνει κάποιο παράδειγμα και δεν αναφέρει αν αυτό μπορεί να συμβεί από εξωτερικό αρχείο,μάλλον το υπονοεί. ???
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

dpa2006

Καλησπέρα σε όλους,

Κομηνέ καλησπέρα,
δεν θα το χαρακτήριζα ως 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 ως εντολή κάποοια στιγμή.
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

Καλησπέρα και πάλι,

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

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

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

komni

Θα ήθελα επίσης να ρωτήσω αν κανείς έχει πρόβλημα με το site να φορτώνει/αλληλεπιδρά αργά. Δεν έχω ασχοληθεί πολύ με optimizations, γι' αυτό ρωτάω.