LinuxFanClub Wiki

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

User Tools

Site Tools


el:school:lessons:programmatismos:pascal:askisi11_procedures

Άσκηση 11 - procedures, for μέσα σε for

  • Πολλές φορές το πρόγραμμά μας μεγαλώνει πολύ και γίνεται περίπλοκο. Επίσης πολλές φορές έχει όμοια τμήματα.
  • Για να κάνουμε πιο ευανάγνωστο το πρόγραμμά μας και να μην ξαναγράφουμε πουθενά όμοιο κώδικα, μπορούμε να τοποθετήσουμε κώδικα μέσα σε υποπρογράμματα που ονομάζονται διαδικασίες. Μπορούμε στην συνέχεια να καλούμε τις διαδικασίες και θα εκτελείται ο κώδικας που περιέχουν.
  • Στην νέα Άσκηση θα δούμε
    • for μέσα σε for
    • procedures
  1. ΔΗΜΙΟΥΡΓΙΑ ΕΡΓΟΥ : Θα δημιουργήσουμε το νέο έργο sximata
    • Κάνουμε όμοιες ενέργειες όπως στην Άσκηση1, όπου hello τώρα ο τίτλος είναι sximata
  2. ΕΙΣΑΓΩΓΗ - for μέσα σε for
    • Θα φτιάξουμε το πρώτο μας σχήμα που θα είναι μια γραμμή με 8 αστεράκια
      ******
    • ΔΕΝ Θα την φτιάξουμε με
      writeln('********');
    1. Για ευελιξία, Θα κάνουμε μια επανάληψη 8 φορές την εντολή write('*'); και επειδή θέλουμε να αλλάξει γραμμή στο τέλος θα βάλουμε και μια writeln(' '); έξω από την επανάληψη.
      for i:=1 to 8 do
          write('*');
      writeln('');
       
    2. Αν θέλαμε να φτιάξουμε και μια 2η γραμμή από κάτω πάλι με 8 αστεράκια θα αντιγράφαμε τις 3 γραμμές κώδικα πάλι από κάτω. Αν θέλαμε 5 γραμμές από 8 αστεράκια; Μπορούμε να κάνουμε μια επανάληψη με μία for από 1 έως 5 (χρησιμοποιήστε μεταβλητή j). Προσοχή! Oι 3 γραμμές κώδικα που θα βάλετε μέσα στην εξωτερική for από 1 έως 5 είναι πολλές εντολές, θυμηθείτε τι βάζουμε όταν έχουμε πολλές εντολές. Προσέξτε επίσης την στοίχιση
    3. Σαν να φτιάξαμε ένα ορθογώνιο και είναι εύκολο να αλλάξουμε τώρα το μέγεθος. Για κάντε το 6 γραμμές x 3 στήλες.
  3. Procedure - Εισαγωγή στις διαδικασίες
    • Ωραία το φτιάξαμε αλλά δεν είναι εύκολο με μια ματιά να καταλάβουμε τι κάνουν οι 3 γραμμές μέσα στην εσωτερική επανάληψη. Θα τις πάρουμε λοιπόν και θα τις βάλουμε μέσα σε μία διαδικασία procedure.
    1. Μετά το τέλος του var και πριν από το BEGIN του κυρίως προγράμματος θα βάλουμε τον παρακάτω κώδικα.
      procedure grammi;
      var
         i : integer;
      begin
          for i:=1 to 3 do
              write('*');
          writeln('');
      end;
    2. Το κυρίως πρόγραμμά μας πλέον μπορεί να γίνει πολύ πιο απλό και κατανοητό
      for j:=1 to 6 do
          grammi; 
    3. Βλέπουμε ότι βάλαμε την μεταβλητή i μέσα στην procedure grammi γιατί πλέον χρησιμοποιείται εκεί και όχι στο κυρίως πρόγραμμα. Οπότε αφαιρέστε την από την δήλωση var του κυρίως προγράμματος αφήνοντας εκεί μόνο την μεταβλητή j.
    • Οπότε οι διαδικασίες λειτουργούν ως εξής:
      • Ξεχωρίζουμε ένα κομμάτι κώδικα και το βάζουμε μέσα σε μία procedure (διαδικασία).
      • Δίνουμε στην procedure ένα περιγραφικό όνομα (εδώ την ονομάσαμε grammi).
      • Στην συνέχεια στο κυρίως πρόγραμμα καλούμε την διαδικασία γράφοντας απλά το όνομά της.
  4. Τροποποίηση - Άσκηση epiloges
    • Πάμε να εφαρμόσουμε ότι μάθαμε σε μία από τις προηγούμενες ασκήσεις.
    1. Ανοίγουμε την άσκηση epiloges
    2. Βλέπουμε ότι κάνει 4 τουλάχιστον διαφορετικά πράγματα με μια case που εκτελεί 4 διαφορετικά κομμάτια κώδικα. Πάνω από το BEGIN του κυρίως προγράμματος, φτιάχνουμε μια νέα procedure diairesi_akeraiwn;
    3. Μέσα θα βάλουμε όλο τον κώδικα που είχε η επιλογή '1' της case. Δηλαδή
      procedure diairesi_akeraiwn;
      begin
          clrscr();
          writeln('**Διαίρεση Ακεραίων**');
          write('Δώσε 1ο αριθμό ');
          readln(akeraios1);
          write('Δώσε 2ο αριθμό ');
          readln(akeraios2);
          piliko:=akeraios1 div akeraios2;
          ypoloipo:=akeraios1 mod akeraios2;
          writeln('Το πηλίκο είναι ', piliko, ' και το υπόλοιπο είναι ', ypoloipo);  
      end;
    4. Τώρα η επιλογή '1' της case δεν χρειάζεται καν begin .. end, μπορεί να γίνει
      '1': diairesi_akeraiwn;
    5. Με όμοιο τρόπο φτιάξτε άλλες 3 procedures για τις 3 άλλες επιλογές της case. Δώστε ότι ονόματα θέλετε.
    • Δεν έγινε πιο οργανωμένο και ξεκάθαρο τι κάνει το πρόγραμμά μας;
    • Μόλις ξεπεράσουμε ένα όριο π.χ. 100 γραμμών κώδικα είναι αναγκαίο να μπουν κομμάτια του σε διαδικασίες. Αλλιώς δεν μπορούμε να το μεγαλώσουμε άλλο χωρίς να χαθούμε στον κώδικά του
    • Ακόμα και μικρά κομμάτια κώδικα 3-10 γραμμών, αν κάνουν κάτι συγκεκριμένο μπορούν να μπουν σε διαδικασίες και να βελτιωθεί αισθητά η ανάγνωσή του. Αλλά η χρήση των διαδικασιών δεν σταματάει εκεί.

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

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