συναρτησεις και διαδικασιες χωρις ορισματα

Ξεκίνησε από JohnyF, 10 Μαρ 2016, 01:55:30 ΜΜ

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

JohnyF

καλησπερα παιδια νομιζω ο τιτλος εκφραζει την ερωτηση!!γιανεται??πχ Χ<-ΑΘΡΟΙΣΜΑ() Η ΚΑΛΕΣΕ ΑΘΡΟΙΣΜΑ()..στο προγραμμα γλωσσα δεν το τρεχει λεει πως περιμενει λιστα παραμετρων..αλλα κολαει οχι στο βασικο προγραμμα που καλειται το υποπρογραμμα..οταν παει να το διαβασει..ευχαριστω!!

petrosp13

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

JohnyF

ας πουμε οτι θελω να φτιαξω μια συναρτηση που θα υπολογιζει το αθροισμα των περιττων αριθμων μεχρι το δεκα...καπως ετσι
ΣΥΝΑΡΤΗΣΗ ΠΕΡΙΤΤΟΙ():ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:i,sum
ΑΡΧΗ
ΠΕΡΙΤΤΟΙ<-0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ 2
  ΠΕΡΙΤΤΟΙ<-ΠΕΡΙΤΤΟΙ+i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

αυτο δεν ειναι κατι τρελο για να μη γινεται..
αντιθετως αυτο τρεχει

ΣΥΝΑΡΤΗΣΗ ΠΕΡΙΤΤΟΙ(Α):ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:Α
ΑΚΕΡΑΙΕΣ:i,sum
ΑΡΧΗ
ΠΕΡΙΤΤΟΙ<-0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ 2
  ΠΕΡΙΤΤΟΙ<-ΠΕΡΙΤΤΟΙ+i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

απλα ειναι λιγο κουλο...

JohnyF

βασικα τωρα που το ψιλοσκεφτηκα αυτο που καταλαβα ειναι πως λογω οτι η συναρτηση παραπεμεπει στον μαθηματικο ορισμο...δλδ οτι ειναι η σχεση μεταξυ δυο η περισσοτερων ποσοτητων.(μιας εξοδου και εισοδων).οποτε οπως στα μαθηματικα δεν μπορουμε να πουμε F() χωρις ορισμα το ιδιο συμβαινει και σε αυτη τη περιπτωση..θα πρεπει να υπαρχει τουλαχιστον μια εισοδος ωστε να υπαρχει η εξοδος..αυτο νοηματικα με καλυπτει...αν καποιος διαφωνει θελω να το πει βεβαιως!!

Laertis

Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

Κωστας τζιαννης

στη γλωσσα οταν δεν εχεις παραμετρο δεν λες καλεσε ΔΙΑΔ() ΑΛΛΑ καλεσε ΔΙΑΔ  χωρις παρενθεσεις σε αντιθεση με τις περισσοτερες κανονικες γλωσσες προγραμματισμου.ακομα στη γλωσσα οταν την οριζεις λες ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ και οχι ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ() οταν δεν εχεις παραμετρους

πχ
προγραμμα ...
αρχη
καλεσε ΔΙΑΔ
τελος_προγραμματος

ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ
αρχη
γραψε "hey you"
τελος_διαδικασιας

pvs

και με παρενθέσεις ( ) δουλεύει η κλήση της διαδικασίας

Κωστας τζιαννης

Παράθεση από: pvs στις 26 Μαΐου 2018, 08:40:16 ΜΜ
και με παρενθέσεις ( ) δουλεύει η κλήση της διαδικασίας
τι να πω μαλλον θα εχω παλιοτερη εκδοση.διευκρινιση δεν λεω για το μαθημα και τι λεει το βιβλιο μιλαω για τον διερμηνευτη της γλωσσας

anasta

Στα παρακάτω λοιπόν τι θα απαντούσατε?
1. Σε μια Συνάρτηση μπορούμε να μην έχουμε παραμέτρους.
2. Τα υποπρογράμματα μπορούν να μην έχουν καμία παράμετρο.

Κωστας τζιαννης

#9
DEL

evry

Παράθεση από: anasta στις 26 Μαΐου 2018, 09:27:16 ΜΜ
Στα παρακάτω λοιπόν τι θα απαντούσατε?
1. Σε μια Συνάρτηση μπορούμε να μην έχουμε παραμέτρους.
2. Τα υποπρογράμματα μπορούν να μην έχουν καμία παράμετρο.

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

Κωστας τζιαννης

Παράθεση από: evry στις 27 Μαΐου 2018, 07:37:45 ΠΜ
Λάθος και τα δυο!
Μια συνάρτηση πρέπει να έχει τουλάχιστον μια παράμετρο αφού κάθε υποπρόγραμμα πρέπει να έχει κάποια είσοδο. Η διαδικασία μπορεί να έχει είσοδο από το πληκτρολόγιο με χρήση της Διάβασε. Στην συνάρτηση όμως απαγορεύεται αυτό άρα το μόνο σημείο εισόδου είναι η λίστα παραμέτρων. Για αυτό η συνάρτηση δεν μπορεί να έχει κενή λίστα παραμέτρων ενώ η διαδικασία μπορεί.

το εσβησα αυτο που εγραψα .δηλαδη στη γλωσσα δεν μπορεις να εχεις μια τετοια συναρτηση?
ΠΡΟΓΡΑΜΜΑ ασκηση
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: α
ΑΡΧΗ
  α <- προσθεση
  ΓΡΑΨΕ α
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


ΣΥΝΑΡΤΗΣΗ προσθεση: ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ

  ΑΚΕΡΑΙΕΣ: χ, υ
ΑΡΧΗ
  χ <- 1
  υ <- 3
  προσθεση <- χ + υ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

αρα λοιπον ο διερμηνευτης της γλωσσας δεν συμβαδιζει με το σχολικο βιβλιο?ρωταω γιατι δεν ξερω και επειδη ο διερμηνευτης της γλωσσας γραφει 4 σαν απαντηση

evry

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

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

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

Κωστας τζιαννης

Παράθεση από: evry στις 27 Μαΐου 2018, 07:28:02 ΜΜ
Δυστυχώς ή ευτυχώς ακολουθούμε το βιβλίο.
Δηλαδή αν μια συνάρτηση δεν έχει είσοδο από τη λίστα παραμέτρων δεν μπορεί να έχει είσοδο από πουθενά αλλού, οπότε δεν μπορεί να θεωρηθεί καν αλγοριθμική διαδικασία. Δες και τον ορισμό του αλγορίθμου του βιβλίου αλλά και γενικότερα. Μια υπολογιστική διαδικασία που δεν έχει είισοδο, υπολογίζει συνεχώς το ίδιο αποτέλεσμα δηλαδή δεν αποτελεί γενικευμένη υπολογιστική διαδικασία γενικά δεν θεωρείται αλγόριθμος αλλά αυτό πάλι είναι σχετικό και φυσικά θέμα ορισμού.

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

Η μόνη περίπτωση που μπορώ να σκεφτώ να μην έχει μια συνάρτηση παραμέτρους είναι να καλεί εσωτερικά μια άλλη συνάρτηση παραγωγής τυχαίων αριθμών. Εδώ η κενή λίστα θα είχε ίσως νόημα. Δεν έχουμε όμως κάτι τέτοιο στο βιβλίο. Ο διερμηνευτής νομίζω έχει τέτοια συνάρτηση.
ναι οκ απλα ειχα δει και μια παλιοτερη συζητηση μεταξυ σας που διαφωνουσατε αλλα ηταν παλια.λογικα τωρα θα το εχουν ξεκαθαρισει το ζητημα αν εχει αλλαξει το βιβλιο.η συζητηση σας που ειχα δει ηταν το 2010 η το 2009 νομιζω.οποτε καλυτερα να βαζω καποιες ασκησεις η να λυνω απο το να απανταω σε θεωρητικες ερωτησεις γιατι ακομα και πραγματα που μου φαινονται δεδομενα ανατρεπονται σε αυτο το μαθημα.στις κανονικες γλκωσσες επειδη υπαρχουν και oi global μεταβλητες μια συναρτηση μπορει να βγαλει διαφορετικα αποτελεσματα χωρις εισοδο.τωρα που το ειπα ελυσα και μια ωραια ασκηση που ειχες βαλει με μια μαγικη ακολουθια στους πινακες.παντως γινεται πολυ καλη δουλεια εδω μεσα απο ολους

pvs

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

andreas_p

ΠΕΡΙΤΤΟΊ <- ΠΕΡΙΤΤΟΊ  + Ι

Αναδρομή  (;)

Εκτός  ύλης !

wmaster

Καλημέρα,
μια συνάρτηση μπορεί να μην έχει παραμέτρους. π.χ μια συνάρτηση που υπολογίζει και επιστρέφει τον αριθμό Π με 10 δεκαδικά ψηφία, χρησιμοποιώντας μαθηματικό τύπο. Η είσοδος μπορεί να είναι καμία μία ή περισσότερες τιμές.
Συνάρτηση Π():Πραγματική

evry

#17
Αυτό που λες δεν ισχύει.
Ουσιαστικά αυτό που περιγράφεις είναι ένας αλγόριθμος του οποίου η παράμετρος είναι το πλήθος των δεκαδικών ψηφίων (10 =έχεις διαλέξει)
Αν δεν βάλεις παράμετρο έχεις μια υπολογιστική διαδικασία η οποία υπολογίζει πάντα ακριβώς το ίδιο πράγμα, δεν είναι γενικευμένη δηλαδή και δεν ξέρω κατά πόσο μπορεί να χαρακτηριστεί αλγόριθμος. Είναι θέμα ορισμού εδώ. Αν ψάξεις στους πιο πολλούς ορισμούς επιτρέπεται (zero-input algorithms).

Παράθεση από: wmaster στις 10 Ιουν 2018, 09:42:50 ΠΜ
Καλημέρα,
μια συνάρτηση μπορεί να μην έχει παραμέτρους. π.χ μια συνάρτηση που υπολογίζει και επιστρέφει τον αριθμό Π με 10 δεκαδικά ψηφία, χρησιμοποιώντας μαθηματικό τύπο. Η είσοδος μπορεί να είναι καμία μία ή περισσότερες τιμές.
Συνάρτηση Π():Πραγματική

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

wmaster

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

Σχετικά με την χρησιμότητα της συνάρτησης που υπολογίζει το Π δεν γράφω ότι έχει νόημα μια τέτοια συνάρτηση, αλλά δεν καταλαβαίνω ποιον κανόνα παραβιάζει. Το βιβλίο δεν αναφέρει ότι μια συνάρτηση υποχρεωτικά πρέπει να έχει παραμέτρους.
Γιατί πρέπει να είναι γενικευμένη μια συνάρτηση?

evry

Παράθεση από: wmaster στις 10 Ιουν 2018, 11:36:24 ΠΜ
Το βιβλίο δεν αναφέρει ότι μια συνάρτηση υποχρεωτικά πρέπει να έχει παραμέτρους.

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

Επίσης όσον αφορά το θέμα με τη γεννήτρια τυχαίων αριθμών, δεν υπάρχει τέτοια συνάρτηση στη ΓΛΩΣΣΑ. Το ότι την αναφέρει στον ορισμό του αλγορίθμου ως παράδειγμα καμίας εισόδου εγώ το εκλαμβάνω ότι ακόμα και στην περίπτωση που ο αλγόριθμος δεν έχει explicit input θα έχει κάποια άλλη είσοδο π.χ. από άλλο υποπρόγραμμα ή αρχείο ή Pipe/socket η δεν ξέρω τι άλλο. Το θέμα όμως είναι ότι αυτές οι δυνατότητες δεν υπάρχουν στη ΓΛΩΣΣΑ.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

akalest0s

Επειδή αυτό το θέμα έχει μείνει άλυτο στο μυαλό μου, συγγνώμη για την επαναφορά μετά από 2 χρόνια, αλλά έχω κάποιες ερωτήσεις.
Παράθεση από: evry στις 10 Ιουν 2018, 12:03:07 ΜΜ
Επίσης όσον αφορά το θέμα με τη γεννήτρια τυχαίων αριθμών, δεν υπάρχει τέτοια συνάρτηση στη ΓΛΩΣΣΑ. Το ότι την αναφέρει στον ορισμό του αλγορίθμου ως παράδειγμα καμίας εισόδου εγώ το εκλαμβάνω ότι ακόμα και στην περίπτωση που ο αλγόριθμος δεν έχει explicit input θα έχει κάποια άλλη είσοδο π.χ. από άλλο υποπρόγραμμα ή αρχείο ή Pipe/socket η δεν ξέρω τι άλλο. Το θέμα όμως είναι ότι αυτές οι δυνατότητες δεν υπάρχουν στη ΓΛΩΣΣΑ.
Η απάντηση στην ερώτηση "μια συνάρτηση μπορεί να μην έχει καθόλου παραμέτρους;", εξαρτάται άμεσα από αυτό που συζητούσατε, τι θεωρείται ως είσοδος σε έναν αλγόριθμο.
Με τα λόγια του βιβλίου:
"Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών."
Αυτές οι απλές εντολές τι μπορεί να είναι; Πρώτο πράγμα που μου έρχεται στο μυαλό είναι απευθείας εκχωρήσεις τιμών, πχ α <- 12;

Αν αυτές οι απλές εντολές είναι κάτι άλλο (τι; ), κάτι που επίσης δεν μπορεί να υλοποιηθεί με Γλώσσα, όπως οι συναρτήσεις παραγωγής τυχαίων αριθμών, τότε όντως δεν μπορεί να υπάρχει αλγόριθμος γραμμένος σε Γλώσσα (τουλάχιστον αν μείνουμε σε μια αυστηρή προσέγγιση), ο οποίος να μην έχει είσοδο.
Αλλιώς_Αν αυτές οι απλές εντολές είναι αυτό που είπα, πχ εκχωρήσεις τιμών, τότε μπορεί ένας αλγόριθμος γραμμένος σε Γλώσσα να έχει είσοδο "καμμία τιμή δεδομένων" και να εξακολουθεί να θεωρείται ότι έχει είσοδο (μέσω των "απλών" αυτών εντολών). Κατ' επέκταση, σε αυτή τη περίπτωση, μπορεί να υπάρχει συνάρτηση χωρίς παραμέτρους, η οποία παίρνει τιμές από κλήση άλλης συνάρτησης ή από απευθείας εκχωρήσεις εντός της.

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

υγ> το θέμα καλύτερα να μεταφερόταν στο "Θεωρία"
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

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

Το σχολικό βιβλιο στη σελιδα 179  στις διαδικασίες αναφέρει:

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

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

akalest0s

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

Απορώ πως σε αυτό το σημείο βγάζετε ένα τόσο προωθημένο συμπέρασμα από μια τόσο μικρή λεπτομέρεια, ενός τόσο κακογραμμένου βιβλίου;
Μπορεί κάποιος να αναιρέσει αυτό που ισχυρίστηκα περί εισόδου; αυτό θα διαφώτιζε περισσότερο την κατάσταση.
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

thaaanos

Μία συνάρτηση χωρίς ορίσματα είναι μια τιμή

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




alkisg

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

Δηλαδή το παρακάτω δεν είναι αποδεκτό:

ΜΕΤΑΒΛΗΤΕΣ
    ΑΚΕΡΑΙΕΣ: πίνακας[συνάρτηση_όρια]

thaaanos

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

bugman

Παράθεση από: alkisg στις 08 Μαρ 2021, 02:21:06 ΜΜ
Στον Διερμηνευτή, στην Pascal και αλλού, δεν επιτρέπεται κλήση συνάρτησης ορισμένης από τον χρήστη σε σημεία όπου χρειάζεται αποτίμηση κατά τη μεταγλώττιση, όπως είναι για παράδειγμα τα όρια ενός πίνακα.

Δηλαδή το παρακάτω δεν είναι αποδεκτό:

ΜΕΤΑΒΛΗΤΕΣ
    ΑΚΕΡΑΙΕΣ: πίνακας[συνάρτηση_όρια]
Με πιο απλά λόγια σε δήλωση στατικού πίνακα (θα έχει ήδη το προαποφασισμένο μέγεθος πριν την εκτέλεση), μπαίνουν μόνο σταθερές τιμές. Σταθερή τιμή μπορεί να είναι μια απλή αριθμητική τιμή πχ 100 ή ένα όνομα σταθερής τιμής που δηλώνει μια αριθμητική τιμή.
Η τεχνολογία έχει προχωρήσει ως προς τη διαχείριση μνήμης ενός υπολογιστή και για το λόγο αυτό επικρατούν οι δυναμικοί πίνακες οι οποίοι μπορούν να αυξομοιώσουν μέγεθος.
Έχουμε περάσει την εποχή της χρήσης μιας επίπεδης μνήμης. Η μνήμη είναι τεμαχισμένη σε μπλοκ τα οποία μπορούν να αναδιαταχτούν από το λειτουργικό σύστημα, με το λεγόμενο Memory Management Unit MMU. Για το   λόγο αυτό μιλάμε για εικονική μνήμη, μέρος της οποίας μπορεί να είναι ακόμα και στο δίσκο (swap file η partition).


alkisg

Παράθεση από: bugman στις 08 Μαρ 2021, 06:32:27 ΜΜ
Με πιο απλά λόγια σε δήλωση στατικού πίνακα (θα έχει ήδη το προαποφασισμένο μέγεθος πριν την εκτέλεση), μπαίνουν μόνο σταθερές τιμές.

Δεν μπαίνουν μόνο σταθερές τιμές αλλά οποιαδήποτε έκφραση σταθερής αποτίμησης που η τιμή της είναι γνωστή κατά τη μεταγλώττιση. Π.χ. το παρακάτω είναι αποδεκτό στον Διερμηνευτή (αν και πιθανώς όχι από όλους αποδεκτό για την ΑΕΠΠ) και δημιουργεί πίνακα με 4 στοιχεία:

Κώδικας: glossa
ΠΡΟΓΡΑΜΜΑ ΌριαΠίνακα
ΣΤΑΘΕΡΕΣ
  Ν = 10
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: πίνακας[Α_Μ(Τ_Ρ(2*Ν))] 
ΑΡΧΗ
  ΓΡΑΨΕ "Ο πίνακας έχει τόσα στοιχεία: ", Α_Μ(Τ_Ρ(2*Ν)) 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

telits

Συγγνώμη αν έχει απαντηθεί ξανά το ερώτημα....
Αν μια πραγματικη παραμετρος είναι ΑΚΕΡΑΙΑ και η
αντίστοιχη τυπική της λογική... τι λάθος θεωρείται;
κάποιοι μεταγλωττιστές σίγουρα θα το εντόπιζαν.
Όμως στη ΓΛΩΣΣΑ; υπάρχει σε κάποιο σημείο της ύλης γραμμένο;
Τηλέμαχος Ελευθερίου
Καθηγητης Πληροφορικης στο Ρεθυμνο☘

pgrontas

#29
Παράθεση από: telits στις 05 Απρ 2021, 02:19:57 ΠΜ
Συγγνώμη αν έχει απαντηθεί ξανά το ερώτημα....
Αν μια πραγματικη παραμετρος είναι ΑΚΕΡΑΙΑ και η
αντίστοιχη τυπική της λογική... τι λάθος θεωρείται;
κάποιοι μεταγλωττιστές σίγουρα θα το εντόπιζαν.
Όμως στη ΓΛΩΣΣΑ; υπάρχει σε κάποιο σημείο της ύλης γραμμένο;

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

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

ΥΓ: Για να μην παρεξηγηθώ, θα έγραφα αντικανονικού τερματισμού μόνο αν με το ζόρι έπρεπε να απαντήσω κάτι. Όπως λέει και ο Άλκης παρακάτω, υπάρχει θέμα με το ερώτημα αυτό.

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

alkisg

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

Η μεταγλώττιση ενός προγράμματος περιλαμβάνει συντακτικό αλλά και σημασιολογικό έλεγχο. Αναφέρονται σωστά στη σελίδα 115 του βιβλίου μαθητή.
Είναι λάθος μεταγλώττισης (στατικού ελέγχου) και συγκεκριμένα σημασιολογικό λάθος. Δεν είναι συντακτικό, δεν παραβιάζεται κανένας κανόνας σύνταξης.
Πιο τεχνικά, αφού η ΓΛΩΣΣΑ είναι strongly typed, ο σημασιολογικός αυτός έλεγχος είναι λογικό να γίνει ακριβώς μετά τον συντακτικό έλεγχο και την κατασκευή του abstract syntax tree, χωρίς να χρειαστεί να εκτελεστεί το πρόγραμμα.

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

evry

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

Κώδικας: glossa
ΠΡΟΓΡΑΜΜΑ ΓΛΩΣΣΑ_IS_SUPER_STRONGLY_STRICT_TYPED
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: Χ
ΑΡΧΗ
    Χ <- 6 div 2
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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