Θέμα 2

Ξεκίνησε από evry, 12 Ιουν 2019, 09:35:01 ΠΜ

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

P.Tsiotakis

Παράθεση από: gmav στις 13 Ιουν 2019, 09:41:11 ΠΜ
Αν πει κάποιος ότι η αντίστοιχη της κ <- Β(π,μ,ρ[1]) είναι η ΚΑΛΕΣΕ Β(π,κ,ρ[1]);
θα μπορούσε από κάποιο/α μαθητή/ρια να έχει δοθεί η απάντηση
ΚΑΛΕΣΕ Β(π, μ, γ)

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

Πάντως η εκφώνηση αναφέρεται σε ένα λάθος ανά κλήση και ζητά τη διόρθωση αυτού (; ) του λάθους.


Νίκος Αδαμόπουλος

Παράθεση από: Παναγιώτης Τσιωτάκης στις 13 Ιουν 2019, 04:36:18 ΜΜ
θα μπορούσε από κάποιο/α μαθητή/ρια να έχει δοθεί η απάντηση
ΚΑΛΕΣΕ Β(π, μ, γ)

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

Πάντως η εκφώνηση αναφέρεται σε ένα λάθος ανά κλήση και ζητά τη διόρθωση αυτού (; ) του λάθους.

Γενικά, αυτό το θέμα είχε ένα προβληματάκι ως προς τον καθορισμό του ζητούμενου!

bugman

Το Β2.β5 είναι σίγουρα αυτό: ΚΑΛΕΣΕ Β(π,μ,ρ[1])
Το ρ[1] περνάει με αναφορά, και είναι ίδιου τύπου (Πραγματική). Είναι στοιχείο πίνακα δεν είναι πίνακας.
Το να βάλεις άλλη μεταβλητή αυθαίρετα δεν παίζει. Είναι σαν να λες ότι έχει δυο λάθη, πράγμα που το αποκλείει.



bugman

Στο Β2.β4 μπορεί να διαλέξει κανείς οποιαδήποτε πραγματική ακόμα και το ρ[1] στη θέση του υ.

P.Tsiotakis

Παράθεση από: bugman στις 13 Ιουν 2019, 05:40:18 ΜΜ
Το Β2.β5 είναι σίγουρα αυτό: ΚΑΛΕΣΕ Β(π,μ,ρ[1])
Το ρ[1] περνάει με αναφορά, και είναι ίδιου τύπου (Πραγματική). Είναι στοιχείο πίνακα δεν είναι πίνακας.
Το να βάλεις άλλη μεταβλητή αυθαίρετα δεν παίζει. Είναι σαν να λες ότι έχει δυο λάθη, πράγμα που το αποκλείει.




νομιζω οτι περιέγραψα επαρκως τη σκεψη μου. γνωριζω οτι το ρ [1] ειναι σωστο απο το 2005.
και το ρ [1] δεν είναι μεταβλητή αλλα στοιχείο πίνακα

παντως δε λεει να κανεις 1 αλλαγη

bugman

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

P.Tsiotakis

στη ΓΛΩΣΣΑ το στοιχείο πίνακα είναι στοιχείο πίνακα και υποβάλλεται σε επεξεργασία όπως μία μεταβλητή, αλλά είναι στοιχείο πίνακα και για αυτό δηλώνεται ως στοιχείο πίνακα ενώ η μεταβλητή δηλώνεται ως μεταβλητή

pgrontas

#22
Παράθεση από: Παναγιώτης Τσιωτάκης στις 13 Ιουν 2019, 07:20:21 ΜΜ
στη ΓΛΩΣΣΑ το στοιχείο πίνακα είναι στοιχείο πίνακα και υποβάλλεται σε επεξεργασία όπως μία μεταβλητή, αλλά είναι στοιχείο πίνακα και για αυτό δηλώνεται ως στοιχείο πίνακα ενώ η μεταβλητή δηλώνεται ως μεταβλητή
Πώς δηλώνουμε *στοιχείο* πίνακα στη γλώσσα;

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

Όπως λέει και ένα παλιό ρητό:
"If it walks like a duck and it quacks like a duck, then it must be a duck"
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

pgrontas

Παράθεση από: Νίκος Αδαμόπουλος στις 13 Ιουν 2019, 05:22:03 ΜΜ
Γενικά, αυτό το θέμα είχε ένα προβληματάκι ως προς τον καθορισμό του ζητούμενου!
Συμφωνώ.
Στα θέματα όπου ψάχνουμε κάποιο λάθος πρέπει να είμαστε απόλυτα σίγουργοι πώς θα ερμηνευτεί και ότι το λάθος είναι μοναδικό.
Για παράδειγμα στα προφορικά είχαμε μαθητές που στο ΚΑΛΕΣΕ Α(μ, θ), θεώρησαν το ΚΑΛΕΣΕ σωστό και αντικατέστησαν τη συνάρτηση με διαδικασία.
Κάτι τέτοιο θα μπορούσε να αποφευχθεί αν τα υποπρογράμματα και οι παράμετροι είχαν λογικά ονόματα πχ. min ή ταξινόμηση ή κάτι τέτοιο, ώστε να τονιστεί στο μαθητή ποιος είναι ο στόχος της εντολής.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

P.Tsiotakis

Παράθεση από: pgrontas στις 14 Ιουν 2019, 09:52:19 ΠΜ
Πώς δηλώνουμε *στοιχείο* πίνακα στη γλώσσα;

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

Σάκης Δημόπουλος


Νίκος Αδαμόπουλος

Παράθεση από: pgrontas στις 14 Ιουν 2019, 09:57:04 ΠΜ
Συμφωνώ.
Στα θέματα όπου ψάχνουμε κάποιο λάθος πρέπει να είμαστε απόλυτα σίγουργοι πώς θα ερμηνευτεί και ότι το λάθος είναι μοναδικό.
Για παράδειγμα στα προφορικά είχαμε μαθητές που στο ΚΑΛΕΣΕ Α(μ, θ), θεώρησαν το ΚΑΛΕΣΕ σωστό και αντικατέστησαν τη συνάρτηση με διαδικασία.

Ακριβώς! Δεν θα πρέπει οι μαθητές να φτάνουν στο σημείο να αναρωτιούνται "τι θέλει ο ποιητής τώρα να γράψουμε"!

gkatsion

Παράθεση από: Νίκος Αδαμόπουλος στις 15 Ιουν 2019, 02:01:55 ΜΜ
Ακριβώς! Δεν θα πρέπει οι μαθητές να φτάνουν στο σημείο να αναρωτιούνται "τι θέλει ο ποιητής τώρα να γράψουμε"!

Όλη η απάντηση έχει στηριχθεί στο ότι κάθε πρόταση έχει ένα και μόνο ένα λάθος
ΈΞΟΔΟΣ_ΑΠΟ_ΛΥΚΕΙΟ <-- ΑΕΙ + PHD + ΑΣΕΠ

dimitrios67

Όταν σε ένα υποπρόγραμμα έχουμε τυπική παράμετρο π.χ. έναν ακέραιο, κατά την κλήση ΔΕΝ μας ενδιαφέρει εάν η πραγματική παράμετρος είναι απλή μεταβλητή (ακέραιος) ή στοιχείο ενός μονοδιάστατου πίνακα ή στοιχείο ενός δισδιάστατου πίνακα κλπ!
Παράδειγμα στο πρόγραμμα που επισυνάπτω.
(το επισυνάπτω γιατί έχω κάποιο πρόβλημα με τους Ελληνικούς χαρακτήρες στη Γλωσσομάθεια.
Αν έχει κάποιος κάποια ιδέα....)

Στον κώδικα παρατηρούμε ότι στη διαδικασία περνάει σαν όρισμα ένας ακέραιος.
Την διαδικασία ΔΕΝ την ενδιαφέρει εάν ο ακέραιος είναι στοιχείο πίνακα ή απλή μεταβλητή.
Μας ενδιαφέρει εάν είναι ακέραιος!
Οκ, περνάει και η διεύθυνση (ή γίνεται το copy , anyway!), αλλά ο ορισμός της διαδικασίας λέει:
Η παράμετρος (όρισμα) να είναι ακέραια, να αυξηθεί κατά 1, και να "ενημερωθεί" το κυρίως πρόγραμμα.
Όταν πραγματική παράμετρος είναι η Χ που έχει τιμή 5, μετά την κλήση της Δ1 γίνεται 6.
Ομοίως, όταν καλούμε την Δ1 με πραγματική παράμετρο το στοιχείο Ζ[1], του πίνακα Ζ,
το στοιχείο αυξάνεται κατά 1.
Και έχω και τρίτη περίπτωση με 2D array, οπού συμβαίνει ακριβώς το ίδιο.
Άρα, η Δ1 ΔΕΝ "γνωρίζει" και δεν την "ενδιαφέρει" εάν το όρισμα είναι απλή μεταβλητή ή στοιχείο πίνακα.
Δηλ. ΔΕΝ περνάει ο πίνακας Ζ, ας πούμε base address ή κάτι άλλο.
Βέβαια είναι πολύ ενδιαφέρον να γνώριζα ΠΩΣ γίνεται το pass by reference στη ΓΛΩΣΣΑ, γιατί δεν το έχω καταλάβει.

Λάμπρος Παπαδόπουλος

ΠαράθεσηΒέβαια είναι πολύ ενδιαφέρον να γνώριζα ΠΩΣ γίνεται το pass by reference στη ΓΛΩΣΣΑ, γιατί δεν το έχω καταλάβει.

Δεν γίνεται... Είναι "με τιμή" στις συναρτήσεις και "με τιμή - αποτέλεσμα" στις διαδικασίες.