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

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #30 στις: 22 Νοε 2020, 12:41:22 πμ »
@ApoAntonis Ευχαριστω!

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

@bugman Ναι τώρα το κατάλαβα. Ευχαριστώ!

alkiez

  • Νέος
  • *
  • Μηνύματα: 2
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #31 στις: 23 Νοε 2020, 08:21:49 μμ »
Πολλά πολλά μπράβο Κομνηνέ και χαρά στο κουράγιο σου.

-οι ταπεινοί κι ελάχιστοι χρήστες μακ σε ευχαριστούμε λίίίίγο παραπάνω.

Νίκος Αδαμόπουλος

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2843
  • Πύργος Ηλείας
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #32 στις: 23 Νοε 2020, 09:32:34 μμ »
Συγχαρητήρια κι από μένα Κομνηνέ και ευχαριστούμε για την προσφορά σου.
Καλή συνέχεια και σε ό,τι κι αν κάνεις στο μέλλον!

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #33 στις: 24 Νοε 2020, 02:07:23 πμ »
@alkiez Ευχαριστω!!

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

Ερώτηση προς όλους:
Έστω το ακόλουθο πρόγραμμα με είσοδο 0
Κώδικας: [Επιλογή]
Προγραμμα ShortCircuit
Μεταβλητες
Ακεραιες: κ
Αρχη
  Διαβασε κ
  Αν κ <> 0 και 5 mod κ = 2 τοτε
    Γράψε 'Οκ'
  Τελος_Αν
Τελος_Προγραμματος
Προφανώς, δεν γίνεται το δεξί μέρος του mod να είναι ίσο με το μηδέν οπότε θα έπρεπε να σκάσει με Runtime Error.
Αλλά εφόσον η πράξη του mod είναι στο δεξί μέρος ΚΑΙ και η πρώτη συνθήκη του ΚΑΙ αποτιμήται σε ΨΕΥΔΗΣ τότε θα μπρούσε ο διερμηνευτής να μην κοιτάξει καν την δεύτερη(όπως γίνεται σε όλες τις γλώσσες προγραμματισμού) και να αποτιμήσει το ΚΑΙ ως ΨΕΥΔΗΣ χωρίς Runtime Error.

Στον Διερμηνευτή του Άλκη το παράδειγμα σκάει αλλά δεν βρήκα να αναφέρει κάτι το βιβλίο πάνω σε αυτό... Γενικά αυτή είναι μια ιδιότητα που χρησιμοποιείται αρκετά οπότε ας μου ξεκαθαρίσει κάποιος αν είναι ασάφεια για να ξέρω τι να υλοποιήσω. Εγώ πιστεύω πως το παράδειγμα θα έπρεπε να τρέχει μια χαρά με είσοδο 0.

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 6077
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #34 στις: 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

Νίκος Αδαμόπουλος

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2843
  • Πύργος Ηλείας
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #35 στις: 24 Νοε 2020, 10:51:40 πμ »
...(όπως γίνεται σε όλες τις γλώσσες προγραμματισμού)...

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

Π.χ. στη pascal γίνεται πλήρης αποτίμηση λογικών εκφράσεων, στις C-like και Python γίνεται μερική αποτίμηση, στη VB net έχει διαφορετικούς τελεστές για πλήρη και μερική, κλπ

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #36 στις: 24 Νοε 2020, 12:43:24 μμ »
@alkisg Τέλεια, ευχαριστώ!

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

Επίσης κάποιος είχε ρωτήσει για υποστήριξη ψευδογλώσσας στον διερμηνευτή: Το κοίταξα χθες και έβαλα υποστήριξη στον lexer και parser αλλά ο διερμηνευτής μου κανει resolve τους τύπους των μεταβλητών πριν αρχίσει την εκτέλεση του προγράμματος και αυτό είναι ένα πρόβλημα καθώς δεν μπορεί να το κάνει στην ψευδογλώσσα λόγω μη ύπαρξης τμήματος δηλώσεων. Θα πρέπει να εισάγω type resolution στον διερμηνευτή που γίνεται αλλά θέλω να πάρω τον χρόνο μου με αυτό για να μην καταλήξω με spaghetti code. Θα προσπαθήσω να το υλοποιήσω πριν τη λήξη υποστήριξης του pseudoglossa.gr
« Τελευταία τροποποίηση: 24 Νοε 2020, 06:30:31 μμ από komni »

dski

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

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

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

dimpapadop

  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 64
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #38 στις: 25 Νοε 2020, 05:44:52 μμ »
Συγχαρητήρια komni χρειάζεται μια έκδοση js/html 5 ώστε να "τρέχει" σε οποιοδήποτε λειτουργικό/συσκευή.

Όσον αφορά τη Β' Λυκείου, κατά τη γνώμη μου πολύ καλή ιδέα θα ήταν για να αποκτήσουν ευκολότερα αλγοριθμική σκέψη και να γίνει πολύ πιο αποδοτικό το μάθημα, να ξεκινήσουν με μια blockly like εκδοχή της ψευδογλώσσας βασισμένη σε bockly to javascript. κάτι σαν http://1lyk-florin.flo.sch.gr/pliroforiki/
Με αυτόν τον τρόπο γνώμη μου είναι ότι ευκολότερα θα γινόταν η παράδοση και από ένα σημείο και έπειτα η μετάβαση σε κειμενική γλώσσα θα ήταν παιχνιδάκι.
Από την άλλη το αν η ψευδογλώσσα/ΓΛΩΣΣΑ τελείωσε και θα μας αφήσει, είναι μεγάλη κουβέντα σχετικά με τα πλεονεκτήματα/μειονεκτήματα μετάβασης πχ στην python που περισσότερο συζητείται μιας και ήδη έχουν συγγραφεί και εγχειρίδια
« Τελευταία τροποποίηση: 27 Νοε 2020, 04:07:24 μμ από dimpapadop »

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 48
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #39 στις: 25 Νοε 2020, 07:17:05 μμ »
Έχεις δίκιο, το σκέφτηκα εκ των υστέρων ότι, ενώ η σύνταξη είναι σχεδόν ίδια, στην Ψευδογλώσσα οι μεταβλητές είναι typeless και αυτή η σημασιολογική διαφορά είναι σημαντική για τον διερμηνευτή... Μάλιστα, θεωρητικά, κατά την εκτέλεση του προγράμματος η ίδια μεταβλητή μπορεί να φιλοξενήσει δεδομένα διαφορετικού τύπου.

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

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

Συγχαρητήρια 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 και η Γλώσσα μπορεί ευκολότερα να τους μάθει τη λογική του προγραμματισμού. Αν θέλουν οι συγγραφείς να κατεβάσουν ύλη στο Λύκειο ας εντάξουν τον αντικειμενοστραφή προγραμματισμό στην Γλώσσα και ας προσθέσουν παραπάνω θεωρία(δίκτυα, βάσεις δεδομένων, λογικά κυκλώματα, κ.λπ.).

Νίκος Αδαμόπουλος

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2843
  • Πύργος Ηλείας
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #40 στις: 25 Νοε 2020, 09:51:27 μμ »
... στην Ψευδογλώσσα οι μεταβλητές είναι typeless και αυτή η σημασιολογική διαφορά είναι σημαντική για τον διερμηνευτή... Μάλιστα, θεωρητικά, κατά την εκτέλεση του προγράμματος η ίδια μεταβλητή μπορεί να φιλοξενήσει δεδομένα διαφορετικού τύπου.

Δεν είμαι σίγουρος ότι σε αυτό όλοι συμφωνούν!
« Τελευταία τροποποίηση: 26 Νοε 2020, 12:34:58 μμ από Νίκος Αδαμόπουλος »

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 6077
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #41 στις: 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

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 205
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #42 στις: 26 Νοε 2020, 09:56:33 πμ »
@Νίκος Αδαμόπουλος και @alkisg

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

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

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

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

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

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

Κώδικας: Pascal
  1. Σ <- 0
  2. Διάβασε α
  3. Όσο α <> 'ΤΕΛΟΣ'
  4.   Σ <- Σ + α
  5.   Διάβασε α
  6. Τέλος_επανάληψης

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

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

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

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

Όταν φυσικά πάμε σε υλοποίηση τότε προκύπτουν όλα αυτά τα ζητήματα που χρειάζονται αποσαφήνιση και αν τελικά ο komni αποφασίσει να συμπεριλάβει και την Ψευδογλώσσα στον διερμηνευτή του τότε μάλλον θα είναι απλούστερο και πιθανότατα καλύτερο να ακολουθήσει την ερμηνεία που δίνετε.
« Τελευταία τροποποίηση: 26 Νοε 2020, 10:47:04 πμ από dski »

Νίκος Αδαμόπουλος

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2843
  • Πύργος Ηλείας
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #43 στις: 26 Νοε 2020, 12:32:28 μμ »
Από την άλλη, στο βιβλίο της Β' ΓΕΛ για τις μεταβλητές αναφέρεται το εξής:

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

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

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

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

Κώδικας: Pascal
  1. Σ <- 0
  2. Διάβασε α
  3. Όσο α <> 'ΤΕΛΟΣ'
  4.   Σ <- Σ + α
  5.   Διάβασε α
  6. Τέλος_επανάληψης

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

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

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

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

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

Ακόμα και το παράδειγμα που αναφέρεις  θεωρώ πως είναι λάθος...

George Eco

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