Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Λύσεις µε κατάλληλο σχολιασµό και παρατηρήσεις σε θέµατα από παλαιότερες πανελλαδικές εξετάσεις. Γενικές οδηγίες και παρατηρήσεις κατά την αντιµετώπιση των προβληµάτων: Αρχικά, διαβάζουµε όλο το πρόβληµα, προκειµένου να αποκτήσουµε µια γενική εικόνα για αυτό. Ακολούθως, στηριζόµαστε στα τρία στάδια αντιµετώπισης: Κατανόηση: Διακρίνουµε τα Δεδοµένα και τα Ζητούµενα Τα Δεδοµένα διακρίνονται σε τέσσαρες µορφές συνήθως: 1. Στοιχεία που δίνονται από τον χρήστη (εντολή ΔΙΑΒΑΣΕ) 2. Τύποι µαθηµατικοί που δίνονται για ενδιάµεσους υπολογισµούς 3. Πίνακες µε στοιχεία διαφορετικών περιπτώσεων που είναι απαραίτητα για τον υπολογισµό ζητούµενων του προβλήµατος 4. Παρατηρήσεις τις περισσότερες φορές για το όριο των τιµών που εισάγονται από τον χρήστη Ανάλυση: Κατακερµατίζουµε το αρχικό πρόβληµα σε επιµέρους υπό-προβλήµατα 1. Εδώ ιδιαίτερα χρήσιµος είναι ο χωρισµός του προβλήµατος σε υπό-ερωτήµατα στην εκφώνηση 2. Εντοπίζουµε τους ενδιάµεσους υπολογισµούς 3. Θέτουµε µια λογική σειρά εκτέλεσης / υλοποίησης των βηµάτων που θα ακολουθήσουµε για να περάσουµε από όλα τα ερωτήµατα Επίλυση: Απαντάµε σε ένα-ένα τα υποπροβλήµατα, οπότε και δηµιουργούµε έναν αλγόριθµο (ή αργότερα πρόγραµµα) 1. Αρχικά, στο πρόχειρο καταγράφουµε τις εντολές που έχουµε «κωδικοποιήσει» από το στάδιο της ανάλυσης 2. Έπειτα, θέτοντας ακραίες πιθανές τιµές εισόδου, «τρέχουµε» εµείς τις εντολές του αλγορίθµου που έχουµε δηµιουργήσει µέχρι στιγµής 3. Προβαίνουµε σε αλλαγές και διορθώσεις και επαναλαµβάνουµε το προηγούµενο βήµα Διαβάζοντας την εκφώνηση του προβλήµατος προσπαθούµε να αντιληφθούµε εάν µια ή περισσότερες ενέργειες εκτελούνται περισσότερες από µία φορές. Σε αυτήν την περίπτωση έχουµε δοµή επανάληψης: Εάν το πλήθος των επαναλήψεων είναι γνωστό, τότε χρησιµοποιούµε ιδανικά τη δοµή επανάληψης ΓΙΑ Διαφορετικά, µε το πλήθος να είναι άγνωστο, συνήθως χρησιµοποιούµε τη δοµή ΟΣΟ. Στην περίπτωση αυτή θα
πρέπει να εντοπίσουµε στην εκφώνηση του προβλήµατος την συνθήκη τερµατισµού (την συνθήκη δηλαδή της ΟΣΟ) Εάν οι τιµές που δίνονται από τον χρήστη (µε την εντολή ΔΙΑΒΑΣΕ) πρέπει να περιορίζονται σε κάποιο συγκεκριµένο πεδίο, τότε ιδανικά χρησιµοποιούµε τη δοµή επανάληψης ΜΕΧΡΙΣ ΟΤΟΥ, η οποία θα «αγκαλιάζει» την εντολή εισόδου ΔΙΑΒΑΣΕ Με δεδοµένο ότι έχουµε δοµή επανάληψης, ένα πρόβληµα µπορεί να έχει ως ζητούµενα ένα ή συνδυασµό των παρακάτω: Άθροισµα Πριν την επανάληψη µηδενίζουµε το άθροισµα (αθρ! 0), µέσα στην επανάληψη προσαυξάνεται (αθρ! αθρ + Χ) και εµφανίζουµε µετά το τέλος της επανάληψης (Εµφάνισε αθρ) Πλήθος Πριν την επανάληψη µηδενίζουµε το πλήθος (πλ! 0), µέσα στην επανάληψη προσαυξάνεται κατά ένα (πλ! πλ + 1) και εµφανίζουµε µετά το τέλος της επανάληψης (Εµφάνισε πλ) Μέσος Όρος Υπολογίζουµε πλήθος και άθροισµα και µετά το τέλος της επανάληψης διαιρούµε και εµφανίζουµε (Εµφάνισε αθρ/ πλ). Προσοχή: το πλήθος να είναι διάφορο του µηδενός. Ποσοστό Χρειαζόµαστε δύο πλήθη: το συνολικό και το µερικό (για τον υπολογισµό του τελευταίου πιθανότατα να χρειαστούµε µέσα στην επανάληψη και µια δοµή επιλογής θέτοντας έτσι κάποιο κριτήριο για το µερικό πλήθος). Τελικά, µετά το τέλος της επανάληψης, διαιρούµε και εµφανίζουµε (Εµφάνισε µερικό/συνολικό). ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 3 ΙΟΥΝΙΟΥ 2003 Θέµα 3ο Ο Δείκτης Μάζας του ανθρώπινου Σώµατος ( ΜΣ) υπολογίζεται από το βάρος (Β) σε χλγ. και το ύψος (Υ) σε µέτρα µε τον τύπο ΜΣ=Β/Υ 2. Ο ανωτέρω τύπος ισχύει για άτοµα άνω των 18 ετών. Το άτοµο ανάλογα µε την τιµή του ΜΣ χαρακτηρίζεται σύµφωνα µε τον παρακάτω πίνακα: ΜΣ < 18,5 "αδύνατο άτοµο" 18,5 ΜΣ < 25 "κανονικό άτοµο" 25 ΜΣ < 30 "βαρύ άτοµο" 30 ΜΣ "υπέρβαρο άτοµο" Να γράψετε αλγόριθµο ο οποίος: α. να διαβάζει την ηλικία, το βάρος και το ύψος του ατόµου Μονάδες 3
β. εάν η ηλικία είναι µεγαλύτερη των 18 ετών, τότε 1. να υπολογίζει το ΜΣ Μονάδες 5 2. να ελέγχει την τιµή του ΜΣ από τον ανωτέρω πίνακα και να εµφανίζει τον αντίστοιχο χαρακτηρισµό Μονάδες 10 γ. εάν η ηλικία είναι µικρότερη ή ίση των 18 ετών, τότε να εµφανίζει το µήνυµα "δεν ισχύει ο δείκτης ΜΣ". Μονάδες 2 Παρατήρηση: Θεωρήστε ότι το βάρος, το ύψος και η ηλικία είναι θετικοί αριθµοί. ΛΥΣΗ Αρχικά, διαβάζουµε όλο το πρόβληµα για να αποκτήσουµε µια γενική εικόνα. Διακρίνουµε Δεδοµένα (είσοδος για Ηλικία, Βάρος και Ύψος, τύπος του ΔΜΣ, πίνακας µε µηνύµατα που θα πρέπει να εµφανίζονται βάσει του ΔΜΣ) και Ζητούµενα (εµφάνιση κατάλληλων µηνυµάτων). Στη συνέχεια, κατά το στάδιο της ανάλυσης, βλέπουµε πως δεν έχουµε επαναλαµβανόµενη διαδικασία (εποµένως ούτε και ανάγκη χρήσης δοµής επανάληψης). Τα υπό-προβλήµατα φαίνονται από τα ίδια τα ερωτήµατα του προβλήµατος. Κατά τη φάση, συνεπώς, της επίλυσης, για την ανάπτυξη του αλγορίθµου, αρκεί κανείς να ακολουθήσει µε τη σειρά τα ερωτήµατα αυτά. Αλγόριθµος Θέµα_Τρία! Ερώτηµα α. Διάβασε ΗΛΙΚΙΑ, Β, Υ! Ερώτηµα β. Αν ΗΛΙΚΙΑ > 18 τότε! Ερώτηµα β.1. ΜΣ Β / Υ ^ 2! Ερώτηµα β.2. Αν ΜΣ < 18.5 τότε Εµφάνισε "αδύνατο άτοµο" _αν ΜΣ < 25 τότε Εµφάνισε "κανονικό άτοµο" _αν ΜΣ < 30 τότε Εµφάνισε "βαρύ άτοµο" Εµφάνισε "υπέρβαρο άτοµο" Αλλιώς! ΗΛΙΚΙΑ <= 18 Εµφάνισε "δεν ισχύει ο δείκτης ΜΣ" Τέλος Θέµα_Τρία
ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΠΑΡΑΣΚΕΥΗ 4 ΙΟΥΛΙΟΥ 2008 ΘΕΜΑ 3ο Μία εταιρεία αποφάσισε να δώσει βοηθητικό επίδοµα στους υπαλλήλους της για τον µήνα Ιούλιο. Το επίδοµα διαφοροποιείται, ανάλογα µε το φύλο του/της υπαλλήλου και τον αριθµό των παιδιών του/της, µε βάση τους παρακάτω πίνακες: ΑΝΔΡΕΣ ΓΥΝΑΙΚΕΣ ΑΡΙΘΜΟΣ ΠΑΙΔΙΩΝ ΕΠΙΔΟΜΑ ΣΕ ΑΡΙΘΜΟΣ ΠΑΙΔΙΩΝ ΕΠΙΔΟΜΑ ΣΕ 1 20 1 30 2 50 2 80 >=3 120 >=3 160 Να γράψετε αλγόριθµο ο οποίος: α. διαβάζει το φύλο («Α» ή «Γ») το οποίο ελέγχεται ως προς την ορθότητα της εισαγωγής του. Επίσης διαβάζει τον µισθό και τον αριθµό των παιδιών του υπαλλήλου. Μονάδες 3 β. υπολογίζει και εµφανίζει το επίδοµα και το συνολικό ποσό που θα εισπράξει ο υπάλληλος τον µήνα Ιούλιο. Μονάδες 7 γ. δέχεται απάντηση «ΝΑΙ» ή «ΟΧΙ» για τη συνέχεια ή τον τερµατισµό της επανάληψης µετά την εµφάνιση σχετικού µηνύµατος. Μονάδες 4 δ. υπολογίζει και εµφανίζει το συνολικό ποσό επιδόµατος που πρέπει να καταβάλει η Εταιρεία στους υπαλλήλους της. Μονάδες 6 ΛΥΣΗ Κατανόηση: Δεδοµένα (είσοδος για ΦΥΛΟ, ΜΙΣΘΟΣ και ΠΑΙΔΙΑ, πίνακας µε τα επιδόµατα βάσει του φύλου και του αριθµού των παιδιών) Ζητούµενα (εµφάνιση επιδόµατος, συνολικού ποσού τον Ιούλιο κάθε υπαλλήλου και τέλος, τα συνολικά επιδόµατα) Ανάλυση: Η καταγραφή των στοιχείων των υπαλλήλων και ο υπολογισµός επιδόµατος πραγµατοποιείται για κάθε υπάλληλο, συνεπώς θα έχουµε δοµή επανάληψης. Επειδή, όµως, από τα δεδοµένα του προβλήµατος δεν προκύπτει συγκεκριµένο πλήθος υπαλλήλων, αποκλείουµε τη δοµή επανάληψης ΓΙΑ. Μεταξύ των δοµών επανάληψης ΟΣΟ και ΜΕΧΡΙΣ ΟΤΟΥ, θα επιλέξουµε τη δεύτερη, καθώς η συνθήκη τερµατισµού προϋποθέτει να εµφανίζεται µήνυµα περί συνέχειας της επαναληπτικής διαδικασίας.
Κατά την εισαγωγή του φύλου, σύµφωνα µε την εκφώνηση θα πρέπει να γίνεται έλεγχος ορθής εισαγωγής, εποµένως θα χρησιµοποιηθεί και πάλι η δοµή ΜΕΧΡΙΣ ΟΤΟΥ. Για τον υπολογισµό του επιδόµατος κάθε υπαλλήλου, θα χρησιµοποιηθούν εµφωλευµένες δοµές επιλογής, που ελέγχουν φύλο και αριθµό παιδιών, αξιοποιώντας τα δεδοµένα του πίνακα της εκφώνησης. Τέλος, για τον υπολογισµό των συνολικών επιδοµάτων, θα χρησιµοποιούµε µια µεταβλητή αθροίσµατος (ΑΘΡ), που εντός της επανάληψης θα προσαυξάνεται µε το επίδοµα του κάθε υπαλλήλου, πριν την επανάληψη θα αρχικοποιείται µε το µηδέν (ουδέτερος όρος της πρόσθεσης) και µετά τη επανάληψη θα εµφανίζεται. Αλγόριθµος Θέµα_Τρία ΑΘΡ! 0! Ερώτηµα γ. Αρχή_επανάληψης! Ερώτηµα α. Αρχή_επανάληψης Διάβασε ΦΥΛΟ Μέχρις_ότου ΦΥΛΟ= Α ή ΦΥΛΟ= Γ Διάβασε ΜΙΣΘΟΣ, ΠΑΙΔΙΑ! Ερώτηµα β. Αν ΦΥΛΟ= Α τότε Αν ΠΑΙΔΙΑ=0 τότε ΕΠΙΔΟΜΑ! 0 _αν ΠΑΙΔΙΑ=1 τότε ΕΠΙΔΟΜΑ! 20 _αν ΠΑΙΔΙΑ=2 τότε ΕΠΙΔΟΜΑ! 50 ΕΠΙΔΟΜΑ! 120 Αλλιώς! ΦΥΛΟ= Γ Αν ΠΑΙΔΙΑ=0 τότε ΕΠΙΔΟΜΑ! 0 _αν ΠΑΙΔΙΑ=1 τότε ΕΠΙΔΟΜΑ! 30 _αν ΠΑΙΔΙΑ=2 τότε ΕΠΙΔΟΜΑ! 80 ΕΠΙΔΟΜΑ! 160 ΙΟΥΛΙΟΣ! ΕΠΙΔΟΜΑ + ΜΙΣΘΟΣ Εµφάνισε ΕΠΙΔΟΜΑ, ΙΟΥΛΙΟΣ ΑΘΡ! ΑΘΡ + ΕΠΙΔΟΜΑ! Ερώτηµα γ. Εµφάνισε Συνέχεια (ΝΑΙ/ΟΧΙ); Διάβασε ΑΠΑΝΤΗΣΗ Μέχρις_ότου ΑΠΑΝΤΗΣΗ= ΟΧΙ Εµφάνισε Σύνολο επιδοµάτων τον Ιούλιο:, ΑΘΡ Τέλος Θέµα_Τρία