Professional Documents
Culture Documents
ΚΕΦΑΛΑΙΟ 10
Μάθημα 23
ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
ΤΗΛ.6947345322, 6987070028
email: xristoforos_karachristos@hotmail.com
https://sites.google.com/site/aeppkx
ΚΕΦΑΛΑΙΟ 10Ο ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
Ονομάζεται η τεχνική με την οποία σχεδιάζουμε και αναπτύσσουμε προγράμματα ως ένα σύνολο από απλά τμήματα
προγραμμάτων.
Ο τμηματικός προγραμματισμός υλοποιεί την ιεραρχική σχεδίαση, γιατί σε αυτήν κάθε πρόβλημα διαιρείται σε
επιμέρους προβλήματα και κάθε ένα από αυτά τα προβλήματα διαιρείται σε επιμέρους υποπροβλήματα. Στον
τμηματικό προγραμματισμό, για το κάθε ένα επιμέρους υποπρόβλημα δημιουργείται και ένα επιμέρους τμήμα
προγράμματος, με αποτέλεσμα το τελικό πρόγραμμα να ανάγεται σε πολλά απλούοττερα τμήματα προγράμματος.
Είναι ένα τμήμα προγράμματος που επιτελεί αυτόνομο έργο και είναι γραμμένο ξεχωριστά από το υπόλοιπο
πρόγραμμα.
«Ο προϊστάμενος του γραφείου περιβάλλοντος ενός Δήμου θέλει να δημιουργήσει ένα πρόγραμμα που θα διαβάζει 30
θερμοκρασίες, θα υπολογίζει και θα εκτυπώνει τον μέσο όρο τους.»
Το πρόβλημα μπορεί να διασπαστεί σε τρία επιμέρους υποπροβλήματα:
Να έχει μία είσοδο και μία έξοδο. Η είσοδος σε ένα υποπρόγραμμα γίνεται στην αρχή του. Ένα υποπρόγραμμα
ενεργοποιείται, όταν γίνεται η είσοδος σε αυτό, εκτελεί ορισμένες ενέργειες και απενεργοποιείται με την έξοδο από
αυτό, που γίνεται στο τέλος του.
Να είναι ανεξάρτητο από τα άλλα. Κάθε υποπρόγραμμα πρέπει να σχεδιάζεται, να αναπτύσσεται και να συντηρείται
αυτόνομα, χωρίς να επηρεάζει άλλα υποπρογράμματα, αν και η απόλυτη ανεξαρτησία είναι δύσκολο να επιτευχθεί.
Να μην είναι πολύ μεγάλο. Το μέγεθος ενός υποπρογράμματος να είναι τόσο, ώστε να είναι κατανοητό, να μπορεί να
ελέγχεται και να εκτελεί μία λειτουργία. Εάν εκτελεί περισσότερες λειτουργίες, καλό είναι να διασπαστεί σε
επιμέρους υποπροβλήματα.
Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος. Αυτό επιτυγχάνεται,
επειδή επιτρέπει την επίλυση απλών προβλημάτων-υποπροβλημάτων και όχι του συνολικού προβλήματος
και διότι με τη σταδιακή επίλυση των υποπροβλημάτων, δημιουργώντας κατάλληλα υποπρογράμματα,
φθάνει στην επίλυση του συνολικού προβλήματος.
Διευκολύνει την κατανόηση και διόρθωση του προγράμματος. Τα μικρά αυτοτελή τμήματα
προγράμματος (υποπρογράμματα), που δημιουργούνται από τη διάσπαση του αρχικού προγράμματος,
διορθώνονται γρηγορότερα και πιο εύκολα χωρίς οι αλλαγές να επηρεάσουν το υπόλοιπο πρόγραμμα.
Επίσης, διευκολύνει κάποιον να καταλάβει τον τρόπο λειτουργίας του προγράμματος.
Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος. Από τη στιγμή που
δημιουργείται ένα υποπρόγραμμα μπορεί να καλείται από πολλά σημεία του προγράμματος, μειώνοντας έτσι
το μέγεθος του προγράμματος, το χρόνο που απαιτείται για η συγγραφή, τις πιθανότητες λάθους και κάνει το
πρόγραμμα πιο κατανοητό.
Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. Από τη στιγμή που έχει δημιουργηθεί ένα
υποπρόγραμμα, μπορεί να χρησιμοποιηθεί και σε άλλα προγράμματα. Η χρήση του δεν διαφέρει από τη
χρήση των συναρτήσεων που παρέχει η γλώσσα προγραμματισμού ΓΛΩΣΣΑ, π.χ. η συνάρτηση ΣΥΝ(Χ) για
2
ΚΕΦΑΛΑΙΟ 10Ο ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
τον υπολογισμό του συνημίτονου X. Αν για μία λειτουργία δεν υπάρχει κατάλληλη συνάρτηση στη γλώσσα
προγραμματισμού, τότε μπορεί να γραφεί ένα υποπρόγραμμα για να υλοποιεί αυτή τη λειτουργία και να
χρησιμοποιείται όταν πρέπει. Η συγγραφή πολλών υποπρογραμμάτων και, ταυτόχρονα, η δημιουργία
βιβλιοθηκών με αυτά, επεκτείνουν την ίδια τη γλώσσα προγραμματισμού.
ΠΑΡΑΜΕΤΡΟΙ
Αν και το κάθε υποπρόγραμμα είναι αυτόνομο και ανεξάρτητο τμήμα προγράμματος, πολλές φορές πρέπει να
επικοινωνεί με το αρχικό πρόγραμμα, που καλείται κύριο πρόγραμμα, ή με άλλα υποπρογράμματα. Ένα
υποπρόγραμμα ενεργοποιείται, όταν καλείται από το κύριο πρόγραμμα ή από ένα άλλο υποπρόγραμμα, δέχεται τιμές
από το τμήμα προγράμματος που το καλεί και επιστρέφει τιμές σε αυτό. Οι τιμές που περνούν από το ένα
υποπρόγραμμα στο άλλο λέγονται παράμετροι.
Μια παράμετρος είναι μια μεταβλητή που επιτρέπει το πέρασμα τιμής από το ένα τμήμα προγράμματος σε ένα άλλο.
Η μεταβλητή χρησιμοποιείται, για να παριστάνει ποσότητα που η τιμή της μπορεί να μεταβάλλεται. Η παράμετρος
είναι σαν μία κοινή μεταβλητή, με τη διαφορά ότι χρησιμοποιείται, για να περνάει τιμή στα υποπρογράμματα.
Τα υποπρογράμματα ακολουθούν το κύριο πρόγραμμα και γράφονται (ή όπως λέμε δηλώνονται) μετά το
«ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ». Η σειρά με την οποία τα παραθέτουμε μετά το κύριο πρόγραμμα δεν παίζει κανένα
ρόλο.
Συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μία μόνο τιμή με το όνομά της.
Η διαδικασία είναι ένας τύπος υποπρογράμματος που εκτελεί όλες τις λειτουργίες ενός προγράμματος.
Μία διαδικασία μπορεί να εκτελεί οποιαδήποτε λειτουργία που εκτελείται από ένα πρόγραμμα, π.χ. να
διαβάζει δεδομένα, να μεταβάλλει τιμές μεταβλητών και να εκτυπώνει αποτελέσματα. Αντίθετα, η
λειτουργία μίας συνάρτησης είναι πιο περιορισμένη και χρησιμοποιείται, για να υπολογίζει μία τιμή
αριθμητική, λογική, χαρακτήρα και να την επιστρέφει στο υποπρόγραμμα ή στο κύριο πρόγραμμα που την
κάλεσε.
Μία συνάρτηση επιστρέφει μία μόνο τιμή με το όνομα της στο υποπρόγραμμα που την κάλεσε ή στο
κύριο πρόγραμμα. Η διαδικασία μπορεί και επιστρέφει περισσότερες από μία τιμές μέσω των παραμέτρων
στο τμήμα προγράμματος που την κάλεσε.
Έχουν διαφορετικό τρόπο κλήσης: μια συνάρτηση καλείται με την εμφάνιση του ονόματος της σε μια
έκφραση, ενώ η διαδικασία καλείται με την εντολή ΚΑΛΕΣΕ και το όνομα της διαδικασίας.
3
ΚΕΦΑΛΑΙΟ 10Ο ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
παράδειγμα:
Μία συνάρτηση καλείται, γράφοντας το όνομα της συνάρτησης και μέσα σε παρενθέσεις τις παραμέτρους που
δέχεται σε μία έκφραση ή σε μία εντολή. Η κλήση μίας συνάρτησης μπορεί να γίνει από το κύριο πρόγραμμα ή από
ένα άλλο υποπρόγραμμα.
Ζ ← Πρόσθεση(X, Υ) ή
ΓΡΑΨΕ Πρόσθεση(Χ, Υ)
ΠΡΟΓΡΑΜΜΑ πράξεις
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:Χ, Υ, Ζ
ΑΡΧΗ
ΔΙΑΒΑΣΕ Χ,Υ
Ζ ← Πρόσθεση(Χ,Υ)
ΓΡΑΨΕ Ζ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
___________________________________
ΣΥΝΑΡΤΗΣΗ Πρόσθεση(Α, Β): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: A, Β
ΑΡΧΗ
Πρόσθεση ← A + Β
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΠΑΡΑΤΗΡΗΣΕΙΣ
1. Η χρήση παραμέτρων σε μία συνάρτηση είναι υποχρεωτική. Μπορούν να υπάρχουν από μία μέχρι όσες
παραμέτρους επιθυμούμε.
2. Ο αριθμός των παραμέτρων κατά την κλήση μιας συνάρτησης πρέπει να είναι ίδιος με τον αριθμό των
παραμέτρων που υπάρχει στην επικεφαλίδα της συνάρτησης.
3. Επειδή το σχολικό βιβλίο δεν αναφέρει εάν μέσω των παραμέτρων μπορούν μεταβιβάζονται σταθερές τιμές
ή συμβολικές σταθερές, καλό είναι να αποφεύγεται η χρήση τους στις παραμέτρους.
4. Η συνάρτηση χρησιμοποιείται μόνο για να υπολογίζει μια τιμή και όχι για να διαβάζει δεδομένα και να
εκτυπώνει αποτελέσματα. Έτσι μέσα σε μία συνάρτηση δεν πρέπει να υπάρχουν οι εντολές ΓΡΑΨΕ και
ΔΙΑΒΑΣΕ.
5. Από τη στιγμή που δημιουργούμε μια συνάρτηση, μπορούμε να την καλέσουμε όσες φορές θέλουμε.
6. Ο τύπος της συνάρτησης και της μεταβλητής στην οποία θα εκχωρηθεί η επιστρεφόμενη τιμή της
συνάρτησης πρέπει να έχουν τον ίδιο τύπο δεδομένων.
4
ΚΕΦΑΛΑΙΟ 10Ο ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
ΜΕΘΟΔΟΛΟΓΙΕΣ
Για να δείξουμε στον πίνακα τιμών την ύπαρξη υποπρογραμμάτων χωρίζουμε τον πίνακα τιμών σε δύο μέρη: ένα
μέρος αναφέρεται στο κύριο πρόγραμμα και ένα μέρος στα υποπρογράμματα, όπως φαίνεται στο παράδειγμα που
ακολουθεί.
ΠΑΡΑΔΕΙΓΜΑ
Να γράψετε τις τιμές που θα εμφανίσει το διπλανό πρόγραμμα, αν κατά την εκτέλεσή του δοθούν ως είσοδος οι τιμές
4 και 8.
ΠΡΟΓΡΑΜΜΑ Π1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: A, Β, Γ
ΑΡΧΗ
ΔΙΑΒΑΣΕ A, Β
ΓΡΑΨΕ A, Β
Γ ← Πράξεις(Α, Β)
A←A*Γ
Β ← Β*Γ
ΓΡΑΨΕ A, Β
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Π1
________________________________
ΣΥΝΑΡΤΗΣΗ Πράξεις(Χ, Υ): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: X, Υ
ΑΡΧΗ
X←X+2
Υ← Υ-Χ
Πράξεις ← (X + Υ) div 4
ΤΕΛΟΣ ΣΥΝΑΡΤΗΣΗΣ
A Β Γ X Υ Πράξεις Έξοδος
4 8
48
κλήση 4 8
συνάρτησης
πράξεις 6 2
στη συνάρτηση
2
επιστροφή 2
8
16
816
ΕΡΩΤΗΣΕΙΣ ΑΝΑΠΤΥΞΗΣ
ΣΩΣΤΟ - ΛΑΘΟΣ
5
ΚΕΦΑΛΑΙΟ 10Ο ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
7. Κάθε μεταβλητή που χρησιμοποιεί η συνάρτηση πρέπει να δηλωθεί και στο τμήμα δηλώσεων του κύριου
προγράμματος. Σ Λ
8. Μια συνάρτηση είναι δυνατό να επιστρέφει μόνο ακέραιες ή πραγματικές τιμές. Σ Λ
Α←4
Β←7
Γ ← Σ1(Α, Β)
ΓΡΑΨΕ A, Β, Γ
____________
ΣΥΝΑΡΤΗΣΗ ΣΙ (Α, Β):ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ A, Β
ΑΡΧΗ
Στ ← Α^2-Β
ΤΕΛΟΣ ΣΥΝΑΡΤΗΣΗΣ
Β)
Χ1 ←10
Χ2 ← 5
Χ3 ← Έλεγχος(Χ1, Χ2)
ΓΡΑΨΕ Χ1,Χ2, Χ3
___________________
ΣΥΝΑΡΤΗΣΗ Έλεγχος(Α1, Β1): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α1,Β1
ΑΡΧΗ
ΑΝ Α1 <= Β1 ΤΟΤΕ
Έλεγχος ← Α1 div 2
ΑΛΛΙΩΣ
Έλεγχος ← A1 mod 3 + Β1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
23.17. Να βρείτε τι θα εμφανίσει το καθένα από τα παρακάτω προγράμματα, εάν ως είσοδος δοθούν οι αριθμοί 4
και 7.
ΠΡΟΓΡΑΜΜΑ Π1
ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Χ1,Χ2, Χ3
ΑΡΧΗ ΔΙΑΒΑΣΕ XI, Χ2
Χ3 ← Χ1 + Χ2
ΓΡΑΨΕ Χ3
Χ3 ← ΠΡ(Χ3)
ΓΡΑΨΕ Χ3
Χ3 ← ΠΡ(Χ3)
ΓΡΑΨΕ Χ3
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Π1
___________________________
ΣΥΝΑΡΤΗΣΗ ΠΡ(Α): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α
6
ΚΕΦΑΛΑΙΟ 10Ο ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
ΑΡΧΗ
Β ←Adiv2
Γ ← (Β ^ 2 - A) div 7
ΑΝ Γ >= 2 ΤΟΤΕ
Γ← Γ + 4
ΤΕΛΟΣ_ΑΝ
ΣΥΝ ← Γ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
23.20. Να γραφεί συνάρτηση που θα δέχεται έναν ακέραιο αριθμό και θα επιστρέφει το τετράγωνό του.
23.21. Να γραφεί συνάρτηση που θα δέχεται δύο πραγματικούς αριθμούς και θα επιστρέφει το άθροισμά τους.
23.22. Να γραφεί συνάρτηση που δέχεται δύο θερμοκρασίες Τ1 και Τ2 σε βαθμούς Κέλβιν (Κ) και θα επιστρέφει
τη διαφορά τους σε βαθμούς Κελσίου (°C). Δίνεται ότι Τκ(Κ) =Tc (C) + 273.
23.31. Ένας οικονομολόγος υπολόγισε ότι μια βιοτεχνία ρούχων για να κατασκευάσει πουκάμισα, ξοδεύει 1/8x +
10x + 100 ευρώ. Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ που θα υπολογίζει το κόστος κατασκευής πουκαμίσων της
βιοτεχνίας ως εξής
α. Θα διαβάζει τον αριθμό πουκαμίσων χ.
β. Θα καλεί συνάρτηση που θα κατασκευάσετε έτσι, ώστε να δέχεται τον αριθμό πουκαμίσων και θα επιστρέφει το
κόστος κατασκευής τους.
γ. Θα εμφανίζει το κόστος κατασκευής τους
23.37. Στην έξοδο ενός ενισχυτή ήχου υπάρχει η αντίσταση εξόδου Rx και στην είσοδο ενός ηχείου υπάρχει η
αντίσταση εισόδου Rz. Για να υπάρχει επιτυχημένη μεταφορά ήχου από τον ενισχυτή στο ηχείο, πρέπει οι
αντιστάσεις Rx και Rz να έχουν την ίδια τιμή. Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ που για ένα σύστημα ενισχυτή-
ηχείου:
α. Θα διαβάζει τις τιμές των αντιστάσεων Rx και Rz σε Ωμ. β. Θα καλεί συνάρτηση που θα δημιουργήσετε και η
οποία θα δέχεται τις τιμές των δύο αντιστάσεων και θα επιστρέφει τη λογική τιμή «Αληθής», αν υπάρχει επιτυχημένη
μεταφορά ήχου, ή τη λογική τιμή «Ψευδής», αν δεν υπάρχει επιτυχημένη μεταφορά ήχου. γ. Αν υπάρχει επιτυχημένη
μεταφορά ήχου τότε να εμφανίζει το μήνυμα «Επιτυχής μεταφορά», διαφορετικά να εμφανίζει «Η μεταφορά δεν είναι
επιτυχημένη».
23.41. Σε ένα διαγωνισμό του ΑΣΕΠ εξετάζονται 1500 υποψήφιοι. Ως εξεταστικό κέντρο χρησιμοποιείται ένα
κτήριο με αίθουσες διαφορετικής χωρητικότητας. Ο αριθμός των επιτηρητών που απαιτούνται ανά αίθουσα
καθορίζεται αποκλειστικά με βάση τη χωρητικότητα της αίθουσας ως εξής:
Σημείωση: Να θεωρήσετε ότι η συνολική χωρητικότητα των αιθουσών του κτηρίου επαρκεί για τον αριθμό των
υποψηφίων.
7
ΚΕΦΑΛΑΙΟ 10Ο ΚΑΡΑΧΡΗΣΤΟΣ ΧΡΙΣΤΟΦΟΡΟΣ
23.44.Να γραφεί πρόγραμμα το οποίο να πραγματοποιεί την πρόσθεση δύο κλασμάτων Α/Β και Γ/Δ ακολουθώντας
τα παρακάτω βήματα:
α. δέχεται τέσσερις ακέραιους αριθμούς (Α, Β, Γ, Δ) που αντιστοιχούν στους παρονομαστές και στους αριθμητές των
δυο κλασμάτων, εξασφαλίζοντας ότι οι παρονομαστές δεν είναι μηδέν, β. πραγματοποιεί την απλοποίηση του κάθε
ενός κλάσματος, βρίσκοντας τον μέγιστο κοινό διαιρέτη (μκδ) του αριθμητή και του παρονομαστή και διαιρώντας τον
καθένα από αυτούς με τον μκδ. Για την εύρεση του μκδ χρησιμοποιείται η συνάρτηση ΜΚΔ που περιγράφεται στο στ
ερώτημα.
γ. πραγματοποιεί την πρόσθεση των απλοποιημένων κλασμάτων Α/Β +Γ/Δ =Ε/Ζ δημιουργώντας το κλάσμα Ε/Ζ το
οποίο θα έχει αριθμητή το Ε=Δ*Α+Γ*Β και ως παρονομαστή το Ζ=Β*Δ.
δ. απλοποιεί το κλάσμα Ε/Ζ, χρησιμοποιώντας τη συνάρτηση ΜΚΔ.
ε. εμφανίζει το κλάσμα Ε/Ζ.
στ. Να κατασκευάσετε τη συνάρτηση ΜΚΔ, η οποία θα δέχεται στις μεταβλητές X και Υ τον αριθμητή και τον
παρονομαστή ενός κλάσματος. Θα επιστρέφει τον μέγιστο κοινό διαιρέτη τους, εκτελώντας τα εξής βήματα:
1.Διαιρείται ο μεγαλύτερος με τον μικρότερο από τους αριθμούς των μεταβλητών X και Υ και το υπόλοιπο της
διαίρεσης αποθηκεύεται στη μεταβλητή Ζ.
2.Ο μικρότερος αριθμός των X και Υ τοποθετείται στη μεταβλητή X και το υπόλοιπο Ζ τοποθετείται στη μεταβλητή
Υ.
3.Το υπόλοιπο της νέας διαίρεσης των αριθμών των μεταβλητών X δια Υ τοποθετείται στη μεταβλητή Ζ.
Τα βήματα 2 και 3 επαναλαμβάνονται, μέχρι το υπόλοιπο Ζ να γίνει μηδέν. Όταν συμβεί αυτό, ο μκδ είναι ο αριθμός
που υπάρχει στη μεταβλητή Υ.