Διαγράμματα Ροής

Άσκηση 7
Να μετατραπεί ο ακόλουθος αλγόριθμος σε ισοδύναμο διάγραμμα ροής

Αλγόριθμος ΆσκσησηΔΡ7
  Σ <- 0
  Αρχή_επανάληψης
     Διάβασε x
     Όσο x > 0 επανάλαβε
        Εμφάνισε x
        x <- x - 3
        Σ <- Σ + x
     Τέλος_επανάληψης
  Μέχρις_ότου Σ > 200
Τέλος ΆσκησηΔΡ7

Λύση
Διάγραμμα Ροής, άσκηση 7

Άσκηση 8
Να μετατραπεί το επόμενο διάγραμμα ροής σε αλγόριθμο
Διάγραμμα Ροής, άσκηση 8

Λύση
Αυτό που συνήθως “μπερδεύει” σε μια μετατροπή ενός διαγράμματος ροής σε αλγόριθμο είναι οι συνθήκες (ρόμβοι). Άλλες φορές οι συνθήκες εννοούν μια εντολή «Αν» ενώ άλλες φορές μια εντολή επανάληψης. Μία καλή μέθοδος για να ελέγξουμε αν ένα διάγραμμα περιέχει δομή επανάληψης είναι να παρατηρήσουμε τα βέλη του διαγράμματος. Εάν τα βέλη γυρνάνε προς τα πίσω, (ή ανεβαίνουν προς τα επάνω) τότε το διάγραμμα περιέχει δομή επανάληψης. Σε διαφορετική περίπτωση δεν υπάρχει δομή επανάληψης.

Αλγόριθμος ΆσκσησηΔΡ8
  Διάβασε x
  Αν x < 50 τότε
     y <- 10
     Αν x < 10 τότε
        z <- y - x
     Αλλιώς
        z <- y + x
     Τέλος_αν
  Αλλιώς
     y <- 30
     z <- y - x
  Τέλος_αν
  Εμφάνισε y, z
Τέλος ΆσκησηΔΡ8

Άσκηση 9
Να μετατραπεί το επόμενο διάγραμμα ροής σε αλγόριθμο Διάγραμμα Ροής, άσκηση 9

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

Αλγόριθμος ΆσκσησηΔΡ9α
  S <- 0
  i <- 1
  Όσο i <= 10 επανάλαβε
     Διάβασε α
     S <- S + a
     i <- i + 1
  Τέλος_επανάληψης
  Εμφάνισε S
Τέλος ΆσκσησηΔΡ9α

Ωστόσο μελετώντας προσεκτικότερα τον αλγόριθμο μπορούμε να παρατηρήσουμε ότι η επανάληψη εξαρτάται από μία μεταβλητή (την i), η οποία γνωρίζουμε από ποια τιμή ξεκινάει (1), που φτάνει (10) και κατα πόσο αυξάνεται (1). Εναλλακτικά λοιπόν μπορούμε να έχουμε

Αλγόριθμος ΆσκησηΔΡ9β
  S <- 0
  Για i από 1 μέχρι 10
     Διάβασε α
     S <- S + a
  Τέλος_επανάληψης
  Εμφάνισε S
Τέλος ΆσκησηΔΡ9β