ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Η τεχνική του τµη- µατικού προγραµµατισµού αποτελεί κύριο Είναι η τεχνική σχεδίασης σύµφωνα µε την οποία η ανάπτυξη ε- νός προγράµµατος επιτυγχάνεται αναπτύσσοντας απλούστερα χαρακτηριστικό του δοµηµένου προγραµτµήµατα προγραµµάτων. Αυτά τα προγράµµατα αν αναπτυχθούν µατισµού. και συνδεθούν µεταξύ τους οδηγούν και στην ανάπτυξη του κύριου προγράµµατος Όταν λέµε ότι τα υποπρογράµµατα έχουν µια µόνο είσοδο και έξοδο εννοούµε ότι ένα υποπρόγραµµα κάθε φορά που χρησιµοποιείται, δέχεται τιµές από ένα µόνο πρόγραµ- µα και επιστρέφει τι- µές σε ένα µόνο πρόγραµµα. Τι είναι o τµηµατικός προγραµµατισµός; Τι ονοµάζεται υποπρόγραµµα (subprogram); Κάθε ένα από αυτά τα προγράµµατα, στα οποία αναφερθήκαµε πριν, τα οποία επιτελούν αυτόνοµο έργο και που αποτελούν τµήµα του προγράµµατος (κι έχουν γραφεί χωριστά από το υπόλοιπο πρόγραµµα), ονοµάζονται υποπρογράµµατα (subprograms). Ποια είναι τα χαρακτηριστικά των υποπρογραµµάτων; Τα βασικότερα χαρακτηριστικά των υποπρογραµµάτων είναι τα εξής: ] Έχουν µόνο µια είσοδο και µια έξοδο. ] εν είναι πολύ µεγάλα. ηλαδή είναι απλά (ελέγχονται εύκολα), είναι κατανοητά και εκτελούν µια µόνο λειτουργία. ] Είναι µεταξύ τους ανεξάρτητα. ηλαδή µπορούν να σχεδιασθούν, αναπτυχθούν και συντηρηθούν αυτόνοµα χωρίς το ένα να επηρεάζει το άλλο. Ποια είναι τα πλεονεκτήµατα του τµηµατικού προγραµµατισµού; Η χρήση των υποπρογραµµάτων σ ένα πρόγραµµα παρουσιάζει πολλά πλεονεκτήµατα. Τα βασικότερα είναι τα εξής: 291
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΑΡΑΤΗΡΗΣΕΙΣ 1. Η χρήση των υποπρογραµµάτων βοηθούν την ανάπτυξη ενός προγράµµατος, διότι το αρχικό πρόβληµα αναλύεται σε επιµέρους προβλήµατα και για το κάθε επιµέρους πρόβληµα δηµιουργούµε ένα υποπρόγραµµα. 2. Η χρήση των υποπρογραµµάτων βοηθάει στην διόρθωση ενός προγράµµατος. Αυτό συµβαίνει διότι ο χωρισµός του προγράµ- µατος σε επιµέρους αυτόνοµα µέρη επιτρέπει την διόρθωση συγκεκριµένου µέρους, χωρίς αυτή η διόρθωση να επηρεάσει και τα άλλα µέρη. Επίσης αυτός ο τρόπος ανάπτυξης του προγράµµατος το καθιστά κατανοητό µε αποτέλεσµα να µπορεί να συντηρηθεί και από Το αρχικό πρόγραµµα ή κάθε υποπρόγραµµα που περιέχει υποπρόγραµµα ή υποπρογράµµατα, λέγεται κύριο πρόγραµµα. Κάθε υποπρόγραµµα για να ενεργοποιηθεί καλείται από το κύριο πρόγραµµα. Κάθε υποπρόγραµµα µπορεί να καλείται όσες φορές θέλουµε από το κύριο πρόγραµµα. Η δεσµευµένη λέξη κάλεσε χρησιµοποιείται για να ενεργοποιηθεί µια διαδικασία. Πως επικοινωνεί το υποπρόγραµµα µε το κύριο πρόγραµµα; προγραµµατι- άλλους στές, πέρα από αυτούς που το κατασκεύασαν. ΠΛΕΟΝΕΚΤΗΜΑΤΑ Τι είναι το κύριο πρόγραµµα; Όπως αναφέρθηκε πριν, το υποπρόγραµµα είναι αυτόνοµο και ανεξάρτητο τµήµα προγράµµατος. Όµως επικοινωνεί µε το κύριο πρόγραµµα, αφού δέχεται συνήθως τιµές απ αυτό και µετά την εκτέλεσή του επιστρέφει πάντα σε αυτό νέες τιµές. 292 1. ΙΕΥΚΟΛΥΝΕΙ ΤΗΝ ΑΝΑΠΤΥΞΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΚΑΙ ΣΥΝΕΠΩΣ ΤΟΥ ΠΡΟ- ΓΡΑΜΜΑΤΟΣ. 2. ΙΕΥΚΟΛΥΝΕΙ ΣΤΗΝ ΚΑΤΑΝΟΗΣΗ ΚΑΙ ΣΤΗ ΙΟΡΘΩΣΗ ΤΟΥ ΠΡΟΓΡΑΜ- ΜΑΤΟΣ. 3. ΑΠΑΙΤΕΙ ΛΙΓΟΤΕΡΟ ΧΡΟΝΟ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ. Πως ενεργοποιείται ένα υποπρόγραµµα; 4. ΕΠΕΚΤΕΙΝΕΙ ΤΙΣ ΥΝΑΤΟΤΗΤΕΣ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ, ΑΦΟΥ ΤΙΣ ΕΜΠΛΟΥΤΙΖΕΙ ΜΕ ΠΕΡΙΣΣΟΤΕΡΕΣ ΣΥΝΑΡΤΗΣΕΙΣ.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 3. Με την χρήση των υποπρογραµµάτων απαιτείται λιγότερος χρόνος για την ανάπτυξη ενός προγράµ- µατος, διότι συχνά στο ίδιο πρόγραµµα µια λειτουργία είναι αναγκαία σε πολλά σηµεία του προγράµµατος. Αντί λοιπόν να επαναλαµβάνουµε τις ίδιες εντολές καλούµε κάθε φορά που χρειάζεται το υποπρόγραµµα που εκτελεί την συγκεκρι- µένη λειτουργία. Ποιες µεταβλητές ονοµάζονται παράµετροι; Οι τιµές (µεταβλητές) οι οποίες χρησιµεύουν, όπως αναφέραµε πριν, στο να επικοινωνεί το κύριο πρόγραµµα µε το υποπρόγραµ- µα ή τα υποπρογράµµατα λέγονται παράµετροι. Λειτουργούν λοιπόν, σαν κοινές µεταβλητές µε τη διαφορά ότι χρησιµοποιούνται για να περνούν τιµές στα υποπρογράµµατα. Πόσων ειδών υποπρογράµµατα υπάρχουν; Υπάρχουν δυο ειδών υποπρογράµµατα: ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΙΑ ΙΚΑΣΙΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Οι διαδικασίες µπορούν για παράδειγµα να χρησιµεύσουν στην Το βασικότερο χαρακτηριστικό των διαδικασιών είναι ότι µπορούν να εκτελέσουν οποιαδήποτε λειτουργία από αυτές που µπορεί να εκτελέσει ένα πρόγραµµα. δεδοµένων, Να δοθεί παράδειγµα διαδικασίας. εισαγωγή στην εκτέλεση υπολογισµών, στην εµφάνιση αποτελεσµάτων κτλ. Ποια είναι τα χαρακτηριστικά των διαδικασιών; Το παρακάτω παράδειγµα διαδικασίας έχει ως στόχο την εισαγωγή βαθµού κάποιου µαθητή καθώς και τον έλεγχο ορθότητάς του (στην εικοσαβάθµια κλίµακα). 293
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1. Τις διαδικασίες και τις συναρτήσεις θα τις παραθέτουµε µετά το τέλος του κύριου προγράµµατος (σύµφωνα µε το σχολικό βιβλίο). 2. Οι διαδικασίες καλούνται από το κύριο πρόγραµµα µε την εντολή κάλεσε τίτλο_διαδικασίας (λίστα_παραµέτρων) ιαδικασία Είσοδος (βαθµός) ακέραιος : βαθµός εµφάνισε ώσε βαθµό διάβασε βαθµός όσο βαθµός>20 ή βαθµός<0 επανάλαβε εµφάνισε Λάθος πληκτρολόγηση-ξαναδώσε βαθµό διάβασε βαθµός τέλος_επανάληψης Tέλος_ ιαδικασίας Πως καλείται η παραπάνω διαδικασία από το κύριο πρόγραµµα; Έστω ότι θέλουµε να δώσουµε αλγόριθµο (ή πρόγραµµα), ο ο- ποίος να υπολογίζει κι εµφανίζει το µέσο όρο 20 µαθητών. Χρησι- µοποιώντας και το παραπάνω υποπρόγραµµα (διαδικασία εισόδου), θα έχουµε το εξής πρόγραµµα: Πρόγραµµα Μέσος_όρος ακέραιος : α, I, SUM πραγµατικός: ΜΟ SUM 0 για i από 1 µέχρι 20 κάλεσε Είσοδος (α) SUM SUM+α τέλος_επανάληψης ΜΟ SUM/20 γράψε MO Τέλος_Προγράµµατος 294
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Στο συγκεκριµένο πρόγραµµα παρατηρούµε ότι πρέπει να ζητήσου- µε 5 βαθµούς για κάθε µαθητή και να κάνουµε για κάθε περίπτωση έλεγχο ορθότητας. Χρησιµοποιώντας λοιπόν την διαδικασία Είσοδος (λίστα παρα- µέτρων) αποφεύγουµε την επανάληψη όλης της διαδικασίας. Ποια είναι η γενική µορφή (δοµή) µιας διαδικασίας; ιαδικασία Όνοµα (λίστα παραµέτρων) Τµήµα δηλώσεων εντολές Tέλος_ ιαδικασίας Ποια η χρησιµότητα των διαδικασιών; Σε ένα πρόγραµµα πολύ συχνά παρατηρείται η ίδια λειτουργία. Χρησιµοποιώντας λοιπόν ένα υποπρόγραµµα και συγκεκριµένα µια διαδικασία που έχει ήδη γραφεί, µπορεί αυτή να καλείται σε πολλά σηµεία του προγράµµατος. Συνέπειες αυτού είναι η µείωση του µεγέθους του, καθώς και του χρόνου που απαιτείται για την υλοποίησή του. Ας δούµε ένα παράδειγµα: Να δοθεί πρόγραµµα που να υπολογίζει κι εµφανίζει τους µέσους όρους σε 5 µαθήµατα, 20 µαθητών ενός τµήµατος. Πρόγραµµα Μέσος_όρος ακέραιος : α, b, c, d, e,i, SUM1, SUM2, SUM3, SUM4, SUM5 πραγµατικός: ΜΟ1, ΜΟ2, ΜΟ3, ΜΟ4, ΜΟ5 SUM1 0, SUM2 0, SUM3 0, SUM4 0, SUM5 0 για i από 1 µέχρι 20 κάλεσε Είσοδος (α) κάλεσε Είσοδος (b) κάλεσε Είσοδος (c) κάλεσε Είσοδος (d) κάλεσε Είσοδος (e) 295
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Έχοντας δηµιουργήσει την συνάρτηση max, µπορούµε σε κάθε πρόγραµµα να την καλού- µε µε το όνοµά της και να µας επιστρέφει ως αποτέλεσµα τον µέγιστο µεταξύ τριών ακεραίων. SUM1 SUM1+α SUM2 SUM2+b SUM3 SUM3+c SUM4 SUM4+d SUM5 SUM5+e τέλος_επανάληψης ΜΟ1 SUM1/20 ΜΟ2 SUM2/20 ΜΟ3 SUM3/20 ΜΟ4 SUM4/20 ΜΟ5 SUM5/20 γράψε MO1, MO2, MO3, MO4, MO5 Τέλος_Προγράµµατος Ποια είναι τα χαρακτηριστικά των συναρτήσεων; Το βασικότερο χαρακτηριστικό των συναρτήσεων είναι ότι υπολογίζουν και επιστρέφουν µόνο ένα αποτέλεσµα όχι µε µια µεταβλητή, αλλά µε το ίδιο το όνοµα της συνάρτησης. Να δοθεί παράδειγµα συνάρτησης. Το παρακάτω παράδειγµα συνάρτησης έχει ως στόχο την εύρεση του µέγιστου µεταξύ τριών ακεραίων. Συνάρτηση max (α,β,γ): ακέραιος ακέραιος : α, β, γ max α αv β > max τότε max β αv γ > max τότε max γ Τέλος_Συνάρτησης 296
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Έχοντας δηµιουργήσει την συνάρτηση max, την χρησιµοποιούµε έτοιµη ΧΩΡΙΣ να χρειάζεται να κάνουµε πάλι όλη τη διαδικασία για την εύρεση του µέγιστου. Παρατηρούµε ότι η τι- µή του αποτελέσµατος ΠΡΕΠΕΙ να εκχωρείται µέσα στο όνοµα της συνάρτησης Πως καλείται η παραπάνω συνάρτηση από το κύριο πρόγραµµα; Έστω ότι θέλουµε να δώσουµε πρόγραµµα, το οποίο να υπολογίζει και εµφανίζει τη µεγαλύτερη ηλικία τριών ατόµων. Τα δεδοµένα µας είναι τα έτη γέννησης των τριών αυτών ατόµων. Το πρόγραµµα θα είναι το εξής: Πρόγραµµα ηλικίες ακέραιος :α, έτος1, έτος2, έτος3, ηλικία1, ηλικία2, ηλικία3, Μ γράψε Σε ποιο έτος βρισκόµαστε; διάβασε α γράψε ώσε έτη γέννησης διάβασε έτος1, έτος2, έτος3 ηλικία1 α-έτος1 ηλικία2 ηλικία3 α-έτος2 α-έτος3 Μ max (ηλικία1, ηλικία2, ηλικία3) γράψε Μ Τέλος_Προγράµµατος Ποια είναι η γενική µορφή (δοµή) µιας συνάρτησης; Συνάρτηση Όνοµα (λίστα παραµέτρων): τύπος συνάρτησης Τµήµα δηλώσεων εντολές1 Όνοµα έκφραση εντολές2 Tέλος_Συνάρτησης 297
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Πως συνδυάζονται διαδικασίες και συναρτήσεις σ ένα πρόγραµµα; Έστω ότι θέλουµε να δώσουµε πρόγραµµα, το οποίο να υπολογίζει κι εµφανίζει τους µέσους όρους σε 3 µαθήµατα, 20 µαθητών ενός τµήµατος, καθώς και να εµφανίζει τον µεγαλύτερο Μ.Ο. µεταξύ των τριών Μ.Ο. ΛΥΣΗ Θα χρησιµοποιήσουµε την διαδικασία Είσοδος για την εισαγωγή των δεδοµένων, καθώς και την συνάρτηση max (µε τη διαφορά ότι η συνάρτηση max θα λειτουργεί για πραγµατικούς αριθ- µούς). Έτσι θα γίνει ως εξής: Συνάρτηση max (α,β,γ): πραγµατικός πραγµατικός : α, β, γ.. Τέλος_Συνάρτησης Παρατηρούµε (στο συγκεκριµένο παράδειγµα) ότι οι διαδικασίες και οι συναρτήσεις συνεργάζονται αφού οι τιµές που επιστρέφουν οι διαδικασίες τροφοδοτούν το κύριο πρόγραµµα και µετά την επεξεργασία τους, οι νέες τιµές που προκύπτουν δίνονται ως είσοδος στις συναρτήσεις. Το πρόγραµµα που ζητάµε θα είναι το παρακάτω: Πρόγραµµα Μέγιστος_ΜΟ ακέραιος : α, b, c, i, SUM1, SUM2, SUM3, Μ πραγµατικός: ΜΟ1, ΜΟ2, ΜΟ3 SUM1 0, SUM2 0, SUM3 0 για i από 1 µέχρι 20 κάλεσε Είσοδος (α) κάλεσε Είσοδος (b) κάλεσε Είσοδος (c) SUM1 SUM1+α SUM2 SUM2+b SUM3 SUM3+c τέλος_επανάληψης 298
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΜΟ1 SUM1/20 ΜΟ2 SUM2/20 Παρατηρούµε ότι δηµιουργώντας µια συνάρ- ΜΟ3 SUM3/20 τηση, αυτή µπορεί να γράψε MO1, MO2, MO3 χρησιµοποιηθεί σε ο- M max (MO1, MO2, MO3) ποιοδήποτε πρόγραµµα γράψε M ακριβώς όπως οι Τέλος_Προγράµµατος έτοιµες συναρτήσεις. Επεκτείνουµε και ε- µπλουτίζουµε λοιπόν, την βιβλιοθήκη των συναρτήσεων της γλώσσας προγραµ- µατισµού. 299
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ ΕΡΩΤΗΣΕΙΣ ΣΩΣΤΟΥ ΛΑΘΟΥΣ 1. Σηµειώστε το γράµµα Σ αν η πρόταση είναι σωστή και το γράµµα Λ αν είναι λάθος. 1. Υποπρόγραµµα ονοµάζουµε ένα τµήµα προγράµµατος που εκτελεί µια λειτουργία αυτόνοµα. Σ Λ 2. Τα υποπρογράµµατα έχουν µία µόνο έξοδο. Σ Λ 3. Τα υποπρογράµµατα µπορεί να έχουν (ανάλογα την περίπτωση) πολλές εισόδους. Σ Λ 4. Σε µια συνάρτηση µπορεί να µεταβιβασθεί µόνο µια τιµή µεταβλητής από το πρόγραµµα που την καλεί. 5. Μια συνάρτηση µπορεί να επιστρέφει µόνο µία τιµή στο πρόγραµµα που την καλεί. 6. Ο τύπος µιας συνάρτησης καθορίζεται από τον τύπο του αποτελέσµατος που παράγει. Σ Σ Σ Λ Λ Λ 7. Ο τύπος µιας συνάρτησης καθορίζεται από τον τύπο των τιµών που µεταβιβάζονται σε αυτήν από το πρόγραµµα που την καλεί. Σ Λ 8. Ο τύπος µιας συνάρτησης καθορίζεται και από τον τύπο του α- ποτελέσµατος και από τις τιµές που µεταβιβάζονται σε αυτήν από το πρόγραµµα που την καλεί. 9. Για να εισάγουµε δεδοµένα σε ένα πρόγραµµα χρησιµοποιούµε µια διαδικασία. Σ Σ Λ Λ 10. Για την εκτύπωση ενός µόνο αποτελέσµατος σε ένα πρόγραµµα χρησιµοποιούµε συνάρτηση. Σ Λ 11. Για τον υπολογισµό του αθροίσµατος 500 αριθµών χρησιµοποιούµε συνάρτηση. Σ Λ 300
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 12. Η ενεργοποίηση µιας συνάρτησης γίνεται µε την δεσµευµένη λέξη ΚΑΛΕΣΕ Σ Λ 13. Οι συναρτήσεις µπορούν να εκτελέσουν τις περισσότερες λειτουργίες από αυτές που µπορεί να εκτελέσει ένα πρόγραµµα. Σ Λ 14. Οι παράµετροι και οι µεταβλητές σε ένα πρόγραµµα επιτελούν την ίδια ακριβώς λειτουργία. Σ Λ 15. Ένα από τα µειονεκτήµατα του τµηµατικού προγραµµατισµού είναι ότι το πρόγραµµα που έχει αναπτυχθεί µε αυτήν την τεχνική είναι δύσκολο στην συντήρηση του από προγραµµατιστές που δεν εµπλέκονται στην αρχική κατασκευή του. Σ Λ ΕΡΩΤΗΣΕΙΣ ΠΛΗΡΟΥΣ ΑΝΑΠΤΥΞΗΣ 1. Τι είναι o τµηµατικός προγραµµατισµός; 2. Ποια είναι τα πλεονεκτήµατα του τµηµατικού προγραµµατισµού; 3. Τι είναι υποπρόγραµµα; 4. Ποιες µεταβλητές ονοµάζονται παράµετροι; 5. Ποια είναι τα χαρακτηριστικά των διαδικασιών; 6. Ποια είναι τα χαρακτηριστικά των συναρτήσεων; 7. Ποια η χρησιµότητα των διαδικασιών και των συναρτήσεων; 8. Ποιες οι διαφορές διαδικασιών και συναρτήσεων; 301
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΕΘΟ ΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ ΚΑΤΗΓΟΡΙΑ : ΑΣΚΗΣΕΙΣ ΠΟΥ ΜΑΣ ΖΗΤΟΥΝ : ΝΑ ΗΜΙΟΥΡΓΗΣΟΥΜΕ ΠΡΟΓΡΑΜΜΑΤΑ ΧΡΗΣΙΜΟΠΟΙΩ- ΝΤΑΣ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ( ΙΑ ΙΚΑΣΙΕΣ). Ν αναπτύξετε πρόγραµµα που να διαβάζει το πλήθος των τερµάτων που σηµείωσαν τέσσερις ποδοσφαιριστές της Α εθνικής κατηγορίας στην διάρκεια του πρώτου γύρου. Έπειτα να εµφανίζει το µήνυµα καλή απόδοση σε όποιον έχει πέτυχει πάνω από δέκα τέρµατα. (Να κάνετε χρήση διαδικασιών όπου αυτό είναι εφικτό) Πρόγραµµα Τέρµατα ακέραιος : τ1, τ2, τ3, τ4 κάλεσε Τέρµατα1(τ1) κάλεσε Τέρµατα1(τ2) κάλεσε Τέρµατα1(τ3) κάλεσε Τέρµατα1(τ4) Τέλος_Προγράµµατος ιαδικασία Τέρµατα1(γκολ) ακέραιος : γκολ γράψε δώσε αριθµό τερµάτων διάβασε γκολ αν γκολ>10 τότε γράψε καλή απόδοση Τέλος_ ιαδικασίας 302
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Να δοθεί πρόγραµµα που να βρίσκει κι εµφανίζει τις ρίζες της εξίσωσης 5x 2-4x+5=0 (αν αυτές υπάρχουν. Σε αντίθετη περίπτωση να εµφανίζεται αντίστοιχο µήνυµα). Αν έχουµε δηµιουργήσει διαδικασία η οποία υπολογίζει τις ρίζες δευτεροβάθµιας εξίσωσης, τότε για την δηµιουργία του παραπάνω προγράµµατος το µόνο που θα κάνουµε είναι να καλέσουµε αυτή την διαδικασία. Έτσι: Παρατηρούµε ότι χρησιµοποιώντας την διαδικασία της δευτεροβάθµιας, το πρόγραµµα απλοποιείται κατά πολύ. Επίσης όποτε χρειασθούµε να επιλύσου- µε δευτεροβάθµια το µόνο που θα κάνουµε είναι να καλούµε αυτή την διαδικασία. Πρόγραµµα Λύση κάλεσε ευτεροβάθµια(5, -4, 5) Τέλος_Προγράµµατος ιαδικασία ευτεροβάθµια(α, β, γ ) πραγµατικός: α, β, γ, χ1, χ2 αν α = 0 τότε αν β = 0 τότε αν γ = 0 τότε γράψε Αόριστη αλλιώς γράψε Αδύνατη αλλιώς χ1 -γ/β γράψε Μία ρίζα, χ1 303
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Παρατηρούµε ότι χρησιµοποιώντας την διαδικασία του max για n- ακεραίους µπορούµε να βρούµε εύκολα και γρήγορα τον µέγιστο µεταξύ οποιουδήποτε αριθµού ακεραίων. αλλιώς β 2 4*α*γ αν < 0 τότε γράψε Μόνο µιγαδικές ρίζες αλλιώς αν > 0 τότε x1 (-β + Τ_Ρ( ) ) / (2*α) x2 (-β - Τ_Ρ( ) ) / (2*α) γράψε ύο ρίζες, x1, x2 αλλιώς x1 -β / 2*α γράψε ιπλή ρίζα, x1 Τέλος_ ιαδικασίας Να δοθεί πρόγραµµα που να βρίσκει κι εµφανίζει τον µέγιστο 30 ακεραίων. Αν έχουµε δηµιουργήσει διαδικασία η οποία υπολογίζει τον µέγιστο n ακεραίων, τότε για την δηµιουργία του παραπάνω προγράµ- µατος το µόνο που θα κάνουµε είναι να καλέσουµε αυτή την διαδικασία για n=30. Έτσι: Πρόγραµµα Μέγιστος ακέραιος: arithm plithos 30 κάλεσε max(plithos,arithm) Τέλος_Προγράµµατος 304
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ιαδικασία max(n,α) ακέραιος : α, n διάβασε α max α για i από 1 µέχρι n διάβασε α αν α > max τότε max α τέλος_ επανάληψης γράψε max Τέλος_ ιαδικασίας Να δοθεί πρόγραµµα που να βρίσκει κι εµφανίζει το άθροισµα όλων των πρώτων αριθµών από το 1 µέχρι το 100. Η συνάρτηση που χρησιµοποιούµε εξετάζει εάν ένας αριθµός είναι πρώτος. Αν είναι τον προσθέτει στο άθροισµα S. Πρόγραµµα Πρώτος_αριθµός ακέραιος : S, i S 0 για i από 1 µέχρι 100 S S + Εξέταση(i) τέλος_ επανάληψης γράψε S Τέλος_Προγράµµατος Συνάρτηση Εξέταση(κ) : ακέραιος 305
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ακέραιος : κ, j, διαιρέτες διαιρέτες 0 για j από 1 µέχρι κ αν κ mod j = 0 τότε διαιρέτες διαιρέτες + 1 τέλος_ αν τέλος_επανάληψης αν διαιρέτες = 2 τότε Εξέταση κ αλλιώς Εξέταση 0 τέλος_ αν Τέλος_Συνάρτησης Να δοθεί πρόγραµµα που να υπολογίζει κι εµφανίζει την τι- µή της παράστασης Σ = ν! + µ! + κ! (Να µην γίνει έλεγχος ορθότητας δεδοµένων). Η συνάρτηση που χρησιµοποιούµε υπολογίζει το παραγοντικό ενός αριθµού. Η χρησι- µότητα της συνάρτησης φαίνεται στον διπλανό αλγόριθµο όπου αντί να υπολογίσουµε ξεχωριστά τα ν!, µ!, κ! καλούµε τρεις φορές την συνάρτηση Υπολ (α). Πρόγραµµα Παραγοντικό ακέραιος : Σ, ν, µ, κ διάβασε ν, µ, κ Σ Υπολ(ν) + Υπολ(µ) + Υπολ(κ) γράψε Σ Τέλος_Προγράµµατος Συνάρτηση Υπολ(α) : ακέραιος ακέραιος : α, i 306
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Υπολ 1 για i από 1 µέχρι α Υπολ Υπολ * i τέλος_επανάληψης Τέλος_Συνάρτησης Να δοθεί πρόγραµµα που να υπολογίζει κι εµφανίζει το άθροισµα όλων των ακεραίων αριθµών από το 1 µέχρι τον αριθµό ν. Το διπλανό πρόγραµµα είναι παράδειγµα προγράµµατος που συνδυάζει διαδικασίες και συναρτήσεις. Πρόγραµµα Πρόσθεση ακέραιος : Σ, ν κάλεσε εδοµένα(ν) Σ Υπολ(ν) γράψε Σ Τέλος_Προγράµµατος ιαδικασία εδοµένα(α) ακέραιος : α αρχή_επανάληψης γράψε ώσε αριθµό διάβασε α µέχρις_ότου α > 0 Τέλος_ ιαδικασίας Συνάρτηση Υπολ(κ) : ακέραιος ακέραιος : κ, i 307
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Όταν ως παραµέτρους έχουµε πίνακα, τότε η µια παράµετρος είναι το όνοµα του πίνακα και η άλλη παράµετρος το πλήθος των θέσεων του πίνακα, εφόσον αναφερόµαστε σε µονοδιάστατο πίνακα. Υπολ 0 για i από 1 µέχρι κ Υπολ Υπολ + i τέλος_επανάληψης Τέλος_Συνάρτησης Να δοθεί υποπρόγραµµα που υλοποιώντας τη σειριακή αναζήτηση να επιστρέφει τη θέση του ακεραίου που αναζητού- µε, σε µονοδιάστατο πίνακα ακεραίων. (να θεωρήσετε ότι ο µέγιστος αριθµός θέσεων του πίνακα είναι 100). Συνάρτηση thesi(α,n, S):ακέραιος ακέραιος: i,s,α[100] λογικός:flag i 1; flag false, thesi 0 όσο (i<=n και flag<>true) επανάλαβε αν A[i]=S τότε αλλιώς thesi i flag true i i+1 τέλος_επανάληψης Τέλος_Συνάρτησης 308
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Όταν ως παραµέτρους έχουµε δισδιάστατο πίνακα, τότε η µια παράµετρος είναι το όνοµα του πίνακα και οι άλλες παράµετροι είναι το πλήθος των γραµµών και το πλήθος των στηλών του πίνακα. Οι άλλες παράµετροι που ακολουθούν, min, θεση1, θεση2, έιναι ουσιαστικά οι µεταβλητές µέσα στις οποίες αποθηκεύονται τα αποτελέσµατα της διαδικασίας. Να γράψετε υποπρόγραµµα το οποίο να εντοπίζει το ελάχιστο στοιχείο σε δισδιάστατο πίνακα ακεραίων, καθώς και τη θέση στην οποία βρίσκεται.(να θεωρήσετε ότι ο µέγιστος αριθµός θέσεων του πίνακα είναι 30x30). Έπειτα και χρησι- µοποιώντας το παραπάνω υποπρόγραµµα να γράψετε πρόγραµµα που να εκτελεί τις παρακάτω εργασίες: α) Καταχωρεί σε πίνακα ακεραίων Βαθµοί(20,9) τους βαθ- µούς 20 µαθητών σε 9 µαθήµατα, στο πίνακα Μαθήµατα(9) τους τίτλους των 9 µαθηµάτων και τέλος στο πίνακα Ονόµατα(20) τα επώνυµα των 20 µαθητών. β) Να εκτυπώνει ποιος µαθητής και σε ποιο µάθηµα παρατηρήθηκε ο χαµηλότερος βαθµός. (Να θεωρήσετε ότι ο ελάχιστος βαθµός δεν συναντάται άλλες φορές) ιαδικασία min(a, n, m, min, θέση1, θέση2) ακέραιος : Α[30,30], n, m, min, θέση1, θέση2, i, j min A[1,1], θέση1 1, θέση2 1 για i από 1 µέχρι n για j από 1 µέχρι m αν A[i,j] < min τότε min A[i,j], θέση1 i, θέση2 j τέλος_ επανάληψης τέλος_ επανάληψης Τέλος_ ιαδικασίας Πρόγραµµα Μαθητής ακέραιος : Βαθµοί[20,9], Μ, γραµµή, στήλη, i, j χαρακτήρας: Ονόµατα[20], Μαθήµατα[9] 309
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Στις παραµέτρους γραµµή και στήλη και αφού έχουµε καλέσει την διαδικασία min, έχουν καταχωρηθεί ο αριθµός της γραµµής και ο αριθµός της στήλης αντίστοιχα, της θέσης του ελάχιστου στοιχείου του πίνακα Τέλος_Προγράµµατος Βαθµοί. Μετατροπή συνάρτησης σε διαδικασία. Σε αυτή την παράµετρο καταχωρείται ουσιαστικά το αποτέλεσµα της διαδικασίας. Αντίθετα στη συνάρτηση αυτή η επιπλέον παράµετρος δεν χρησι- µοποιείται αφού το αποτέλεσµα αποδίδεται καλώντας µόνο το όνοµα της συνάρτησης. για i από 1 µέχρι 20 διάβασε Ονόµατα[i] για j από 1 µέχρι 9 διάβασε Βαθµοί[i,j] τέλος_ επανάληψης τέλος_ επανάληψης για j από 1 µέχρι 9 διάβασε Μαθήµατα[j] τέλος_ επανάληψης κάλεσε min(βαθµοί, 20, 9, Μ, γραµµή, στήλη) γράψε Ο µαθητής, Ονόµατα[γραµµή], έχει τον χαµηλότερο βαθµό στο µάθηµα, Μαθήµατα[στήλη] Να γραφεί συνάρτηση που να βρίσκει το ελάχιστο ενός µονοδιάστατου πίνακα ακεραίων. Στη συνέχεια να γίνει το ίδιο αλλά µε διαδικασία.(να θεωρήσετε ότι το µέγιστο πλήθος των στοιχείων πίνακα είναι 30). Συνάρτηση min(a, n): ακέραιος ακέραιος : Α[30], n, i, min A[1] για i από 1 µέχρι n αν A[i] < min τότε min A[i] τέλος_επανάληψης Τέλος_Συνάρτησης Για να µετατρέψουµε τη συνάρτηση σε διαδικασία κάνουµε ακριβώς τα ίδια µε τη µόνη διαφορά ότι στη λίστα παραµέτρων προσθέτουµε µια επιπλέον παράµετρο, την min. Έτσι θα έχουµε: 310
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Όταν χρησιµοποιούµε συνάρτηση, η τιµή που επιστρέφεται καταχωρείται σε νέα µεταβλητη. ιαδικασία µικρότερο(a, n, min) ακέραιος : Α[30], n, i, min min A[1] για i από 1 µέχρι n αν A[i] < min τότε min A[i] τέλος_επανάληψης Τέλος_ ιαδικασίας Χρησιµοποιώντας τα δυο προηγούµενα υποπρογράµµατα να γράψετε πρόγραµµα που αφού καταχωρήσει στο πίνακα ΒΑΘΜΟΙ [20] τους βαθµούς 20 µαθητών, να τυπώνει τον µεγαλύτερο βαθµό. Α τρόπος (χρησιµοποιώντας συνάρτηση) Πρόγραµµα min_βαθµός ακέραιος : ΒΑΘΜΟΙ[20], i, ελάχιστο για i από 1 µέχρι 20 διάβασε ΒΑΘΜΟΙ(i) τέλος_ επανάληψης ελάχιστο min(βαθμοι, 20) γράψε ελάχιστο Τέλος_Προγράµµατος Β τρόπος (χρησιµοποιώντας διαδικασία) Πρόγραµµα min_βαθµός ακέραιος : ΒΑΘΜΟΙ[20], i, minimum 311
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Όταν χρησιµοποιούµε διαδικασία, η τιµή που επιστρέφεται καταχωρείται σε παράµετρο. για i από 1 µέχρι 20 διάβασε ΒΑΘΜΟΙ(i) τέλος_ επανάληψης κάλεσε µικρότερο(βαθμοι, 20, minimum) γράψε minimum Τέλος_Προγράµµατος 312
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ 1. Σε κάποια εξεταστική δοκιµασία ένα γραπτό αξιολογείται από δύο βαθµολογητές στη βαθµολογική κλίµακα [0, 100]. Αν η διαφορά µεταξύ των βαθµολογιών του α και β βαθµολογητή είναι µικρότερη ή ίση των 20 µονάδων της παραπάνω κλίµακας, ο τελικός βαθµός είναι ο µέσος όρος των βαθµολογιών. Αν η διαφορά µεταξύ των βαθµολογιών του α και β βαθµολογητή είναι µεγαλύτερη από 20 µονάδες, το γραπτό δίνεται για αναβαθµολόγηση σε τρίτο βαθµολογητή. Ο τελικός βαθµός του γραπτού προκύπτει τότε από το µέσο όρο των βαθµολογιών. Να αναπτύξετε πρόγραµµα το οποίο αφού ελέγξει την εγκυρότητα των βαθµών στην βαθµολογική κλίµακα [0, 100], να υλοποιεί την παραπάνω διαδικασία εξαγωγής τελικού βαθµού και να εµφανίζει τον τελικό βαθµό του γραπτού στην εικοσαβάθµια κλίµακα. Παρατήρηση: Να αναπτύξετε διαδικασία για τον έλεγχο ορθότητας των δεδο- µένων, καθώς και συνάρτηση που να υπολογίζει µέσο όρο. 2. Να δοθεί πρόγραµµα που να διαβάζει τον µισθό των υπαλλήλων µιας εταιρίας καθώς και την ηλικία τους. Το πρόγραµµα πρέπει να υπολογίζει το µέσο µισθό των υπαλλήλων και την µέση ηλικία τους. Τέλος αν η µέση ηλικία ξεπερνά τα 50 χρόνια να εµφανίζεται το µήνυµα Χρειάζεται ανανέωση. Το πρόγραµµα θα σταµατά αν δοθεί αρνητικός µισθός ή ηλικία. Αυτό το πρόγραµµα θα µπορούσε να απλοποιηθεί αν χρησιµοποιούσαµε κάποιο υποπρόγραµµα; Αν ναι, ποιο θα ήταν αυτό; 3. Να δοθεί πρόγραµµα ( χρησιµοποιώντας συναρτήσεις ) που να υπολογίζει την παράσταση : Π = ν! / ν κ όπου ν, κ θετικοί ακέραιοι. 4. Ν αναπτύξετε συνάρτηση που να επιλύει πλήρως την πρωτοβάθµια εξίσωση αx+b=0 για α,b <> 0. 5. Ν αναπτύξετε διαδικασία που να υλοποιεί την ταξινόµηση της ευθείας ανταλλαγής (φυσαλίδας) για πίνακα ακεραίων καθώς και διαδικασία που να ελέγχει την ορθότητα των δεδοµένων. Έπειτα και χρησιµοποιώντας τις δυο αυτές διαδικασίες να αναπτύξετε πρόγραµµα, το οποίο να διαβάζει τον πίνακα pontous ( σε αυτόν τον πίνακα καταχωρούµε τους πόντους που έχουν πετύχει 10 παίκτες σε 5 αγώνες µπάσκετ, κάθε γραµµή αντιστοιχεί σε έναν παίκτη και κάθε στήλη σε έναν αγώνα). Στην συνέχεια να καταχωρεί στον πίνακα onomata (µονοδιάστατος 10 θέσεων) τα ονόµατα των παικτών, στον πίνακα sum (µονοδιάστατος 10 θέσεων) τους συνολικούς πόντους που πέτυχαν και τελικά να εκτυπώνει τα ονόµατα των 3 παικτών που έχουν πετύχει τους περισσότερους πόντους. 313
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 6. Σ ένα εργοστάσιο δουλεύουν 500 άνθρωποι. Να γράψετε πρόγραµµα το οποίο: α)να καταχωρεί στο πίνακα ΕΡΓΑΤΕΣ[500] τα ονόµατα των 500 εργατών και στο πίνακα ΕΤΗ[500], τα έτη που γεννήθηκαν. β)να υπολογίζει και να καταχωρεί στο πίνακα ΗΛΙΚΙΕΣ[500] τις ηλικίες τους. γ)επειδή υπάρχει η υποψία ότι στο εργοστάσιο δουλεύουν ανήλικοι (ηλικία<18), να αναζητάει αν υπάρχει τέτοια ηλικία εργάτη, να εµφανίζει το όνοµά του, αλλιώς να εµφανίζει µήνυµα «εν υπάρχει παρανοµία». Παρατήρηση: Να αναπτύξετε υποπρόγραµµα για την συγκεκριµένη αναζήτηση. δ)να υπολογίζει κι εµφανίζει τον µέσο όρο ηλικίας των εργατών. Παρατήρηση: Να αναπτύξετε υποπρόγραµµα για το προηγούµενο ερώτηµα. 7. Να γράψετε πρόγραµµα το οποίο: α)να καταχωρεί στο πίνακα ακεραίων ΒΑΘΜΟΙ[20,9] τους βαθµούς 20 µαθητών σε 9 µαθήµατα (στην 20-βάθµια κλίµακα), στο πίνακα ΜΑΘΗΜΑΤΑ[9] τους τίτλους των 9 µαθηµάτων και τέλος στο πίνακα ΟΝΟΜΑΤΑ[20] τα επώνυµα των 20 µαθητών. β)να υπολογίζει και καταχωρεί στο πίνακα ΜΟ[20] στρογγυλοποιηµένους τους µέσους όρους των µαθητών στα 9 αυτά µαθήµατα. (η στρογγυλοποίηση να γίνεται χρησιµοποιώντας κατάλληλο υποπρόγραµµα) γ)να εµφανίζει ποιοι είναι οι 3 µεγαλύτεροι µέσοι όροι και να εµφανίζει τα επώνυ- µα των µαθητών που «έβγαλαν» αυτούς τους 3 µέσους όρους. Παρατήρηση: Να αναπτύξετε υποπρόγραµµα για το προηγούµενο ερώτηµα. 8. Πρόγραµµα τιµές ακέραιος: Α, Β, βήµα Α 8 Β -4 Βήµα 2 αρχή_επανάληψης κάλεσε διαδ(α, Β, βήµα) Α 2*Α-5 Β Β+1 γράψε Α, Β µέχρις_ότου Α<=Β Τέλος_Προγράµµατος ιαδικασία διαδ(χ, Υ, Ζ) ακέραιος: Χ, Υ, Ζ Χ Χ-Ζ Υ Υ+Ζ Τέλος_ ιαδικασίας Τι θα εµφανίσει το πρόγραµµα που προηγήθηκε σε κάθε επανάληψη; 314