Ασάφειες στα υποπρογράμματα

Ξεκίνησε από vaiosz, 28 Μαρ 2018, 11:31:38 ΜΜ

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

vaiosz

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

1. Επιτρέπεται η κλήση διαδικασίας από συνάρτηση;

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

2. Επιτρέπονται εντολές εισόδου/εξόδου στη συνάρτηση ή την περιορίζουμε στη λογική των μαθηματικών συναρτήσεων;

3. Επιτρέπεται η χρήση σταθερών ως πραγματικών παραμέτρων σε κλήση διαδικασίας, με δεδομένο πως με το τέλος της διαδικασίας οι τιμές των τυπικών παραμέτρων επιστρέφουν στις αντίστοιχες πραγματικές (είτε έχουν αλλάξει είτε όχι) ;
Μηχανικός Η/Υ Συστημάτων

petrosp13

Το 1 και το 2 έχουν αποσαφηνιστεί, απαγορεύεται
Για το 3 υπάρχουν διαφωνίες, άλλοι λένε ότι απαγορεύεται γιατί δεν μπορεί να γίνει αντιγραφή προς τα πίσω, Άλλοι λένε ότι επιτρέπεται και ότι η αντιγραφή προς τα πίσω γίνεται μόνο όταν Αυτό είναι εφικτό
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

vaiosz

Παράθεση από: petrosp13 στις 28 Μαρ 2018, 11:55:49 ΜΜ
Το 1 και το 2 έχουν αποσαφηνιστεί, απαγορεύεται
Για το 3 υπάρχουν διαφωνίες, άλλοι λένε ότι απαγορεύεται γιατί δεν μπορεί να γίνει αντιγραφή προς τα πίσω, Άλλοι λένε ότι επιτρέπεται και ότι η αντιγραφή προς τα πίσω γίνεται μόνο όταν Αυτό είναι εφικτό

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

petrosp13

Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

nikosx

Για το 3 να θυμίσουμε βέβαια και το παράδειγμα στη σελίδα 101 στο Τετράδιο Μαθητή όπου χρησιμοποιούνται σταθερές σε λίστα πραγματικών παραμέτρων.
Νίκος Ξένος
Καθηγητής Πληροφορικής
nxenos@sch.gr

gioufkas

Συμφωνώ με τους προλαλήσαντες , απλά σας παραθέτω οδηγίες που έχουν αποσταλεί από το υπουργείο(02-10-2017 - Αρ. Πρωτ. 163578/Δ2).

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

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

Ένα θέμα είναι πως στο σχολικό βιβλίο αναφέρει στη σελίδα 179(Νέο) ή 215 (Παλιό)
"Κάθε διαδικασία ή συνάρτηση μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση"
το οποίο αναιρείται με την παραπάνω οδηγία που έχει αποσταλεί.

Υ.Γ. Ο Θεός βοηθός τί θα γίνει αν μπεί στις εξετάσεις σε Σ/Λ.

bugman

Η απλή εξήγηση είναι ότι οι συναρτήσεις είναι ενδιάμεσες επεξεργασίες, ενώ οι διαδικασίες μπορούν να έχουν θέση σε εισαγωγή και εξαγωγή. Το να βάλουμε διαδικασία με εισαγωγή ή εξαγωγή στη συνάρτηση σημαίνει ότι αλλάζουμε την χρήση της συνάρτησης σε κάτι έξω από το προβλεπόμενο. Έτσι μένει να ξεκαθαριστεί ένα και μόνο πράγμα:
"Έχουν θέαση διαδικασιών οι συναρτήσεις, όπως έχουν οι διαδικασίες για διαδικασίες και συναρτήσεις;"
Στην 179 σελίδα δηλώνει το "μπορεί να καλείται" και αναφέρεται στο ως προς την θέαση, όχι ως προς τον σκοπό.
Συνοψίζοντας, κατά την άποψή μου: η οδηγία θα έπρεπε να ξεκαθαρίζει ότι δεν γίνεται κλήση διαδικασίας μέσα από μια συνάρτηση "όταν αυτή περιέχει εντολές εισόδου και εξόδου".

pvs

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

gthal

Παράθεση από: petrosp13 στις 28 Μαρ 2018, 11:55:49 ΜΜ
Το 1 και το 2 έχουν αποσαφηνιστεί, απαγορεύεται
Για μένα, αυτή η τροπή είναι απαράδεκτη (τη διδάσκω έτσι, φυσικά, αλλά με αηδία) η οποία ξεκινάει με την αδικαιολόγητη κατ' εμέ αρχική παραδοχή του βιβλίου ότι στη συνάρτηση απογορεύονται εντολές ΓΡΑΨΕ και ΔΙΑΒΑΣΕ.
Ίσως να μην είναι πολύ "θεμιτές", ίσως να λέγαμε ότι δεν είναι καλή πρακτική... αλλά εδώ τις απαγορέψαμε. Κι έτσι, αρκετά χρόνια αργότερα, μας προέκυψε η ασυνέπεια με την κλήση διαδικασιών από συναρτήσεις, οπότε την απαγορέψαμε κι αυτή (πονάει χέρι - κόβει χέρι, στο τέλος δε θα αφήσουμε τίποτα), αντί να άρουμε την πρώτη απαγόρευση κατ' αρχήν !
Παράθεση από: petrosp13 στις 28 Μαρ 2018, 11:55:49 ΜΜ
Για το 3 υπάρχουν διαφωνίες, άλλοι λένε ότι απαγορεύεται γιατί δεν μπορεί να γίνει αντιγραφή προς τα πίσω, Άλλοι λένε ότι επιτρέπεται και ότι η αντιγραφή προς τα πίσω γίνεται μόνο όταν Αυτό είναι εφικτό
Εγώ είμαι υπερ της 2ης άποψης. Ο διερμηνευτής της ΓΛΩΣΣΑΣ λειτουργεί με αυτόν τον τρόπο και είναι μια χαρά. Η υιοθέτηση της 1ης άποψης για μένα πάλι θα ήταν άστοχη, γιατί περιορίζει πάλι άσκοπα τις δυνατότητες. Δεν είναι έτσι τα πράγματα στις πραγματικές συνθήκες προγραμματισμού.
Με ακούτε τόσο αντίθετο γιατί γενικά πιστεύω ότι με τέτοιες παραδοχές απομακρύνουμε το μαθητή από την πραγματική νοοτροπία του προγραμματισμού. Περιορίζουμε τις δυνατότητες χωρίς λόγο, γιατί δεν βλέπω ποιο παιδαγωγικό όφελος αποκομίζουμε ώστε να αξίζει αυτή τη θυσία.
Φιλικά,
Γιώργος Θαλασσινός

P.Tsiotakis

Οδηγίες διδασκαλίας ΑΕΠΠ, Α.Π. 163578/Δ2/02-10-2017
σελίδα 10:"Να επισημανθεί ιδιαίτερα ότι οι συναρτήσεις δεν μπορούν να έχουν εντολές εισόδου–εξόδου. Κατ' επέκταση αυτού του γεγονότος, θεωρείται, ότι δεν μπορεί να γίνει κλήση μιας διαδικασίας μέσα από μια συνάρτηση."

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


gthal

Παράθεση από: P.Tsiotakis στις 30 Μαρ 2018, 09:43:30 ΜΜ
Επιπρόσθετα: οι παράμετροι είναι μεταβλητές (ορισμός).
Ίσως μιλάει για τις τυπικές. Οπότε, ναι, οπωσδήποτε!
Αλλά γιατί να είναι και οι πραγματικές;
Συγχωρήστε με για αυτό που θα πω,
αλλά δεν μου αρέσει όταν ερμηνεύουμε κατά γράμμα το βιβλίο σαν να είναι η Βίβλος ή το Σύνταγμα.
Το βιβλίο αποτυγχάνει να δώσει απόλυτα φορμαλιστικούς ορισμούς (και δεν ήταν αυτός ο σκοπός του μάλλον)
Αλλά είμαστε προγραμματιστές και ξέρουμε τι συμβαίνει και εκεί έξω, έτσι δεν είναι;
Θα πρεπε στα σημεία ασάφειας να προσπαθούμε να το ανοίξουμε προς το τι γίνεται εκεί έξω και όχι να το κλείνουμε περισσότερο στο δικό του μικρόκοσμο.
Βρίσκω ομοιότητα σ' αυτό που συζητάμε τώρα, με μια παρανόηση που συνέβαινε (ή κι ακόμα συμβαίνει; ) με την ΓΡΑΨΕ, όπου κάποιοι συνάδελφοι έλεγαν ότι μπορεί να γράψουμε μόνο μεταβλητές και σταθερές (και όχι εκφράσεις), γιατί έτσι το λέει το βιβλίο (και δεν αναφέρει τις εκφράσεις). Οπότε ΓΡΑΨΕ χ είναι σωστό ενώ ΓΡΑΨΕ χ+1 δεν είναι.
Δεν το χωράω να το δεχόμαστε έτσι, αντί να πιέσουμε να αλλάξει προς το σωστότερο.
Αδυνατώ να φέρω στο μυαλό μου ένα παράδειγμα περίπτωσης από οποιαδήποτε γλώσσα προγραμματισμού, όπου να μην μπορώ να ανταλλάξω αμοιβαία τη χρήση της τιμής μιας μεταβλητής με τη χρήση της τιμής μιας έκφρασης ή μιας σταθερής.
Δεν πρέπει αυτό να διαπνέει και τη ΓΛΩΣΣΑ; οπουδήποτε μπορώ να επικαλεστώ την τιμή μιας μεταβλητής, μπορώ ισοδύναμα να επικαλεστώ την τιμή μιας έκφρασης ή μιας σταθερής (ο ορισμός της έκφρασης, εξάλλου, εμπεριέχει και τις δύο άλλες έννοιες).
Γιατί δηλαδή στη ΓΛΩΣΣΑ πρέπει να είναι διαφορετικά; Σε τι μας χρησιμεύει;

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

Θεωρώ ότι πρέπει να βλέπουμε σωστό το ΚΑΛΕΣΕ διαδ(χ)  όσο και το ΚΑΛΕΣΕ διαδ(χ+1)
και κατά τη γνώμη μου, από εκεί και πέρα, έχουμε να συμφωνήσουμε πώς θα διαχειριζόμαστε την περίπτωση που η συγκεκριμένη διαδικασία επιχειρεί να μεταβάλλει την τιμή της αντίστοιχης τυπικής παραμέτρου (γιατί κι αυτό δεν είναι υποχρεωτικό, μπορεί να το κάνει μπορεί και όχι)
Μπορεί πχ να χτυπάει λάθος όταν η αντίστοιχη πραγματική είναι σταθερή τιμή ή έκφραση, ή μπορεί να μη συμβαίνει τίποτα (όπως και κάνει ο Διερμηνευτής)
Φιλικά,
Γιώργος Θαλασσινός