LinuxFanClub Wiki

Υπηρεσίες, Προγραμματισμός, Εκπαίδευση ..

User Tools

Site Tools


el:school:lessons:programmatismos:pascal:askisi12_procedures_parametroi_timi

Άσκηση 12 - procedures παράμετροι κατά τιμή

  • Στην προηγούμενη άσκηση είδαμε την χρήση διαδικασιών (procedures) για να κάνουμε το πρόγραμμά μας πιο ευανάγνωστο αλλά και να χρησιμοποιούμε ξανά τα όμοια τμήματά του.
  • Στην νέα Άσκηση θα δούμε
    • Παραμέτρους μέσα σε procedure
    • Ορισμό παραμέτρων κατά τιμή
  1. ΑΝΟΙΓΜΑ ΕΡΓΟΥ - Αν δεν είναι ήδη ανοιχτό, θα ανοίξουμε το υπάρχον έργο sximata και το αρχείο sximata.pas
  2. ΠΡΟΣΘΗΚΗ 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.
    1. Τώρα καλούμε από το κυρίως πρόγραμμα ως grammi(3) ή grammi(5) για να φτιάξει μία γραμμή με 3 ή με 5 αστεράκια. Κάντε τις παραπάνω αλλαγές στην procedure και καλέστε από το κυρίως πρόγραμμα σωστά ώστε να εμφανιστούν 8 αστεράκια.
    2. Αν τώρα θέλαμε μία γραμμή με +, δηλαδή ++++++++; Βάλτε ερωτηματικό ; μετά το mikos : integer και πριν κλείσει η παρένθεση προσθέστε μία νέα μεταβλητή έστω symbolo με τον τύπο της. Αντικαταστήστε το '*' με την μεταβλητή symbolo.
    3. Καλέστε τώρα ως grammi(8,'+'); από το κυρίως πρόγραμμα για να εμφανιστεί γραμμή με 8 +.
  3. ΠΡΟΣΘΗΚΗ 2
    • Έστω ότι θέλουμε να φτιάξουμε το παρακάτω τρίγωνο
      *
      **
      ***
      ****
      *****
    • Θα μπορούσαμε να φτιάξουμε τον παρακάτω κώδικα
      grammi(1,'*'); 
      grammi(2,'*');
      grammi(3,'*');
      grammi(4,'*');
      grammi(5,'*');
    • Όμως τι θα γινόταν αν θέλαμε ένα τρίγωνο με πλευρά 20 αστεράκια; Δεν είναι έξυπνος τρόπος, την στιγμή που γνωρίζουμε να φτιάχνουμε επαναλήψεις. Θέλουμε μια επανάληψη for j:=1 to 5; do και το μοναδικό που αλλάζει κάθε φορά στην εντολή είναι το μήκος της γραμμής που παίρνει τιμές από 1 έως 5. Υπάρχει κάτι που παίρνει τιμές από 1 έως 5;
    1. Μα και βέβαια είναι το j. Οπότε ο κώδικάς μας θα γίνει
      for j:=1 to 5; do
        grammi(j,'*');
    2. Αφού ο παραπάνω κώδικας φτιάχνει ένα τρίγωνο πάρτε τον και βάλτε τον σε μία νέα procedure trigono.
    3. Θα έχει 2 παραμέτρους pleura (που θα δίνετε το μήκος της πλευράς) και symbolo. Μην ξεχάσετε να μεταφέρετε και την μεταβλητή j μέσα στην διαδικασία trigono.
    4. Πως θα καλέσετε τώρα από το κυρίως πρόγραμμα;
  4. ΠΡΟΣΘΗΚΗ 3
    • Βλέπουμε λοιπόν ότι μπορούμε να έχουμε procedures που θα καλούνε άλλες procedures. Οπότε έχουμε πλέον δυνατότητα να φτιάξουμε γραμμές και τρίγωνο.
    1. Φτιάξτε μια νέα procedure tetragono που να φτιάχνει τετράγωνα. Θα μοιάζει με την trigono αλλά με μία αλλαγή μέσα στον κώδικά της.
    2. Εμφανίστε μία γραμμή με 10 -
    3. ένα τρίγωνο με 8 +
    4. και ένα τετράγωνο με 6 *
    5. Επίσης φτιάξτε μια νέα procedure trigono2 που να εμφανίζει ένα ανάποδο τρίγωνο με 5 + και καλέστε την σωστά από το κυρίως πρόγραμμα.
      +++++
      ++++
      +++
      ++
      +

* ΕΠΕΚΤΑΣΗ 1 / ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ

  • ΕΠΕΚΤΑΣΗ 2 / ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ
el/school/lessons/programmatismos/pascal/askisi12_procedures_parametroi_timi.txt · Last modified: Y/m/d H:i by vagk