Τρίτη 25 Μαρτίου 2014

ΜΕΤΑΤΡΟΠΗ ΣΥΝΑΡΤΗΣΗΣ ΣΕ ΔΙΑΔΙΚΑΣΙΑ ΚΑΙ ΚΑΤΑΡΓΗΣΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΟΣ

Δίνεται το παρακάτω πρόγραμμα και υποπρόγραμμα:
ΠΡΟΓΡΑΜΜΑ Άσκηση
ΜΕΤΑΒΛΗΤΕΣ
     ΑΚΕΡΑΙΕΣ: κ, λ
ΑΡΧΗ
  ΔΙΑΒΑΣΕ κ, λ
  ΑΝ Αξιολόγηση(κ, λ) >= κ ΤΟΤΕ
       ΓΡΑΨΕ κ
  ΑΛΛΙΩΣ
       ΓΡΑΨΕ λ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Άσκηση
!===============================
ΣΥΝΑΡΤΗΣΗ Αξιολόγηση(α, β): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
     ΑΚΕΡΑΙΕΣ: α, β, ω
ΑΡΧΗ
  α ← α + 2
  β ← β – 3
  ω ← α * β – 2
  Αξιολόγηση ← ω ^ 2 – (α + β)
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

1. Να γράψετε διαδικασία με όνομα ΔΙΑΔ1 που να υλοποιεί τις ίδιες λειτουργίες με τη συνάρτηση Αξιολόγηση.
2. Να παρουσιάσετε τη νέα μορφή του προγράμματος ώστε να επιτελεί τις ίδιες λειτουργίες με τη βοήθεια της διαδικασίας ΔΙΑΔ1.
3. Να μετατρέψετε το πρόγραμμα Άσκηση σε πρόγραμμα που δε χρησιμοποιεί υποπρόγραμμα.


ΛΥΣΗ:
1,2)
ΠΡΟΓΡΑΜΜΑ Άσκηση
ΜΕΤΑΒΛΗΤΕΣ
     ΑΚΕΡΑΙΕΣ: κ, λ,Αξιολόγηση
ΑΡΧΗ
  ΔΙΑΒΑΣΕ κ, λ
  ΚΑΛΕΣΕ ΔΙΑΔ1 (κ,λ,Αξιολόγηση)     ! η παράμετρος που θα φέρει πίσω την τιμή
  ΑΝ Αξιολόγηση >= κ ΤΟΤΕ
       ΓΡΑΨΕ κ
  ΑΛΛΙΩΣ
       ΓΡΑΨΕ λ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Άσκηση
!===============================
ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ1(α, β, γ)               ! η τυπική της Αξιολόγηση
ΜΕΤΑΒΛΗΤΕΣ
     ΑΚΕΡΑΙΕΣ: α, β, ω, γ, τοπ1, τοπ2
ΑΡΧΗ
  τοπ1 ← α
  τοπ1 ← α + 2
  τοπ2 ← β
  τοπ2 ← β – 3
  ω ← τοπ1 * τοπ2 – 2
  γ ← ω ^ 2 – (τοπ1 + τοπ2)
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

!!!!! οι τοπ1 και τοπ2 δημιουργήθηκαν επειδή οι α,β άλλαζαν τιμή μέσα στη συνάρτηση...η συνάρτηση όμως σε αντίθεση με τη διαδικασία δεν τις επέστρεφε....έτσι οι τοπ παίζουν το ρόλο των α,β και οι α,β επιστρέφουν αναλλοίωτες στο πρόγραμμα ως προς τις  τιμές τους...

3)
ΠΡΟΓΡΑΜΜΑ Άσκηση
ΜΕΤΑΒΛΗΤΕΣ
     ΑΚΕΡΑΙΕΣ: κ, λ, τοπ1, τοπ2, ω, Αξιολόγηση
ΑΡΧΗ
  ΔΙΑΒΑΣΕ κ, λ
  τοπ1 ← κ + 2
  τοπ2 ← λ - 3
  ω ← τοπ1 * τοπ2 - 2
  Αξιολόγηση ← ω ^ 2 - (τοπ1 + τοπ2)
  ΑΝ Αξιολόγηση >= κ ΤΟΤΕ
       ΓΡΑΨΕ κ
  ΑΛΛΙΩΣ
       ΓΡΑΨΕ λ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Άσκηση

!!!! όταν η συνάρτηση καλείται από εντολή κρατώ το όνομά της ως μεταβλητή....φέρνω πριν από την κλήση της κάθε της εντολή...
..επίσης, προσέχουμε όταν φέρνουμε τις εντολές ώστε αν κάποια από τις τυπικές παραμέτρους της συνάρτησης που καταργούμε άλλαζε τιμή σε αυτή να την "φορτώσουμε" σε νέα μεταβλητή ώστε να μην έχουμε πρόβλημα με αλλαγή της τιμής της...

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου