Αρχική ΑΕΠΠ - Δομές Δεδομένων Λειτουργικά Συστήματα Δίκτυα Υπολογιστών ΙΙ Βάσεις Δεδομένων Παιδαγωγικά - Διδακτική

Βασικές Έννοιες

Μεταβλητή - Έκφραση Δομή Ακολουθίας Δομή Επιλογής Δομή Επανάληψης

Αναπαράσταση Αλγορίθμων

Διάγραμμα Ροής

Πίνακας Τιμών

Πίνακες

Μονοδιάστατοι Δισδιάστατοι Πολυδιάστατοι Αναζήτηση Ταξινόμηση Στοίβα Ουρά

Υποπρογράμματα

Συναρτήσεις Διαδικασίες Σχετικά με τις παράμετρους

Δυναμικές Δομές

Λίστες Δέντρα Γράφοι

 Ιστορικό Πρόσφατες αλλαγές Εκτύπωση Αναζήτηση

Ιστορικό: DataStructures.Procedure-Theory

Απόκρυψη μικρών αλλαγών - Αλλαγές περιεχομένου

21-04-2008 (19:15) από 194.63.237.23 -
Πρόσθεση σειρών 89-132:
!! [[#ProcedurePassingTable]] Κλήση με Παράμετρο Πίνακα

''Ισχύει ότι και στην περίπτωση των συναρτήσεων. Δηλαδή:''

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

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

(:source lang=glossa linenum tabwidth=2:) [@
ΠΡΟΓΡΑΜΜΑ ΠΕΡΑΣΜΑ_ΠΙΝΑΚΑ_ΣΕ_ΔΙΑΔΙΚΑΣΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100], ΜΙΝ, ΜΑΧ, Ι
ΑΡΧΗ
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Α[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΚΑΛΕΣΕ ΜΙΝ_ΜΑΧ(Α, ΜΙΝ, ΜΑΧ)
ΓΡΑΨΕ ΜΙΝ, ΜΑΧ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΜΙΝ_ΜΑΧ(Τ, Ε, Μ)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Τ[100], Ι, Ε, Μ
ΑΡΧΗ
Ε <- Τ[1]
Μ <- Τ[1]
ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 100
ΑΝ Ε > Τ[Ι] ΤΟΤΕ
Ε <- Τ[Ι]
ΤΕΛΟΣ_ΑΝ
ΑΝ Μ < Τ[Ι] ΤΟΤΕ
Μ <- Τ[Ι]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
@]
13-02-2008 (18:53) από Aris -
Αλλαγή σειρών 3-8 από:
(:source lang=glossa linenum tabwidth=2 :) [@
ΔΙΑΔΙΚΑΣΙΑ ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ)
! ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ
ΑΡΧΗ
...
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
σε:
(:source lang=glossa linenum -getcode:) [@
ΔΙΑΔΙΚΑΣΙΑ ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ)
! ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ
ΑΡΧΗ
...
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Αλλαγή σειράς 15 από:
*** Τα ονόματα των μεταβλητών στη λίστα αυτή '''δεν''' χρειάζεται να είναι τα ίδια με εκείνα τα οποία θα χρησιμοποιεί το πρόγραμμα.
σε:
*** Τα ονόματα των μεταβλητών στη λίστα αυτή '''δεν''' χρειάζεται να είναι τα ίδια με εκείνα τα οποία θα χρησιμοποιεί το πρόγραμμα.
Αλλαγή σειρών 25-26 από:
** Η εντολή %blue%ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ %%προσδιορίζει το τέλος των εντολών της συγκεκριμένης διαδικασίας.
σε:
** Η εντολή %blue%ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ%% προσδιορίζει το τέλος των εντολών της συγκεκριμένης διαδικασίας.
Αλλαγή σειράς 33 από:
(:source lang=glossa linenum tabwidth=2 :) [@
σε:
[[#MIN_MAX]](:source lang=glossa linenum tabwidth=2 :) [@
Αλλαγή σειρών 61-62 από:
σε:
* Δεν υπάρχει κάποιος κανόνας που να προσδιορίζει τι είναι μεταβλητή εισόδου και τι εξόδου. Συνήθως, αν μία μεταβλητή της λίστας παραμέτρων αλλάξει τιμή μέσα στη διαδικασία, την ονομάζουμε μεταβλητή εξόδου γιατί αυτή η τιμή θα αντιγραφεί στην αντίστοιχη μεταβλητή στην εντολή κλήσης της διαδικασίας. Με το ίδιο σκεπτικό, οι μεταβλητές της λίστας παραμέτρων που δεν αλλάζουν τιμή, είναι οι μεταβλητές εισόδου.
Πρόσθεση σειρών 73-90:

%example% Παράδειγμα: Να γράψετε ένα πρόγραμμα το οποίο θα διαβάζει τρεις τιμές και θα εμφανίζει την μικρότερη και την μεγαλύτερη. Να γίνει κλήση της διαδικασίας ΜΙΝ_ΜΑΧ.

(:source lang=glossa linenum tabwidth=2 highlight='6':) [@
ΠΡΟΓΡΑΜΜΑ ΜΙΚΡΟΤΕΡΟ_ΜΕΓΑΛΥΤΕΡΟ
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Α, Β, Γ, ΜΙΚΡΗ, ΜΕΓΑΛΗ
ΑΡΧΗ
ΔΙΑΒΑΣΕ Α, Β, Γ
ΚΑΛΕΣΕ ΜΙΝ_ΜΑΧ(Α, Β, Γ, ΜΙΚΡΗ, ΜΕΓΑΛΗ)
ΓΡΑΨΕ "Η ΜΙΚΡΟΤΕΡΗ ΤΙΜΗ ΕΙΝΑΙ: ", ΜΙΚΡΗ, ", ΚΑΙ Η ΜΕΓΑΛΥΤΕΡΗ: ", ΜΕΓΑΛΗ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
@]

Στη γραμμή 6 βλέπουμε την κλήση της διαδικασίας. Οι μεταβλητές @@Α, Β, Γ@@ παίρνουν τιμές στη γραμμή 5 ενώ οι μεταβλητές @@ΜΙΚΡΗ@@ και @@ΜΕΓΑΛΗ@@ δεν παίρνουν τιμή. Οι τιμές των @@Α, Β, Γ@@ αντιγράφονται στις μεταβλητές @@Χ, Υ, Ζ@@ της διαδασίας. Η διαδικασία αποδίδει τιμές στις τοπικές μεταβλητές της @@ΜΙΝ@@ και @@ΜΑΧ@@. Οι τιμές αυτές, μετά το τέλος της διαδικασίας αντιγράφονται στις μεταβλητές @@ΜΙΚΡΗ@@ και @@ΜΕΓΑΛΗ@@.

----
[[DataStructures.Procedure-Exercises | Ασκήσεις]]
13-02-2008 (15:16) από Aris -
Διαγραφή σειράς 57:
* ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ: ΠΡΑΓΜΑΤΙΚΗ
Αλλαγή σειρών 59-63 από:
** Στον 2ο τρόπο βλέπουμε να δηλώνεται μία ακόμη μεταβλητή η ΜΙΝ η οποία είναι τοπική μόνο για την συνάρτηση.
* Στο τμήμα των εντολών προσέξτε ότι οι μεταβλητές Χ και Υ '''δεν''' παίρνουν αρχικές τιμές! Αυτό γίνεται διότι όταν κληθεί η συνάρτηση θα δώσει τιμές εκείνη τη στιγμή στις μεταβλητές.
* Στον 1ο τρόπο το όνομα της συνάρτησης εμφανίζεται σε δύο σημεία του υποπρογράμματος. Και στα δύο του αποδίδεται μία τιμή. Όταν η συνάρτηση τελειώσει θα της έχει αποδοθεί η μία από τις δύο τιμές.
* Στον 2ο τρόπο το όνομα της συνάρτησης εμφανίζεται μία μόνο φορά πριν το %blue% ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ%%. Είναι συνηθησμένη και λογική τακτική αυτή να είναι η τελευταία εντολή της συνάρτησης.
σε:
* Οι μεταβλητές δεν παίρνουν αρχική τιμή μέσα στο σώμα της διαδικασίας. Αυτό γίνεται γιατί οι μεταβλητές αρχικοποιούνται με τις τιμές που έχουν οι αντίστοιχες μεταβλητές στο σημείο του προγράμματος όπου καλείται η διαδικασία. Αυτό γίνεται πιο σαφές στην κλήση της διαδικασίας παρακάτω.
* Στις γραμμές 5, 6, 8, 14 και 17 βλέπουμε ότι οι μεταβλητές ΜΙΝ, ΜΑΧ παίρνουν κάποια τιμή. Αυτός είναι ο τρόπος με τον οποίο η διαδικασία επιστρέφει τιμές στο πρόγραμμα / υποπρόγραμμα που την κάλεσε. Οι μεταβλητές Χ, Υ και Ζ δεν άλλαξαν τιμή.
13-02-2008 (15:11) από Aris -
Αλλαγή σειρών 56-64 από:
σε:
* ΟΝΟΜΑ διαδικασίας: ΜΙΝ_ΜΑΧ
* ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ: Χ, Υ, Ζ, ΜΙΝ, ΜΑΧ
* ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ: ΠΡΑΓΜΑΤΙΚΗ
* ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ: Δηλώνονται οι μεταβλητές της λίστας παραμέτρων ως πραγματικές σύμφωνα με την εκφώνηση.
** Στον 2ο τρόπο βλέπουμε να δηλώνεται μία ακόμη μεταβλητή η ΜΙΝ η οποία είναι τοπική μόνο για την συνάρτηση.
* Στο τμήμα των εντολών προσέξτε ότι οι μεταβλητές Χ και Υ '''δεν''' παίρνουν αρχικές τιμές! Αυτό γίνεται διότι όταν κληθεί η συνάρτηση θα δώσει τιμές εκείνη τη στιγμή στις μεταβλητές.
* Στον 1ο τρόπο το όνομα της συνάρτησης εμφανίζεται σε δύο σημεία του υποπρογράμματος. Και στα δύο του αποδίδεται μία τιμή. Όταν η συνάρτηση τελειώσει θα της έχει αποδοθεί η μία από τις δύο τιμές.
* Στον 2ο τρόπο το όνομα της συνάρτησης εμφανίζεται μία μόνο φορά πριν το %blue% ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ%%. Είναι συνηθησμένη και λογική τακτική αυτή να είναι η τελευταία εντολή της συνάρτησης.
13-02-2008 (15:10) από Aris -
Πρόσθεση σειρών 55-56:
'''ΠΑΡΑΤΗΡΗΣΕΙΣ'''
13-02-2008 (14:18) από Aris -
Πρόσθεση σειράς 2:
13-02-2008 (13:56) από Aris -
Διαγραφή σειράς 1:
Αλλαγή σειρών 28-29 από:
%example% Παράδειγμα: Να γράψετε διαδικασία η οποία θα δέχεται
σε:
%example% Παράδειγμα: Να γράψετε διαδικασία η οποία θα δέχεται τρεις πραγματικούς αριθμούς και θα επιστρέφει την τιμή του μεγαλύτερου και την τιμή του μικρότερου.

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

(:source lang=glossa linenum tabwidth=2 :) [@
ΔΙΑΔΙΚΑΣΙΑ ΜΙΝ_ΜΑΧ(Χ, Υ, Ζ, ΜΙΝ, ΜΑΧ)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ, Ζ, ΜΙΝ, ΜΑΧ
ΑΡΧΗ
ΜΙΝ <- Χ
ΜΑΧ <- Υ
ΑΝ Υ < ΜΙΝ ΤΟΤΕ
ΜΙΝ <- Υ
ΤΕΛΟΣ_ΑΝ
ΑΝ Ζ < ΜΙΝ ΤΟΤΕ
ΜΙΝ <- Ζ
ΤΕΛΟΣ_ΑΝ
ΑΝ Υ > ΜΑΧ ΤΟΤΕ
ΜΑΧ <- Υ
ΤΕΛΟΣ_ΑΝ
ΑΝ Ζ > ΜΙΝ ΤΟΤΕ
ΜΑΧ <- Ζ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
@]
13-02-2008 (13:48) από 194.63.239.168 -
Αλλαγή σειρών 27-28 από:
'''ΣΗΜΑΝΤΙΚΗ ΠΑΡΑΤΗΡΗΣΗ:''' Η διαδικασία δεν επιστρέφει τιμή στο πρόγραμμα ή υποπρόγραμμα που την καλεί με τον τρόπο που το κάνουν οι [[DataStructures.Function-Theory | συναρτήσεις]]. Η επιστροφή ''τιμών'' γίνεται μέσω της λίστα παραμέτρων. Σωστά διαβάσατε: ''τιμών''. Μπορεί, δηλαδή, η διαδικασία να [[#ReturnValues | επιστρέψει όσες τιμές θέλουμε]].
σε:
'''ΣΗΜΑΝΤΙΚΗ ΠΑΡΑΤΗΡΗΣΗ:''' Η διαδικασία δεν επιστρέφει τιμή στο πρόγραμμα ή υποπρόγραμμα που την καλεί με τον τρόπο που το κάνουν οι [[DataStructures.Function-Theory | συναρτήσεις]]. Η επιστροφή ''τιμών'' γίνεται μέσω της λίστα παραμέτρων. Σωστά διαβάσατε: ''τιμών''. Μπορεί, δηλαδή, η διαδικασία να επιστρέψει όσες τιμές θέλουμε. Αυτό γίνεται δίνοντας τιμές σε κάποιες ή όλες τις μεταβλητές της λίστας παραμέτρων.

%example% Παράδειγμα: Να γράψετε διαδικασία η οποία θα δέχεται
Διαγραφή σειρών 40-43:

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

! [[#ReturnValues]]Επιστροφή τιμών
13-02-2008 (13:37) από 194.63.239.168 -
Πρόσθεση σειρών 31-41:
Οι διαδικασίες δεν μπορούν να εκτελεστούν από μόνες τους. Δεν αποτελούν εκτελέσιμα προγράμματα. Αποτελούν, όμως, αυτόνομα τμήματα προγράμματος (υποπρογράμματα) τα οποία μπορούν να κληθούν από προγράμματα ή άλλα υποπρογράμματα.

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

->@@ΚΑΛΕΣΕ ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ)@@

* ΚΑΛΕΣΕ είναι η εντολή που προηγείται για να περάσει η εκτέλεση του προγράμματος στη διαδικασία ΟΝΟΜΑ.
* ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ είναι μία λίστα μεταβλητών ή και σταθερών οι οποίες δίνονται στη διαδικασία για επεξεργασία.

Εδώ πρέπει να τονίσουμε ότι η ΜΕΤΑΒΛΗΤΗ πρέπει να είναι του ίδιου τύπου με τον τύπο που επιστρέφει η συνάρτηση. Δηλαδή, αν η συνάρτηση επιστρέφει πραγματική τιμή, η ΜΕΤΑΒΛΗΤΗ πρέπει να έχει δηλωθεί πραγματική.
13-02-2008 (13:22) από 194.63.239.168 -
Αλλαγή σειρών 1-31 από:
http://users.sch.gr/fergadis/images/under_construction.jpg
σε:
! Σύνταξη

(:source lang=glossa linenum tabwidth=2 :) [@
ΔΙΑΔΙΚΑΣΙΑ ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ)
! ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ
ΑΡΧΗ
...
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
@]

* Γραμμή 1
** Η εντολή %blue%ΔΙΑΔΙΚΑΣΙΑ %%δηλώνει ότι πρόκειται για διαδικασία.
** Όπου ΟΝΟΜΑ βάζουμε ένα οποιοδήποτε αποδεκτό όνομα της γλώσσας προγραμματισμού. Για το όνομα ισχύει ό,τι και για τις [[DataStructures/Base-Theory | μεταβλητές]].
** Η ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ είναι η λίστα των μεταβλητών που δέχεται η συνάρτηση κατά την κλήση της. Τις μεταβλητές αυτές χρησιμοποιεί για να κάνει τους κατάλληλους υπολογισμούς και να επιστρέψει το αποτέλεσμα αυτών.
*** Τα ονόματα των μεταβλητών στη λίστα αυτή '''δεν''' χρειάζεται να είναι τα ίδια με εκείνα τα οποία θα χρησιμοποιεί το πρόγραμμα.
*** Όταν παράμετρος είναι ένας πίνακας, στη λίστα γράφουμε μόνο το όνομά του.
*** Τα ονόματα των μεταβλητών χωρίζονται με κόμμα.
* Γραμμή 2
** Το τμήμα των δηλώσεων είναι όμοιο με εκείνο των προγραμμάτων. Υπάρχει, δηλαδή, το τμήμα ΣΤΑΘΕΡΕΣ και το τμήμα ΜΕΤΑΒΛΗΤΕΣ.
** Στην διαδικασία πρέπει '''οπωσδήποτε''' οι μεταβλητές που εμφανίζονται στη λίστα παραμέτρων να δηλωθούν στο τμήμα δηλώσεων.
** Ο τύπος που θα δηλωθεί εδώ για τις παραμέτρους πρέπει να είναι '''ίδιος''' με τον τύπο των μεταβλητών που έχουν δηλωθεί στο κυρίως πρόγραμμα.
* Γραμμή 3
** Κάθε διαδικασία ξεκινάει με την εντολή ΑΡΧΗ η οποία δηλώνει το σημείο εκκίνησης των εντολών που επεξεργάζονται τις παραμέτρους.
* Γραμμή 5
** Η εντολή %blue%ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ %%προσδιορίζει το τέλος των εντολών της συγκεκριμένης διαδικασίας.

'''ΣΗΜΑΝΤΙΚΗ ΠΑΡΑΤΗΡΗΣΗ:''' Η διαδικασία δεν επιστρέφει τιμή στο πρόγραμμα ή υποπρόγραμμα που την καλεί με τον τρόπο που το κάνουν οι [[DataStructures.Function-Theory | συναρτήσεις]]. Η επιστροφή ''τιμών'' γίνεται μέσω της λίστα παραμέτρων. Σωστά διαβάσατε: ''τιμών''. Μπορεί, δηλαδή, η διαδικασία να [[#ReturnValues | επιστρέψει όσες τιμές θέλουμε]].

! Κλήση Διαδικασίας

! [[#ReturnValues]]Επιστροφή τιμών
09-02-2008 (21:09) από Aris -
Πρόσθεση σειράς 1:
http://users.sch.gr/fergadis/images/under_construction.jpg

Τελευταία ενημέρωση: 21-04-2008 (19:15)

Copyright 2008 - Άρης Φεργάδης