mina14
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
meteo_xampos
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Το πρώτο λάθος και σημαντικότερο είναι η χρήση πινάκων σε άσκηση με άγνωστο πλήθος επαναλήψεων (δε σου λέει πόσα θα είναι τα πακέτα
που θα αγοραστούν)... Δεν ξέρεις από την αρχή το μέγεθος του πίνακα που θα χρησιμοποιήσεις... Έχει μαλλιάσει η γλώσσα μου να λέω στους μαθητές μου ότι δεν πρέπει να χρησιμοποιούμε πίνακες σε ασκήσεις με άγνωστο πλήθος επαναλήψεων, εκτός και αν στο ζητάει η άσκηση... Πολλοί μαθητές όταν αντιμετωπίζουν ασκήσεις που πριν τους πίνακες τις λύνανε, τώρα που ξεκινάνε επαναλήψεις, σε παρόμοιες ασκήσεις βάζουν πίνακες μέσα στη λύση και ας μη χρειάζεται και να μη το λέει η άσκση...
Το δεύτερο λάθος είναι ότι στον πίνακα ΜΠΕ αποθηκεύεις και αλφαριθμητικά (στην πρώτη γραμμή αποθηκεύεις τη μάρκα του κάθε πακέτου)
και αριθμούς (στη δεύτερη γραμμή αποθηκεύεις τη τιμή του κάθε πακέτου), πράγμα το οποίο είναι λάθος μιας και στους πίνακες αποθηκεύουμε
μόνο ενός τύπου δεδομένα...
Το τρίτο λάθος είναι ότι στη Για που κάνεις αναζήτηση μεγίστου, πρέπει να γράψεις Για κ από 2 μέρχι π...
Γενικά, είναι λάθος να χρησιμοποιείς πίνακες σε ασκήσεις με άγνωστο πλήθος επαναλήψεων...
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
GiannhsD17
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Spyros2309
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Όσο για τον πίνακα χωρίς να γνωρίζω τις επαναλήψεις (διαστάσεις) και στο ότι βάζω χαρακτήρες και αριθμούς δε συμφωνώ ότι είναι λάθος.
Αλγόριθμο κάνω, όχι πρόγραμμα
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
Στους αλγόριθμους μπορώ να χρεισιμοποιήσω έναν πίνακα Ν,Μ θέσεων, και εφόσον δεν υπάρχει δήλωση μεταβλητών μπορώ να κάνω τα πάντα σ αυτόν.
Στο κάτω κάτω αλγόριθμος δεν είναι προγραμματισμός, πιο πολύ τείνει σε κωδικοποιημένη φυσική γλώσσα παρά σε μια γλώσσα προγραμματισμού με κανόνες κτλ.
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
meteo_xampos
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Και σε ότι αφορά τις διαστάσεις του πίνακα πρέπει να είναι γνωστές, γιατί οι πίνακες που χρησιμοποιείται στον προγραμματισμό
είναι στατικές δομές δεδομένων, άρα θα πρέπει στην έναρξη του αλγορίθμου ή του προγράμματος να δεσμεύσεις γνωστό αριθμό
κόμβων για να αποθηκεύσεις τα δεδομένα σου... Μπορείς να κάνεις ότι θες σε μια δομή δεδομένων, και να βάζεις όσα στοιχεία θές
και οποιουδήποτε είδους θες μόνο όταν χρησιμοποιείς δυναμικές δομές δεδομένων...
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Spyros2309
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
Ν θέσεων ο καθένας.
Δεν αλλάζω την αποψή μου ότι μπορώ να κάνω πίνακα Ν θέσεων σε αλγόριθμο. Δε με σταματάει κανένας
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
Δε χρειάζεται να τον δηλώσω κάπου, ώστε να πρέπει να δηλώσω τη χωριτηκότητά του, οπότε κάλλιστα μπορώ να κάνω αυτό το "τρικ".
Πάμε πάλι:
ΑΛΓΟΡΙΘΜΟΣ μπεεεεεεεεεεεεεε
ΓΡΑΨΕ 'Πληκτρολογήστε το ποσό που θέλετε να ξοδέψετε.'
ΔΙΑΒΑΣΕ χ
ι <-- τ
π <-- 0
π2 <-- 0
ΟΣΟ χ> 0 ΕΠΑΝΑΛΑΒΕ
ι <-- ι + 1
ΓΡΑΨΕ 'Δώσε τη τιμή του', ι,'ου πακέτου.'
ΔΙΑΒΑΣΕ ΜΠΕ1[ ι]
ΑΝ χ-ΜΠΕ1[ι]>=0 ΤΟΤΕ
π <-- π+1
ΓΡΑΨΕ 'Δώσε τη μάρκα του', ι,'ου πακέτου.'
ΔΙΑΒΑΣΕ ΜΠΕ2[ι]
ΑΝ ΜΠΕ[2,ι]>2 ΤΟΤΕ π2 <-- π2 + 1
χ <-- χ - ΜΠΕ2[ι]
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δε μπορείτε να αγοράσετε αυτό το πακέτο -- Η αγορά τελείωσε'
χ <-- -1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ χ = 0 ΤΟΤΕ ΓΡΑΨΕ '«Εξαντλήθηκε όλο το ποσό»'
μεγ <-- 1
ελ <-- ΜΠΕ2[1]
ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ π
ΑΝ ΜΠΕ2[ι] > ΜΠΕ2[μεγ] ΤΟΤΕ μεγ <-- ι
ΑΝ ΜΠΕ2[ι] < ελ ΤΟΤΕ ελ <-- ΜΠΕ2[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Μάρκα ακριβότερου πακέτου:', ΜΠΕ1[μεγ]
ΓΡΑΨΕ 'Τιμή φθηνότερου πακέτου:', ελ
ΓΡΑΨΕ 'Αγοράσατε συνολικά', π,' πακέτα ρύζι, από τα οποία ', π2,' κοστίζουν πάνω από 2?.'
ΤΕΛΟΣ
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
ptsiotakis
Εκκολαπτόμενο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Δεν αλλάζω την αποψή μου ότι μπορώ να κάνω πίνακα Ν θέσεων σε αλγόριθμο. Δε με σταματάει κανένας
Δε χρειάζεται να τον δηλώσω κάπου, ώστε να πρέπει να δηλώσω τη χωριτηκότητά του, οπότε κάλλιστα μπορώ να κάνω αυτό το "τρικ".
Σε σταματάει το γεγονός πως ο πίνακας είναι στατική δομή. Είτε στην ψευδογλώσσα είτε στη ΓΛΩΣΣΑ (και τα δυο αποτελούν απεικόνιση αλγορίθμου) οι πίνακες είναι στατική δομή και πρέπει να είναι γνωστό το μέγεθός τους κατά τη φάση του προγραμματισμού τους (και όχι εκτέλεσης). Ακόμη κι αν είναι Ν (όπου το Ν εισάγεται με ΔΕΔΟΜΕΝΑ ή ΔΙΑΒΑΣΕ) πρέπει να είναι σαφές ποια είναι η μέγιστη τιμή του.
Σε ασκήσεις που εισάγεται άγνωστο πλήθος στοιχείων ΔΕ μπορούν να χρησιμοποιηθούν πίνακες και αν το κάνεις στις εξετάσεις θα σου στερήσει μόρια, όπως έχει γίνει ήδη στο παρελθόν.
Καλό είναι να αναθεωρήσεις τη στρεβλή εικόνα που έχεις για το θέμα αυτό και ΚΑΛΗ ΕΠΙΤΥΧΙΑ σε όλους
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
kostaspotter
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Έλεγαν και καλά πως ως γνωστόν η συνάρτηση επιστρέφει μόνο μια τιμή στο κυριο πρόγραμμα!Έτσι αν υθέλουμε να βρούμε το άθροισμα στοιχείων ενός πίνακα μέσα σε συνάρτηση τότε δεν πρέπει να κάνουμε το παρακάτω:
Έστω πως ο πίνακας έχει 100 στοιχεία τα οποία μπορεί να είναι είτε πραγματικοί έιτε ακέραιοι!
ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝΑΚΑΣ[100]
ΑΚΕΡΑΙΕΣ: Ι
ΑΡΧΗ
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ + ΠΙΝΑΚΑΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Θέλουν από εδώ και πέρα να το κάνουμε έτσι:
ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝΑΚΑΣ[100], SUM
ΑΚΕΡΑΙΕΣ: Ι
ΑΡΧΗ
SUM <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
SUM <- SUM + ΠΙΝΑΚΑΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- SUM
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Δλδ δεν θέουν να γίνεται κατευθείαντο άθροισμα στο όνομα της συνάρτησης!Θέλουν να χρησιμοποιούμε μια άλλη μεταβλητή να αποθηκεύει το άθροισμα και στο τέλος να καταχωρούμε το άθροισμα στο όνομα της συνάρτησης!
Μας το είπε ο καθηγητής στο σχολείο!Τους το έστειλαν λέει αυτή τη βδομάδα!Για ρωτήστε και εσείς!
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Μιχάλης9867
Πολύ δραστήριο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
meteo_xampos
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Πάντως, αν το γράψεις έτσι
ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝΑΚΑΣ[100]
ΑΚΕΡΑΙΕΣ: Ι
ΑΡΧΗ
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ + ΠΙΝΑΚΑΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
...είναι ΛΑΘΟΣ γιατί χρησιμοποιείς το όνομα της συνάρτησης (το οποίο ΔΕΝ είναι μεταβλητή),
και στα δεξιά μιας έκφρασης, και είναι σα να καλείται η συνάρτηση από τον εαυτό της, και
αυτό ονομάζεται αναδρομή στον προγραμματισμό, πράγμα το οποίο (δυστυχώς
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
στην ύλη σας...
Προσέξετε μη το κάνετε αυτό στις εξετάσεις... Πάντα θα κάνετε τον υπολογισμό που σας
ζητάει η συνάρτηση, και μετά πριν γράψετε ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ, στο όνομα της
συνάρτησης αποθηκεύετε αυτό που υπολογίσατε, όπως έδειξε και η δεύτερη (ΣΩΣΤΗ)
λύση...
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Μπάμπης ο Άλλος
Δραστήριο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Πότε έστειλε το υπουργείο τέτοια διευκρίνηση; Μπορείς να δώσεις το link;
Πάντως, αν το γράψεις έτσι
ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝΑΚΑΣ[100]
ΑΚΕΡΑΙΕΣ: Ι
ΑΡΧΗ
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ + ΠΙΝΑΚΑΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
...είναι ΛΑΘΟΣ γιατί χρησιμοποιείς το όνομα της συνάρτησης (το οποίο ΔΕΝ είναι μεταβλητή),
και στα δεξιά μιας έκφρασης, και είναι σα να καλείται η συνάρτηση από τον εαυτό της, και
αυτό ονομάζεται αναδρομή στον προγραμματισμό, πράγμα το οποίο (δυστυχώς) δεν το χετε
στην ύλη σας...
Προσέξετε μη το κάνετε αυτό στις εξετάσεις... Πάντα θα κάνετε τον υπολογισμό που σας
ζητάει η συνάρτηση, και μετά πριν γράψετε ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ, στο όνομα της
συνάρτησης αποθηκεύετε αυτό που υπολογίσατε, όπως έδειξε και η δεύτερη (ΣΩΣΤΗ)
λύση...
Η συνάρτηση καλεί τον εαυτό της (Αναδρομή)? Μα για να κάνεις κλήση της συνάρτησης πρέπει να βάλεις παραμέτρους.
Δεν ξέρω αν και για ποίο λόγο είναι λάθος το παραπάνω.
Πάντως αν είμαι σωστά ενημερωμένος για να έκανε κλήση του εαυτού της η συνάρτηση θα έπρεπε να είναι
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑΣ<---ΑΘΡΟΙΣΜΑΠΙΝΑΚΑΣ(ΠΑΡΑΜΕΤΡΟΣ) + ΠΙΝΑΚΑΣ
Κάνω λάθος?
Επίσης, λές παραπάνω ότι το όνομα της συνάρτησης που χρησιμοποιείται δεν είναι μεταβλήτη.
Εάν ο καθηγητής μου μου τα έχει πεί σωστά, το όνομα της συνάρτησης ΕΙΝΑΙ μεταβλητή, απλά δεν την δηλώνουμε στις μεταβλητές γιατί η δηλωσή της γίνεται στην πρώτη γραμμή της συνάρτησης, εκεί που λέμε :ΠΡΑΓΜΑΤΙΚΗ/ΑΚΕΡΑΙΑ κλπ.
Εάν κάνω λάθος σε ο,τιδήποτε παρακαλώ διορθώστε με για να μην τα κάνω μαντάρα στις εξετάσεις
![Πολύ χαρούμενος :D :D](https://www.e-steki.gr/images/smilies/biggrin.gif)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
meteo_xampos
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Το σωστό είναι να βάζεις στο όνομα της συνάρτησης αυτό που υπολογίσες (εδώ το άθροισμα του πίνακα) πριν το ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ...
Τρέξε το παρακάτω στο Διερμηνευτή να δείς τι συμβαίνει (στην συνάρτηση έβαλα σαν παράμετρο πίνακα αφού έτσι την ορίζουμε)...
Ο Διερμηνευτής βρίσκεται στη διεύθυνση https://users.sch.gr/alkisg/. Κατεβάζεις το exe αρχείο και το τρέχεις...
ΠΡΟΓΡΑΜΜΑ Τάδε
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[5], Α
ΑΚΕΡΑΙΕΣ: i
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΔΙΑΒΑΣΕ ΠΙΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Α <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝ)
ΓΡΑΨΕ Α
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝΑΚΑΣ[5]
ΑΚΕΡΑΙΕΣ: Ι
ΑΡΧΗ
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ) + ΠΙΝΑΚΑΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
---------------------------------------------------------------
Η χρήση ονόματος συνάρτησης και στα δεξιά μιας έκφρασης μας οδηγεί σε αναδρομή και αυτό είναι εκτός ύλης (δες και στο κεφάλαιο 10.7). ΑΠΑΓΟΡΕΥΤΕΤΑΙ!!! Μη το κάνετε θα κοπούν μονάδες!!!
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Μπάμπης ο Άλλος
Δραστήριο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Το όνομα της συνάρτησης δρά ΣΑΝ μεταβλητή. Δεν είναι μεταβλητή. Δεν μπορούμε να το χρησιμοποιούμε και στα δεξιά μιας έκφρασης...
Το σωστό είναι να βάζεις στο όνομα της συνάρτησης αυτό που υπολογίσες (εδώ το άθροισμα του πίνακα) πριν το ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ...
Τρέξε το παρακάτω στο Διερμηνευτή να δείς τι συμβαίνει (στην συνάρτηση έβαλα σαν παράμετρο πίνακα αφού έτσι την ορίζουμε)...
Ο Διερμηνευτής βρίσκεται στη διεύθυνση https://users.sch.gr/alkisg/. Κατεβάζεις το exe αρχείο και το τρέχεις...
ΠΡΟΓΡΑΜΜΑ Τάδε
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝ[5], Α
ΑΚΕΡΑΙΕΣ: i
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΔΙΑΒΑΣΕ ΠΙΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Α <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝ)
ΓΡΑΨΕ Α
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: ΠΙΝΑΚΑΣ[5]
ΑΚΕΡΑΙΕΣ: Ι
ΑΡΧΗ
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ) + ΠΙΝΑΚΑΣ[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Δεν ξέρω άν μπορείς ή όχι να βάλεις το όνομα της συνάρτησης στα δεξιά της έκφρασης ή όχι.
Πάντως αυτό:
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ(ΠΙΝΑΚΑΣ) + ΠΙΝΑΚΑΣ[Ι]
προφανώς και είναι αναδρομή αφού καλείς την ίδια τη συνάρτηση μέσα στη συνάρτηση.
Αυτό:
ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ <- ΑΘΡΟΙΣΜΑΠΙΝΑΚΑ+ ΠΙΝΑΚΑΣ[Ι]
που είχεσ γραμμένο πρίν είναι κάτι τελείως διαφορετικό και αυτό επεσήμανα. Ότι δεν ξέρω εάν αυτό είναι λάθος για
άλλο λόγο, αλλά λόγω αναδρομής δεν είναι γιατί δεν κάνεις κλήση της συνάρτησης μέσα στον πίνακα με αυτόν τον τρόπο.
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Μπάμπης ο Άλλος
Δραστήριο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
2) Για το ερώτημα:
«Όταν μια συνάρτηση αλλάζει το περιεχόμενο των παραμέτρων της, οι αλλαγές αυτές επιστρέφουν πίσω στις πραγματικές παραμέτρους;»
Στην ενότητα 10.5. Διαδικασίες και συναρτήσεις (Βιβλίο Μαθητή, σελ. 210) αναφέρεται: «Οι διαδικασίες μπορούν να εκτελέσουν οποιαδήποτε λειτουργία από αυτές που μπορεί να εκτελέσει ένα πρόγραμμα. Να εισάγουν δεδομένα, να εκτελέσουν υπολογισμούς, να μεταβάλλουν τις τιμές των μεταβλητών και να τυπώσουν αποτελέσματα. Με τη χρήση των παραμέτρων αυτές τις τιμές μπορούν να τις μεταφέρουν και στα άλλα υποπρογράμματα. Αντίθετα η λειτουργία των συναρτήσεων είναι πιο περιορισμένη. Οι συναρτήσεις υπολογίζουν μόνο μία τιμή, αριθμητική, χαρακτήρα ή λογική και μόνο αυτήν επιστρέφουν στο υποπρόγραμμα που την κάλεσε». Επίσης, στη σελ. 213 του Βιβλίου Μαθητή αναφέρεται: «Ο μηχανισμός που επιτυγχάνεται αυτό, είναι ο εξής: Το κύριο πρόγραμμα πριν την κλήση της συνάρτησης … όπου η τιμή του εμβαδού εκχωρείται στη μεταβλητή Εμ».
Προκύπτει, επομένως, ότι μια συνάρτηση που αλλάζει το περιεχόμενο των παραμέτρων της δεν επιστρέφει τις αλλαγές αυτές στις πραγματικές παραμέτρους.
Νομίζω ότι υπήρχε κάποιο μπέρδεμα όταν αρχίσατε την κουβέντα λοιπόν.
Η συνάρτηση απ' όσο γνωρίζω- και εάν σε αυτό το πλαίσιο που παραθέτω αναφερόσασταν- Μπορεί να αποθηκεύσει τις τιμές άφοβα στον εαυτό τους.
Μπορείτε να την χρησιμοποιήσετε μέσα σε έκφραση και να κάνετε όλες τις εργασίες σας με αυτή. Στο τέλος, όταν γίνει η επιστροφή στο αρχικό πρόγραμμα, το αρχικό πρόγραμμα θα πάρει την τελική τιμή που έχει υπολογίσει αυτή η συνάρτηση.
Το πρόβλημα είναι στις διαδικασίες, εκεί απατείται η προσοχή. Οι διαδικασίες δέχονται κάποιες παραμέτρους, και τις επιστρέφουν μετά όλες στο κύριο πρόγραμμα. Οπότε, εάν εσείς εκτελέσετε πράξεις μέσα στην διαδικασία με τις δοθείσες από το κύριο πρόγραμμα παραμέτρους, εάν δηλαδή, τους αλλάξετε τις τιμές, τότε στο κύριο πρόγραμμα θα επιστραφούν οι τιμές τους αλλαγμένες.
Αυτό, θα επηρεάσει το πρόγραμμά σας μόνο εάν εσείς, στη συνέχεια του προγράμματος, χρειαστείτε εκείνες τις τιμές (όπως ήταν πριν την αλλαγή) και τελικά τις χρησιμοποιήσετε αλλαγμένες.
Παράδειγμα:
ΠΡΟΓΡΑΜΜΑ ΤΑΔΕ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α,Β,Γ,Δ
ΑΡΧΗ
ΔΙΑΒΑΣΕ Α,Β
ΚΑΛΕΣΕ ΑΞΙΟΛΟΓΗΣΗ(Α,Β,Γ)
ΑΝ Γ>=Α ΤΟΤΕ
ΓΡΑΨΕ Α
ΑΛΛΙΩΣ
ΓΡΑΨΕ Β
Τ_ΑΝ
ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΑΞΙΟΛΟΓΗΣΗ(Α,Β,Γ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α,Β,Γ,Δ
ΑΡΧΗ
Α<--Α+2
Β<--Β-3
Δ<--Α*Β-2
Γ<--Δ^2-(Α+Β)
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Εδω λοιπόν υπάρχουν λάθη.
Εμείς αυτό που θέλουμε είναι να φτιάξουμε μια διαδικασία που θα δέχετε τις τιμές Α, Β και μια άδεια τιμή Γ από το πρόγραμμα και μετά απο κάποιες πράξεις (που γίνονται με σκοπό την αλλαγή του Γ) να πάρουμε το Γ πίσω στο πρόγραμμα και να εμφανίσουμε το Α εάν το Γ είναι μεγαλύτερο ή ίσο του Α ή να εμφανίσουμε το Β εάν το Γ είναι μικρότερο του Α.
Εδώ τα λογικά λάθη είναι στο ότι εμείς ΔΕΝ ΘΕΛΑΜΕ ΝΑ ΑΛΛΑΞΟΥΝ ΟΙ ΑΡΧΙΚΕΣ ΤΙΜΕΣ ΤΟΥ Α,Β.
Θέλαμε να κανουμε σύγκριση του Γ με τις αρχικές τιμές του Α,Β.
Στη διαδικασία λοιπόν αλλάξαμε τους αριθμούς Α και Β και όταν η διαδικασία τους επέστρεψε αλλαγμένους στο κύριο πρόγραμμα, η σύγκριση που έγινε ήταν λανθασμένη.
Αυτό που θα έπρεπε να είχαμε κάνει στη διαδικασία, λοιπόν, θα ήταν να δώσουμε πρώτα πρώτα τις τιμές των Α,Β σε 2 άλλες μεταβλητές(π.χ. Μ,Ν) και μετά να χρησιμοποιήσουμε τις μεταβλητές εκείνες για όλες τις πράξεις μας μέσα στην διαδικασία. Οπότε οι τιμές των Α,Β θα επέστρεφαν αμετάβλητες στο κύριο πρόγραμμα μετά την πάροδο της διαδικασίας..
Αυτό το πρόβλημα δεν υπάρχει στην συνάρτηση (και αυτό επιβεβαιώνει αυτή η παράθεση από την εγκύκλιο).
Και αυτός είναι ένας από τους βασικότερους λόγους που ενώ μπορούμε να χρησιμοποιήσουμε διαδικασία για οποιαδήποτε ενέργεια, όταν θέλουμε να υπολογίσουμε μια μόνο τιμή, προτιμάμε να χρησιμοποιήσουμε συνάρτηση.
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
rafaa
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
dianechristy
Εκκολαπτόμενο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Rempeskes
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
και ακόμα ρωτάς τον κάθε πικραμένο για βοήθεια;
γκουγκλ ιτ!
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Rania.
Πολύ δραστήριο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Ξερει κανεις ποια ειναι η ιεραρχια των λογικων τελεστων??
Πρωτα παει το οχι, οι αλλες δεν ειναι ιεραρχικα δομημενες.
Αναλογα με τις παρενθεσεις.
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
dianechristy
Εκκολαπτόμενο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
tsabatman
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:Tα παρακάτω 76 μέλη διάβασαν αυτό το θέμα:
- akis_95
- Marios2020
- Hased Babis
- Mara2004
- Mary06
- Valous
- Ilovemycats27
- katia.m
- *
- Anna_kitty
- antonis97
- gewrgioyp
- *
- Panagiotis849
- Σωτηρία
- *
- marian
- ggl
- tsiobieman
- elenicar
- Scandal
- Δήμος56103
- eukleidhs1821
- *
- calliope
- *
- kwstaseL
- Eri0611
- liaiscool
- leo41
- *
- Georgekk
- Athens2002
- *
- Johnman97
- imkindalost
- *
- panagiotis G
- *
- Giovanni5
- *
- *
- marsenis
- thecrazycretan
- the purge
- *
- eri548
- *
- Ria99
- *
- JohnGreek
- lostpfg
- Vold
- Λαμπρινηη
- *
- *
- SlimShady
- tasost
- Vasilina93
- kvstas92
-
Φορτώνει...
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.