ΚΕΦΑΛΑΙΟ 12
ΔΙΑΔΙΚΑΣΙΕΣ (PROCEDURE)
Διαδικασία ονομάζετε μια ομάδα εντολών με ή χωρίς, παραμέτρους η εκτέλεση της οποίας προκαλείται μέσω μιας κλήσης διαδικασίας
Παράδειγμα
1 (Διαδικασία χωρίς παραμέτρους)
Μέσα στο πρόγραμμα μας με όνομα pros01 έχουμε δημιουργήσει μια διαδικασία με όνομα grapes. Η διαδικασία τυπώνει στην οθόνη την φράση «Γράφω μια φράση». Την διαδικασία την καλούμε μέσα στο κυρίως πρόγραμμα με το όνομα της grapes.
Program pros01;
{Ορίζουμε την διαδικασία χωρίς είσοδο}
procedure grapse;
begin
writeln('Γράφω μια φράση');
end;
BEGIN
grapse; {Καλούμε την διαδικασία χωρίς παραμέτρους}
END.
![]()
Παράδειγμα
2 (Διαδικασία με μια παράμετρο)
Μέσα στο πρόγραμμα μας με όνομα pros02 έχουμε δημιουργήσει μια διαδικασία με όνομα grapes. Η διαδικασία τυπώνει στην οθόνη την φράση «Γράφω τον αριθμό 10». Την διαδικασία την καλούμε μέσα στο κυρίως πρόγραμμα με το όνομα της grapes και με παράμετρο τον αριθμό 10 δηλαδή grapes(10);.
Program pros02;
{Ορίζουμε την διαδικασία με είσοδο το x}
procedure grapse (x:integer);
begin
writeln('Γράφω τον αριθμό ', x);
end;
BEGIN
grapes(10); {Καλούμε την διαδικασία με παράμετρο το 10}
END.
Καλώντας την διαδικασία grapes με παράμετρο το 10 το x θα αποκτήσει την τιμή 10.
![]()
Παράδειγμα
3 (Διαδικασία με μια παράμετρο)
Μέσα στο πρόγραμμα μας με όνομα pros03 έχουμε δημιουργήσει μια διαδικασία με όνομα grapes. Η διαδικασία τυπώνει στην οθόνη την φράση «Γράφω τον αριθμό x» όπου το x θα αποκτήσει τιμή ίση με την τιμή που θα δοθεί στην μεταβλητή y. Την διαδικασία την καλούμε μέσα στο κυρίως πρόγραμμα με το όνομα της grapes και με παράμετρο την μεταβλητή y δηλαδή grapes(y);.
Program pros03;
var y:integer;
{Ορίζουμε την διαδικασία με είσοδο το x}
procedure grapse (x:integer);
begin
writeln('Γράφω τον αριθμό ', x);
end;
BEGIN
write(Δώσε έναν αριθμό ');
readln(y);
grapes(y); {Καλούμε την διαδικασία με παράμετρο το y}
END.
Αρχικά μας ζητείτε να σώσουμε μια τιμή στην μεταβλητή y (Δώσε έναν αριθμό)
Καλώντας την διαδικασία grapes με παράμετρο το y το x θα αποκτήσει τιμή ίση με την τιμή που δώσαμε στην μεταβλητή y δηλαδή αν πληκτρολογήσουμε την τιμή 300 στην μεταβλητή y τότε το x θα γίνει ίσο με 300 και με την εκτέλεση της διαδικασίας θα τυπωθεί το μήνυμα ('Γράφω τον αριθμό 300).
![]()
Παράδειγμα
4 (Διαδικασία με δύο παραμέτρους)
Μέσα στο πρόγραμμα μας με όνομα pros04 έχουμε δημιουργήσει μια διαδικασία με όνομα grapes. Η διαδικασία τυπώνει στην οθόνη την φράση «Γράφω τον αριθμό x και την λέξη s» όπου το x θα αποκτήσει τιμή ίση με την τιμή που θα δοθεί στην μεταβλητή y και το s το x θα αποκτήσει τιμή ίση με την τιμή που θα δοθεί στην μεταβλητή z. Την διαδικασία την καλούμε μέσα στο κυρίως πρόγραμμα με το όνομα της grapes και με παραμέτρους τις μεταβλητές y και z δηλαδή grapes(y, z);.
Program pros04;
var y:integer;
z:string;
{Ορίζουμε την διαδικασία με είσοδο το x και το s}
procedure grapse (x:integer; s:string);
begin
writeln('Γράφω τον αριθμό ', x, ‘ και την λέξη ‘, s);
end;
BEGIN
write(Δώσε έναν αριθμό ');
readln(y);
write('Δώσε μια λέξη ');
readln(z);
grapes(y, z); {Καλούμε την διαδικασία με παραμέτρους το y και το z}
END.
Αρχικά μας ζητείτε να δώσουμε τιμή στην μεταβλητή y (Δώσε έναν αριθμό) και στην z (Δώσε μια λέξη)
Καλώντας την διαδικασία grapes με παράμετρο το y και το z τότε το x θα αποκτήσει τιμή ίση με την τιμή της y και το s τιμή ίση με της z δηλαδή αν y= 30 και z=’Πόρτα’ τότε το x = 30 και το s=’Πόρτα. Με την εκτέλεση της διαδικασίας θα τυπωθεί το μήνυμα ('Γράφω τον αριθμό 30 και την λέξη Πόρτα ).
![]()
Παράδειγμα
5 (Διαδικασία με δύο παραμέτρους Τιμών και Μεταβλητών)
Μέσα στο πρόγραμμα μας με όνομα pros05 έχουμε δημιουργήσει μια διαδικασία με όνομα grapes. Η διαδικασία τυπώνει στην οθόνη την φράση «Γράφω τον αριθμό x και την λέξη s» όπου το x θα αποκτήσει τιμή ίση με την τιμή που θα δοθεί στην μεταβλητή y και το s το x θα αποκτήσει τιμή ίση με την τιμή που θα δοθεί στην μεταβλητή z. Στην συνέχεια αυξάνουμε την τιμή της μεταβλητής x κατά 10. Την διαδικασία την καλούμε μέσα στο κυρίως πρόγραμμα με το όνομα της grapes και με παραμέτρους τις μεταβλητές y και z δηλαδή grapes(y, z);.
Program pros05;
var y:integer;
z:string;
{Ορίζουμε την διαδικασία με είσοδο το x και το s}
procedure grapse (var x:integer; s:string);
begin
writeln('Γράφω τον αριθμό ', x, ‘ και την λέξη ‘, s);
x:=x+10; {Αυξάνουμε την τιμή του x κατά 10}
end;
BEGIN
write(Δώσε έναν αριθμό ');
readln(y);
write('Δώσε μια λέξη ');
readln(z);
grapes(y, z); {Καλούμε την διαδικασία με παραμέτρους το y και το z}
writeln('Η νέα τιμή του y είναι ', y);
END.
Αρχικά μας ζητείτε να δώσουμε τιμή στην μεταβλητή y (Δώσε έναν αριθμό) και στην z (Δώσε μια λέξη)
Καλώντας την διαδικασία grapes με παράμετρο το y και το z τότε το x θα αποκτήσει τιμή ίση με την τιμή της y και το s τιμή ίση με της z δηλαδή αν y= 30 και z=’Πόρτα’ τότε το x = 30 και το s=’Πόρτα. Με την εκτέλεση της διαδικασίας θα τυπωθεί το μήνυμα ('Γράφω τον αριθμό 30 και την λέξη Πόρτα ). Στην συνέχεια αυξάνετε η τιμή της μεταβλητής x κατά 10 και γίνεται ίση με 40. Μέσα στο κυρίως πρόγραμμα τυπώνετε η τιμή της μεταβλητής y που είναι ίση με την νέα τιμή 40 της μεταβλητής x.
Στην Procedure grapes δηλώνουμε δύο παραμέτρους.
·
Η
παράμετρος x έχει μπροστά της την εντολή
var. Γι΄ αυτό τον λόγο η παράμετρος
x είναι Παράμετρος Μεταβλητών.
·
Η
παράμετρος s δεν έχει μπροστά της την
εντολή var. Γι΄ αυτό τον λόγο η παράμετρος
s είναι Παράμετρος Τιμών.
Η παράμετρος x επειδή έχει δηλωθεί ως παράμετρος μεταβλητών (έχει μπροστά το var) είναι μια μεταβλητή που την βλέπει και το κύριο πρόγραμμα μέσω της αντίστοιχης της μεταβλητής της y. Δηλαδή αλλαγές της τιμής της μεταβλητής x οδηγούν σε αντίστοιχες αλλαγές της τιμής της μεταβλητής y. Αν η x ήταν παράμετρος τιμών κάτι τέτοιο δεν θα συνέβαινε. Οι παράμετροι τιμών όπως η s είναι τοπικές δηλαδή τις γνωρίζει μόνο η διαδικασία grapes και όχι το κυρίως πρόγραμμα.