DataStructures: Function-Theory

Σύνταξη

  1. ΣΥΝΑΡΤΗΣΗ ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ): ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ
  2. ! ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ
  3. ΑΡΧΗ
  4.   ...
  5.   ΟΝΟΜΑ <- ΕΚΦΡΑΣΗ
  6.   ...
  7. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Παράδειγμα. Να φτιάξετε μία συνάρτηση η οποία θα δέχεται δύο πραγματικές τιμές και θα επιστρέφει την μικρότερη.

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

Θα δείξουμε δύο τρόπους υλοποίησης για να θιγούν όλες οι παρατηρήσεις που έχουν γίνει παραπάνω.

1ος τρόπος
  1. ΣΥΝΑΡΤΗΣΗ ΕΛΑΧΙΣΤΟ(Χ, Υ): ΠΡΑΓΜΑΤΙΚΗ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ
  4. ΑΡΧΗ
  5.   ΑΝ Χ < Υ ΤΟΤΕ
  6.     ΕΛΑΧΙΣΤΟ <- Χ
  7.   ΑΛΛΙΩΣ
  8.     ΕΛΑΧΙΣΤΟ <- Υ
  9.   ΤΕΛΟΣ_ΑΝ
  10. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
2ος τρόπος
  1. ΣΥΝΑΡΤΗΣΗ ΕΛΑΧΙΣΤΟ(Χ, Υ): ΠΡΑΓΜΑΤΙΚΗ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ, ΜΙΝ
  4. ΑΡΧΗ
  5.   ΑΝ Χ < Υ ΤΟΤΕ
  6.     ΜΙΝ <- Χ
  7.   ΑΛΛΙΩΣ
  8.     ΜΙΝ <- Υ
  9.   ΤΕΛΟΣ_ΑΝ
  10.   ΕΛΑΧΙΣΤΟ <- ΜΙΝ
  11. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΠΑΡΑΤΗΡΗΣΕΙΣ:

Κλήση Συνάρτησης

Οι συναρτήσεις δεν μπορούν να εκτελεστούν από μόνες τους. Δεν αποτελούν εκτελέσιμα προγράμματα. Αποτελούν, όμως, αυτόνομα τμήματα προγράμματος (υποπρογράμματα) τα οποία μπορούν να κληθούν από προγράμματα ή άλλα υποπρογράμματα για να επιστρέψουν κάποια τιμή ανάλογα με τις ανάγκες του προγράμματος.

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

ΜΕΤΑΒΛΗΤΗ <- ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ)

Εδώ πρέπει να τονίσουμε ότι η ΜΕΤΑΒΛΗΤΗ πρέπει να είναι του ίδιου τύπου με τον τύπο που επιστρέφει η συνάρτηση. Δηλαδή, αν η συνάρτηση επιστρέφει πραγματική τιμή, η ΜΕΤΑΒΛΗΤΗ πρέπει να έχει δηλωθεί πραγματική.

Παράδειγμα: Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει δύο πραγματικές τιμές και να εμφανίζει την μικρότερη κάνοντας χρήση της συνάρτησης ΕΛΑΧΙΣΤΟ.

  1. ΠΡΟΓΡΑΜΜΑ ΕΜΦΑΝΙΣΗ_ΕΛΑΧΙΣΤΟΥ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΠΡΑΓΜΑΤΙΚΕΣ: Α, Β, ΜΙΝ
  4. ΑΡΧΗ
  5.   ΔΙΑΒΑΣΕ Α, Β
  6.   ΜΙΝ <- ΕΛΑΧΙΣΤΟ(Α, Β)
  7.   ΓΡΑΨΕ "Η ΜΙΚΡΟΤΕΡΗ ΤΙΜΗ ΕΙΝΑΙ Η: ", ΜΙΝ
  8. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Στη γραμμή 6 βλέπουμε την κλήση της συνάρτησης. Οι μεταβλητές Α, Β έχουν πάρει τιμές και δίνονται ως παράμετροι στην συνάρτηση. Εκείνη με τη σειρά της θα υπολογίσει την ελάχιστη και το αποτέλεσμα αποδίδεται στην μεταβλητή ΜΙΝ.

Κλήση με Παράμετρο Πίνακα

Όταν θέλουμε να περάσουμε ένα πίνακα ως παράμετρο τότε προσέχουμε τα εξής:

Στο παρακάτω παράδειγμα δίνονται:

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

  1. ΠΡΟΓΡΑΜΜΑ ΠΕΡΑΣΜΑ_ΠΙΝΑΚΑ_ΣΕ_ΣΥΝΑΡΤΗΣΗ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΑΚΕΡΑΙΕΣ: Α[100], ΜΙΝ, Ι
  4. ΑΡΧΗ
  5.   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 100
  6.     ΔΙΑΒΑΣΕ Α[Ι]
  7.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  8.   ΜΙΝ <- ΕΛΑΧΙΣΤΟ(Α)
  9.   ΓΡΑΨΕ ΜΙΝ
  10. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  11.  
  12. ΣΥΝΑΡΤΗΣΗ ΕΛΑΧΙΣΤΟ(Τ): ΠΡΑΓΜΑΤΙΚΗ
  13. ΜΕΤΑΒΛΗΤΕΣ
  14.   ΑΚΕΡΑΙΕΣ: Τ[100], Ι
  15. ΑΡΧΗ
  16.   ΕΛΑΧΙΣΤΟ <- Τ[1]
  17.   ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 100
  18.     ΑΝ ΕΛΑΧΙΣΤΟ > Τ[Ι] ΤΟΤΕ
  19.       ΕΛΑΧΙΣΤΟ <- Τ[Ι]
  20.     ΤΕΛΟΣ_ΑΝ
  21.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  22. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Εφαρμογή: Αριθμητικά Ολοκληρώματα

Πρόβλημα

Γράψτε ένα πρόγραμμα που να υπολογίζει κατά προσέγγιση την περιοχή κάτω από το γράφημα μιας μη αρνητικής συνάρτησης y=f(x) από x=a έως x=b, εξάγοντας έτσι μια τιμή κατά προσέγγιση για το ολοκλήρωμα

Λύση

Μια συνήθης μέθοδο για τον υπολογισμό του ολοκληρώματος αυτού είναι να διαιρεθεί το διάστημα [a, b]] σε n υποδεέστερα διαστήματα, καθένα με μήκος x=(b-a)/n, χρησιμοποιώντας n-1 ισομερώς τοποθετημένα σημεία x1, x2,..., xn-1. Ο εντοπισμός των αντίστοιχων σημείων στην καμπύλη και η σύνδεση διαδοχικών σημείων με χρήση γραμμών σχηματίζει τραπεζοειδή:

Το άθροισμα των περιοχών των τραπεζοειδών δίνει κατά προσέγγιση την περιοχή κάτω από το γράφημα της συνάρτησης. Οι βάσεις για το πρώτο τραπεζοειδές είναι: y0=f(a) και y1=f(x1), άρα, η περιοχή του είναι

Όμοια, η περιοχή του δεύτερου τραπεζοειδούς είναι

όπου y2=f(x2) κ.ο.κ. Τα άθροισμα όλων των περιοχών για n τραπεζοειδή είναι

όπου y0, y1, ..., yn οι τιμές της συνάρτησης f στα σημεία a, x1, ..., xn-1, b. Η παραπάνω σχέση μπορεί να γραφεί ως

το οποίο δίνει κατά προσέγγιση το άθροισμα των περιοχών κάτω από το γράφημα.

Αλγόριθμος

Θα φτιάξουμε έναν αλγόριθμο για τον υπολογισμό κατά προσέγγιση του ολοκληρώματος μιας συνάρτησης f σε ένα διάστημα [Α, Β] με τη χρήση της μεθόδου των τραπεζοειδών για Ν υποδιαιρέσεις του διαστήματος με βάση τον παραπάνω τύπο.

Θα πρέπει, λοιπόν, να υπολογίσουμε τα: Δx, (y0+yn)/2, y1 + ..., yn. Έχουμε:

Το αποτέλεσμα είναι: Δx * ((f(a)+f(b))/2 + Σ)

Το παράδειγμα που ακολουθεί υπολογίζει το ολοκλήρωμα:

Τα όρια a και b τα δίνει ο χρήστης στο ΠΡΟΓΡΑΜΜΑ. Αυτό καλεί την συνάρτηση ΟΛΟΚΛΗΡΩΜΑ η οποία πραγματοποιεί την παραπάνω διαδικασία. Η συνάρτηση ΟΛΟΚΛΗΡΩΜΑ καλεί την συνάρτηση F η οποία έχει την έκφραση για την οποία υπολογίζεται το ολοκλήρωμα. Αν θέλουμε να αλλάξουμε συνάρτηση, αλλάζουμε την γραμμή F <- ... και βάζουμε την έκφραση.

  1. ΠΡΟΓΡΑΜΜΑ Αριθμητικό_Ολοκλήρωμα
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΑΚΕΡΑΙΕΣ: N
  4.   ΠΡΑΓΜΑΤΙΚΕΣ: A, B
  5. ΑΡΧΗ
  6.   ΓΡΑΨΕ 'Δώστε την αρχική, την τελική τιμή και το πλήθος των υποδιαιρέσεων:'
  7.   ΔΙΑΒΑΣΕ A, B, N
  8.  
  9.   ΓΡΑΨΕ 'Το αποτέλεσμα, κατά προσέγγιση για ', N, ' υποδιαιρέσεις είναι: ', ΟΛΟΚΛΗΡΩΜΑ(A, B, N)
  10. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  11.  
  12. ΣΥΝΑΡΤΗΣΗ ΟΛΟΚΛΗΡΩΜΑ(A, B, N): ΠΡΑΓΜΑΤΙΚΗ
  13. ΜΕΤΑΒΛΗΤΕΣ
  14.   ΑΚΕΡΑΙΕΣ: N, Ι
  15.   ΠΡΑΓΜΑΤΙΚΕΣ: A, B, Δx, X, Y, Σ
  16. ΑΡΧΗ
  17. ! Υπολογισμός του μήκους των υποδιαιρέσεων και αρχικοποίηση των μεταβλητών Χ και Σ    
  18.   Δx <- (B - A)/N
  19.   X <- A
  20.   Σ <- 0
  21.  
  22. ! Υπολογισμός του αθροίσματος  
  23.   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ N - 1
  24.     X <- X + Δx
  25.     Y <- F(X)
  26.     Σ <- Σ + Y
  27.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  28.  
  29.   ΟΛΟΚΛΗΡΩΜΑ <- Δx*((F(A) + F(B))/2 + Σ)
  30. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
  31.  
  32. ΣΥΝΑΡΤΗΣΗ F(X): ΠΡΑΓΜΑΤΙΚΗ
  33. ΜΕΤΑΒΛΗΤΕΣ
  34.   ΠΡΑΓΜΑΤΙΚΕΣ: X
  35. ΑΡΧΗ
  36.   F <- X^2 + 1
  37. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Ασκήσεις

Page last modified on 25-04-2008 (12:36)