el:school:lessons:programmatismos:pascal:askisi12_procedures_parametroi_timi
Άσκηση 12 - procedures παράμετροι κατά τιμή
ΑΝΟΙΓΜΑ ΕΡΓΟΥ - Αν δεν είναι ήδη ανοιχτό, θα ανοίξουμε το υπάρχον έργο sximata και το αρχείο sximata.pas
ΠΡΟΣΘΗΚΗ 1
Η διαδικασία grammi φτιάχνει μία γραμμή με 3 αστεράκια. Τι θα γινόταν εάν θέλαμε 5 αστεράκια και θέλαμε να κρατήσουμε και την διαδικασία που φτιάχνει 3 αστεράκια;
Θα αναγκαζόμασταν να φτιάξουμε μια 2η διαδικασία grammi2 με ίδιο κώδικα και μοναδική αλλαγή for i:=1 to 5; do
Αντί να φτιάχνουμε πολλές διαδικασίες που διαφέρουν λίγο, μπορούμε να βάλουμε την διαφορά τους σε μία μεταβλητή ως εξής:
procedure grammi(mikos : integer);
var
i : integer;
begin
for i:=1 to mikos do
write('*');
writeln('');
end;
Στην θέση του 3 ή του 5 βάλαμε την μεταβλητή mikos.
Τώρα καλούμε από το κυρίως πρόγραμμα ως grammi(3) ή grammi(5) για να φτιάξει μία γραμμή με 3 ή με 5 αστεράκια. Κάντε τις παραπάνω αλλαγές στην procedure και καλέστε από το κυρίως πρόγραμμα σωστά ώστε να εμφανιστούν 8 αστεράκια.
Αν τώρα θέλαμε μία γραμμή με +, δηλαδή ++++++++; Βάλτε ερωτηματικό ; μετά το mikos : integer και πριν κλείσει η παρένθεση προσθέστε μία νέα μεταβλητή έστω symbolo με τον τύπο της. Αντικαταστήστε το '*' με την μεταβλητή symbolo.
Καλέστε τώρα ως grammi(8,'+'); από το κυρίως πρόγραμμα για να εμφανιστεί γραμμή με 8 +.
ΠΡΟΣΘΗΚΗ 2
Έστω ότι θέλουμε να φτιάξουμε το παρακάτω τρίγωνο
*
**
***
****
*****
Θα μπορούσαμε να φτιάξουμε τον παρακάτω κώδικα
grammi(1,'*');
grammi(2,'*');
grammi(3,'*');
grammi(4,'*');
grammi(5,'*');
Όμως τι θα γινόταν αν θέλαμε ένα τρίγωνο με πλευρά 20 αστεράκια; Δεν είναι έξυπνος τρόπος, την στιγμή που γνωρίζουμε να φτιάχνουμε επαναλήψεις. Θέλουμε μια επανάληψη for j:=1 to 5; do και το μοναδικό που αλλάζει κάθε φορά στην εντολή είναι το μήκος της γραμμής που παίρνει τιμές από 1 έως 5. Υπάρχει κάτι που παίρνει τιμές από 1 έως 5;
Μα και βέβαια είναι το
j. Οπότε ο κώδικάς μας θα γίνει
for j:=1 to 5; do
grammi(j,'*');
Αφού ο παραπάνω κώδικας φτιάχνει ένα τρίγωνο πάρτε τον και βάλτε τον σε μία νέα procedure trigono.
Θα έχει 2 παραμέτρους pleura (που θα δίνετε το μήκος της πλευράς) και symbolo. Μην ξεχάσετε να μεταφέρετε και την μεταβλητή j μέσα στην διαδικασία trigono.
Πως θα καλέσετε τώρα από το κυρίως πρόγραμμα;
ΠΡΟΣΘΗΚΗ 3
Φτιάξτε μια νέα procedure tetragono που να φτιάχνει τετράγωνα. Θα μοιάζει με την trigono αλλά με μία αλλαγή μέσα στον κώδικά της.
Εμφανίστε μία γραμμή με 10 -
ένα τρίγωνο με 8 +
και ένα τετράγωνο με 6 *
Επίσης φτιάξτε μια νέα procedure
trigono2 που να εμφανίζει ένα ανάποδο τρίγωνο με
5 + και καλέστε την σωστά από το κυρίως πρόγραμμα.
+++++
++++
+++
++
+
* ΕΠΕΚΤΑΣΗ 1 / ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ
-
el/school/lessons/programmatismos/pascal/askisi12_procedures_parametroi_timi.txt · Last modified: Y/m/d H:i by vagk