Υλοποίηση Ψευδογλώσσας

Ξεκίνησε από komni, 27 Νοε 2020, 01:27:39 ΜΜ

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

Βοηθάει η ύπαρξη διερμηνευτή για την Ψευδογλώσσα τον μαθητή;

Ναι
19 (95%)
Όχι
1 (5%)

Σύνολο ψηφοφόρων: 20

komni

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

Με αφορμή τη συζήτηση που προέκυψε στο post μου για τον διερμηνευτή για την Ψευδογλώσσα δημιουργώ αυτό ώστε να συζητήσουμε αν θα πρέπει ή όχι να υλοποιείται η Ψευδογλώσσα.

Χθες έκανα ένα μικρό ερωτηματολόγιο στο Instagram μου, όπου ρώτησα υποψήφιους, ανάμεσα σε άλλα, αν μπορούν να μου εξηγήσουν την διαφορά ανάμεσα στην Γλώσσα και την Ψευδογλώσσα.

Το ερωτηματολόγιο απάντησαν 18 παιδιά(10 αγόρια, 8 κορίτσια) από 10 διαφορετικούς καθηγητές και κανένας δεν μπόρεσε να απαντήσει στο ερώτημα για την Ψευδογλώσσα.

Μπορείτε να δείτε τις απαντήσεις εδώ

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

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

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

dimpapadop

#1
@komni
Ναι, λέγοντας στον μαθητή ότι η ψευδογλώσσα είναι ένα "προσχέδιο" αλγορίθμου, σαφώς του δημιουργείς μια "Α" σύγχυση όταν το βλέπει να εκτελείται. (ή/και όχι :) ).
Από την άλλη στο εργαστήριο όταν θέλεις να δοκιμάσουν μια άσκηση from scratch και όχι πάνω σε ένα προ-πληκτρολογημένο σκελετό, θα καθυστερήσεις πολύ χωρίς χρήση ψευδογλώσσας.
Επίσης μέχρι να κατανοήσουν τις μεταβλητές όπως πρέπει στην Β' ώστε να μάθουν να τις χρησιμοποιούν σωστά και να τις δηλώνουν, καλό είναι να υπάρχει. Άλλωστε σε ψευδογλώσσα έχουν γραφεί τα σχολικά εγχειρ. στη Β'
Μάλιστα υπό τις τρέχουσες συνθήκες και μιας και πολλοί μαθητές με παρακολουθούν από κινητό, (άλλοι δεν έχουν πρόσβαση σε Η/Υ λόγω αδελφών στην οικογένεια κλπ) προσπαθώ να μπορούν να γράψουν/δοκιμάσουν εύκολα τον αλγόριθμό τους και από κινητό και για αυτό όπως σου ανέφερα στο άλλο νήμα νομίζω καλό κάνει και μια οπτική blockly like υλοποίηση πχ πρόχειρη http://1lyk-florin.flo.sch.gr/pliroforiki/

Γνώμη μου είναι ότι πρέπει να υπάρχει αν και συμμερίζομαι την άποψη σου.

dski

Επειδή είμαι από αυτούς που σε παρότρυναν να φτιάξεις διερμηνευτή και για την Ψευδογλώσσα:

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

Όμως στο μάθημα της Β' ΓΕΛ η Ψευδογλώσσα είναι το μόνο "προγραμματιστικό" εργαλείο του βιβλίου για τους μαθητές και η προσωπική μου εμπειρία από τα χρόνια που έχω διδάξει το μάθημα είναι ότι οι μαθητές που χρησιμοποίησαν διερμηνευτή για να λύσουν τις ασκήσεις τους είχαν τελικά αρκετά καλύτερη κατανόηση των προγραμματιστικών δομών και εννοιών από όσους έμειναν μόνο στο χαρτί ακριβώς επειδή δοκίμασαν του αλγορίθμους στην πράξη (παρακολούθηση τιμών, αποτίμηση εκφράσεων κτλ), είδαν τα λάθη τους, δοκίμασαν άλλους τρόπους κτλ. Για το λόγο αυτό θεωρώ εξαιρετικά χρήσιμη την ύπαρξη ενός διερμηνευτή για την ψευδογλώσσα έστω και με κάποιες παραδοχές, περιορισμούς ή απλοποιήσεις.

Ελπίζω η συζήτηση που ανοίξαμε στο σχετικό νήμα να μην σε "τρόμαξε". Από τη μεριά μου η συζήτηση αυτή είναι κυρίως "φιλολογική". Θεωρώ ότι η υλοποίηση της Ψευδογλώσσας όπως γίνεται π.χ. από το pseudoglossa.gr ή τον Διερμηνευτή της Γλώσσας είναι και στη σωστή κατεύθυνση αλλά και απολύτως επαρκής για τις ανάγκες του μαθήματος και αν τελικά προχωρήσεις σε προτρέπω να ακολουθήσεις και εσύ αυτή την προσέγγιση.


dpa2006

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

George Eco

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

Έτσι, νομίζω πως ένα πρόγραμμα που "εκτελεί" ψευδοκώδικα, ως ξεχωριστό εργαλείο θα βοηθάει πολύ στη Β Λυκείου, ενώ η Γ Λυκείου θα μπορεί να έχει ένα διερμηνευτή που δε θα προκαλεί σύγχιση.
Το κακό komni, είναι πως τα παιδιά δε μπορούν να το ξεχωρίσουν επειδή η ΓΛΩΣΣΑ δε διαφέρει και πολύ συντακτικά της ψευδογλώσσας στην Ελληνική. Οπότε και πάλι θα επικρατεί παρόμοιο κλίμα σύγχισης, με λιγότερη επιβάρυνση όμως από το διερμηνευτή σου.
Πάντως δεν έχω λόγια να σε ευχαριστήσω για το feedback που έδωσες από τη μικρή σου έρευνα.



Παράθεση από: dpa2006 στις 27 Νοε 2020, 05:59:07 ΜΜ
Κατά τη γνώμη μου πρέπει να υλοποιείται η Ψευδογλώσσα είτε με τον ίδιο είτε με διαφορετικο διερμηνευτή είτε με ένα Wizard που να ρωτάει ποιο από τα δύο θέλεις να εκτελέσεις,Ψευδογλώσσα ή ΓΛΩΣΣΑ

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

komni

Παράθεση από: dimpapadop στις 27 Νοε 2020, 04:34:29 ΜΜ
@komni
Ναι, λέγοντας στον μαθητή ότι η ψευδογλώσσα είναι ένα "προσχέδιο" αλγορίθμου, σαφώς του δημιουργείς μια "Α" σύγχυση όταν το βλέπει να εκτελείται. (ή/και όχι :) ).
Από την άλλη στο εργαστήριο όταν θέλεις να δοκιμάσουν μια άσκηση from scratch και όχι πάνω σε ένα προ-πληκτρολογημένο σκελετό, θα καθυστερήσεις πολύ χωρίς χρήση ψευδογλώσσας.
Επίσης μέχρι να κατανοήσουν τις μεταβλητές όπως πρέπει στην Β' ώστε να μάθουν να τις χρησιμοποιούν σωστά και να τις δηλώνουν, καλό είναι να υπάρχει. Άλλωστε σε ψευδογλώσσα έχουν γραφεί τα σχολικά εγχειρ. στη Β'
Μάλιστα υπό τις τρέχουσες συνθήκες και μιας και πολλοί μαθητές με παρακολουθούν από κινητό, (άλλοι δεν έχουν πρόσβαση σε Η/Υ λόγω αδελφών στην οικογένεια κλπ) προσπαθώ να μπορούν να γράψουν/δοκιμάσουν εύκολα τον αλγόριθμό τους και από κινητό και για αυτό όπως σου ανέφερα στο άλλο νήμα νομίζω καλό κάνει και μια οπτική blockly like υλοποίηση πχ πρόχειρη http://1lyk-florin.flo.sch.gr/pliroforiki/

Γνώμη μου είναι ότι πρέπει να υπάρχει αν και συμμερίζομαι την άποψη σου.
Ευχαριστώ για το feedback! Στο άλλο ποστ νόμιζα πως εννοούσατε τη δημιουργία νέας γλώσσας η οποία θα είναι φάση blockly. Καλό μου ακούγεται για την Ψευδογλώσσα, θα το βάλω στη λίστα μου.

Παράθεση από: dski στις 27 Νοε 2020, 05:27:13 ΜΜ
Επειδή είμαι από αυτούς που σε παρότρυναν να φτιάξεις διερμηνευτή και για την Ψευδογλώσσα:

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

Όμως στο μάθημα της Β' ΓΕΛ η Ψευδογλώσσα είναι το μόνο "προγραμματιστικό" εργαλείο του βιβλίου για τους μαθητές και η προσωπική μου εμπειρία από τα χρόνια που έχω διδάξει το μάθημα είναι ότι οι μαθητές που χρησιμοποίησαν διερμηνευτή για να λύσουν τις ασκήσεις τους είχαν τελικά αρκετά καλύτερη κατανόηση των προγραμματιστικών δομών και εννοιών από όσους έμειναν μόνο στο χαρτί ακριβώς επειδή δοκίμασαν του αλγορίθμους στην πράξη (παρακολούθηση τιμών, αποτίμηση εκφράσεων κτλ), είδαν τα λάθη τους, δοκίμασαν άλλους τρόπους κτλ. Για το λόγο αυτό θεωρώ εξαιρετικά χρήσιμη την ύπαρξη ενός διερμηνευτή για την ψευδογλώσσα έστω και με κάποιες παραδοχές, περιορισμούς ή απλοποιήσεις.

Ελπίζω η συζήτηση που ανοίξαμε στο σχετικό νήμα να μην σε "τρόμαξε". Από τη μεριά μου η συζήτηση αυτή είναι κυρίως "φιλολογική". Θεωρώ ότι η υλοποίηση της Ψευδογλώσσας όπως γίνεται π.χ. από το pseudoglossa.gr ή τον Διερμηνευτή της Γλώσσας είναι και στη σωστή κατεύθυνση αλλά και απολύτως επαρκής για τις ανάγκες του μαθήματος και αν τελικά προχωρήσεις σε προτρέπω να ακολουθήσεις και εσύ αυτή την προσέγγιση.


Ευχαριστώ για το feedback! Χαχαχα δεν τρόμαξα απλά περίμενα τα αποτελέσματα από το ερωτηματολόγιο για να απαντήσω...

Παράθεση από: dpa2006 στις 27 Νοε 2020, 05:59:07 ΜΜ
Κατά τη γνώμη μου πρέπει να υλοποιείται η Ψευδογλώσσα είτε με τον ίδιο είτε με διαφορετικο διερμηνευτή είτε με ένα Wizard που να ρωτάει ποιο από τα δύο θέλεις να εκτελέσεις,Ψευδογλώσσα ή ΓΛΩΣΣΑ
Ευχαριστώ για το feedback!

Παράθεση από: George Eco στις 27 Νοε 2020, 09:45:04 ΜΜ
Για αρχή επειδή είμαι αυτός που έθιξε το θέμα με τη σύγχιση των μαθητών, θέλω να ξεκαθαρίσω, πως η σύγχιση αφορά παιδιά που βρίσκονται στη Γ Λυκείου μόνο. Εκεί καλούνται να ξεκαθαρίσουν μια και καλή τι συμβαίνει και τι όχι.
Από την άλλη, συνάδελφοι που διδάσκουν στη Β Λυκείου αλγοριθμικά concepts, δεν έχουν τρόπο να δείξουν αλγοριθμικά κάτι σε εργαστηριακό περιβάλλον, εκτός της ΓΛΩΣΣΑΣ, που μεν ομοιάζει, αλλά δεν είναι στα πλαίσια του μαθήματος της Β Λυκείου. Οπότε αν κάποιος θέλει να έχει κάτι σαν διερμηνευτή, που τρέχει αλγόριθμο, καλό θα ήταν να το διαχωρίζει από τη ΓΛΩΣΣΑ. Επειδή αυτος ο διαχωρισμός δε γίνεται συχνά, συμβαίνει αυτό που έθιξες.

Έτσι, νομίζω πως ένα πρόγραμμα που "εκτελεί" ψευδοκώδικα, ως ξεχωριστό εργαλείο θα βοηθάει πολύ στη Β Λυκείου, ενώ η Γ Λυκείου θα μπορεί να έχει ένα διερμηνευτή που δε θα προκαλεί σύγχιση.
Το κακό komni, είναι πως τα παιδιά δε μπορούν να το ξεχωρίσουν επειδή η ΓΛΩΣΣΑ δε διαφέρει και πολύ συντακτικά της ψευδογλώσσας στην Ελληνική. Οπότε και πάλι θα επικρατεί παρόμοιο κλίμα σύγχισης, με λιγότερη επιβάρυνση όμως από το διερμηνευτή σου.
Πάντως δεν έχω λόγια να σε ευχαριστήσω για το feedback που έδωσες από τη μικρή σου έρευνα.



Η ιδέα του wizard μπορεί να είναι ένα αρχικό μενού επιλογής. Δεν είναι κακή ιδέα. Κι εγώ δεν είμαι εναντίον ύπαρξης κάποιου εργαλείου, απλά παράθεσα την άποψή μου και την οπτική μου, για ένα φαινόμενο που χρόνια παρατηρώ. Το εργαλείο δε βοηθάει ποτέ. Ο τρόπος χρήσης από τον εκπαιδευτικό βοηθάει.
Ευχαριστώ για το feedback και τα καλά σας λόγια. Το είχα αναφέρει και εγώ ότι οι μαθητές δεν μπορούν να καταλάβουν τις διαφορές σε απάντηση στη σελίδα 3 του συγκεκριμένου ποστ.

Μάλλον αυτό που θα γίνει τελικά είναι πως θα υλοποιηθεί σε ξεχωριστό domain με διαφορετικό design και κουμπί που θα εξηγεί πως η Ψευδογλώσσα είναι ψευδοκώδικας και τι σημαίνει αυτο.

George Eco

Παράθεση από: komni στις 27 Νοε 2020, 11:47:59 ΜΜ
Μάλλον αυτό που θα γίνει τελικά είναι πως θα υλοποιηθεί σε ξεχωριστό domain με διαφορετικό design και κουμπί που θα εξηγεί πως η Ψευδογλώσσα είναι ψευδοκώδικας και τι σημαίνει αυτο.

Δεν έχω λόγια να εκφράσω το πόσα μπράβο θέλω να σου πω. Από εμένα εύγε!

evry

#7
Ο σκοπός του ψευδοκώδικα είναι να γράψει πρώτα ο άνθρωπος στο χαρτί ένα σκαρίφημα του αλγορίθμου που θέλει να υλοποιήσει.
Από την στιγμή που υπάρχει περιβάλλον εκτέλεσης της ψευδογλώσσας τότε η "ψευδογλώσσα" παύει να είναι ψευδογλώσσα και γίνεται πραγματική γλώσσα.
Δυστυχώς λέμε ότι γράφουμε σε μια γλώσσα προγραμματισμού η οποία είναι ίδια με τη ΓΛΩΣΣΑ απλά έχει τις εξής διαφορές: (αν ξέχασα κάποια μπορείτε να προσθέσετε)
1) Δεν έχει δήλωση τύπων αλλά το σύστημα τύπων δεν είναι δυναμικό  :D
2) Έχει έναν τύπο για αριθμούς, δεν διαχωρίζει ακέραιες/πραγματικές
3) Στο βιβλίο συντάσσεται με μικρά γράμματα
4) Η απλή if με μια εντολή συντάσσεται σε μια γραμμή.
5) Έχει εντολή Αντιμετάθεσε
6) Έχει αυστηρή σύνταξη αδιανόητο για ψευδοκώδικα

Για αυτό οι μαθητές δεν μπορούν να διαχωρίσουν τη ΓΛΩΣΣΑ με την ψευδογλώσσα, γιατί κάνουν ουσιαστικά τα ίδια πράγματα και για να είμαι πιο ακριβής βρίσκονται στο ίδιο επίπεδο αφαίρεσης.
Πολύ πιο κοντά στην ψευδογλώσσα είναι γλώσσες όπως οι JavaScript, Python, Ruby κλπ.
Παραθέτω σε εικόνα και ένα παράδειγμα που το χρησιμοποιώ συχνά για να δείξω πόσο κοντά είναι η Python σε αυτό που λέμε Αλγοριθμική και παράλληλα πόσο μακριά είναι η ψευδογλώσσα

ΥΓ. Ξέχασα ότι η ψευδογλώσσα μας έχει και στατικές δομές!
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

komni,
Πραγματικά συγχαρητήρια και respect για τη δουλειά σου.

Bonus points για το dark theme :)
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

gthal

Ευριπίδη ξέχασες τη διαφορά στο με_βήμα  έναντι του ΜΕ ΒΗΜΑ    :D
Φιλικά,
Γιώργος Θαλασσινός

evry

Είσαι απίστευτος!!!
Παράθεση από: gthal στις 28 Νοε 2020, 07:20:06 ΜΜ
Ευριπίδη ξέχασες τη διαφορά στο με_βήμα  έναντι του ΜΕ ΒΗΜΑ    :D
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

komni

@evry Ευχαριστώ για το feedback!

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

Όσον αφορά το παράδειγμα με την Python, άμα στην Ψευδογλώσσα είχαν προσθέσει εντολές break και continue, θα ήταν το ίδιο ευανάγνωστο με την Python!

Επίσης, πολύ χρήσιμη η λίστα που φτιάξατε.

@pgrontas Ευχαριστώ!

evry

Το πρόβλημα δεν είναι η ψευδογλώσσα που είναι λογικό να χρησιμοποιείται για διδακτικούς λόγους αλλά η απουσία πραγματικής γλώσσας προγραμματισμού για την υλοποίηση πραγματικών σύγχρονων εφαρμογών. Απλά το πλεονέκτημα γλωσσών όπως η Javascript και η Python είναι ότι είναι πιο απλές ακόμα και από την δική μας ψευδογλώσσα, οπότε σε αυτή την περίπτωση δεν έχει νόημα να χρησιμοποιείς ψευδοκώδικα παρά μόνο αν είναι χαλαρός και σε πιο υψηλό επίπεδο αφαίρεσης.
Στην Σκωτία από όσο θυμάμαι όταν το είχα ψάξει επιτρέπουν στους καθηγητές να χρησιμοποιήσουν οποία γλώσσα θέλουν από Scratch και App Inventor μέχρι C++ αλλά στο τέλος εξετάζονται σε κοινή ψευδογλώσσα την Haggis.
Δες εδώ , είναι χειρότερη από τη δική μας:
http://www.bannermanhigh.glasgow.sch.uk/Websites/SchSecBannerman/UserFiles/file/Departments/Computing/Haggis%20Pseudo%20Code.pdf
Νομίζω όμως ότι πάλι επιτρέπουν στους μαθητές να δώσουν λύσεις σε όποια γλώσσα θέλουν!!
Στις άλλες χώρες χρησιμοποιούν ψευδογλώσσα σε συνδυασμό με μια πραγματική γλώσσα προγραμματισμού, π.χ. Python, Javascript σε Αμερική, Καναδά ή Java στο IB που στα θέματα αυτά είναι πιο πίσω.
Στα A Levels νομίζω έχει πολλές επιλογές C, Java, Python σε συνδυασμό με ψευδογλώσσα, δεν ξέρω αν τα έχουν αλλάξει τελευταία.

Παράθεση από: komni στις 28 Νοε 2020, 09:17:04 ΜΜ
Όντως, κανονικά το συντακτικό μιας ψευδογλώσσας θα έπρεπε να ήταν αρκετά loose. Παρόλα αυτά, ακόμα και στο Αγγλικό σύστημα εκπαίδευσης, ο ψευδοκώδικας που έχουν δημιουργήσει ορίζεται αυστηρά.

Σίγουρα η return, break (και όχι continue) είναι χρήσιμες. Παρατήρησε όμως ότι ο ένας αλγόριθμος είναι για συγκεκριμένο τύπο αντικειμένων και για συγκεκριμένο μέγεθος πίνακα, ενώ ο άλλος λόγω της δυναμικής φύσης της Python δεν έχει τέτοιους περιορισμούς. Όταν μιλάμε για αλγοριθμική υποτίθεται ότι θέλουμε αυτού του επιπέδου την αφαίρεση, δηλαδή να ορίσουμε αφαιρετικά έναν αλγόριθμο ανεξάρτητο από το πλήθος και πολλές φορές τον τύπο των δεδομένων όσο πιο generic γίνεται.
Παράθεση
Όσον αφορά το παράδειγμα με την Python, άμα στην Ψευδογλώσσα είχαν προσθέσει εντολές break και continue, θα ήταν το ίδιο ευανάγνωστο με την Python!

Δεν ξέρω ποια είναι η άποψή σου σε αυτό.
Εσύ ποια πραγματική γλώσσα θα προτιμούσες να χρησιμοποιούσαν οι μαθητές στην εκπαίδευση?
Υποθέτω ότι δεν ξεκίνησες κατευθείαν από Typescript, σίγουρα έχεις κάνει C, C++ και ίσως Python?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

komni

Παράθεση από: evry στις 28 Νοε 2020, 09:49:37 ΜΜ
Στις άλλες χώρες χρησιμοποιούν ψευδογλώσσα σε συνδυασμό με μια πραγματική γλώσσα προγραμματισμού, π.χ. Python, Javascript σε Αμερική, Καναδά ή Java στο IB που στα θέματα αυτά είναι πιο πίσω.

Στις άλλες χώρες, όμως, υπάρχει γενικώς μεγαλύτερη ύλη στα μαθήματα του Λυκείου. Για παράδειγμα, το A level Further Math (ζητήται από όλα τα σοβαρά πανεπιστήμια για σπουδές πληροφορικής/μαθηματικών) έχει ύλη πρώτου έτους Ελλάδας και πολύ στατιστική και πιθανότητες! Ακόμα και το plain A level Math έχει παραπάνω όγκο ύλης από τα μαθηματικά στο ελληνικό Λύκειο...

Παράθεση από: evry στις 28 Νοε 2020, 09:49:37 ΜΜ
Στα A Levels νομίζω έχει πολλές επιλογές C, Java, Python σε συνδυασμό με ψευδογλώσσα, δεν ξέρω αν τα έχουν αλλάξει τελευταία.

Εξαρτάται το A level. Στου Cambridge που έκανα εγώ είχε ψευδογλώσσα(μοιάζει πολύ με τη δική μας, βλ. εικόνα) + Pascal ή Python ή VB. Η ψευδογλώσσα είχε ίδια βαρύτητα με την γλώσσα προγραμματισμού. Δεν έχω στατιστικά αλλά θεωρώ πως οι περισσότεροι επιλέγουν Python.

Παράθεση από: evry στις 28 Νοε 2020, 09:49:37 ΜΜ
Σίγουρα η return, break (και όχι continue) είναι χρήσιμες.

Την return την ξέχασα(αν και κάποιες σοβαρές γλώσσες π.χ. (standard) Pascal δεν την έχουν.
Η continue χρειάζεται σε πολλούς αλγορίθμους αλλιώς μπερδεύονται τα πράγματα με πολλά ifs. Δεν την ανέφερα για το συγκεκριμένο παράδειγμα..

Παράθεση από: evry στις 28 Νοε 2020, 09:49:37 ΜΜ
Δεν ξέρω ποια είναι η άποψή σου σε αυτό.
Εσύ ποια πραγματική γλώσσα θα προτιμούσες να χρησιμοποιούσαν οι μαθητές στην εκπαίδευση?
Υποθέτω ότι δεν ξεκίνησες κατευθείαν από Typescript, σίγουρα έχεις κάνει C, C++ και ίσως Python?

Εγώ είχα αρχίσει με Java αλλά δεν έφτασα πολύ μακριά και άλλαξα σε  C++ όταν μπήκα στον Πανελλήνιο Διαγωνισμό Πληροφορικής(τότε δεν υποστήριζαν την Java) οπότε η C++ ήταν η πρώτη γλώσσα που έμαθα σοβαρά. Η συγκεκριμένη είναι πολύ low-level για το Λύκειο. Το μόνο καλό με αυτήν είναι ότι θα μπορούσαν πολύ εύκολα μέσω της να εξηγήσουν πράγματα τύπου πως δουλεύει η μνήμη, τι κάνει ο linker, κ.λπ.

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

Πάντως, άποψή μου είναι πως θα έπρεπε να καταργηθεί η Ψευδογλώσσα και να διδάσκεται η Γλώσσα από την Β Λυκείου(αν και πάνω κάτω το ίδιο γίνεται και τώρα γιατί Ψευδογλώσσα ~= Γλώσσα).
Άμα θέλουν να αυξήσουν την ύλη ας εντάξουν τον αντικειμενοστραφή προγραμματισμό στη Γλώσσα και ας βάλουν παραπάνω θεωρία ή δυσκολότερα προβλήματα(Γιατί πιο πολύ το μάθημα θέλει να διδάξει τη σκέψη, παρά μια συγκεκριμένη γλώσσα).
Το A level, επίσης, είναι 50% θεωρία, 50% προγραμματισμός, βλ εδώ.

Χθες σκευτόμουν να εντάξω bindings στη Γλώσσα ώστε να μπορεί κανείς να δημιουργήσει ιστοσελίδες 100% σε Γλώσσα και να βλέπει και ο μαθητής λίγο από web development.

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

alkisg

Παράθεση από: evry στις 28 Νοε 2020, 09:49:37 ΜΜ
Απλά το πλεονέκτημα γλωσσών όπως η Javascript και η Python είναι ότι είναι πιο απλές ακόμα και από την δική μας ψευδογλώσσα, οπότε σε αυτή την περίπτωση δεν έχει νόημα να χρησιμοποιείς ψευδοκώδικα παρά μόνο αν είναι χαλαρός και σε πιο υψηλό επίπεδο αφαίρεσης.

Οι Python/Javascript έχουν δυνατότητες για απλούστερη σύνταξη. Οι ΓΛΩΣΣΑ/Pascal/C είναι πιο κοντά στα βήματα που θα εκτελέσει τελικά ο υπολογιστής. Για το χτίσιμο της αλγοριθμικής σκέψης θα προτιμούσα να ξεκινήσω με απλές εντολές παρά με απλή σύνταξη. Π.χ. για την ΑΕΠΠ θα επέλεγα Python αλλά θα δίδασκα την επανάληψη με μετρητή, αρχική/τελική τιμή και βήμα. Τις σύνθετες εντολές όπως "for item in list" θα τις χρησιμοποιούσα μόνο αφότου η κλασσική επανάληψη είχε κατακτηθεί ως διδακτικός στόχος.

Παράθεση από: evry στις 28 Νοε 2020, 09:49:37 ΜΜ
Σίγουρα η return, break (και όχι continue) είναι χρήσιμες.

Γιατί όχι η continue; Οι `break N` και `continue N`, όπου N ο αριθμός των βρόχων που θέλουμε να σπάσουμε, είναι απλές εντολές, αντιστοιχούν σε μια goto. Επίσης είναι δομημένες, γιατί αναφέρονται σε συγκεκριμένα σημεία του κώδικα, το τέλος και την αρχή του βρόχου, χωρίς να κάνουν χρήση ταμπελών (labels), που είναι το μελανό σημείο της goto.

Τέλος, σχετικά με τη σημασία της λέξης "ψευδογλώσσα". Για μένα, σημαίνει "μια χαλαρή γλώσσα με απλές εντολές σε σχέση με το πρόβλημα που πάω να λύσω". Το "set1 = set2 + set3" δεν είναι απλή εντολή όταν προσπαθώ να διδάξω ένωση από σετ. Μπορεί να δημιουργήσει παρανοήσεις στους μαθητές ότι γίνεται σε Ο[1]. Αν ένας επιστήμονας θέλει να εξηγήσει έναν αλγόριθμο σε κάποιον, μπορεί να τον πει σε C ή σε ΓΛΩΣΣΑ και ο συνομιλητής του που ξέρει Pascal να τον καταλάβει. Η ψευδογλώσσα μπορεί να είναι χαλαρή όσον αφορά τις δεσμευμένες λέξεις και τη σύνταξη, αλλά όχι στη σημασιολογία των εντολών. Όμως θεωρώ ότι αυτή η χαλαρότητα στη σύνταξη δεν έχει κανένα πλεονέκτημα στη διδασκαλία, είναι πιο κατανοητό αν διδάσκουμε με συγκεκριμένη σύνταξη παρά με χαοτική. Η χαλαρότητα θα έπρεπε να υπάρχει μόνο στη βαθμολόγηση, να μην μας απασχολεί αν ο μαθητής ξεχάστηκε και αντί για ΓΡΑΨΕ έβαλε Εμφάνισε.

evry

Άλκη υπάρχει το εξής θέμα το οποίο δεν το έχω ξεκαθαρίσει, πιο πολύ το βλέπω σαν την αιώνια διαμάχη bottom-up vs top-down.
Δηλαδή, θέλεις να μιλήσεις για επανάληψη. Τι είναι καλύτερο να δώσεις κάτι σαν το παρακάτω:

Κώδικας: Python
primes = [1, 2, 3, 5, 7, 11]
for number in primes:
   print( number*number )


που ισοδυναμεί με:

Κώδικας: Pascal
primes = [1, 2, 3, 5, 7, 11]
Για κάθε αριθμό στους πρώτους μέχρι το 12:
   Εμφάνισε το τετράγωνό του


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

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

Για την continue έχω την εντύπωση ότι μπορεί να προκαλέσει διδακτικά περισσότερα προβλήματα από αυτά που πάει να λύσει, αυτή είναι η δική μου αίσθηση ότι μπερδεύει τους μαθητές.
Ίσως να υπάρχουν κάποιες περιπτώσεις που χωρίς αυτήν τα πράγματα γίνονται πολύ δύσκολα αλλά δεν ξέρω αν έχει νόημα να την γνωρίζουν οι μαθητές.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

#16
Κατά τη γνώμη μου η συζήτηση χάνει την ουσία.

Το βασικό πλεονέκτημα της Python και της κάθε πραγματικής γλώσσας προγραμματισμού είναι ότι μπορεί να δώσει στους μαθητές εργαλεία για να είναι δημιουργικοί.
Για παράδειγμα, ο Κομνηνός δεν έκανε το διερμηνευτή σε (ψευδο)ΓΛΩΣΣΑ.
Φυσικά δεν μπορούν ούτε πρέπει να φτιάξουν οι μαθητές κάτι τέτοιο, αλλά με μια πραγματική γλώσσα θα μπορούσαν να υλοποιήσουν μικρά προγράμματα που να  τους ικανοποιούν την περιέργεια ή να καλύπτουν μικρές ανάγκες τους (ένα χαζό παράδειγμα: να οργανώσουν τις φωτογραφίες τους σε φακέλους ανάλογα με το έτος λήψης ή να πειραματιστούν με αλγόριθμους για σχεδιασμό γραφικών ή ό,τι άλλο θέλουν). Για να μην πούμε τι μπορούν να κάνουν στα μαθηματικά. Ή πόσο σημαντικό εφόδιο θα είναι στο πανεπιστήμιο.

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

Bonus points - food for thought:
Στην Α Λυκείου, επειδή τα παιδιά είχαν πρόβλημα να εγκαταστήσουν τα appinventor, alice κλπ. (τα οποία με την ευκαιρία θεωρώ ακατάλληλα και ότι αν παραμείνουν θα καταστρέψουν το μάθημα και θα μας ξανακάνουν επιλογής, αλλά αυτό είναι μια άλλη ιστορία) αποφάσισα  όσο κάνουμε τηλεεκπαίδευση να δείξω λίγο Python (με hands on προσέγγιση). Οι μαθητές μου δεν έχουν εμπειρία στον προγραμματισμό αλλά είναι φιλότιμα και έξυπνα παιδιά.
Στην εισαγωγή στην if λοιπόν έβαλα την κλασική άσκηση για τον χαρακτηρισμό επίδοσης μαθητή ανάλογα με το μέσο όρο του.
Οι μαθητές λοιπόν με εξέπληξαν και μου έμαθαν ότι το:

Παράθεση
if 18<mo<=20:
    print("Αριστα")

δουλεύει στην Python  Ναι δεν χρησιμοποιήσαν το and και θα πρέπει να τους κάνω σχετική συζήτηση του χρόνου, αλλά έλυσαν το πρόβλημα.
Αυτό δεν έχει αξία;
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

bugman

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

Η ΓΛΩΣΣΑ μπορεί να εμπλουτιστεί με αλφαριθμητικά σε ένα καλύτερο σύνολο συναρτήσεων και να μπει και η συνένωση. Επίσης μπορεί να εμπλουτιστεί με αντικείμενα (ας πάρει το παράδειγμα της Μ2000, όπου τα αντικείμενα τα ονομάζει Ομάδες).
Επίσης η continue και η break είναι απαραίτητες (για μένα και η goto αλλά ας το παραβλέψουμε για τη ΓΛΩΣΣΑ).

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

Τέλος για τις αριθμητικές συναρτήσεις μια Τυχαίος() λείπει!

Υ.Γ.
Ψευδογλώσσα και περιβάλλον εκτέλεσης δεν έχει νόημα. Θα πρέπει ο μαθητής να μετατρέπει το κώδικα της ψευδογλώσσας σε ΓΛΩΣΣΑ.

George Eco

Παράθεση από: pgrontas στις 29 Νοε 2020, 11:31:15 ΠΜ
Κατά τη γνώμη μου η συζήτηση χάνει την ουσία. Το βασικό πλεονέκτημα της Python και της κάθε πραγματικής γλώσσας προγραμματισμού είναι ότι μπορεί να δώσει στους μαθητές εργαλεία για να είναι δημιουργικοί.

Το βασικό πλεονέκτημα κάθε πραγματικής γλώσσας προγραμματισμού, έναντι ψευδογλώσσας κι ομοιάζουσας ΓΛΩΣΣΑΣ, είναι πως είναι πραγματική γλώσσα προγραμματισμού. Επιτέλους ας μη θεωρούμε τα παιδιά ανίκανα να καταλάβουν μια input() και μία print(). Τα έχουμε πει κι αλλού αυτά όμως.

Παράθεση από: pgrontas στις 29 Νοε 2020, 11:31:15 ΠΜ
....αλλά με μια πραγματική γλώσσα θα μπορούσαν να υλοποιήσουν μικρά προγράμματα που να  τους ικανοποιούν την περιέργεια ή να καλύπτουν μικρές ανάγκες τους (ένα χαζό παράδειγμα: να οργανώσουν τις φωτογραφίες τους σε φακέλους ανάλογα με το έτος λήψης ή να πειραματιστούν με αλγόριθμους για σχεδιασμό γραφικών ή ό,τι άλλο θέλουν). Για να μην πούμε τι μπορούν να κάνουν στα μαθηματικά. Ή πόσο σημαντικό εφόδιο θα είναι στο πανεπιστήμιο.

Με άλλα λόγια μπορεί να είναι συνδετικός κρίκος σε STEM σενάρια προγραμματιστικά projects με διαθεματική προσέγγιση. Καλά τα λες.

Παράθεση από: pgrontas στις 29 Νοε 2020, 11:31:15 ΠΜ
Έχοντας αυτό το  αδιαμφισβήτητο πλεονέκτημα, η πραγματική γλώσσα δεν πρέπει να αποδείξει ότι είναι καλύτερη αλλά ότι δεν είναι χειρότερη. Δηλαδή ότι δεν θα λειτουργήσει απωθητικά για κάποιους μαθητές. Εκεί πρέπει να επικεντρωθεί η συζήτηση και η έρευνα.
Και στα δύο πιστεύω. Αλλά η δεύτερη οπτική που δίνεις συνάδελφε, είναι πιστεύω σημαντικό να τονισθεί. Παράλληλα με τα γιατί ναι, πρέπει να βλέπουμε και τα γιατί όχι, όταν θέλουμε να χρησιμοποιήσουμε ένα εργαλείο στην εκπαίδευση. Για Python ο λόγος γίνεται διότι Παγκοσμίως παρατηρείται το πόσο καλή είναι για διδασκαλία.


Παράθεση από: pgrontas στις 29 Νοε 2020, 11:31:15 ΠΜ
Ναι δεν χρησιμοποιήσαν το and και θα πρέπει να τους κάνω σχετική συζήτηση του χρόνου, αλλά έλυσαν το πρόβλημα.
Αυτό δεν έχει αξία;

Θες τη προσωπική μου γνώμη; Αυτό έχει τη μεγαλύτερη αξία! Το αν θα πρέπει να προσαρμοστούν τα παιδιά στη Γ Λυκείου στο "Αυτό δε το χρησιμοποιούμε, είναι εκτός ύλης" είναι προφανές θέμα, θα γίνει, αλλά θα ακολουθήσουν την οδηγία, αναγνωρίζοντας το γιατί. Θα έχουν όμως και γνώση που άμεσα εφαρμόζεται στο πραγματικό κόσμο, πέρα από τα πλαίσια του μαθήματος. Γιατί να  μην έχει αξία ΑΥΤΟ; Κατ' εμέ θα έπρεπε να είσαι περήφανος που τους προσφέρεις το κάτι τις παραπάνω. Αν στη Β τους το μαζέψεις εξηγώντας τις ευκολίες της Python και τους λογικούς τελεστές και την "ορθότερη" κατά το μάθημα εναλλακτική... μικρό το κακό. Ωστόσο ναι! Έλυσαν ένα πρόβλημα ΜΟΝΑ ΤΟΥΣ! Δοκιμάζοντας τι μπορούν να κάνουν με το εργαλείο! Πού είναι το κακό;  ;)


stam12

#19
Ερώτημα: Τι θα γίνει με τον "online" διερμηνευτή γλώσσας, τώρα που καραργείται τo "flash player" μετά το Δεκέμβρη 2020; (στο "chrome" μου εμφανίζει σχετικό μήνυμα εδώ και καιρό)...
Το να κάνεις λάθος είναι ανθρώπινο και το να ρίχνεις το φταίξιμο στον υπολογιστή είναι ακόμη πιο ανθρώπινο.

sstergou

Γεια σας συνάδελφοι παλιοί και νέοι!
komni μου φαίνεται αδιανόητο πως ένας μαθητής έφτιαξε ένα τέτοιο πρόγραμμα όπως το δικό σου. Είμαι περίεργος για το background σου :)

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

Είμαι ανοιχτός σε οποιαδήποτε πρόταση.

Ο κώδικας είναι open source - https://github.com/markoutso/pseudoglossa.gr.
Μπορώ να δώσω το image του server που το τρέχει (είναι το πιο φτηνό instance στο digital ocean),  με το σχήμα της βάσης αλλά χωρίς τα δεδομένα τα οποία θα διαγράψω.
Μπορώ να δώσω το domain, να βάλω linκ, να κάνω redirect ή οτιδήποτε άλλο.

Για τους επόμενους δύο μήνες (τουλάχιστον) δεν θα έχω χρόνο να εμπλακώ σε κάτι νέο.

Αν κάποιος από σας έχει κάποια ιδέα για το θέμα ευχαρίστως να βοηθήσω όσο μπορώ.
Όποιος θέλει να ασχοληθεί ας στείλει μήνυμα στο sstergou AT gmail.com. Το στέκι δεν το πολυεπισκέποτομαι πλέον.


Καλή συνέχεια!

komni

Παράθεση από: sstergou στις 03 Δεκ 2020, 12:03:47 ΠΜ
Είμαι περίεργος για το background σου :)
https://www.linkedin.com/in/komninoschat/

Παράθεση από: sstergou στις 03 Δεκ 2020, 12:03:47 ΠΜ
Εδώ και κάποιο καιρό σκέφτομαι και εγώ το τι πρέπει να γίνει με το pseudoglossa.gr.
Το πρόβλημα είναι ότι έχω απομακρυνθεί τόσο πολύ από την εκπαίδευση που δεν ξέρω καν τι διδάσκεται στις μέρες μας.

Είμαι ανοιχτός σε οποιαδήποτε πρόταση.

Ο κώδικας είναι open source - https://github.com/markoutso/pseudoglossa.gr.
Μπορώ να δώσω το image του server που το τρέχει (είναι το πιο φτηνό instance στο digital ocean),  με το σχήμα της βάσης αλλά χωρίς τα δεδομένα τα οποία θα διαγράψω.
Μπορώ να δώσω το domain, να βάλω linκ, να κάνω redirect ή οτιδήποτε άλλο.

Για τους επόμενους δύο μήνες (τουλάχιστον) δεν θα έχω χρόνο να εμπλακώ σε κάτι νέο.

Αν κάποιος από σας έχει κάποια ιδέα για το θέμα ευχαρίστως να βοηθήσω όσο μπορώ.
Όποιος θέλει να ασχοληθεί ας στείλει μήνυμα στο sstergou AT gmail.com. Το στέκι δεν το πολυεπισκέποτομαι πλέον.
Ευχαριστώ για την διάθεσή σας και για την δουλεία που έχετε κάνει πάνω στην ΑΕΠΠ! Σας έχω στείλει mail.

dpa2006

Παράθεση από: George Eco στις 27 Νοε 2020, 09:45:04 ΜΜ
Η ιδέα του wizard μπορεί να είναι ένα αρχικό μενού επιλογής. Δεν είναι κακή ιδέα. Κι εγώ δεν είμαι εναντίον ύπαρξης κάποιου εργαλείου, απλά παράθεσα την άποψή μου και την οπτική μου, για ένα φαινόμενο που χρόνια παρατηρώ. Το εργαλείο δε βοηθάει ποτέ. Ο τρόπος χρήσης από τον εκπαιδευτικό βοηθάει.

Συμφωνώ απόλυτα...!
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

stam12

Παράθεση από: sstergou στις 03 Δεκ 2020, 12:03:47 ΠΜ
Εδώ και κάποιο καιρό σκέφτομαι και εγώ το τι πρέπει να γίνει με το pseudoglossa.gr.
Το πρόβλημα είναι ότι έχω απομακρυνθεί τόσο πολύ από την εκπαίδευση που δεν ξέρω καν τι διδάσκεται στις μέρες μας.

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

komni

Υλοποίησα την Ψευδογλώσσα στο pseudo.gloglossa.gr.

Βοηθήστε με να βρω όποια bugs υπάρχουν και θα στείλω στον κ. Στέργου για να πάρουμε και το domain name ;D

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

pgrontas

Συγχαρητήρια και πάλι Κομνηνέ!

Δες λίγο αυτό:
Εμφάνισε 'α' > 'β' ή όχι 7 mod 5 > Τ_Ρ(4)
Προκύπτει το σφάλμα:
Περίμενα τον αριστερό τελεστέο να είναι τύπου Λογική, αλλά έλαβα μη συμβατό τύπο Αριθμός

Όμως η πράξη μπορεί να γίνει γιατί προηγείται ο συγκριτικός τελεστής από το όχι.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

komni

Παράθεση από: pgrontas στις 19 Ιαν 2021, 11:07:31 ΠΜ
Συγχαρητήρια και πάλι Κομνηνέ!

Δες λίγο αυτό:
Εμφάνισε 'α' > 'β' ή όχι 7 mod 5 > Τ_Ρ(4)
Προκύπτει το σφάλμα:
Περίμενα τον αριστερό τελεστέο να είναι τύπου Λογική, αλλά έλαβα μη συμβατό τύπο Αριθμός

Όμως η πράξη μπορεί να γίνει γιατί προηγείται ο συγκριτικός τελεστής από το όχι.

Καλησπέρα λέει κάτι το σχολικό πάνω σε αυτό; Στις γλώσσες που γράφω εγώ το όχι έχει μεγαλύτερη προτεραιότητα από τους συγκρητικούς.

geochatz

Συγχαρητήρια Κομνηνέ και σε ευχαριστούμε για την εντυπωσιακή δουλειά σου!
Σκέφτεσαι στην ψευδογλώσσα (και γιατί όχι και στην ΓΛΩΣΣΑ) να προσθέσεις και την συνάρτηση ΤΥΧΑΙΟΣ_ΑΚΕΡΑΙΟΣ(...,...);
Δίνει την ευκαιρία να ασχοληθούμε με αρκετές ενδιαφέρουσες ασκήσεις.

komni

Παράθεση από: geochatz στις 19 Ιαν 2021, 03:02:53 ΜΜ
Συγχαρητήρια Κομνηνέ και σε ευχαριστούμε για την εντυπωσιακή δουλειά σου!
Σκέφτεσαι στην ψευδογλώσσα (και γιατί όχι και στην ΓΛΩΣΣΑ) να προσθέσεις και την συνάρτηση ΤΥΧΑΙΟΣ_ΑΚΕΡΑΙΟΣ(...,...);
Δίνει την ευκαιρία να ασχοληθούμε με αρκετές ενδιαφέρουσες ασκήσεις.

Ευχαριστώ! Δεν την έχω ξανακούσει αυτή τη συνάρτηση.. Υπάρχει πουθενά στο σχολικό;

geochatz

Παράθεση από: komni στις 19 Ιαν 2021, 03:26:10 ΜΜ
Ευχαριστώ! Δεν την έχω ξανακούσει αυτή τη συνάρτηση.. Υπάρχει πουθενά στο σχολικό;
Η αλήθεια είναι ότι δεν αναφέρεται στο σχολικό αλλά είναι κρίμα που δεν υπάρχει.
Εδώ και μια παλαιότερη συζήτηση επί του θέματος.
Θα μου πεις, βέβαια, άμα προσθέταμε όποια συνάρτηση του κατέβει του καθενός, θα χάναμε τη μπάλα...

pgrontas

Παράθεση από: komni στις 19 Ιαν 2021, 01:35:00 ΜΜ
Καλησπέρα λέει κάτι το σχολικό πάνω σε αυτό; Στις γλώσσες που γράφω εγώ το όχι έχει μεγαλύτερη προτεραιότητα από τους συγκρητικούς.

Ναι, και στην ΓΛΩΣΣΑ και στην ΨΕΥΔΟΓΛΩΣΣΑ, οι λογικοί τελεστές (άρα και το όχι) έπονται των συγκριτικών (σελ. 139 Γ Λυκείου και σελ 35 Β Λυκείου).
Με την ευκαιρία,  Κομνηνέ τι τάξη πας (φυσικά αν θες απαντάς).
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

bugman

Πάλι έσβησαν την απάντησή μου!
Έδωσα την λύση στο πρόβλημα και αυτός που το έσβησε απλά δεν το κατάλαβε!

komni

Παράθεση από: geochatz στις 19 Ιαν 2021, 03:54:02 ΜΜ
Η αλήθεια είναι ότι δεν αναφέρεται στο σχολικό αλλά είναι κρίμα που δεν υπάρχει.
Εδώ και μια παλαιότερη συζήτηση επί του θέματος.
Θα μου πεις, βέβαια, άμα προσθέταμε όποια συνάρτηση του κατέβει του καθενός, θα χάναμε τη μπάλα...

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

Παρόλα αυτά είναι πολύ εύκολο για κάποιον να κάνει extend τον διερμηνευτή μου και να βάλει δικές του συναρτήσεις με λίγες γνώσεις Javascript/Typescript(π.χ. εδώ η υλοποίηση του Τ_Ρ). Ίσως βάλω επιλογή να γίνεται αυτό από το web interface για να μην χρειάζεται clone και redeploy.

Παράθεση από: pgrontas στις 19 Ιαν 2021, 03:54:40 ΜΜ
Ναι, και στην ΓΛΩΣΣΑ και στην ΨΕΥΔΟΓΛΩΣΣΑ, οι λογικοί τελεστές (άρα και το όχι) έπονται των συγκριτικών (σελ. 139 Γ Λυκείου και σελ 35 Β Λυκείου).
Με την ευκαιρία,  Κομνηνέ τι τάξη πας (φυσικά αν θες απαντάς).

Οκ δεκτό! Θα το αλλάξω αύριο το πρωί πριν τις 8.
Γ λυκείου πάω σε (ιδιωτικό πλέον..) ΓΕΛ στον Άλιμο.

Παράθεση από: bugman στις 19 Ιαν 2021, 04:53:51 ΜΜ
Πάλι έσβησαν την απάντησή μου!
Έδωσα την λύση στο πρόβλημα και αυτός που το έσβησε απλά δεν το κατάλαβε!

Δεν νομίζω να σου σβήνει κανείς τις απαντήσεις.. Κάποιο bug θα ήταν.

Παράθεση από: bugman
Το Όχι λειτουργεί όπως και το μείον στις αριθμητικές εκφράσεις. Εφαρμόζεται στο πρώτο όρο που γυρίζει τύπο λογικό.
Για να το πετύχεις αυτό θες ένα flag το οποίο μόνο το Όχι θα το κάνει true. Όταν λοιπόν το flag είναι true τότε η διερμηνεία εκτελείται μέχρι εκεί που η έκφραση δίνει το πρώτο λογικό αποτέλεσμα.

Το όχι ψευδής και όχι ψευδής
λειτουργεί ως (όχι ψευδής) ή (όχι ψευδής) δηλαδή δίνει αληθής
και όχι ως
όχι (ψευδής ή όχι ψευδής)
που θα έδινε ψευδής
Δεν καταλαβαίνω που χρησιμοποιείς τα flags στην συντακτική ανάλυση.. Ο διερμηνευτής μου κάνει μια απλή αναδρομούλα(βλ. συνακτική ανάλυση για το unary +).

Το παράδειγμα που έδωσες νομίζω είναι ασάφεια γιατί δεν προσδιορίζει το σχολικό προτεραιότητα ανάμεσα στους λογικούς συντελεστής( @alkisg ισχύει;)

bugman

Εκ παραδρομής το ΚΑΙ πρέπει να γίνει Ή εδώ: Το όχι ψευδής Ή όχι ψευδής

λειτουργεί ως (όχι ψευδής) ή (όχι ψευδής) δηλαδή δίνει αληθής
και όχι ως
όχι (ψευδής ή όχι ψευδής)
που θα έδινε ψευδής

Δεν είναι ασάφεια. Δες τις παρενθέσεις και θα το καταλάβεις!

bugman

Κοίταξα τον κώδικά σου:
Έχεις το private atom(): AST.AST {  .... }
Στο οποίο παίζουν μόνο δυο unary τελεστές, οι οποίοι γυρνούν ενδιάμεσα AST, όπως το   AST.UnaryPlusAST(atom).inheritPositionFrom(....) και το   AST.UnaryMinusAST(atom).inheritPositionFrom(...)

Ομοίως πρέπει να γίνει για το Not που το έχει return new AST.NotAST(this.atom()).inheritPositionFrom(savedToken)
(το flag πρέπει να κόβει το ενδιάμεσο AST όταν ολοκληρώσει μια λογική έκφραση )


komni

Παράθεση από: bugman στις 19 Ιαν 2021, 05:38:46 ΜΜ
Εκ παραδρομής το ΚΑΙ πρέπει να γίνει Ή εδώ: Το όχι ψευδής Ή όχι ψευδής

λειτουργεί ως (όχι ψευδής) ή (όχι ψευδής) δηλαδή δίνει αληθής
και όχι ως
όχι (ψευδής ή όχι ψευδής)
που θα έδινε ψευδής

Δεν είναι ασάφεια. Δες τις παρενθέσεις και θα το καταλάβεις!

Αυτό εννοώ ασάφεια. Η έκφραση "όχι ψευδής Ή όχι ψευδής" έχει δύο ερμηνίες:
1) (όχι ψευδής) ή (όχι ψευδής)    <-- το όχι έχει μεγαλύτερη προτεραιότητα από το η
2) όχι (ψευδής ή όχι ψευδής)      <-- το η έχει μεγαλύτερη προτεραιότητα από το όχι
Και από όσο ξέρω το σχολικό δεν ορίζει προτεραιότητα μεταξύ όχι και η

Παράθεση από: bugman στις 19 Ιαν 2021, 05:49:59 ΜΜ
Κοίταξα τον κώδικά σου:
Έχεις το private atom(): AST.AST {  .... }
Στο οποίο παίζουν μόνο δυο unary τελεστές, οι οποίοι γυρνούν ενδιάμεσα AST, όπως το   AST.UnaryPlusAST(atom).inheritPositionFrom(....) και το   AST.UnaryMinusAST(atom).inheritPositionFrom(...)

Ομοίως πρέπει να γίνει για το Not που το έχει return new AST.NotAST(this.atom()).inheritPositionFrom(savedToken)
Ναι ακριβώς

Παράθεση από: bugman στις 19 Ιαν 2021, 05:49:59 ΜΜ
(το flag πρέπει να κόβει το ενδιάμεσο AST όταν ολοκληρώσει μια λογική έκφραση )
Όχι δεν χρειάζεται κανένα flag, μόνο του το απο πάνω δουλεύει.

bugman

Το NOT προηγείται γιατί είναι unary operator.

komni

Παράθεση από: bugman στις 19 Ιαν 2021, 06:05:25 ΜΜ
Το NOT προηγείται γιατί είναι unary operator.

Που το γράφει αυτό το σχολικό;;

Για προτεραιότητα λέει σελ. 167
"Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών."
"Ακόμη, οι λογικοί τελεστές έχουν χαμηλότερη ιεραρχία από τους συγκριτικούς."
Δεν μιλάει όμως για προτεραιότητα μεταξύ ή και όχι.

bugman

Ας μην το λέει, εδώ δεν έχουμε προτεραιότητα μεταξύ τελεστών, αλλά το τι είναι unary operator και πώς τον χειριζόμαστε.
ρίξε μια ματιά εδώ https://en.wikipedia.org/wiki/Unary_operation
Η ασάφεια έχει να κάνει με τα Η και ΚΑΙ και όχι με το ΌΧΙ.
Το όχι παίρνει λογική έκφραση και μόνο, αλλά αν η έκφραση έχει δυο ή περισσότερους όρους, όπως κάθε unary operator εφαρμόζεται στο πρώτο όρο.
Πχ στο -2*3 το - είναι μοναδιαίος τελεστής και εφαρμόζεται στο 2. Ομοίως το -2*-3 έχει δυο μοναδιαίους και εφαρμόζονται πριν τον τελεστή *.
Ασφαλώς μπορεί κανείς να μην έχει στο διερμηνευτή μια τόσο συγκροτημένη εκτέλεση εκφράσεων και να βάζει παντού παρενθέσεις. Νομίζω όμως ότι η αιτιολογημένη άποψη, ότι το Όχι είναι μοναδιαίος τελεστής (κάτι που δεν φαίνεται στο κώδικά σου), θα έλυνε το πρόβλημα της μη καθορισμένης αναφοράς στο βιβλίο περί των προτεραιοτήτων των τελεστών Ή, ΚΑΙ, ΌΧΙ.


komni

#40
@bugman

Δεν ισχύει τίποτα απ' όσα έχεις γράψει.

Παρόλο που στο -2*-3 έχει παραπάνω προτεραιότητα το -, στο -obj.prop (στην C) έχει παραπάνω προτεραιότητα ο τελεστής . και διερμηνεύεται σαν -(obj.prop) και όχι σαν (-obj).prop.

Εννοείται πως υπάρχει προτεραιότητα ανάμεσα και στους unary operators.

Όσον αφορά την υλοποίηση μου λες ότι δεν έχω υλοποιήσει το Νot ως unary operator ενώ ένα ποστ πριν ανέφερες το παρακάτω κομμάτι κώδικά μου:
AST.NotAST(this.atom()).inheritPositionFrom(savedToken)
Εδώ βλέπουμε πως το AST node του Not παίρνει ένα AST node ως παράμετρο και όχι 2 άρα είναι unary operator. Δεν ξέρω καν πως μπορείς να υλοποιήσεις το Not και να μην είναι unary δεν βγάζει λογική.

alkisg

@bugman, αφού έχουμε πει τόσες φορές ότι δεν πρέπει να δίνεις συμβουλές για τα μαθήματα, γιατί επιμένεις; Δεν είναι ένα τεχνολογικό φόρουμ σαν το insomnia όπου ο καθένας λέει το μακρύ και το κοντό του, εδώ υπάρχουν διακριτοί ρόλοι, οι καθηγητές και οι μαθητές, και αυτά που γράφονται πρέπει να είναι υπεύθυνα γιατί μπορεί να επηρεάσουν το μέλλον των μαθητών. Οι σκέψεις σου μπορεί να ισχύουν σε Visual Basic κλπ, αλλά μπορεί να είναι τελείως λάθος στα πλαίσια των μαθημάτων που διδάσκουμε.

@komni, γενικά μην επηρεάζεσαι από αυτά που γράφει ο bugman, δεν είναι καθηγητής. Η προτεραιότητα των τελεστών έχει πλέον διευκρινιστεί: https://alkisg.mysch.gr/steki/index.php?topic=7661.msg84995#msg84995
Αυτά που γράφει ο pgrontas ισχύουν και στον Διερμηνευτή μου και στην Python, οπότε ναι αν έχεις όρεξη καλό είναι να το διορθώσεις.

Κώδικας: Python
$ python3 -c "import math; print('α'>'β' or not 7 // 5 > math.sqrt(4))"
True

bugman

το -obj δεν έχει καμία έννοια, επειδή το - δεν εφαρμόζεται στο αντικείμενο.
Ομοίως το Όχι 7 mod 5 > Α_Ρ(4) δεν μπορεί να είναι (Όχι 7) ούτε (Όχι 7 mod 5)... κ.ο.κ. Πρέπει η δεξιά έκφραση να είναι τύπου λογικός. Το ζήτημα είναι μέχρι που; Δηλαδή αν το Όχι 7 mod 5>Α_Ρ(4) είχε συνέχεια το Και (....) το ΚΑΙ θα ήταν μέσα ή όχι στην δεξιά έκφραση του Όχι; Κατά την γνώμη δεν είναι. Όπως πχ στο -3-4 το πρώτο - είναι unary, ενώ το δεύτερο (-) δεν είναι, οπότε έχουμε (-3)-(4) και όχι -(3-(4))

Στο δεύτερο σκέλος συμφωνείς ότι το Όχι δεν μπορεί να μην είναι unary, αλλά δεν δείχνεις αν χρειάζεται έναν όρο την ελάχιστη έκφραση που θα δίνει λογικό αποτέλεσμα) για να ολοκληρωθεί όταν απουσιάζουν οι παρενθέσεις.

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

komni


bugman


dski

Αφού σε συγχαρώ για την εξαιρετική δουλειά σου και σε ευχαριστήσω για τη βοήθειά που μας παρέχεις με την δημιουργία του διερμηνευτή για την Ψευδογλώσσα, θα ήθελα να προτείνω, αν δεν είναι δύσκολο, να προστεθεί σε κάποιο σημείο (π.χ. στα δεξιά της σελίδας) μια λίστα με τις εντολές της Ψευδογλώσσας ώστε να μπορούν να εισαχθούν με ένα κλικ στον αλγόριθμο. Αυτό υπάρχει στο παλιό pseudoglossa.gr αλλά και στον Διερμηνευτή της Γλώσσας/Ψευδογλώσσα και θεωρώ ότι βοηθάει τους μαθητές καθώς δεν είναι όλοι γρήγοροι με την πληκτρολόγηση στα ελληνικά, ειδικά όταν πρόκειται για εντολές προγραμματισμού, ενώ, επιπλέον, η λίστα νομίζω τους βοηθάει και να τις θυμούνται.

komni

Παράθεση από: dski στις 20 Ιαν 2021, 08:01:14 ΜΜ
Αφού σε συγχαρώ για την εξαιρετική δουλειά σου και σε ευχαριστήσω για τη βοήθειά που μας παρέχεις με την δημιουργία του διερμηνευτή για την Ψευδογλώσσα, θα ήθελα να προτείνω, αν δεν είναι δύσκολο, να προστεθεί σε κάποιο σημείο (π.χ. στα δεξιά της σελίδας) μια λίστα με τις εντολές της Ψευδογλώσσας ώστε να μπορούν να εισαχθούν με ένα κλικ στον αλγόριθμο. Αυτό υπάρχει στο παλιό pseudoglossa.gr αλλά και στον Διερμηνευτή της Γλώσσας/Ψευδογλώσσα και θεωρώ ότι βοηθάει τους μαθητές καθώς δεν είναι όλοι γρήγοροι με την πληκτρολόγηση στα ελληνικά, ειδικά όταν πρόκειται για εντολές προγραμματισμού, ενώ, επιπλέον, η λίστα νομίζω τους βοηθάει και να τις θυμούνται.

Καλησπέρα και ευχαριστώ για τα καλά σας λόγια.

Μου το έχουν προτείνει ξανά αυτό αλλά αποφάσισα να μην το υλοποιήσω πρώτον διότι θα κάνει το UI της ιστοσελίδας πολύ πιο bloated και επίσης γιατί οι μαθητές θα πρέπει να γνωρίζουν τις εντολές απ' έξω.

Παράθεση από: bugman στις 19 Ιαν 2021, 08:01:15 ΜΜ
το -obj δεν έχει καμία έννοια, επειδή το - δεν εφαρμόζεται στο αντικείμενο.
Ομοίως το Όχι 7 mod 5 > Α_Ρ(4) δεν μπορεί να είναι (Όχι 7) ούτε (Όχι 7 mod 5)... κ.ο.κ. Πρέπει η δεξιά έκφραση να είναι τύπου λογικός. Το ζήτημα είναι μέχρι που; Δηλαδή αν το Όχι 7 mod 5>Α_Ρ(4) είχε συνέχεια το Και (....) το ΚΑΙ θα ήταν μέσα ή όχι στην δεξιά έκφραση του Όχι; Κατά την γνώμη δεν είναι. Όπως πχ στο -3-4 το πρώτο - είναι unary, ενώ το δεύτερο (-) δεν είναι, οπότε έχουμε (-3)-(4) και όχι -(3-(4))

Στο δεύτερο σκέλος συμφωνείς ότι το Όχι δεν μπορεί να μην είναι unary, αλλά δεν δείχνεις αν χρειάζεται έναν όρο την ελάχιστη έκφραση που θα δίνει λογικό αποτέλεσμα) για να ολοκληρωθεί όταν απουσιάζουν οι παρενθέσεις.

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


Η C++ μας αφήνει να κάνουμε overload unary operators:

#include <iostream>

class Obj {
    public:
        double prop;

    Obj operator-() {
        Obj* newObj = new Obj();
        newObj->prop = 1 / this->prop;
        
        return *newObj;
    }
};

int main()
{
    Obj obj = *new Obj();
    obj.prop = 10;

    std::cout << (-obj).prop << std::endl; // 0.1
    std::cout << -obj.prop << std::endl;   // -10
    
    return 0;
}

George Eco

Κομνηνέ λεβέντη μου, στο βιβλίο Β Λυκείου έχει εντολή Επανάλαβε μέχρις ότου (εκτός του Αρχή_Επανάληψης) για ψευδογλώσσα, που αναγνωρίζεται στο διερμηνευτή σου ως δεσμευμένη λέξη, αλλά δε κλείνει σωστά με Μέχρις_ότου όπως θα έπρεπε. Για τσέκαρέ το μια! ;)

Αλγόριθμος Παράδειγμα

χ <- 0
Επανάλαβε
χ <- χ+1
ΓΡΑΨΕ χ
Μέχρις_ότου χ > 10

Τέλος Παράδειγμα

bugman

@komni,
συμφωνώ ότι όταν το ορίσεις (και γίνεται να το ορίσεις στη γλώσσα που χρησιμοποιείς) το έχεις. Και η Μ2000 που έχω γράψει ορίζει τελεστές στα αντικείμενά της, αν και έχει το περιορισμό ότι οι πράξεις γίνονται με αντικείμενα δηλαδή δεν μπορείς να κάνεις Α * 10  (όπου Α αντικείμενο και 10 αριθμός), αλλά μπορείς να κάνεις το Α*Β (να είναι δηλαδή το Α και Β αντικείμενα).
Όπως σου έγραψα το -obj δεν έχει νόημα ενώ το -obj.propertyA έχει, γιατί για το δεύτερο εφόσον είναι αριθμός έχει νόημα, ενώ για το πρώτο πρέπει να το ορίσεις!

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