Μάθημα : ΠΛΗΡΟΦΟΡΙΚΗ Γ' ΛΥΚΕΙΟΥ

Κωδικός : D10101

D10101  -   ΔΑΒΙΤΗ ΜΑΓΔΑΛΗΝΗ

Μετατροπές από μια δομή επανάληψης σε μια άλλη

Περιγραφή

ΟΣΟ ... ΕΠΑΝΑΛΑΒΕ  σε ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ σε ΟΣΟ ... ΕΠΑΝΑΛΑΒΕ 

ΓΙΑ ΑΠΟ ΜΕΧΡΙ σε ΟΣΟ ... ΕΠΑΝΑΛΑΒΕ  και ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

ΟΣΟ ... ΕΠΑΝΑΛΑΒΕ  και ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ σε ΓΙΑ ΑΠΟ ΜΕΧΡΙ

Ερώτηση 1 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Κανόνες μετατροπής των δομών ΟΣΟ ... ΕΠΑΝΑΛΑΒΕ και ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

Μετατροπή ΟΣΟ  σε  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

 

 Αρχική επανάληψη ΟΣΟ

Μετατροπή σε ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

 εναλλακτικά

ΌΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ

            εντολές

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 


      

ΑΝ συνθήκη ΤΟΤΕ

     ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

            εντολές

     ΜΕΧΡΙΣ_ΟΤΟΥ  όχι συνθήκη         

ΤΕΛΟΣ_ΑΝ 

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

      ΑΝ συνθήκη ΤΟΤΕ

                εντολές

      ΤΕΛΟΣ_ΑΝ

ΜΕΧΡΙΣ_ΟΤΟΥ  όχι συνθήκη  

 

 

Μετατροπή ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ σε ΟΣΟ

 

 Αρχική ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

Μετατροπή σε ΟΣΟ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

            εντολές

ΜΕΧΡΙΣ_ΟΤΟΥ  συνθήκη        


      

εντολές

ΌΣΟ όχι συνθήκη ΕΠΑΝΑΛΑΒΕ

            εντολές

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 

Ασκήσεις για επίλυση

1. Να μετατραπεί το παρακάτω τμήμα αλγορίθμου ώστε να χρησιμοποιείται η δομή ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ.

Διάβασε α

ΌΣΟ α<>0 επανάλαβε

        Εμφάνισε α * 2

        Διάβασε α

Τέλος_επανάληψης

 

2. Να μετατραπεί το παρακάτω τμήμα αλγορίθμου ώστε να χρησιμοποιείται η δομή ΟΣΟ.

Διάβασε α

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

        Εμφάνισε α

        Διάβασε α

Μέχρις_ότου  α < 0

 

Ερώτηση 2 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Κανόνες μετατροπής της δομής ΓΙΑ ... ΑΠΟ ... ΜΕΧΡΙ

ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ

Στη δομή επανάληψης ΓΙΑ γίνονται ενέργειες που δεν αποτυπώνονται με τη μορφή ξεχωριστών εντολών όπως γίνεται στην ΟΣΟ και την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ. Είναι απαραίτητο να τις συμπεριλάβουμε κατά την μετατροπή της ΓΙΑ στις άλλες δύο δομές. Οι εντολές αυτές είναι:

  1. Εντολή για την αρχικοποίηση της μεταβλητής
  2. Σύνθεση της συνθήκης τερματισμού
  3. Εντολή αλλαγής τους βήματος

ΓΙΑ    μ     ΑΠΟ αρχ_τιμή    ΜΕΧΡΙ    τελ_τιμή    με_βήμα   β

           Εντολες

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ σε ΟΣΟ...ΕΠΑΝΑΛΑΒΕ όταν :

 β  >  0

            μ  <-  αρχ_τιμή

            ΌΣΟ μ <= τελ_τιμή επανάλαβε

                        Εντολές

                        μ <-  μ + β

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 β  <  0

            μ  <-  αρχ_τιμή

            ΌΣΟ μ >= τελ_τιμή επανάλαβε

                        Εντολές

                        μ  <-  μ + β

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 

ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ  σε ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

Μετατρέπουμε την ΓΙΑ σε ΌΣΟ και μετά την ΟΣΟ σε ΜΕΧΡΙΣ_ΟΤΟΥ.  Υπάρχουν επιπλέον έλεγχοι λόγω του  ότι η ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται τουλάχιστον μια φορά

β  >  0,  αρχ_τιμή <= τελ_τιμή

      μ  <-  αρχ_τιμή

      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

             Εντολές

             μ  <-  μ + β

       ΜΕΧΡΙΣ_ΟΤΟΥ   μ  >  τελ_τιμή

β  >  0, αρχ_τιμή >= τελ_τιμή

         μ  <-  αρχ_τιμή

         ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

               Εντολές

               μ  <-  μ + β

          ΜΕΧΡΙΣ_ΟΤΟΥ μ < τελ_τιμή

 

   

ΜΕΤΑΤΡΟΠΗ ΣΕ ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ

Οι μετατροπές αυτές είναι δυνατές μόνο όταν μπορεί να καθοριστεί με ακρίβεια ο αριθμός των επαναλήψεων. Αν ο συγκριτικός τελεστής στην Όσο περιλαμβάνει την ισότητα έχουμε:

β > 0,   αρχ_τιμή < τελ_τιμή

μ  <- αρχ_τιμή

ΌΣΟ μ <= τελ_τιμή επανάλαβε

            Εντολές

            μ   <-   μ + β

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

β < 0, αρχ_τιμή > τελ_τιμή

 

μ  <- αρχ_τιμή

ΌΣΟ μ >= τελ_τιμή επανάλαβε

            Εντολές

            μ  ß  μ + β

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ    μ     ΑΠΟ αρχ_τιμή    ΜΕΧΡΙ    τελ_τιμή    με_βήμα   β

           Εντολες

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

           

Αν  ο συγκριτικός τελεστής στην Όσο δεν περιλαμβάνει την ισότητα, η προηγούμενη μετατροπή μπορεί να είναι λάθος. Πρέπει να είμαστε προσεκτικοί στον καθορισμό του αριθμού των επαναλήψεων, που θα μας δώσει την τελική τιμή που θα χρησιμοποιηθεί στην Για. Σε κάθε περίπτωση είναι χρήσιμο να γίνεται επαλήθευση ελέγχοντας

  1. το πλήθος των επαναλήψεων,
  2. τη συμπεριφορά του αλγόριθμου την πρώτη και την τελευταία φορά της επανάληψης
  3. το περιεχόμενων των εμπλεκόμενων μεταβλητών μετα τη λήξη της επανάληψης.

για παράδειγμα :

Χ  <-   0

ΌΣΟ Χ < 10 ΕΠΑΝΑΛΑΒΕ

       Χ  <-  Χ+3

       ΓΡΑΨΕ Χ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑ Χ ΑΠΟ 3 ΜΕΧΡΙ 12 ΜΕ_ΒΗΜΑ 3

           ΓΡΑΨΕ Χ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Ερώτηση 3 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Να μετατρέψετε τα παρακάτω τμήματα αλγορίθμων έτσι, ώστε να χρησιμοποιείται η επαναληπτική δομή για…από…μέχρι.

1.

y←0
x←1
Όσο x< 35 επανάλαβε
     x←x+1
     y←y+x
Τέλος_επανάληψης

2.

y←-7
x←0
όσο y<>3 επανάλαβε
     x←x-2*y+4
     y←y+2
τέλος_επανάληψης

Ερώτηση 4 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Να μετατρέψετε τα παρακάτω τμήματα αλγορίθμου σε ισοδύναμη δομή επανάληψης Αρχή_επανάληψης ... μέχρις_ότου.

 

1.

S ←0
Διάβασε x
ΟΣΟ x > 0 ΕΠΑΝΑΛΑΒΕ
     S ←S + x
     Διάβασε x

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ S

2.

S ←0
x ←10
ΟΣΟ x > 0 ΕΠΑΝΑΛΑΒΕ
     S ←S + x
     x ←x-1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ S

Ερώτηση 5 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Να μετατρέψετε τα παρακάτω τμήματα αλγορίθμου σε ισοδύναμη δομή επανάληψης Όσο

 

1.

S ←0
Διάβασε x
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      S ←S + x
     Διάβασε x
ΜΕΧΡΙΣ_ΟΤΟΥ x <=0
ΓΡΑΨΕ S

2.

S ←0
x ←12
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
     S ←S + x
     x ←x-3
ΜΕΧΡΙΣ_ΟΤΟΥ x <=0
ΓΡΑΨΕ S

Ερώτηση 6 (Ελεύθερου Κειμένου — 15 βαθμοί) 

Να μετατρέψετε τα παρακάτω τμήματα αλγορίθμου κάνοντας χρήση της δομής επανάληψης Για ...από ... μέχρι

 

1.

i ←20
ΟΣΟ i <= 30 ΕΠΑΝΑΛΑΒΕ
     i ←i + 3
     ΔΙΑΒΑΣΕ x
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 

2.

i ←20
S ←0
ΟΣΟ i <= 30 ΕΠΑΝΑΛΑΒΕ
     i ←i + 2
     S ←S + i
     ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

 

3.

i ←20
S ←0
Κ ←1
ΟΣΟ i <= 30 ΕΠΑΝΑΛΑΒΕ

    i ←i + 4
    S ←S + i
    ΓΡΑΨΕ i
    i ←i + 2
    Κ ←Κ + i
    ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Ερώτηση 7 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Να μετατρέψετε τα παρακάτω τμήματα αλγορίθμου σε ισοδύναμη δομή επανάληψης Για ... από ... μέχρι και Αρχή_επανάληψης ... μέχρις_ότου.

 

α ← 8
Όσο α > 0 επανάλαβε
      α ← α – 1
     Εκτύπωσε α
Τέλος_επανάληψης

Y ← 2
X← 1
Όσο X<=25 Επανάλαβε
     Υ← Χ+4
     Χ← Χ+3
     Ζ← Υ+Χ^2
Τέλος_επανάληψης
Εμφάνισε Ζ

Ερώτηση 8 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Να μετατρέψετε την παρακάτω δομή στις άλλες δυο δομές επανάληψης, αν είναι εφικτό.

 

Α.  α ← 0

  Για i από 100 μέχρι 1 με_βήμα –2

    α ← α + 2 ^ i

    Εκτύπωσε α

  Τέλος_επανάληψης

 

 

Β.   α ← 0       

  i ← 1

  Αρχή_επανάληψης

    α ← α + i ^ 2

    i ← i + 2

  Μέχρις_ότου i div 7 > 5

  Εμφάνισε α

Ερώτηση 9 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Να δημιουργήσετε κωδικοποίηση που έχει την ίδια έξοδο με τις παραπάνω εντολές με :

 

Α. τη δομή επανάληψης Για

    S ← 0

    i ← 5

    Όσο (i > 1) επανάλαβε 

        S ← S + i

        i ← i – 1

        Εμφάνισε i

    Τέλος_επανάληψης

    Εμφάνισε S

Β. τη δομή επανάληψης Όσο

  Διάβασε Χ

  α ← 30

  Αρχή_επανάληψης

    α ← α + α div 6

    Εκτύπωσε α

  Μέχρις_ότου (α > Χ)

 

Ερώτηση 10 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Δίνονται τα παρακάνω τμήματα αλγορίθμου. Να δημιουργήσετε κωδικοποίηση που θα υλοποιεί τις παραπάνω εντολές με τη χρήση της δομής Όσο...επανάλαβε ή Αρχή_επανάληψης

 

Α.

    π ← 0

    λ ← 0

    Αρχή_επανάληψης

        Διάβασε Χ

        λ ← λ + Χ

        π ← π + 1

    Μέχρις_ότου λ > 100 ή π = 5 ή Χ = 0

    Εμφάνισε λ, π

Β.   

    Χ ← 2

    C ← 5

    Όσο C > 0 επανάλαβε

        X ← X + 9 

        C ← C div 2

        X ← X + C

    Τέλος_επανάληψης

Ερώτηση 11 (Ελεύθερου Κειμένου — 5 βαθμοί) 

Ξαναγράψτε τον παρακάτω αλγόριθμο ώστε να δίνει το ίδιο αποτέλεσμα με τις παρακάτω εντολές, χρησιμοποιώντας μόνο τη δομή Για;

 

    α ← 7

    Όσο α >= 1 επανάλαβε

        β ← α

        Αρχή_επανάληψης

            Εμφάνισε β

            β ← β – 1

        Μέχρις_ότου β = 0

        α ← α – 2

    Τέλος_επανάληψης

Ερώτηση 12 (Ελεύθερου Κειμένου — 10 βαθμοί) 

Να γράψετε πρόγραμμα με τη δομή Όσο και τη δομή Αρχή_επανάληψης, το οποίο :

 

  1. θα διαβάζει αριθμούς αγνώστου πλήθους και
  2. θα εκτυπώνει το μέσο όρο των θετικών

Η επαναληπτική διαδικασία να τερματίζεται όταν δοθεί ο αριθμός 0. Σε περίπτωση που δεν δοθεί κανένας θετικός αριθμός θα εμφανίζεται ανάλογο μήνυμα.