Λογικα Συντακτικα και αντικανονικα λαθη

Ξεκίνησε από Mxyzptlk, 24 Μαΐου 2020, 01:01:57 ΜΜ

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

Mxyzptlk

Μου εφεραν οι μαθητες μου τις παρακατω ασκησεις και προβληματιστηκα ως προς το τι πρεπει να απαντησω

η πρωτη
Α <- 1
Β <- 6
ΚΑΛΕΣΕ ΔΙΑΔ(Α,Β)
ΚΑΛΕΣΕ ΔΙΑΔ(5.6, 6.7)
....
ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(Χ, Υ)
ΜΕΤΑΒΛΗΤΕΣ
   ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ

εδώ ο καθηγητης στο σχολειο τους ειπε λεει οτι ειναι λαθος γιατι περιμενει πραγματικη και το 1 και 6 ειναι ακεραιες!
και δεν μπορουμε να βαλουμε σταθερες - αριθμους στις πραγματικες παραμετρους!
Θα τρελαθουμε μου φαινεται

και παρακατω στη δευτερη
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
     Σ <- Σ + Ι
     ΚΑΛΕΣΕ ΔΙΑΔ( Ι, Σ)
....
ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(Χ, Υ)
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Χ, Υ

ΜΕΣΑ ΣΤΗ ΔΙΑΔ ΤΟ Χ ΔΕΝ ΑΛΛΑΖΕΙ ΤΙΜΗ, ΑΡΑ ΤΟ Ι ΔΕΝ ΑΛΛΑΖΕΙ ΚΑΙ ΕΔΩ ΤΟΥΣ ΕΙΠΕ ΟΤΙ ΔΕΝ ΜΠΟΡΟΥΜΕ ΝΑ ΒΑΖΟΥΜΕ ΤΟΝ ΜΕΤΡΗΤΗ ΤΗΣ ΓΙΑ ΣΕ ΔΙΑΔΙΚΑΣΙΑ!!

Ακομα του ειπε οτι η αλλαγη του μετρητη της ΓΙΑ ειναι λογικο λαθος!!
Δεν ειναι συντακτικο αφου απαγορευεται απο τη ΓΛΩΣΣΑ?

δΕΝ κανω πολλα χρονια το μαθημα αλλα βλεπω εμπειρους καθηγητες να λενε τετοια πραγματα. ποια ειναι η γνωμη σας;
μπορει να πεσει κατι τετοιο;

Λαμπράκης Μανώλης

καλημέρα

είναι λεπτά σημεία και στα δύο, σταθερές στη συνάρτηση επιτρέπεται πχ Τ_Ρ(9), ή το γνωστό πλέον παράδειγμα στο τετράδιο του μαθητή (δεν θυμάμαι το ονομα, στύλοι του Ανόι - κάπως έτσι) αλλά σητ διαδικασία που σύμφωνα με το βιβλίο οι παράμετροι επιστρέφουν πίσω τιμές, υπάρχει ασάφεια .. και στο δευτερο παράδειγμα, εφόσον σύμφωνα με το βιβλίο "δεν πειράζεουμε καθόλου το μετρητή του ΓΙΑ" ΄πάλι υπάρχει θέμα, καθώς έστω και αν δεν αλλάξει, πάλι επιστρέφει πίσω ... λεπτά σημεία

P.Tsiotakis

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

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

Για τη χρήση του μετρητή σε κλήση διαδικασίας δεν θεωρώ ότι είναι λάθος, στην περίπτωση που δεν αλλάζει τιμή.
Δεν πρέπει να τροποποιούμε εντός του βρόχου την τιμή του μετρητή που ελέγχει τη δομή
Για. [Αναφορά στο τετράδιο οδηγιών μαθητή και έγγραφο ΥΠΕΠΘ 43652 / Γ2 / 20 - 4 - 2010.]


Εντός δομής επανάληψης Για, δε θεωρώ ότι είναι λάθος το:
Για i από 1 μέχρι 5
    i <- i
Τέλος_επανάληψης

Λαμπράκης Μανώλης

Παναγιώτη καλησπέρα, εγώ το έχω στο μυαλο όπως το "η συνάρτηση δεν μπορεί να καλέσει μια διαδικασία", για να μην μπλέξουν στο αν η διαδικασία έχει μέσα γράψε/διάβασε η όχι, έδωσαν οδηγία να μην ισχύει καθόλου .. επίσης αν έχουμε σταθερά κ=100,  στο πρόγραμμα είναι λάθος το κ<--100 (ακόμη και αν είναι η ίδια τιμή) .. οπότε μιας που "δεν αλλάζουμε το μετρητή του ΓΙΑ", υποθέτω και το ι<--ι που λες ίσως δεν είναι ξεκάραθαρο .. αλλά όπως έχουμε γράψει ξανά πολλές φορές, ελπίζουμε να τους φωτίσει να μη τα βάλουν ως θέμα όλα αυτά, γιατί άντε να βρεις το σωστό ..

Mxyzptlk

δηλαδη το 1 δεν ειναι πραγματικος αλλα ακεραιος???
Με τη λογικη σας η εκφραση
    5*6.0 + 3 ειναι λαθος αφου μπλεκουμε ακεραιους και πραγματικους και στηριζομαστε στις .... αορατες μετατροπες τυπων
Δηλαδη λεμε στους μαθητες οτι 1+0.0 ειναι λαθος!!!
Δεν ειναι δυνατον!!!

ακομα δεν καταλαβαινω τι λογικη σε αυτο που λετε οτι το
  Ι <- Ι
δεν ειναι λαθος
αλλά το
I <- I+1
είναι
Τι λαθος ειναι αληθεια, γιατι αν ισχυουν αυτα που λετε αυτο το λαθος μπορει να το πιασει μονο κατα την εκτελεση, αρα ειναι λαθος αντικανονικου τερματισμου?

κυριε Λαμπρακη συμφωνω με αυτα που λετε, αλλα τι θα γινει αν ρωτησουν αυτα ;

Λαμπράκης Μανώλης

Καταρχάς "Μανώλης" και όχι "κύριος Λαμπράκης", πολύ βαρύ για συνάδελφο  :angel: >:D :laugh: 

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

ssimaiof

Δεν φαίνεται τι τύπου είναι οι μεταβλητές Α, Β.
Υποθέτουμε ότι αφού εκχωρούνται σε αυτές ακέραιες τιμές είναι ακέραιες ; Σύμφωνα με το βιβλίο ΝΑΙ! Αλλά όπως είπε και ο κ. Τσιωτάκης έχουμε δεχθεί ότι μπορεί μια ακέραια τιμή να εκχωρηθεί σε μια πραγματική μεταβλητή.
Δηλαδή τα Α, Β μπορεί να είναι πραγματικού τύπου. Άρα σύμφωνα με την αυστηρή υλοποίηση του βιβλίου είναι λάθος (ασυμφωνία τύπου τυπικής και πραγματικής παραμέτρου), ενώ σύμφωνα με την άλλη (κοινώς παραδεκτή) λογική δεν μπορούμε να απαντήσουμε στο 1ο ερώτημα ?!?!
Για το 2ο ερώτημα προσπαθώντας και εγώ να ερμηνεύσω το πνεύμα (του νόμου ?!?!) τείνω να συμφωνήσω με το σκεπτικό του Μανώλη Λαμπράκη.
Σταύρος Σημαιοφορίδης

Mxyzptlk

Μα αν δεχθουμε οτι δεν υπαρχει καποια μετατροπη ακεραιας σε πραγματικη τοτε η παρακατω εκφραση δεν αποτελει συντακτικο λαθος;

   5 + 2.0

αφου για να γινει η πραξη πρεπει η 5 να γινει 5.0 ;

Για την ιστορια και το 5 πραγματικος ειναι , μην ξεχασουμε και τα μαθηματικα που ξερουμε για να υποστηριξουμε αυτον τον παραλογισμο!

Λαμπράκης Μανώλης

Υποθέτω η λογική είναι πως η πράξη μπορεί να γίνει και θα αποθηκευτεί σε μεταβλητή πραγματικού τύπου (εδώ κολάει το 2.0) .. για το μάθημα μας οι πράξεις div/mod και ο οι δείκτες πίνακα πρέπει αφορούν ακέραιους αριθμούς οπότε  έχουν "λόγο ύπαρξης" .. εγώ θα ξαναπώ πως δυστυχώς αυτές οι "ασάφειες" υπάρχουν και όσο διδάσκεις το μάθημα τόσο θα συναντάς και  άλλες .. οπότε να είσαι προετοιμασμένος  :angel: >:D :laugh:

evry

Νομίζω ότι η ένσταση του Mxyzpltk είναι λογική. Υπάρχουν δυο περιπτώσεις:
1) Γίνεται μετατροπή μεταξύ ακέραιων πραγματικών
2) Δεν γίνεται
Αν δεχθούμε ότι ισχύει το 2 τότε η εντολή
Κώδικας: ΓΛΩΣΣΑ
A <- B

με Α πραγματική και Β ακέραια δεν είναι σωστή. Ταυτόχρονα όμως δεν είναι σωστή και η έκφραση
Κώδικας: ΓΛΩΣΣΑ
B + Α

γιατί εδώ έχουμε έμμεση μετατροπή (coercing) από ακέραιο σε πραγματικό., για να γίνει η πράξη.
Δεν μπορεί να έχουμε coercing αλά καρτ.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

alkisg

Το πέρασμα σταθερών στις διαδικασίες υπάρχει στο βιβλίο, στο παράδειγμα των Πύργων του Ανόι. Δεν είναι συνάρτηση εκεί είναι διαδικασία.

Όλοι οι ακέραιοι αριθμοί είναι και πραγματικοί. Γι' αυτό η έμμεση μετατροπή από ακέραιο σε πραγματικό σε σημεία όπου αναμένεται έκφραση γίνεται σχεδόν σε όλες τις γλώσσες προγραμματισμού. Δεν είναι πρωτοτυπία της ΓΛΩΣΣΑΣ. Δεν έχουμε κανένα λόγο να προσπαθούμε να αμφισβητήσουμε το συγκεκριμένο σημείο.

Το πέρασμα ακέραιου σε διαδικασία που περιμένει πραγματικό είναι πιο tricky γιατί εκεί δεν αναμένεται έκφραση. Έτσι, καλά θα πάει η τιμή, αλλά πώς θα γυρίσει; Δεν είναι μόνο σαν να κάνουμε:
Π <- Α
που επιτρέπεται λόγω έμμεσης μετατροπής, αλλά σαν να κάνουμε και:
Α <- Π
κατά την επιστροφή της Πραγματικής τιμής της διαδικασίας στην Ακέραια παράμετρο, το οποίο δεν γίνεται.

Άρα:
ΑΚΕΡΑΙΕΣ: Α
ΚΑΛΕΣΕ ΜιαΔιαδικασίαΠουΠεριμένειΠραγματικό(Α)
δεν γίνεται, ενώ
ΚΑΛΕΣΕ ΜιαΔιαδικασίαΠουΠεριμένειΠραγματικό((Α))
ή
ΚΑΛΕΣΕ ΜιαΔιαδικασίαΠουΠεριμένειΠραγματικό(Α+0)
γίνεται, γιατί τότε η παράμετρος είναι έκφραση και δεν περιμένει επιστροφή τιμής (αντίστοιχα με τους Πύργους του Ανόι).

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

Λαμπράκης Μανώλης

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

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

alkisg

Σε πολλά σημεία το βιβλίο εξηγεί και εμείς το λαμβάνουμε σαν ορισμό, ενώ δεν είναι.

Παράθεση από: Σελίδα 177
Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣ-
ΣΑΣ. Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τι-
μές μεταβιβάζονται στη συνάρτηση κατά την κλήση.

Αν λοιπόν αυτό το πάρουμε σαν επίσημο ορισμό και όχι σαν περιγραφή, δεν επιτρέπεται να περνούμε εκφράσεις στις συναρτήσεις, κάτι που το βιβλίο ήδη κάνει με τη συνάρτηση Παραγοντικό(Ν-1) στη σελίδα 185.

Αντίστοιχα λίγο παρακάτω:

Παράθεση από: Σελίδα 178
Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τι-
μές μεταβιβάζονται προς τη διαδικασία κατά την κλήση ή/και επιστρέφο-
νται στο κύριο πρόγραμμα μετά το τέλος της διαδικασίας.

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

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

Φυσικά αφού βλέπουμε ότι ακόμα υπάρχει διαφωνία, αρμόδιο να δώσει διευκρίνηση είναι μόνο το Υπουργείο.

Λαμπράκης Μανώλης

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

P.Tsiotakis

Έστω το πρόγραμμα

Πρόγραμμα Μα_είναι_Δυνατόν!!!!!!!!
Σταθερές
   κ = 3
Μεταβλητές
   Ακέραιες: α, β, γ
   Πραγματικές:  δ, ζ, ω
Αρχή
    α <- 3
    β <- 2*α
    δ <- 2*α + β
    ζ <- β + 5.0
    ω <- 5.0 * 2
....
Τέλος_προγράμματος

Διαδικασία Κι_όμως_είναι_δυνατόν(x, y)
Μεταβλητές
   Ακέραιες: x
   Πραγματικές: y
Αρχή
....
Τέλος_διαδικασίας



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


Στο παραπάνω κύριο πρόγραμμα ΟΜΩΣ η κλήση:

ΚΑΛΕΣΕ Κι_όμως_είναι_δυνατόν(α, β)
δεν είναι σωστή γιατί η πραγματική παράμετρος β δεν είναι ιδίου τύπου με την τυπική παράμετρο y

P.Tsiotakis

Παράθεση από: alkisg στις 25 Μαΐου 2020, 10:13:23 ΠΜ
Σε πολλά σημεία το βιβλίο εξηγεί και εμείς το λαμβάνουμε σαν ορισμό, ενώ δεν είναι.

Αν λοιπόν αυτό το πάρουμε σαν επίσημο ορισμό και όχι σαν περιγραφή, δεν επιτρέπεται να περνούμε εκφράσεις στις συναρτήσεις, κάτι που το βιβλίο ήδη κάνει με τη συνάρτηση Παραγοντικό(Ν-1) στη σελίδα 185.

Αντίστοιχα λίγο παρακάτω:
Κι εδώ λέει "μεταβλητών" αντί να πει "εκφράσεων". Όμως πάλι καλά που λέει "ή/και επιστρέφονται". Δεν είναι απαραίτητο να γίνει επιστροφή τιμών, όταν π.χ. περάσουμε έκφραση.
Δεν θυμάμαι να είχα βρει άλλο παράδειγμα στο βιβλίο, κι απ' όσο θυμάμαι αυτή η διαφωνία υπήρχε στο Στέκι από την αρχή που είχαν μπει οι διαδικασίες εντός εξεταστέας ύλης, γι' αυτό και είχα αναγκαστεί να τηλεφωνήσω στον κ. Κοίλια όταν τις υλοποιούσα στο Διερμηνευτή...
Φυσικά αφού βλέπουμε ότι ακόμα υπάρχει διαφωνία, αρμόδιο να δώσει διευκρίνηση είναι μόνο το Υπουργείο.

Φυσικά, η υλοποίηση της ΓΛΩΣΣΑΣ το 1999 δεν μπήκε στη λεπτομέρεια αν κάποια παράμετρος είναι εισόδου ή εξόδου ή και τα δύο. Παρότι το υπόδειγμά τους ήταν η Pascal δεν έλαβαν κάποια ειδική μέριμνα για αυτό. Καλώς για τότε, κακώς για σήμερα.
Σίγουρα η ευθύνη δεν ανήκει στους συγγραφείς, αλλά στο ότι δεν ανανεώθηκε ουσιαστικά το διδακτικό πακέτο επί 20 έτη

P.Tsiotakis

Παράθεση από: Mxyzptlk στις 24 Μαΐου 2020, 06:27:18 ΜΜ
ακομα δεν καταλαβαινω τι λογικη σε αυτο που λετε οτι το
  Ι <- Ι
δεν ειναι λαθος
αλλά το
I <- I+1
είναι

Μερικές φορές καλέ/ή μου φίλε/η η λογική είναι παράξενο πράγμα.

Στο  έγγραφο ΥΠΕΠΘ 43652 / Γ2 / 20 - 4 - 2010 αναφέρει ότι

Όσον αφορά τη μεταβολή του μετρητή μιας ΓΙΑ μέσα στο βρόχο του, δεύτερη υπόδειξη της σελίδας 78 του Τετραδίου Μαθητή αναφέρεται:
«Ποτέ μην χρησιμοποιείς εντολές που αλλάζουν την αρχική τιμή, την τελική τιμή, το βήμα ή τημεταβλητή που ελέγχει την επανάληψη μέσα σε ένα βρόχο ΓΙΑ. Αν και μερικές γλώσσες προγραμματισμού επιτρέπουν αυτές τις αλλαγές, να τις αποφεύγεις, γιατί οδηγούν σε προγράμματα δυσνόητα και συνήθως λανθασμένα». Από το απόσπασμα αυτό προκύπτει ότι η ΓΛΩΣΣΑ δεν περιλαμβάνεται στις «μερικές γλώσσες προγραμματισμού».

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

Συνεπώς το
Για i από 1 μέχρι 5
    i <- i + 1 - 1
    Γράψε i
Τέλος_επανάληψης


κατά τη γνώμη μου είναι σωστό αν και παράλογο

αλλά κυρίως το

...
Για i από 1 μέχρι 5
    ΚΑΛΕΣΕ Παράλογος_κόσμος(i)
Τέλος_επανάληψης
...
Διαδικασία Παράλογος_κόσμος(α)
Μεταβλητές
   Ακέραιες: α
Αρχή
   Γράψε α
Τέλος_επανάληψης
δεν περιέχουν, κατά την άποψή μου, συντακτικά λάθη

Λαμπράκης Μανώλης

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

1) θα πω το κλασικό, γενικό Σ-Λ,  νομίζω το έχουμε γράψει  Ν φορές, κάτι του στυλ  --> " Ο μετρητής μίας δομής  ΓΙΑ μπορεί να αλλάξει ", άραγε θα ήταν σωστό η λάθος ???  ή πώς θα μπορούσε να είναι η υπογραμμισμένη λέξη για να ήταν σωστό ή λάθος ??

2) ρητορική ερώτηση: θα μπορούσε να δώσει κάποιος ως άσκηση (λέω τώρα εγώ) κάτι του στυλ: δίνεται το ακόλουθο τμήμα αλγορίθμου, για ποιες τιμές που θα δώσει ο χρήστης είναι σωστό ??

για κ από 1 μέχρι 5
   διαβασε κ
τελος_επανανάληψης

δηλαδή αν δώσει 1,2,3,4,5 να είναι σωστό διαφορετικά λάθος ??  :angel: >:D :laugh:

P.Tsiotakis


Λαμπράκης Μανώλης

χεχεχεχε ... 100% αποτύπωση της πραγματικότητας

pgrontas

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

Στη σύνταξη των εντολών εκχώρησης θέλουμε  μεταβλητή <- έκφραση και έκφραση <- έκφραση τελεστής έκφραση | μεταβλητή | σταθερά (δεν θυμάμαι καλά τα BNF)
και στη κλήση παραμέτρων  απλά μια λίστα από ονόματα χωρισμένα με κόμμα. Δεν υπάρχει πληροφορία τύπων πουθενα.
Επίσης αν θυμάμαι καλά ο type checker (αν υπάρχει) έρχεται μετά από τον συντακτικό αναλυτή.
Αν έπρεπε να αιτιολογηθεί το λάθος, θα έλεγα ότι παραβιάζεται η σημασιολογία της γλώσσας, που μάλλον θα οδηγούσε σε λάθος αντικανονικού τερματισμού.

Τώρα σχετικά με την αλλαγή του μετρητή, τα έχουμε ξανασυζητήσει.

Παράθεση από: P.Tsiotakis στις 25 Μαΐου 2020, 10:45:51 ΠΜ
Μερικές φορές καλέ/ή μου φίλε/η η λογική είναι παράξενο πράγμα.

Στο  έγγραφο ΥΠΕΠΘ 43652 / Γ2 / 20 - 4 - 2010 αναφέρει ότι

Όσον αφορά τη μεταβολή του μετρητή μιας ΓΙΑ μέσα στο βρόχο του, δεύτερη υπόδειξη της σελίδας 78 του Τετραδίου Μαθητή αναφέρεται:
«Ποτέ μην χρησιμοποιείς εντολές που αλλάζουν την αρχική τιμή, την τελική τιμή, το βήμα ή τημεταβλητή που ελέγχει την επανάληψη μέσα σε ένα βρόχο ΓΙΑ. Αν και μερικές γλώσσες προγραμματισμού επιτρέπουν αυτές τις αλλαγές, να τις αποφεύγεις, γιατί οδηγούν σε προγράμματα δυσνόητα και συνήθως λανθασμένα». Από το απόσπασμα αυτό προκύπτει ότι η ΓΛΩΣΣΑ δεν περιλαμβάνεται στις «μερικές γλώσσες προγραμματισμού».

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

Οι εκχώρησεις
i<- i
i<- i + 1

είναι ολόιδιες για την γλώσσα. Και οι δύο αλλάζουν το i, απλά η πρώτη του βάζει την ίδια τιμή.
Μέσα σε ένα ΓΙΑ και πριιν την εκτέλεση δεν υπάρχει τρόπος να γνωρίζει ο μεταγλωττιστής αν το ι θα έχει την ίδια τιμή με πριν γιατί  μπορεί να μεσολαβεί μια διαδικασία όπως η Παράλογος_Κόσμος ή κάτι ανάλογο. Οπότε είτε θα τα επιτρέψεις και τα δύο είτε κανένα (πάντα ως σύσταση).



Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

alkisg

Παράθεση από: pgrontas στις 25 Μαΐου 2020, 03:01:37 ΜΜ
Το ερωτημά μου είναι γιατί είναι συντακτικό λάθος (αν καταλαβαίνω καλά από την συζήτηση); Ποιος συντακτικός κανόνας παραβιάζεται;

Νομίζω ότι για ...χάριν απλότητας, έχουμε φτάσει στο "όλα τα λάθη πριν την εκτέλεση είναι συντακτικά".
Εντάξει το να βάλουμε στο ίδιο τσουβάλι λεκτικά, συντακτικά και σημασιολογικά ίσως και να έχει κάποιο πλεονέκτημα για να μην ζορίζονται οι μαθητές.
Αυτό που με χαλάει εμένα περισσότερο είναι ότι αναφέρουμε ως συντακτικά και λάθη σαν το i <- i + 1 παραπάνω που θα μπορούσαν να ανιχνευτούν μόνο ως λάθη χρόνου εκτέλεσης, και πάλι με ένα σωρό περιορισμούς...

Συντακτικά δεν σημαίνει "το βλέπω με το μάτι ότι είναι στραβό". Θα πρέπει να παραβιάζεται κάποιος κανόνας σύνταξης... το "πετάει ο γάιδαρος" δεν είναι συντακτικό λάθος.

petrosp13

Το συμπέρασμα είναι ότι οποιοδήποτε θέμα ζητηθεί το οποίο αναφέρεται στο κεφάλαιο της εκσφαλμάτωσης, πρέπει να έχει 100% μοναδική απάντηση πέρα από κάθε αμφιβολία...
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

ΔΗΜΗΤΡΗΣ Χ

Κατα 1ον συμφωνω με petrosp13 για θεμα σχετικο με λαθη και οτι θα πρεπει να ειναι προσεγμενο.
Κατα δευτερον, δεν χρειαζεται να συζηταμε για το πρωτο πρωτο θεμα που εθεσε ο συναδελφος. Απο τη στιγμη μαλιστα που δεν υπαρχει τμημα δηλωσης μεταβλητων. Ειναι σαν να παιρνεις λαθος καποια δηλωση sum<-0 αν το sum ειναι πραγματικη γιατι θελεις sum<-0.0. Τοτε ειναι λαθος ολες οι λυσεις των ασκησεων που κυκλοφορουν και εχουν αθροισμα πραγνατικων.

ApoAntonis

Παράθεση από: P.Tsiotakis στις 25 Μαΐου 2020, 10:45:51 ΠΜ
δεν περιέχουν, κατά την άποψή μου, συντακτικά λάθη

Για i από 1 μέχρι 5
   i <- i*3/3
Τέλος_επανάληψης

Αν στο παραπάνω παράδειγμα υποθέσουμε το i ως πραγματικό ( αν και ψιλοκλέβω γιατί κάνω σύνταξη αλγορίθμου)
ή χρησιμοποιήσουμε div, δεν αλλάζει.

Μπορούμε να πούμε το ίδιο για το επόμενο;

Για i από 1 μέχρι 5
   i <- i/3*3
Τέλος_επανάληψης


και για να μην σκάσω να ρωτήσω, αυτό που έπεται εκτός από χαζοπονηριά παραβιάζει και κάποιον κανόνα;

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 2 ΜΕ_ΒΗΜΑ γιουχου(i)
...

με την γιούχου να είναι

ΣΥΝΑΡΤΗΣΗ γιουχου(α): ΑΚΕΡΑΙΑ/ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α
ΑΡΧΗ
  γιούχου <- -1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 0
i <- i + 10 MOD i + οτιδήποτε_ακόμα_άλλο_που_μπορεί_να_αλλάξει_και_τον_τύπο


Κανένας

Νομίζω ότι πρέπει να τα ορίσουμε πιο ξεκάθαρα:

1. Συντακτικά : Λάθη κατά το χρόνο μεταγλώττισης-διερμήνευσης. Ανιχνεύονται απ' τον αντίστοιχο μεταγλωττιστή-διερμηνευτή
                         κατά την φάση της υλοποίησης και πριν την εκτέλεση του προγράμματος.

2. Λάθη κατά την εκτέλεση : Προκαλούν αντικανονικό τερματισμό του προγράμματος είτε πάντα είτε σε κάποιες περιπτώσεις.

3. Λογικά λάθη : Παράγουν λανθασμένα αποτελέσματα είτε πάντα είτε σε κάποιες περιπτώσεις αλλά δεν δημιουργούν αντικανονικό
                          τερματισμό του προγράμματος.

Επειδή υπάρχουν τύποι σφαλμάτων που μπορούν να ενταχθούν λίγο ή πολύ σε πάνω από μια από τις παραπάνω κατηγορίες είναι ευθύνη του θεματοδότη να τα αποκλείσει και να περιοριστεί στη βασική διάκριση μεταξύ των λαθών όπως αναφέρθηκαν παραπάνω.
Νικηφόρος Μανδηλαράς
ΓΕΛ Νάξου "Μανώλης Γλέζος"
https://blogs.sch.gr/nobody/

ApoAntonis

Παράθεση από: Κανένας στις 26 Μαΐου 2020, 12:46:02 ΠΜ
Νομίζω ότι πρέπει να τα ορίσουμε πιο ξεκάθαρα:

1. Συντακτικά : Λάθη κατά το χρόνο μεταγλώττισης-διερμήνευσης. Ανιχνεύονται απ' τον αντίστοιχο μεταγλωττιστή-διερμηνευτή
                         κατά την φάση της υλοποίησης και πριν την εκτέλεση του προγράμματος.


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

Καρκαμάνης Γεώργιος

Δυστυχώς ασχολούμαστε με περιπτώσεις οι οποίες έπρεπε να είχαν λυθεί στα πρώτα 5 χρόνια ύπαρξης του μαθήματος και όχι να μας ταλαιπωρούν 20 χρόνια μετά.

Καρκαμάνης Γεώργιος

Παράθεση
Το πέρασμα σταθερών στις διαδικασίες υπάρχει στο βιβλίο, στο παράδειγμα των Πύργων του Ανόι. Δεν είναι συνάρτηση εκεί είναι διαδικασία.

Σύμφωνα με το παράδειγμα στη σελίδα 181, οι διαδικασίες επιστρέφουν πάντα τις τυπικές παραμέτρους στις αντίστοιχες πραγματικές.

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

alkisg

Γιώργο, σύμφωνα με το μέλος της συγγραφικής ομάδας που έγραψε αυτό το κεφάλαιο, το "λάθος" είναι στη σελίδα 181.
Εγώ δεν το λέω καν λάθος· είναι περιγραφή παραδείγματος και εμείς πάμε να το γενικεύσουμε και να το εκλάβουμε ως τυπικό ορισμό. Εμείς το δημιουργούμε το λάθος.

Τώρα αν δεν δεχόμαστε την άποψη του ίδιου του συγγραφέα (αφού όπως είπα επικοινώνησα μαζί του) αναγκαστικά χρειάζεται διευκρίνηση από το Υπουργείο.

ΔΗΜΗΤΡΗΣ Χ

Νομιζω πως θα πρεπει να συμπερανουμε, οτι απο τη στιγμη που υπαρχουν ασαφειες και ασυμφωνιες σε καποια σημεια, τα  σημεια αυτα πρεπει να αποφευγονται ως ερωτηματα για προσδιορισμο λαθους.
Επισης κατι ακομα. Οι ονομασιες Ε και Η ειναι δεκτες ως ονοματα ή θα ειναι συντακτικα λαθη; Μην γινει κι εδω καμια στραβη. (2010 εσπερινα σε πινακα τιμων, εχουν βαλει μεταβλητη Ε). Εγω δεν τα θεωρω σωστα. (Οπως και τα ημ, συν που μπορει ευκολα να τα επιλεξει καποιος,πχ για ημερες η συνολο και τονιζω στους μαθητες να προσεχουν).
Καλό ειναι να σημειωθουν ολα αυτα τα σημεια.

petrosp13

Επειδή δεν έχω εμπειρία στην δημιουργία μεταγλωττιστών, ας απαντήσει κάποιος που έχει αν θέλει

Έχω την αίσθηση ότι ο ορισμός του συντακτικού λάθους είναι λίγο θολός σε κάποια σημεία
Εξηγώ τι εννοώ
Υπάρχουν προφανή συντακτικά λάθη π.χ ΓΡΑΨΕ_ χ β 'κδφδγκ'

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

Για παράδειγμα, αν θεωρήσουμε ότι το i απαγορεύεται να αλλάζει τιμή εντός επανάληψης και ότι μια διαδικασία αντιγράφει πίσω παραμέτρους πάντα (έστω και τις ίδιες τιμές), το παρακάτω παράδειγμα είναι λάθος:
Για ι ...
    Κάλεσε Διαδ(ι,...)

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

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

alkisg

@petrosp13: εδώ τα έχει αρκετά ωραία: https://www.guru99.com/compiler-design-phases-of-compiler.html

Εν ολίγοις,

  • Λεκτική ανάλυση: εντοπίζει λάθη με άκυρους χαρακτήρες, ανοικτά εισαγωγικά κλπ
  • Συντακτική ανάλυση: ο κώδικας μεταφράζεται σε μια εσωτερική δεντρική αναπαράσταση· εντοπίζει τα απλά λάθη σαν αυτά που έγραψες
  • Σημασιολογική ανάλυση: κάθε μέρος της δεντρικής αναπαράστασης ελέγχεται για ορθότητα· εδώ μπορούν να εντοπιστούν λάθος αναθέσεις τύπων κλπ
  • Και ακολουθούν ενδιάμεση αναπαράσταση σε μορφή object, code optimization, linking κλπ
Σε κάθε ένα από τα παραπάνω σημεία, αλλά ακόμα και πριν ή παράλληλα με αυτά, μπορεί να τρέχει linter που να δίνει προτάσεις για βελτιώσεις καθώς και πιθανά λάθη. Για παράδειγμα "πιθανώς μη αρχικοποιημένη μεταβλητή".

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

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

petrosp13

Έχω την αίσθηση ότι υπάρχουν compiler που εμφανίζουν μηνύματα και για μη αρχικοποιημένες μεταβλητές και για πιθανές διαιρέσεις με το μηδέν
Αν κάποιος γνωρίζει κάτι τέτοιο, ας μας πληροφορήσει
Αυτά δεν μοιάζουν για συντακτικά λάθη, αλλά τα εντοπίζει και προειδοποιεί ο μεταγλωττιστής
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

alkisg

Ισχύει, αυτό εννοούσα παραπάνω... είναι μέρος του σημασιολογικού ή του lint ελέγχου. Ο compiler τα κάνει αυτά. Υπάρχουν π.χ. διαιρέσεις με το μηδέν που θα τις πιάσει πριν την εκτέλεση, και άλλες που δεν πιάνονται γιατί π.χ. το "β" το δίνει ο χρήστης κατά την εκτέλεση.

evry

Υπάρχουν εξελιγμένα προγραμματιστικά περιβάλλοντα (π.χ. Eclipse , R Studio) τα οποία κάνουν compile as you type.
Έτσι βρίσκουν λάθη τα οποία κανονικά θα έβρισκαν κατά τη μεταγλώττιση ενώ εσύ γράφεις.
Επίσης στον διερμηνευτή της ΓΛΩΣΣΑΣ, αν πας να γράψεις 1/0 θα σου χτυπήσει λάθος, είναι συντακτικό?
Μπορούμε τώρα να λέμε ότι ο συντάκτης δεν βρίσκει συντακτικά λάθη? (τεχνικά φυσικά δεν τα βρίσκει ο συντάκτης)
Θέλω να πως ότι το να ορίσουμε το συντακτικό λάθος ως λάθος που εντοπίζεται κατά τη μεταγλώττιση είναι τεράστιο λάθος.
Έχουμε μπερδέψει το αίτιο με το αποτέλεσμα.
Πρέπει να οριστεί ως λάθος που παραβιάζει τη γραμματική της γλώσσας και μέχρι εκεί. Όπως πολύ σωστά είπε ο Άλκης έχουμε τσουβαλιάσει πολλά λάθη ως συντακτικά.
π.χ. τα type errors, δηλαδή η εκχώρηση ακέραιας σε πραγματική δεν είναι συντακτικό λάθος αλλά λάθος που  έχει να κάνει με τη σημασιολογία. Τα έχουμε κάνει όλα μια σούπα και αυτά είναι τα αποτελέσματα. Θυμάμαι (δεν ξέρω αν έχει αλλάξει τώρα) ότι ο έλεγχος τύπων στην υλοποίηση ενός μεταγλωττιστή ήταν ένα άλλο στάδιο πέρα από τον γραμματικό/συντακτικό έλεγχο.
Τα συντακτικά λάθη είναι στις δυο πρώτες φάσεις που ανέφερε ο Άλκης, τη λεκτική και συντακτική ανάλυση.

Παράθεση από: petrosp13 στις 26 Μαΐου 2020, 01:39:17 ΜΜ
Έχω την αίσθηση ότι υπάρχουν compiler που εμφανίζουν μηνύματα και για μη αρχικοποιημένες μεταβλητές και για πιθανές διαιρέσεις με το μηδέν
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Καρκαμάνης Γεώργιος

Παράθεση
Γιώργο, σύμφωνα με το μέλος της συγγραφικής ομάδας που έγραψε αυτό το κεφάλαιο, το "λάθος" είναι στη σελίδα 181.
Εγώ δεν το λέω καν λάθος· είναι περιγραφή παραδείγματος και εμείς πάμε να το γενικεύσουμε και να το εκλάβουμε ως τυπικό ορισμό. Εμείς το δημιουργούμε το λάθος.

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

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

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

Παραθέτω ενδεικτικά ορισμένα θέματα πανελληνίων:
----------------------------------------------------

ΠΡΟΓΡΑΜΜΑ Κύριο
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α, Β, Γ
ΑΡΧΗ
ΔΙΑΒΑΣΕ Α, Β, Γ
ΚΑΛΕΣΕ Διαδ1(Α, Β, Γ)
ΓΡΑΨΕ Α, Β, Γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ Διαδ1(Β, Α, Γ)
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Α, Β, Γ
ΑΡΧΗ
Α <-- Α + 2
Β <-- Β - 3
Γ <-- Α + Β
ΓΡΑΨΕ Α, Β, Γ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ   (Ημερήσια 2006)
----------------------------------------------------

ΠΡΟΓΡΑΜΜΑ ΘέμαΒ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: z, w
ΑΡΧΗ
z <-- 1
w <-- 3
OΣΟ z <= 35 ΕΠΑΝΑΛΑΒΕ
   ΚΑΛΕΣΕ Διαδ(z, w)
   ΓΡΑΨΕ z
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
TΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Διαδ(w, z)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: z, w
ΑΡΧΗ
  w <-- w + z
  z <-- z + 2
ΓΡΑΨΕ z
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ  (Ημερήσια 2011)

Αρα αν κατά την κλήση της διαδικασίας  δώσουμε ως παράμετρο μια σταθερή τιμή και τι θα συμβεί κατά την επιστροφή από αυτήν;

Νομιζω ότι το παράδειγμα με τους Πύργους του Ανόι είναι ατυχές και δεν πρέπει να το λαμβάνουμε υπόψην. Αφήστε που αναφέρεται και σε αναδρομή...


alkisg

Παράθεση από: Καρκαμάνης Γεώργιος στις 26 Μαΐου 2020, 06:31:28 ΜΜ
Σε θέματα που έχουν δοθεί κατα καιρούς στις πανελλήνιες  φαίνεται ξεκάθαρα πως οι τυπικές παράμετροι επιστρέφουν τις τιμές τους στις αντίστοιχες πραγματικές.

Μα κανένας δεν το αμφισβητεί αυτό, αλλιώς οι διαδικασίες θα ήταν άχρηστες. Όταν περνιέται μεταβλητή, τότε η τιμή επιστρέφεται.
Το ερώτημα είναι, αν επιτρέπεται να περνάμε σταθερές και εκφράσεις στις διαδικασίες => Ναι
Και τότε τι γίνεται με την επιστροφή τιμών; => Απλά δεν επιστρέφονται, όπως και στις συναρτήσεις. Καμία πρωτοτυπία· εκτός αν κάποιος θεωρεί ότι ούτε στις συναρτήσεις επιτρέπονται εκφράσεις.

Τα υποπρογράμματα είναι περισσότερο επηρεασμένα από την Basic, όχι από την Pascal. Ο Κοίλιας είχε μεγάλη εμπειρία στην QuickBasic, είχε εκδόσει βιβλία από το 1991 κλπ, γι' αυτό και πρότεινε και το "κόλπο με τις παρενθέσεις" όταν κάποιος θέλει να περάσει μεταβλητή σε διαδικασία αλλά να μην επιστρέψει πίσω η τιμή (που συνηθίζεται στη Basic).

Δεν έχω δει κάποιο θέμα πανελλαδικών που να είναι αντίθετο στα παραπάνω.

Mxyzptlk

Τι σχεση εχει αν προκειται για αναδρομη;
Πως ειναι δυνατον καποιοι να επιμενουν οτι ξερουν περισσοτερα για τη διδασκαλια του μαθηματος απο τον συγγραφεα του βιβλιου, που ειναι ο δημιουργος του μαθηματος!!!
Τα θεματα εξετασεων που δοθηκαν παραπανω δεν λενε πουθενα οτι απαγορευετε το περασμα σταθερων σε διαδικασια.
Αλλα ακομα και αν το ελεγαν πως ειναι δυνατον ενα θεμα εξετασεων να υπερισχυει του βιβλιου του μαθηματος;

Συμφωνω απολυτα με alkisg και pgrontas
Εξαιρετικο το λινκ που δοθηκε για τους compilers απο το guru99

evry

Με βάση το βιβλίο δεν βγαίνει από πουθενά συμπέρασμα ότι απαγορεύεται ή είναι λάθος το πέρασμα σταθερών ή ακόμα και εκφράσεων σε διαδικασία.
Δεν ξέρουμε πως υλοποιείται εσωτερικά ο μηχανισμός μεταβίβασης παραμέτρων.
Πιο λογικό μου φαίνεται να δεχθούμε ότι συμβαίνει σε όλες τις άλλες γλώσσες προγραμματισμού, παρά να προσπαθούμε να ερμηνεύσουμε το βιβλίο σαν ευαγγέλιο με αποτέλεσμα να φτάνουμε σε συμπεράσματα που ούτε οι ίδιοι οι συγγραφείς είχαν σκεφτεί.
Με το ίδιο σκεπτικό θα έπρεπε στις παραμέτρους που μεταβιβάζονται by Reference στην C++ να μην επιτρέπονται σταθερές, ή εκφράσεις (r-values).
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

Κοίταγα τα θέματα των επαναληπτικών του 2016 και έπεσα πάνω σε αυτό:

Τι τύπου είναι η μεταβλητή Β αν η παρακάτω έκφραση είναι συντακτικά σωστή;
Κώδικας: ΓΛΩΣΣΑ
Ε <- ((Α mod 5 >2) ΚΑΙ (C <>"Αληθής")) Ή ((D=ψευδής) ΚΑΙ (Β > Α/3)) 

Η Α είναι ακέραια.

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

Λαμπράκης Μανώλης

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

πραγματική το Β, αλλά σύμφωνα με τη συζήτηση μας και το ακέραια μάλλον είναι σωστή ??




evry

Δηλαδή αν γράψω
Κώδικας: ΓΛΩΣΣΑ
10 > 2.4

είναι λάθος;

Παράθεση από: Λαμπράκης Μανώλης στις 27 Μαΐου 2020, 03:04:28 ΜΜ
καλησπέρα σε όλους

πραγματική το Β, αλλά σύμφωνα με τη συζήτηση μας και το ακέραια μάλλον είναι σωστή ??

Ακόμα χειρότερα, λέει σε μια άσκηση να ελέγξεις ότι ο μέσος όρος είναι πάνω από 10 και γράφει ο μαθητής
Κώδικας: ΓΛΩΣΣΑ
average = sum/n
ΑΝ average > 10 ΤΟΤΕ
   ΓΡΑΨΕ 'πέρασες'
ΤΕΛΟΣ_ΑΝ

Κόβουμε ή όχι ?
Δεν μπορεί να δεχόμαστε ότι στη θέση μιας πραγματικής δεν μπαίνει ακέραια αλλά να συμφωνούμε με το παραπάνω.
Δηλαδή δεν μπορεί να θεωρούμε ότι η ΓΛΩΣΣΑ κάνει coercion κατά βούληση, ή θα κάνει ή όχι.

Σε κάποιους φαίνεται ακραίο γιατί δεν το έχουν συνηθίσει αλλά εκείνη τη χρονιά αν κάποιος μαθητές έλεγε ότι το Β είναι ακέραιος η απάντηση δεν ήταν δεκτή!
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

P.Tsiotakis

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

P.Tsiotakis

Παράθεση από: evry στις 27 Μαΐου 2020, 01:58:25 ΜΜ
Κοίταγα τα θέματα των επαναληπτικών του 2016 και έπεσα πάνω σε αυτό:

Τι τύπου είναι η μεταβλητή Β αν η παρακάτω έκφραση είναι συντακτικά σωστή;
Κώδικας: ΓΛΩΣΣΑ
Ε <- ((Α mod 5 >2) ΚΑΙ (C <>"Αληθής")) Ή ((D=ψευδής) ΚΑΙ (Β > Α/3)) 

Η Α είναι ακέραια.

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


Παράθεση από: evry στις 27 Μαΐου 2020, 03:52:11 ΜΜ
Σε κάποιους φαίνεται ακραίο γιατί δεν το έχουν συνηθίσει αλλά εκείνη τη χρονιά αν κάποιος μαθητές έλεγε ότι το Β είναι ακέραιος η απάντηση δεν ήταν δεκτή!


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

evry

Ακριβώς!! Δεν προκύπτει από πουθενά τι είναι.
Η απάντηση όμως ήταν μια και όχι δυο. Είναι σαν ερώτηση κλειστού τύπου.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

George Eco

#46
Πέρασμα σταθερών σε Διαδικασία. Δε βλέπω το λόγο να ΜΗ γίνεται.
Δε λέω πως γίνεται, αλλά δε βλέπω το λόγο να μη γίνεται.
Ίδια φάση με το να περάσω σταθερά σε Συνάρτηση μέσω παραμέτρων.
Θέλει όμως προσοχή να μην αλλάζουν τιμή οι παράμετροι στις οποίες θα κουμπώσουν σταθερές.
Δε προκύπτει από κάπου αν είναι δυνατόν ή όχι.

ΕΓΩ αν ήμουν μαθητής, θα ήμουν πονηρούλης.
Αν έιχα ρητά μια σταθερά έστω π θα έφτιαχνα μία μεταβλητή πι και τότε
πι <- π
κι αφήστε με ήσυχο να λύσω παρακάτω.
Θα αντιμετώπιζα τη μεταβλητή πι ως σταθερά, δε παραβιάζω μέσω ασάφειας κάτι, χρησιμοποιώ μεταβλητή στις παραμέτρους, κι όλα καλά.
Βάζω κι ένα θαυμαστικό και γράφω πως βάζω αυτή τη μεταβλητή, για να περάσω τη τιμή της σταθεράς ως παράμετρο, δηλώνω ρητά πως δε πρέπει αυτή η πι να αλλάζει τιμή κι είμαι οκ.
Κάτι σα να έλεγα σε άλλη γλώσσα προγραμματισμού __dontTouchThis__ ένα πράγμα για όσους κατάλαβαν από το convention της σύνταξης.
Αυτό όμως δε λύνει την ασάφεια.




Παράθεση από: evry στις 27 Μαΐου 2020, 01:58:25 ΜΜ
Κοίταγα τα θέματα των επαναληπτικών του 2016 και έπεσα πάνω σε αυτό:

Τι τύπου είναι η μεταβλητή Β αν η παρακάτω έκφραση είναι συντακτικά σωστή;
Κώδικας: ΓΛΩΣΣΑ
Ε <- ((Α mod 5 >2) ΚΑΙ (C <>"Αληθής")) Ή ((D=ψευδής) ΚΑΙ (Β > Α/3)) 

Η Α είναι ακέραια.


Καλά είναι συντακτικά λάθος αυτό, επειδή υπάρχει η Ε(χ) αλλά το αντιπαρέρχομαι μιας κι η εκφώνηση θεωρεί σωστή τη σύνταξη.
Δε ξέρουμε τι είναι το Β.
Αν μου έλεγε κάποιος:
Β <- Α/3 θα έλεγα με τη μία Πραγματική. Ωστόσο εδώ, μπορεί να είναι κι ακέραια.
Οπότε λέει ο κος Τσιωτάκης πως είναι αριθμητική. Σωστά.
Έχω όμως μία ένσταση. Το αριθμητική δεν έιναι τύπος, είναι σύνολο τύπων μεταβλητών.
Θέλω να πω στο τμήμα δηλώσεων δε μπορώ να βάλω αριθμητική. Πρέπει να επιλέξω.
Η ΓΛΩΣΣΑ δεν είναι θέλω να πω python να κρίνει επί τούτου από μόνη της. Έχει αυστηρότητα στη δήλωση τύπων.

Γενικός προγραμματιστικός κανόνας μου, είναι πως αν δεν είμαι σίγουρος τι είναι κάτι κι έχω να διαλέξω μεταξύ ενός πράγματος, που είναι υποσύνολο του άλλου, και μπορεί να είναι οτιδήποτε από τα δύο, δε θα πάω με το υποσύνολο. Θα επέλεγα Πραγματική. Αλλά το θέμα θα ήταν λάθος αν ζητούσε τι είναι το Β. Δεν υπάρχει ρητή απάντηση. Και ακέραια και πραγματική είναι εξίσου σωστές απαντήσεις θα έλεγα.
Σημείωση: Πού ακριβώς στο βιβλίο αντιμετωπίζονται οι ακέραιοι ως υποσύνολο των πραγματικών ρητά; Ναι οκ διαβάζω πως ο ένας τύπος θέλει παραπάνω RAM οπότε μπορώ να κάνω το ΑΛΜΑ ΛΟΓΙΚΗΣ και να υποθέσω - συμπεράνω εκτός ύλης, πως ναι οι ακέραιοι είναι υποσύνολο των πραγματικών όπως ακριβώς και στα Μαθηματικά. Δεν υπάρχει ρητή υποστήριξη αυτού όμως εντός ύλης.


Έχει δίκιο ο evry κι έχει δίκιο κι ο κος Τσιωτάκης στα όσα αναφέρει για τη συγγραφική ομάδα.

Επίσης αυτό κουμπώνει όμορφα με το πρόβλημα της σημειώσεως κάτω αριστερά στη σελ 132 του πράσινου βιβλίου ΑΕΠΠ, το οποίο έχει αναφέρει σε άλλο thread o evry.
'Σε μία έντολη εκχώρησης, η μεταβλητή και η έκφραση, πρέπει να είναι του ίδιου τύπου'
Δηλαδή τι φάση; Έστω πραγ μια πραγματική μεταβλητή.
πραγ <- 10
Αυτό είναι λάθος;;;;;;;

ΥΓ (Α! Αναφέρθηκε ΚΑΙ σε αυτό το thread)

Καρκαμάνης Γεώργιος

Παράθεση από: Λαμπράκης Μανώλης στις 25 Μαΐου 2020, 09:45:54 ΠΜ
Καλημέρα σε όλους

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

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

Καρκαμάνης Γεώργιος

Παράθεση από: alkisg στις 25 Μαΐου 2020, 09:30:35 ΠΜ
Το πέρασμα σταθερών στις διαδικασίες υπάρχει στο βιβλίο, στο παράδειγμα των Πύργων του Ανόι. Δεν είναι συνάρτηση εκεί είναι διαδικασία.

Άρα:
ΑΚΕΡΑΙΕΣ: Α
ΚΑΛΕΣΕ ΜιαΔιαδικασίαΠουΠεριμένειΠραγματικό(Α)
δεν γίνεται, ενώ
ΚΑΛΕΣΕ ΜιαΔιαδικασίαΠουΠεριμένειΠραγματικό((Α))
ή
ΚΑΛΕΣΕ ΜιαΔιαδικασίαΠουΠεριμένειΠραγματικό(Α+0)
γίνεται, γιατί τότε η παράμετρος είναι έκφραση και δεν περιμένει επιστροφή τιμής (αντίστοιχα με τους Πύργους του Ανόι).

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

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

Καρκαμάνης Γεώργιος

ΠαράθεσηΤο ερώτημα είναι, αν επιτρέπεται να περνάμε σταθερές και εκφράσεις στις διαδικασίες => Ναι
Και τότε τι γίνεται με την επιστροφή τιμών; => Απλά δεν επιστρέφονται, όπως και στις συναρτήσεις. Καμία πρωτοτυπία· εκτός αν κάποιος θεωρεί ότι ούτε στις συναρτήσεις επιτρέπονται εκφράσεις.

Τα υποπρογράμματα είναι περισσότερο επηρεασμένα από την Basic, όχι από την dPascal. Ο Κοίλιας είχε μεγάλη εμπειρία στην QuickBasic, είχε εκδόσει βιβλία από το 1991 κλπ, γι' αυτό και πρότεινε και το "κόλπο με τις παρενθέσεις" όταν κάποιος θέλει να περάσει μεταβλητή σε διαδικασία αλλά να μην επιστρέψει πίσω η τιμή (που συνηθίζεται στη Basic).

Δεν έχω δει κάποιο θέμα πανελλαδικών που να είναι αντίθετο στα παραπάνω.

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

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


Ο κ. Κοίλιας μπορεί να είχε μεγάλη εμπειρία στν QuickBasic αλλά στο μαθημά μας διδάσκουμε τη ΓΛΩΣΣΑ και δεν μπορούμε να δεχτούμε ότι η ΓΛΩΣΣΑ συμπεριφέρεται ως Basic.
Επίσης  το "κόλπο με τις παρενθέσεις" που πρότεινε ο κ. Κοίλιας, όταν κάποιος θέλει να περάσει μεταβλητή σε διαδικασία αλλά να μην επιστρέψει πίσω την τιμή,  το έχει προτείναι κάπου γραπτά ως οδηγία προς το ΙΕΠ και αυτή επισημοποιήθηκε ως οδηγία προς τους καθηγητές ή στις οδηγίες διδασκαλιας του μαθήματος;




ApoAntonis

Παράθεση από: evry στις 27 Μαΐου 2020, 03:52:11 ΜΜ

Ακόμα χειρότερα, λέει σε μια άσκηση να ελέγξεις ότι ο μέσος όρος είναι πάνω από 10 και γράφει ο μαθητής
Κώδικας: ΓΛΩΣΣΑ
average = sum/n
ΑΝ average > 10 ΤΟΤΕ
   ΓΡΑΨΕ 'πέρασες'
ΤΕΛΟΣ_ΑΝ

Κόβουμε ή όχι ?

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

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

*fun fact:
το βιβλίο καθηγητή του μαθήματος σε ερώτηση εύρεσης αποτελέσματος με έκφραση που περιέχει, μεταξύ άλλων, διαιρέσεις και δυνάμεις μεταξύ ακεραίων, τα πιθανά αποτελέσματα που δίνει είναι όλα ακέραιοι. Σελίδα 159.

** έχει δίκιο ο George Eco ότι δεν αναφέρεται πουθενά ότι οι ακέραιοι (οι πληροφορικιένιοι, μην τα ξαναλέω) είναι υποσύνολο των πραγματικών (το αφήνω κενό για συμπλήρωση αυτό)

Επομένως το ερώτημα -υπό την μορφή Σ/Λ-
στην έκφραση  Α/3,  το πηλίκο (ή αλλιώς το αποτέλεσμα της διαίρεσης) είναι πραγματικός
αν αυτό έχει κάποια σημασία, είναι προτασιακός τύπος.
Οι πράξεις, δεν είναι οι γνωστές από τα Μαθηματικά. Εϊναι κάποιες που τους μοιάζουν.
Αλλιώς δεν θα υπήρχε ανάγκη να εξηγήσουμε ότι κυβική ρίζα του 8 δεν γράφεται ως 8^(1/3)
Εδώ, σε περίπτωση που από τις πολλές σάλτσες με χάσατε, υποννοώ ότι έπρεπε να είχε χρησιμοποιηθεί το σύμβολο της άνω κάτω τελείας για την διαίρεση. Εντάξει ψιλά γράμματα αλλά να κοιτάμε και τα υπόλοιπα σχολικά τι γράφουνε, όχι Ανατολή τα μισά μαθήματα και τα άλλα μισά Δύση. Τότε όμως δεν θα ταίριαζε με τις γλώσσες που υπάρχουν, ε ας γράφονταν καλύτερα τότε τα κεφάλαια. Ακόμα καλύτερα όμως θα ήταν να πρόσεχαν παραπάνω τα θέματα οι επιτροπές.

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

Ξαναγράφω ότι δεν αποσαφηνίζεται ούτε εδώ, πότε δεσμεύεται η μνήμη.
"Μετά το τέλος του υποπρογράμματος ο χώρος μνήμης, ... , αποδεσμεύεται"
Και αν γίνει κλήση περισσότερες της μίας φοράς;

***fun fact δύο: αυτό υπάρχει ΓΡΑΜΜΕΝΟ ως: <<περισσότερες της μία φορές>> στο παράρτημα Β'  σελ. 29

Τελευταία ερώτηση: αν το πλήθος στην λίστα παραμέτρων δεν είναι το ίδιο
μεταξύ κλήσης και δήλωσης, που θεωρούμε ότι υπάρχει το λάθος, στην κλήση ή στην δήλωση;

evry

Παράθεση από: ApoAntonis στις 28 Μαΐου 2020, 01:44:56 ΠΜ
Για το αρχικό ερώτημα από τις Πανελλαδικές, το πρόβλημα βρίσκεται στις οδηγίες διόρθωσης.
Να θυμίσουμε ότι τα θέματα λύνονται από ανεξάρτητο καθηγητή πριν πάνε να καθαρογραφούν. Κατά τας γραφάς.
Στις επαναληπτικές συνήθως δεν υπάρχει λύτης!

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Λαμπράκης Μανώλης

#52
Παράθεση από: ApoAntonis στις 28 Μαΐου 2020, 01:44:56 ΠΜ
Τελευταία ερώτηση: αν το πλήθος στην λίστα παραμέτρων δεν είναι το ίδιο
μεταξύ κλήσης και δήλωσης, που θεωρούμε ότι υπάρχει το λάθος, στην κλήση ή στην δήλωση;

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

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


epsilonXi

άσχετο με το thread, αλλά τώρα επειδή έθιξες Μανώλη το συγκεκριμένο θέμα Β2... χτυπητή ομοιότητα με θέμα που είχαν βάλει τα φροντιστήρια Πουκαμισά στο τελικό τους διαγώνισμα, ένα μήνα πριν τις Πανελλαδικές

parsenopoulou

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