Απαντήσεις Δραστηριοτήτων Αυτοαξιολόγησης

 

Δραστηριότητα 1 / Ενότητα 10.1

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

Η λύση ενός προβλήματος που αποδίδεται με τμηματικό προγραμματισμό αποτελείται από ένα κυρίως πρόγραμμα και ένα ή περισσότερα υποπρογράμματα τα οποία γράφονται ξεχωριστά από αυτό, μετά το τέλος του. Το κυρίως πρόγραμμα και τα υποπρογράμματα «συνδέονται» με κάποιο τρόπο μεταξύ τους προκειμένου να λύσουν το αρχικό πρόβλημα.

Είναι πολύ σημαντικό να γνωρίζεις την παραπάνω απάντηση. Σε περίπτωση που δεν κατάφερες να απαντήσεις σωστά, ξαναμελέτησε πιο προσεκτικά την ενότητα 1.

 

Δραστηριότητα 2 / Ενότητα 10.1

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

Σύμφωνα λοιπόν με αυτήν το πρόβλημά μας χωρίζετε στα παρακάτω υποπροβλήματα:

1. Εισαγωγή των Δεδομένων του προβλήματος. Πιο συγκεκριμένα χρειάζεται:

Α) να διαβαστεί ο αριθμός των εταιρειών Ν και να ελεγχθεί ως προς την εγκυρότητά του (θετικός ακέραιος μέχρι και 50), και

Β) να διαβαστούν τα ονόματα και οι εισπράξεις των Ν εταιρειών και να τοποθετηθούν στους αντίστοιχους πίνακες Εταιρεία, Εισπράξεις.

2. Υπολογισμός μέσου όρου εισπράξεων όλων των εταιρειών.

3. Έλεγχος (σύγκριση) ποιες από αυτές έχουν εισπράξεις μεγαλύτερες του μέσου όρου και εμφάνιση των αντίστοιχων ονομάτων τους.

Φαίνεται επομένως ότι το πρόβλημα χωρίζεται σε τέσσερα απλούστερα προβλήματα.

 

 

 

Δραστηριότητα 3 / Ενότητα 10.1

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

 

ΥΠΟΠΡΟΓΡΑΜΜΑ ΕισαγωγήΣτοιχείωνΠινάκων για πίνακες: Εταιρείες, Εισπράξεις

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: Εταιρείες[50]

ΠΡΑΓΜΑΤΙΚΕΣ: Εισπράξεις[50]

ΑΚΕΡΑΙΕΣ: i , Ν

ΑΡΧΗ

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν

ΓΡΑΨΕ ‘Δώσε το όνομα της εταιρείας και της αντίστοιχες εισπράξεις της:'

ΔΙΑΒΑΣΕ Εταιρεία[ i ], Εισπράξεις[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

 

ΥΠΟΠΡΟΓΡΑΜΜΑ ΥπολογισμόΜέσουΟρου για τον πίνακα Εισπράξεις

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ: Εισπράξεις[50] , MO , Αθρ

ΑΚΕΡΑΙΕΣ: i , Ν

ΑΡΧΗ

Αθρ <- 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν

Αθρ <- Αθρ + Εισπράξεις[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΜΟ <- Αρθ / Ν

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

 

ΥΠΟΠΡΟΓΡΑΜΜΑ ΕμφάνισηΑποτελεσμάτων από τον πίνακα Εταιρείες, Εισπράξεις

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: Εταιρείες[50]

ΠΡΑΓΜΑΤΙΚΕΣ: Εισπράξεις[50], ΜΟ

ΑΚΕΡΑΙΕΣ: i , Ν

ΑΡΧΗ

ΓΡΑΨΕ ‘Οι παρακάτω εταιρείες έχουν εισπράξεις μεγαλύτερες του μέσου όρου'

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν

ΑΝ Εισπράξεις[ i ] > ΜΟ ΤΟΤΕ

ΓΡΑΨΕ Εταιρεία[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

 

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

Δραστηριότητα 4 / Ενότητα 1

Τα πλεονεκτήματα της χρήσης του τμηματικού προγραμματισμού είναι τα παρακάτω:

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

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

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

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

 

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

 

Δραστηριότητα 7 / Ενότητα 10.2

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

Μέσα στο υποπρόγραμμα γράφονται οι εντολές που κάνουν το ζητούμενο. Χρησιμοποιώ τη διαδικασία ΕισαγωγήΑκεραίου(Ν) για να δώσω τιμή στη μεταβλητή φορές, και στη συνέχεια εμφανίζω το μήνυμα όσες φορές καθορίζει με τη βοήθεια της επαναληπτικής εντολή ΓΙΑ

 

ΔΙΑΔΙΑΚΑΣΊΑ ΕμφάνισηΜηνύματος(μήνυμα, φορές)

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: μήνυμα

ΑΚΕΡΑΙΕΣ: i , φορές

ΑΡΧΗ

ΓΡΑΨΕ ‘Πόσες φορές θέλεις να εμφανιστεί το μήνυμα;'

ΚΑΛΕΣΕ ΕισαγωγήΑκεραίου(φορές)

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ φορές

ΓΡΑΨΕ μήνυμα

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

Αν η λύση σου δε συμφωνεί 100% με την παραπάνω μην απογοητεύεσαι.

Αν έκανες λάθος με τις παραμέτρους ξαναδιάβασε την ενότητα 2, που τις εξηγεί αναλυτικά.

Αν έκανες κάποιο συντακτικό λάθος, θυμήσου ότι η διαδικασία είναι σαν ένα μικρό πρόγραμμα και ξαναδιάβασε τις σχετικές οδηγίες στην ενότητα 3.1

Αν δε κατάφερες να σκεφτείς με ποιες εντολές γίνονται οι ενέργειες που θέλουμε, θα πρέπει να ξαναγυρίσεις στο κεφάλαιο 8 και να δεις πιο προσεκτικά τα παραδείγματα στην ενότητα της Δομής Επανάληψης.

 

Δραστηριότητα 8 / Ενότητα 10.3

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

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

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

Η απάντηση Δ, δίνει μεν τον τύπο της συνάρτησης αλλά έχει αρκετές ελλείψεις και συντακτικά λάθη. Δες και τα σχόλια μας για την επιλογή Β

 

Δραστηριότητα 9 / Ενότητα 10.3

Οι σωστές αντιστοιχήσεις φαίνονται παρακάτω:

Είδος Υπ/τος Χαρακτηριστικά

Και τα δύο 1. Μπορεί να μην έχει καθόλου παραμέτρους

Συνάρτηση 2. Έχει ένα από τους 4 τύπους της ΓΛΩΣΣΑΣ

Και τα δύο 3. Ενεργοποιείται από το κυρίως πρόγραμμα ή άλλο υποπρόγραμμα

Συνάρτηση 4. Ενεργοποιείται με αναφορά του ονόματος της

Συνάρτηση 5. Πρέπει οπωσδήποτε να δηλωθεί ο τύπος της

Διαδικασία 6. Μπορεί να έχει την ενέργεια ΔΙΑΒΑΣΕ

Καμία 7. Μπορεί να καλέσει το κυρίως πρόγραμμα

Και τα δύο 8. Είναι τύπος υποπρογράμματος

Διαδικασία 9. Μπορεί να εμφανίσει στην οθόνη ένα μήνυμα

Διαδικασία 10. Εκτελεί οποιαδήποτε λειτουργία

Διαδικασία 11. Μπορεί να επιστρέψει τουλάχιστον μία τιμή

Διαδικασία 12. Ενεργοποιείται με την εντολή ΚΑΛΕΣΕ

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

Αν πάλι δεν κατάφερες να συμπληρώσεις σωστά τις αντιστοιχήσεις, ξαναδιάβασε την ενότητα 3 και επανέλαβε τη δραστηριότητα.

 

Δραστηριότητα 10 / Ενότητα 10.3

Η απάντηση στην ερώτηση αυτή είναι μοιάζει με την αντίστοιχη που είχε γίνει στο κεφάλαιο 2, στην ενότητα: Δομή Επανάληψης. Γιατί να υπάρχουν τρεις διαφορετικές εντολές επανάληψης όταν μπορώ και κάνω τη δουλειά μου αποκλειστικά μία μόνο;

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

Θα λύνατε μία άσκηση με γνωστό αριθμό επαναλήψεων με ΌΣΟ, ή ΜΕΧΡΙΣ_ΟΤΟΥ ή θα χρησιμοποιούσατε το ΓΙΑ;

 

Δραστηριότητα 11 / Ενότητα 10.3

Όλα τα προβλήματα που τέθηκαν μπορούν να υλοποιηθούν με διαδικασία, γιατί η διαδικασία κάνει οτιδήποτε εντολή κάνει και ένα κανονικό πρόγραμμα.

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

Το 1 ο γιατί δέχεται ένα αριθμό και επιστρέφει ένα μόνο αποτέλεσμα.

Το 2 ο όχι, γιατί επιστρέφει δύο ζητούμενα

Το 3 ο ναι, γιατί δέχεται πέντε αριθμούς και επιστρέφει ένα μόνο αποτέλεσμα.

Το 4 ο όχι, γιατί διαβάζει ένα αριθμό

Το 5 ο όχι, γιατί επιστρέφει δύο ζητούμενα

Το 6 ο όχι, γιατί ναι μεν υπολογίζει ένα μόνο ζητούμενο, όμως το εμφανίζει

 

 

Δραστηριότητα 12 / Ενότητα 10.3

Ένα υποπρόγραμμα πρέπει να έχει τα παρακάτω χαρακτηριστικά:

•  Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο

•  Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα

•  Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο

Αναλύουμε το τελευταίο χαρακτηριστικό:

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

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