1.3   Πλεονεκτήματα από τη χρήση τμηματικού προγραμματισμού

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

1.3.1   Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος

Επιτρέπει την εξέταση και την επίλυση απλών προβλημάτων και όχι στην αντιμετώπιση του συνολικού προβλήματος. Με τη σταδιακή επίλυση των υποπροβλημάτων και τη δημιουργία των αντιστοίχων υποπρογραμ­μάτων τελικά επιλύεται το συνολικό πρόβλημα.

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

1.3.2   Διευκολύνει την κατανόηση και διόρθωση του προγράμματος.

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

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

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

Πολύ συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που ένα υποπρόγραμμα έχει γραφεί, μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος. Έτσι μειώνονται το μέγεθος του προγράμματος, ο χρόνος που απαιτείται για τη συγ­γραφή του και οι πιθανότητες λάθους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο εύληπτο και κατανοητό.

Παράδειγμα 4

Θεωρήσετε ότι καλείστε να λύσετε το παρακάτω πρόβλημα:
Ο Παναθηναϊκός συμμετέχει στο πρωτάθλημα μπάσκετ της Α1 και έχει δώσει μέχρι τώρα 12 αγώνες. Να γίνει πρόγραμμα που:
Α)   Για κάθε ένα από τους δώδεκα αγώνες να ζητά πόσους πόντους πέτυχε, πόσα φάουλ έκανε, πόσα εύστοχα τρίποντα είχε στον αγώνα. Όλα τα δεδομένα είναι θετικοί ακέραιοι αριθμοί.
Β)   Να υπολογίζει και να εμφανίζει ….

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

ΠΡΟΓΡΑΜΜΑ Παναθηναικός
ΜΕΤΑΒΛΗΤΕΣ:
  ΠΡΑΓΜΑΤΙΚΕΣ:α
  ΑΚΕΡΑΙΕΣ: Αγώνα, Πόντοι, Φάουλ, Τρίποντα
ΑΡΧΗ
  ΓΙΑ Αγώνα ΑΠΟ 1 ΜΕΧΡΙ 12
    ΚΑΛΕΣΕ ΕισαγωγήΘετικούΑκεραίου για Πόντοι
    ΚΑΛΕΣΕ ΕισαγωγήΘετικούΑκεραίου για Φάουλ
    ΚΑΛΕΣΕ ΕισαγωγήΘετικούΑκεραίου για Τρίποντα
    ΥΠΟΛΟΓΙΣΕ ….
    ΥΠΟΛΟΓΙΣΕ ….
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΥΠΟΠΡΟΓΡΑΜΜΑ ΕισαγωγήΘετικούΑκεραίου x
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ:α
  ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
  ΓΡΑΨΕ ‘Δώσε θετική και ακέραια τιμή:'
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ α
  ΜΕΧΡΙΣ_ΌΤΟΥ α >=0 ΚΑΙ α = Α_Μ(α)
   x <- Α_Μ(α)
ΤΕΛΟΣ_ΥΠΟΠΡΟΓΡΑΜΜΑΤΟΣ

1.3.4   Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού.

Ένα υποπρόγραμμα που έχει γραφεί μπορεί να χρησιμοποιηθεί πολύ εύκολα και σε άλλα προγράμματα. Από τη στιγμή που έχει δημιουργηθεί, η χρήση του δεν διαφέρει από τη χρήση των ενσωματωμένων συναρτήσεων που παρέχει η γλώσσα προγραμματισμού, όπως για τον υπολογισμό του ημίτονου ή του συνημίτονου ή την εντολή με την οποία εκτελεί μία συγκεκριμένη διαδικασία, για παράδειγμα γράφει στην οθόνη (εντολή ΓΡΑΨΕ).



Στο σημείο αυτό είναι χρήσιμο να διαβάσετε πάλι τι είναι οι βιβλιοθήκες και πως αυτές χρησιμοποιούνται κατά την μεταγλώττιση ενός προγράμματος, στο κεφάλαιο 6, σελ. 138. Διαβάσετε επίσης το παράδειγμα της ταξινόμησης ενός πίνακα με τη μέθοδο της φυσαλίδας, στη σελ68-69 του 3 ου κεφαλαίου. Προσέξετε περισσότερο την εντολή Αντιμετάθεσε που χρησιμοποιεί

Οι διαπιστώσεις της μικρής επανάληψης του κάνατε σε σχέση με το αντικείμενο του τρέχοντος κεφαλαίου είναι ότι:
  • Έχουμε ήδη χρησιμοποιήσει υποπρογράμματα (οι οκτώ ενσωματωμένες συναρτήσεις), με τη διαφορά ότι αυτά υπήρχαν ήδη και δε χρειάστηκε να τα φτιάξουμε εμείς. Όταν τα γνωρίσαμε βέβαια δεν προβληματιστήκαμε περισσότερο γιατί το αποτέλεσμα που υπολογίζανε ήταν οικείο σε εμάς από τα μαθηματικά
  • Τα έτοιμα υποπρογράμματα μιας γλώσσας προγραμματισμού, έχουν γραφεί σε ειδικά αρχεία που ονομάζονται βιβλιοθήκες. Οι βιβλιοθήκες συνδέονται με τη βοήθεια ειδικού προγράμματος του Συνδέτη-Φορτωτή, με το πρόγραμμα που χρησιμοποιεί τα υποπρογράμματα κατά την μετατροπή του από αντικείμενο σε εκτελέσιμο.
  • Μπορούμε να ορίσουμε και να δημιουργήσουμε και εμείς οι ίδιοι υποπρογράμματα τα οποία στη συνέχεια θα είναι εύκολο να χρησιμοποιούμε σε πολλά διαφορετικά προβλήματα. Το υποπρόγραμμα αντιμετάθεσε είναι μόνο ένα μικρό παράδειγμα.
Παράδειγμα 4

Παρακάτω μπορείτε να δείτε μερικές ενέργειες που χρησιμοποιούνται συχνά σε μεγάλη ποικιλία προβλημάτων:

Εύρεση του μικρότερου/ μεγαλύτερου από δύο αριθμούς Χ, Υ

  • Εμφάνιση όλων των στοιχείων ενός πίνακα Α με Ν στοιχεία
  • Ταξινόμηση με αύξουσα/ φθίνουσα σειρά ενός πίνακα Α με Ν στοιχεία
  • Αναζήτηση ενός στοιχείου Χ αν υπάρχει στον πίνακα Α με Ν στοιχεία
  • Αντιμετάθεση των τιμών των Χ και Υ

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

Με τον τρόπο αυτό ουσιαστικά επεκτείνετε ως προς τις δυνατότητές της η ίδια η γλώσσα προγραμματισμού.

Δραστηριότητα 4

Αναφέρετε επιγραμματικά ποια είναι τα πλεονεκτήματα της χρήσης του τμηματικού προγραμματισμού. Αναπτύξετε ένα από αυτά και δώσετε αντίστοιχο παράδειγμα.
Κάνετε κλικ εδώ [ΑΠΑΝΤΗΣΗ] για να διαβάσετε τη δική μας απάντηση