Παράδειγμα 1. Κεφάλαιο 10. Βιβλίο, Αξιολόγηση αποτελεσμάτων μαθητών Γ’ Λυκείου

Ας μελετήσουμε κατ’ αρχήν το πρόβλημα που μας απασχόλησε στο πρώτο κεφάλαιο του βιβλίου, την αξιολόγηση των αποτελεσμάτων των μαθητών Γ’ Λυκείου στα μαθήματα ειδικότητας.
Το σύνθετο αυτό πρόβλημα για να αντιμετωπισθεί πιο εύκολα πρέπει να αναλυθεί σε επιμέρους μικρότερα προβλήματα.
Συγκεκριμένα τα τρία βασικά διαφορετικά τμήματα είναι:
l Εισαγωγή δεδομένων
l Επεξεργασία δεδομένων
l Εκτύπωση αποτελεσμάτων
Τα τρία αυτά τμήματα μπορούν να αναλυθούν περισσότερο. Συγκεκριμένα:
Εισαγωγή δεδομένων
l Καταχώριση δεδομένων
l Έλεγχος δεδομένων
Επεξεργασία δεδομένων
l Υπολογισμός μέσης τιμής
l Υπολογισμός τυπικής απόκλισης
l Κατανομή συχνοτήτων
l Δημιουργία γραφικών παραστάσεων
Εκτύπωση αποτελεσμάτων
l Εκτύπωση πινάκων συχνοτήτων
l Εκτύπωση γραφικών παραστάσεων

Όπως φαίνεται το αρχικό πρόβλημα διασπάστηκε σε αρκετά απλούστερα υποπροβλήματα. Η δημιουργία λοιπόν του τελικού προγράμματος ανάγεται στη δημιουργία των επί μέρους τμημάτων προγραμμάτων ή ενοτήτων και τη σύνδεση αυτών μεταξύ τους. Μερικά από αυτά τα τμήματα, όπως ο υπολογισμός της μέσης τιμής ή της τυπικής απόκλισης, έχουν ήδη αντιμετωπιστεί στο προηγούμενο κεφάλαιο, που σημαίνει ότι μπορούμε να εκμεταλλευτούμε τα προγράμματα που ήδη έχουμε γράψει μειώνοντας έτσι την εργασία για την επίλυση του προβλήματος. Η παράσταση της ανάλυσης του προβλήματος μπορεί να γίνει γραφικά με το διάγραμμα του σχήματος 10.1. Η έννοια του τμηματικού προγραμματισμού έχει ήδη αποτυπωθεί και σε προηγούμενα κεφάλαια. Για παράδειγμα, στο πρόγραμμα υπολογισμού των θερμοκρασιών του προηγούμενου κεφαλαίου (παράδειγμα 3) το τμήμα της εισαγωγής δεδομένων έχει ξεχωρίσει από το τμήμα υπολογισμών σε αντίθεση με τα παραδείγματα 1 και 2 που είναι ενιαία. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και έχει γραφεί χωριστά από το υπόλοιπο πρόγραμμα, τότε αναφερόμαστε σε υποπρόγραμμα (subprogram).

Παράδειγμα 2. Κεφάλαιο 10. Βιβλίο, Υπολογισμός Εμβαδού κύκλου

Να γραφεί πρόγραμμα το οποίο υπολογίζει το εμβαδό του κύκλου από την ακτίνα του.

Το πρόγραμμα εκτελεί τρεις συγκεκριμένες απλές λειτουργίες.
α) Διαβάζει τα δεδομένα, την ακτίνα η οποία πρέπει να είναι θετικός αριθμός
β) Υπολογίζει το εμβαδό (Ε=πr2)
γ) Τυπώνει το αποτέλεσμα, το εμβαδό, Ε

Αν και το πρόγραμμα είναι πολύ απλό και μπορεί κάλλιστα να γραφεί χωρίς τη χρήση υποπρογραμμάτων, ας το διασπάσουμε σε τρία υποπρογράμματα που εκτελούν τις τρεις παραπάνω λειτουργίες.

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

ΔΙΑΔΙΚΑΣΙΑ Είσοδος_δεδομένων(Αριθμός) 
ΜΕΤΑΒΛΗΤΕΣ 
ΠΡΑΓΜΑΤΙΚΕΣ: Αριθμός 
ΑΡΧΗ 
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ 
    ΓΡΑΨΕ 'Δώσε την ακτίνα' 
    ΔΙΑΒΑΣΕ Αριθμός 
ΜΕΧΡΙΣ_ΟΤΟΥ Αριθμός>0 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 

Το δεύτερο πρέπει να υπολογίζει το εμβαδό και να επιστρέφει την τιμή στο κύριο πρόγραμμα. Το υποπρόγραμμα αυτό παίρνει την τιμή της ακτίνας και επιστρέφει μόνο μία τιμή, την τιμή του Εμβαδού. Μπορεί λοιπόν να υλοποιηθεί με μία συνάρτηση, η οποία επιστρέφει έναν πραγματικό αριθμό. Η συνάρτηση Εμβαδό_κύκλου(R) δέχεται έναν πραγματικό αριθμό και υπολογίζει το εμβαδό που επίσης είναι ένας πραγματικός αριθμός. Το είδος της συνάρτησης, δηλαδή η τιμή που επιστρέφει, δηλώνεται στην αρχή της συνάρτησης.

ΣΥΝΑΡΤΗΣΗ Εμβαδό_κύκλου(R) : ΠΡΑΓΜΑΤΙΚΗ 
ΣΤΑΘΕΡΕΣ 
Π=3.14 
ΜΕΤΑΒΛΗΤΕΣ 
ΠΡΑΓΜΑΤΙΚΕΣ: R 
ΑΡΧΗ 
Εμβαδό_κύκλου <-- Π*R^2 
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 

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

ΔΙΑΔΙΚΑΣΙΑ Εκτύπωση(Αποτέλεσμα) 
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : Αποτέλεσμα 
ΑΡΧΗ 
ΓΡΑΨΕ 'Το εμβαδό του κύκλου είναι :',Αποτέλεσμα 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ 

Το κύριο πρόγραμμα που καλεί όλα τα υποπρογράμματα έχει ως εξής:

ΠΡΟΓΡΑΜΜΑ Παράδειγμα_2 
ΜΕΤΑΒΛΗΤΕΣ 
ΠΡΑΓΜΑΤΙΚΕΣ : R, Εμ 
ΑΡΧΗ
ΚΑΛΕΣΕ Είσοδος_δεδομένων(R) 
Εμ <-- Εμβαδό_κύκλου(R) 
ΚΑΛΕΣΕ Εκτύπωση(Εμ) 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 

Το πρόγραμμα πλέον έχει ολοκληρωθεί. Όταν εκτελεστεί, θα ζητήσει από το χρήστη να εισαγάγει μια τιμή για την ακτίνα και θα εμφανίσει το εμβαδό του κύκλου. Αν η εισαγόμενη τιμή για την ακτίνα είναι 10, τότε η οθόνη θα παρουσιάζει τα εξής:

Δώσε την ακτίνα 
10 
Το εμβαδό του κύκλου είναι : 314

Παράδειγμα 3, Κεφάλαιο 10.5.3. Βιβλίο, Πραγματικές και τυπικές παράμετροι

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

ΠΡΟΓΡΑΜΜΑ Παράδειγμα_3 
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Α, Β, Διαφ1, Αθρ1, Διαφ2, Αθρ2
ΑΡΧΗ
Α<--5 
Β<--7 
ΚΑΛΕΣΕ Πράξεις (Α, Β, Διαφ1, Αθρ1) 
Α<--9 
Β<--6 
ΚΑΛΕΣΕ Πράξεις(Α, Β, Διαφ2, Αθρ2) 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Πράξεις(Χ, Υ, Διαφορά, Άθροισμα) 
ΜΕΤΑΒΛΗΤΕΣ 
ΠΡΑΓΜΑΤΙΚΕΣ : Χ, Υ, Διαφορά, Άθροισμα 
ΑΡΧΗ 
Διαφορά <-- Χ-Υ 
Άθροισμα <-- Χ+Υ 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Οι μεταβλητές Α, Β, Διαφ1, Αθρ1, Διαφ2, Αθρ2 είναι μεταβλητές του προγράμματος Παράδειγμα_3 και αποτελούν τις πραγματικές παραμέτρους, ενώ οι μεταβλητές Χ,Υ, Διαφορά, Άθροισμα είναι μεταβλητές της διαδικασίας Πράξεις, και ονομάζονται τυπικές παράμετροι.

Οι μεταβλητές Α, Β, Διαφ1 καθώς και όλες οι μεταβλητές του προγράμματος Παράδειγμα_3 δεν είναι γνωστές στη διαδικασία Πράξεις και αντίστοιχα όλες οι μεταβλητές της διαδικασίας Πράξεις είναι άγνωστες στο πρόγραμμα Παράδειγμα_3. Τα ονόματα των τυπικών και των πραγματικών παραμέτρων μπορούν να είναι οποιαδήποτε. Αφού είναι ονόματα μεταβλητών σε διαφορετικά τμήματα προγράμματος, είναι υποχρεωτικά διαφορετικές μεταβλητές, άσχετα αν έχουν το ίδιο όνομα. Όλες οι μεταβλητές είναι γνωστές, έχουν ισχύ όπως λέγεται, μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί, ισχύουν δηλαδή τοπικά για το συγκεκριμένο υποπρόγραμμα ή κυρίως πρόγραμμα.