Αρχική ΑΕΠΠ - Δομές Δεδομένων Λειτουργικά Συστήματα Δίκτυα Υπολογιστών ΙΙ Βάσεις Δεδομένων Παιδαγωγικά - Διδακτική

Βασικές Έννοιες

Μεταβλητή - Έκφραση Δομή Ακολουθίας Δομή Επιλογής Δομή Επανάληψης

Αναπαράσταση Αλγορίθμων

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

Πίνακας Τιμών

Πίνακες

Μονοδιάστατοι Δισδιάστατοι Πολυδιάστατοι Αναζήτηση Ταξινόμηση Στοίβα Ουρά

Υποπρογράμματα

Συναρτήσεις Διαδικασίες Σχετικά με τις παράμετρους

Δυναμικές Δομές

Λίστες Δέντρα Γράφοι

 Ιστορικό Πρόσφατες αλλαγές Εκτύπωση Αναζήτηση

Σύνταξη

  1. ΣΥΝΑΡΤΗΣΗ ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ): ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ
  2. ! ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ
  3. ΑΡΧΗ
  4.   ...
  5.   ΟΝΟΜΑ <- ΕΚΦΡΑΣΗ
  6.   ...
  7. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
  • Γραμμή 1
    • Η εντολή ΣΥΝΑΡΤΗΣΗ δηλώνει ότι πρόκειται για συνάρτηση.
    • Όπου ΟΝΟΜΑ βάζουμε ένα οποιοδήποτε αποδεκτό όνομα της γλώσσας προγραμματισμού. Για το όνομα ισχύει ό,τι και για τις μεταβλητές.
    • Η ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ είναι η λίστα των μεταβλητών που δέχεται η συνάρτηση κατά την κλήση της. Τις μεταβλητές αυτές χρησιμοποιεί για να κάνει τους κατάλληλους υπολογισμούς και να επιστρέψει το αποτέλεσμα αυτών.
      • Τα ονόματα των μεταβλητών στη λίστα αυτή δεν χρειάζεται να είναι τα ίδια με εκείνα τα οποία θα χρησιμοποιεί το πρόγραμμα.
      • Όταν παράμετρος είναι ένας πίνακας, στη λίστα γράφουμε μόνο το όνομά του.
      • Τα ονόματα των μεταβλητών χωρίζονται με κόμμα.
    • :ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ. Το όνομα της συνάρτησης μπορεί να θεωρηθεί ως ένας ειδικός τύπος μεταβλητής ο οποίος δέχεται παραμέτρους (τη λίστα παραμέτρων). Ως μεταβλητή το όνομα της συνάρτησης πρέπει να έχει έναν σαφώς ορισμένο τύπο. Αυτός ο τύπος δηλώνεται μετά τις άνω κάτω τελείες και μπορεί να είναι: ΑΚΕΡΑΙΑ, ΠΡΑΓΜΑΤΙΚΗ, ΧΑΡΑΚΤΗΡΑΣ, ΛΟΓΙΚΗ.
  • Γραμμή 2
    • Το τμήμα των δηλώσεων είναι όμοιο με εκείνο των προγραμμάτων. Υπάρχει, δηλαδή, το τμήμα ΣΤΑΘΕΡΕΣ και το τμήμα ΜΕΤΑΒΛΗΤΕΣ.
    • Στην συνάρτηση πρέπει οπωσδήποτε οι μεταβλητές που εμφανίζονται στη λίστα παραμέτρων να δηλωθούν στο τμήμα δηλώσεων.
    • Ο τύπος που θα δηλωθεί εδώ για τις παραμέτρους πρέπει να είναι ίδιος με τον τύπο των μεταβλητών που έχουν δηλωθεί στο κυρίως πρόγραμμα.
  • Γραμμή 3
    • Κάθε συνάρτηση ξεκινάει με την εντολή ΑΡΧΗ η οποία δηλώνει το σημείο εκκίνησης των εντολών που επεξεργάζονται τις παραμέτρους.
  • Γραμμή 5
    • Στις εντολές τις συνάρτησης πρέπει να εμφανίζεται τουλάχιστον μία φορά το όνομά της στο οποίο θα εκχωρείται το αποτέλεσμα μίας έκφρασης.
    • Το αποτέλεσμα της έκφρασης πρέπει να είναι του ίδιου τύπου με τον τύπο της συνάρτησης ο οποίος έχει δηλωθεί στην γραμμή 1.
  • Γραμμή 7
    • Η εντολή ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗ προσδιορίζει το τέλος των εντολών της συγκεκριμένης συνάρτησης.

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

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

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

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

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

  • ΟΝΟΜΑ συνάρτησης: ΕΛΑΧΙΣΤΟ
  • ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ: Χ, Υ
  • ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ: ΠΡΑΓΜΑΤΙΚΗ
  • ΤΜΗΜΑ ΔΗΛΩΣΕΩΝ: Δηλώνονται οι μεταβλητές της λίστας παραμέτρων ως πραγματικές σύμφωνα με την εκφώνηση.
    • Στον 2ο τρόπο βλέπουμε να δηλώνεται μία ακόμη μεταβλητή η ΜΙΝ η οποία είναι τοπική μόνο για την συνάρτηση.
  • Στο τμήμα των εντολών προσέξτε ότι οι μεταβλητές Χ και Υ δεν παίρνουν αρχικές τιμές! Αυτό γίνεται διότι όταν κληθεί η συνάρτηση θα δώσει τιμές εκείνη τη στιγμή στις μεταβλητές.
  • Στον 1ο τρόπο το όνομα της συνάρτησης εμφανίζεται σε δύο σημεία του υποπρογράμματος. Και στα δύο του αποδίδεται μία τιμή. Όταν η συνάρτηση τελειώσει θα της έχει αποδοθεί η μία από τις δύο τιμές.
  • Στον 2ο τρόπο το όνομα της συνάρτησης εμφανίζεται μία μόνο φορά πριν το ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ. Είναι συνηθησμένη και λογική τακτική αυτή να είναι η τελευταία εντολή της συνάρτησης.

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

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

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

ΜΕΤΑΒΛΗΤΗ <- ΟΝΟΜΑ(ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ)
  • Όπου ΜΕΤΑΒΛΗΤΗ μία μεταβλητή του προγράμματος η οποία θα πάρει την τιμή που θα επιστρέψει η συνάρτηση ΟΝΟΜΑ.
  • ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ είναι μία λίστα μεταβλητών ή και σταθερών οι οποίες δίνονται στην συνάρτηση για να υπολογίσει την επιστρεφόμενη τιμή.

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

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

  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=(B-A)/N
  • (y0+yn)/2=(f(a)+f(b))/2
  • x=a
    Σ=0
    ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν-1
      x=x+Δx
      y=f(x)
      Σ=Σ+y
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Το αποτέλεσμα είναι: Δ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. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Ασκήσεις

Τελευταία ενημέρωση: 25-04-2008 (12:36)

Copyright 2008 - Άρης Φεργάδης