Monday, May 24, 2010

Απλή FOR - Θεωρία

Εισαγωγή

Η for είναι μια απλοποιημένη εντολή επανάληψης με μετρητή.

  • μετρητής = παράμετρος (ακέραιος, χαρακτήρας ή boolean) που οριοθετεί το πλήθος των επαναλήψεων.
  • επανάληψη = οι εντολές μέσα στο block της for εκτελούνται όσες φορές χρειαστεί για να φτάσει ο μετρητής στο άνω ή κάτω όριο που έχουμε ορίσει.
  • απλοποιημένη = γιατί η τιμή του μετρητή δεν αλλάζει με ειδική εντολή (όπως στη while) αλλά πάντα αυξάνεται ή μειωνέται κατά ένα (με βήμα ένα δηλαδή).
Δείτε τις διαφορές ανάμεσα στις δύο υλοποιήσεις με for και while αντίστοιχα:

     for metritis := 1 to orio do
     begin
          writeln(metritis);
     end;

     metritis := 1;
     while metritis <= orio do
     begin
          writeln(metritis);
          metritis := metritis + 1;
     end;

  1. υλοποίηση με for σε 4 γραμμές και η υλοποίηση με while σε 6 γραμμές.
  2. στην while ορίζουμε/αρχικοποιούμε τον μετρητή πριν τον χρησιμοποιήσουμε ενώ στην for ορίζουμε και αρχικοποιούμε τον μετρητή στην αρχή της δομής.
  3. στην while πρέπει να τροποποιούμε τον μετρητή σε κάθε επανάληψη ενώ στην for αυτό γίνεται αυτόματα.


Η σημασία των λέξεων to και downto στη χρήση της for

Δεδομένα για την for έως τώρα:
  • ο μετρητής μπορεί να είναι ακέραιος, χαρακτήρας ή boolean
  • ο μετρητής αυξάνεται ή μειώνεται αυτόματα και σταθερά σε κάθε επανάληψη κατά ένα (βήμα ένα)
Αγνοώντας την περίπτωση που ο μετρητής είναι boolean, μπορούμε να έχουμε 4 πιθανά σενάρια σύνταξης μιας δομής for.

1. Αύξηση με βήμα ένα και μετρητή ακέραιο (to + integer)

    orio := 10;
    for metritis := 0 to orio do
    begin
        writeln(metritis);
    end;


2. Μείωση με βήμα ένα και μετρητή ακέραιο (downto + integer)

     orio := -10;
     for metritis := 0 downto orio do
     begin
          writeln(metritis);
     end;


3. Αύξηση με βήμα ένα και μετρητή χαρακτήρα (to + char)

     var metritis : char;
     for metritis := 'A' to 'Z' do
     begin
          writeln(metritis);
     end;


4. Μείωση με βήμα ένα και μετρητή χαρακτήρα (downto + char)

     var metritis : char;
     for metritis := 'Z' downto 'A' do
     begin
          writeln(metritis);
     end;

Αφού μελετήσετε τα παραπάνω 4 σενάρια απαντήστε με σχόλια (comments) ποιά θα είναι η έξοδος (output) κάθε σεναρίου.

0 comments:

Post a Comment