el:school:lessons:programmatismos:pascal:askisi12_procedures_parametroi_timi
Άσκηση 12 - procedures παράμετροι κατά τιμή
- Στην προηγούμενη άσκηση είδαμε την χρήση διαδικασιών (procedures) για να κάνουμε το πρόγραμμά μας πιο ευανάγνωστο αλλά και να χρησιμοποιούμε ξανά τα όμοια τμήματά του.
- Στην νέα Άσκηση θα δούμε
- Παραμέτρους μέσα σε procedure
- Ορισμό παραμέτρων κατά τιμή
- ΑΝΟΙΓΜΑ ΕΡΓΟΥ - Αν δεν είναι ήδη ανοιχτό, θα ανοίξουμε το υπάρχον έργο 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
- Βλέπουμε λοιπόν ότι μπορούμε να έχουμε procedures που θα καλούνε άλλες procedures. Οπότε έχουμε πλέον δυνατότητα να φτιάξουμε γραμμές και τρίγωνο.
- Φτιάξτε μια νέα procedure tetragono που να φτιάχνει τετράγωνα. Θα μοιάζει με την trigono αλλά με μία αλλαγή μέσα στον κώδικά της.
- Εμφανίστε μία γραμμή με 10 -
- ένα τρίγωνο με 8 +
- και ένα τετράγωνο με 6 *****
- Επίσης φτιάξτε μια νέα procedure trigono2 που να εμφανίζει ένα ανάποδο τρίγωνο με 5 + και καλέστε την σωστά από το κυρίως πρόγραμμα.
+++++ ++++ +++ ++ +
* ΕΠΕΚΤΑΣΗ 1 / ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ
- ΕΠΕΚΤΑΣΗ 2 / ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ
el/school/lessons/programmatismos/pascal/askisi12_procedures_parametroi_timi.txt · Last modified: by vagk
