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

Γενικό Λύκειο => Αλγοριθμική και Προγραμματισμός => Διερμηνευτής της ΓΛΩΣΣΑΣ => Μήνυμα ξεκίνησε από: alkisg στις 08 Ιαν 2003, 06:04:49 ΠΜ

Τίτλος: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: alkisg στις 08 Ιαν 2003, 06:04:49 ΠΜ
Λύθηκε η ασάφεια με τις διαδικασίες:
Μετά από επικοινωνία με τους συγγραφείς του βιβλίου προέκυψαν τα εξής συμπεράσματα: Στη ΓΛΩΣΣΑ το πέρασμα των μεταβλητών γίνεται με αναφορά στις διαδικασίες και με τιμή στις συναρτήσεις. Άρα είναι αδύνατη η κλήση μιας διαδικασίας με εκφράσεις (ή σταθερές) σαν παραμέτρους (δεν επιτρέπεται η  ΚΑΛΕΣΕ ΚάνεΚάτι(Α - 1)). Σαν επακόλουθο, είναι αδύνατη η χρήση αναδρομής στην ΓΛΩΣΣΑ και αν ποτέ αυτή ενταχτεί στην ύλη θα χρειαστούν κάποιες αλλαγές στον τυπικό ορισμό της.
(παρατήρηση 9/10/03: τελικά βρήκα έναν τρόπο για υλοποίηση που παρακάμπτει τις ασάφειες, περισσότερες λεπτομέρειες στην 0.90b)
Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: Πέτρος Βασιλικός στις 13 Μαρ 2003, 08:24:29 ΠΜ
Οι διαδικασίες ειναι μέσα στην εξεταστέα ύλη. Τι λέτε ? να το κάνουμαι απλά θεωριτικά ? στον πίνακα ?
Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: alkisg στις 13 Μαρ 2003, 10:22:44 ΠΜ
Δυστυχώς αν και η υποστήριξη διαδικασιών δεν είναι κάτι δύσκολο, δεν έχω τον χρόνο τώρα να το υλοποιήσω. Το καλοκαίρι θα ξαναγράψω τον διερμηνευτή σε C, θα του αλλάξω το control συγγραφής κώδικα και θα του βάλω δυνατότητες εκτύπωσης - αποθήκευσης σαν ιστοσελίδα κτλ. Για φέτος λοιπόν δεν μπορώ να βοηθήσω, αν και νομίζω ότι εφόσον οι μαθητές έχουν καταλάβει τα υπόλοιπα δεν θα δυσκολευτούν με μια θεωρητική παρουσίαση των διαδικασιών.
Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: Χρήστος στις 05 Μαΐου 2003, 01:35:22 ΜΜ
 :-[ Eίναι απαραίτητο να εγκαταλήψεις την Delphi?
Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: alkisg στις 05 Μαΐου 2003, 07:21:56 ΜΜ
??? Το αποτέλεσμα θα είναι καλύτερο, το πρόβλημα που είναι ???
Χρήστο νομίζω ότι το Delphi είναι βολικότατο και φέρνει όμορφα και γρήγορα αποτελέσματα, όμως για συμβατότητα με το Linux (που έχω στα υπόψη και ελπίζω να προλάβω να υλοποιήσω) θα πρέπει να χρησιμοποιήσω το Qt, που σημαίνει > 5 Mb download!!! Επίσης είχα διάφορα προβλήματα π.χ. με τα array από varInt64 και μάλλον φταίει το Delphi, όχι εγώ.
Έχω όμως και μια σκέψη να γυρίσω τον διερμηνευτή σε open-source (όχι δωρεάν, πιστεύω ότι αυτοί που αφιερώνουν χρόνο στην ανάπτυξη εκπαιδευτικών βοηθημάτων πρέπει να αμοίβονται), οπότε αν βρω συνεργάτες που να έχουν εμπειρία σε Delphi το συνεχίζω σε Delphi (και ξεχνάω την φορητότητα)!!!
Πάντως το control που σκέφτομαι να χρησιμοποιήσω (με κάποια τροποποίηση βέβαια) έχει δυνατότητες εκτύπωσης, αποθήκευσης ως Html / Rtf / Pdf / Latex, αναδίπλωσης κώδικα (να κρατάει μόνο τα σημαντικά και να κρύβει π.χ. το εσωτερικό των διαδικασιών) κτλ κτλ και θα υλοποιήσω και κάποια πράγματα που εκκρεμούν όπως breakpoints, code autocompletion, συναρτήσεις / διαδικασίες κτλ...
Ελπίζω μόνο ο διερμηνευτής να είναι τόσο χρήσιμος όσο και ο χρόνος που θα του αφιερώσω!  :)
Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: bugman στις 06 Μαΐου 2003, 02:19:04 ΜΜ
Άλκη,  πιστεύω ότι το καλύτερο θα ήταν να ολοκληρωθεί η γλώσσα στον Διερμηνευτή σου. τελευταία έγραψα μερικά προγράμματα - demo - για την ΓλωσσοΜάθεια του Νικολαϊδη στο Ασκησιολόγιο. http://users.otenet.gr/~spin1/glossomatheia/programs/Θα βρεις την τρίλιζα και το mastermind (φυσικά και μια γεννήτρια ψευδοτυχαίων αριθμών).
Προτείνω να φτιάξεις τις συναρτήσεις και τις διαδικασίες.  
Να φτιάξεις δε την υποστήριξη αυτών όχι κατά ανάγκη με αναδρομή (recursion) αλλά με επανείσοδο (reentrance) - p.x. Η Α καλεί την Β όπου η Β καλεί πάλι την Α. Η πρώτη Α και η δεύτερη Α ενώ έχουν ίδιο ορισμό έχουν διαφορετικές τιμές στις μεταβλητές τους (που έχουν ίδιο όνομα).
Αυτό που θα ήθελα να ξεκαθαρίσεις (το ζήτησα και από τον Νικολαϊδη) είναι το μέγεθος που μπορούμε να έχουμε:
Στα ονόματα των αναγνωριστικών (μεταβλητών-σταθερών-διαδικασιών-συναρτήσεων)
Στα Αλφαριθμητικά,
Στους Δείκτες Πινάκων,
Στη περισσότερη μνήμη που μπορούμε να αποδώσουμε σε ένα πίνακα (κάθε τύπου)
Καθώς και τον αριθμό μέγιστων φωλιασμένων επαναλήψεων (λέγεμε stack)

Και να και ένα δωράκι:
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ τυχαιος_αριθμος
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: ΑΡΧΙΚΟ, ΝΕΟ, Ι, ΑΠ, ΣΥΧΝΟΤΗΤΑ[100], ΜΕΓΙΣΤΟ
ΔΙΑΔΙΚΑΣΙΑ ΤΥΧΑΙΟΣ(Α,Ν)
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Α, Ν
ΑΡΧΗ
   Ν <-- N + Α DIV 123
   Α <-- Ν + Α MOD 13031
   Ν <-- (Ν MOD 100)*100+(N DIV 100) MOD 100
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΑΡΧΗ
   ΑΡΧΙΚΟ <-- 12123
   ΜΕΓΙΣΤΟ <-- 100000
   ΓΡΑΨΕ 'ΘΑ ΚΑΝΩ ΕΛΕΓΧΟ ΣΕ ',ΜΕΓΙΣΤΟ,' ΝΟΥΜΕΡΑ'
   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ΜΕΓΙΣΤΟ
      ΚΑΛΕΣΕ ΤΥΧΑΙΟΣ(ΑΡΧΙΚΟ, ΝΕΟ)
      ΑΠ <-- (ΝΕΟ DIV 100) +1
    ΣΥΧΝΟΤΗΤΑ[ΑΠ] <-- ΣΥΧΝΟΤΗΤΑ[ΑΠ]+1
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   ΓΡΑΨΕ
   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
      ΓΡΑΨΕ_ Ι,'[',ΣΥΧΝΟΤΗΤΑ[Ι],'] '
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: alkisg στις 25 Ιουν 2003, 10:25:41 ΠΜ
Γιώργο sorry που δεν σου απάντησα πιο πριν αλλά έτρεχα με τις πανελλήνιες και τα μεταπτυχιακά.
Για την reentrancy: όπου υποστηρίζεται αναδρομή οι τιμές των μεταβλητών αποθηκεύονται στο stack, οπότε υποχρεωτικά ο κώδικας είναι reentrant.
Τα μεγέθη που ζητάς είναι ουσιαστικά απεριόριστα (π.χ. για 1 τρισεκατομμύριο διαστάσεις πινάκων πρώτα θα εξαντηθεί η RAM σου και μετά θα βγάλει πρόβλημα ο διερμηνευτής - η m2000 αν δεν κάνω λάθος υποστηρίζει μόνο 60 ;-) ). Για τα υπόλοιπα μεγέθη (πραγματικοί, ακέραιοι κτλ) τα γράφω όλα στο εγχειρίδιο της γλώσσας (στην ιστοσελίδα μου), ρίξ' του μια ματιά. Γενικώς η φιλοσοφία μου είναι ότι δεν πρέπει ποτέ να αναγκάσουμε τους μαθητές να ασχοληθούν με την ακρίβεια των υπολογισμών, οπότε χρησιμοποιώ τεράστιους ακέραιους (int64), διπλής ακρίβειας πραγματικούς, 4 Gb strings/αναγνωριστικά κτλ.
Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: bugman στις 25 Ιουν 2003, 02:24:02 ΜΜ
Ok
Θα διαβάσω, την βοήθεια. Πρέπει όμως να φτιάξεις έναν άμεσο τρόπο εισαγωγής και εξαγωγής στοιχείων στο ιδιο παράθυρο. Αυτό με τα InputBoxes είναι τραβηγμένο!(Και αλλάζει την λογική που φτιάχνουμε προγράμματα)

Α! Η Μ2000 στην έκδοση 4, υποστηρίζει μόνο μονοδιάστατους πίνακες. Στην έκδοση 5 πολυδιάστατους μέχρι δέκα διαστάσεις. Και στις δυο εκδόσεις μπορείς να βάλεις όσα στοιχεία θέλεις(32Bit δείκτες).
Τώρα για τους ακέραιους, δεν χρησιμοποιώ καθόλου Integers! Δηλαδή είναι πραγματικοί χωρίς δεκαδικά!

Στις συναρτήσεις της Μ2000 (εκδ 5) μπορείς να κάνεις επανείσοδο. Στα τμήματα, επίσεις μπορείς να το κάνεις αλλα δεν επιτρέπω την αναδρομή!(από δική μου παραξενιά). Μην ξεχνάς ότι μπορείς να έχεις τμήματα που να έχουν συναρτήσεις που να έχουν τμήματα που να έχουν συναρτήσεις....Και επειδή είναι interpreter η Μ2000 μπορείς να έχεις δυο ορισμούς για μια συνάρτηση και με ένα if then else να αλλάζεις τον τρέχον ορισμό σε διαδοχικές εκτελέσεις του ίδιου τμήματος!
Κάνεις καλή προσπάθεια αλλά μπλέκουμε στο επι αμοιβή! Εκεί βέβαια ο καθένας, και καλά κάνει, το βλέπει όπως θέλει.



Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: Ceres στις 10 Σεπ 2003, 12:01:00 ΜΜ
Καλή σχολική χρόνια σε όλους σας.
Τελικά ούτε η νέα έκδοση 0.88α του διερμηνευτή θα υποστηρίζει Διαδικασίες και  Συναρτήσεις;
Πρόκειται να υπάρξει κάτι νεότερο πάνω σ'αυτό αργότερα;
Φιλικά
Ceres  ???
Τίτλος: Re: Σχετικά με τις διαδικασίες / συναρτήσεις
Αποστολή από: alkisg στις 11 Σεπ 2003, 11:05:57 ΠΜ
Το χρονοδιάγραμμα έχει ως εξής:
Θα υπάρχει δυνατότητα απόκρυψης της λύσης με κωδικό, ώστε να δίνουμε σε μία δισκέτα π.χ. 100 ασκήσεις στους μαθητές, να μπορούν να βλέπουν τις εκφωνήσεις και να τις εκτελούν αλλά να μην μπορούν να δουν τις λύσεις. Αφού λυθούν οι ασκήσεις στον πίνακα δεν χρειάζεται να τις δώσουμε στους μαθητές, αρκεί να τους δώσουμε τον αντίστοιχο κωδικό.
Το φορμάτ αρχείων θα αλλάξει και θα γίνει html ώστε να υποστηρίζει και τις εκφωνήσεις και θα είναι δυνατή η απ' ευθείας προβολή του από τον internet explorer.