Περιεχόμενα Πρόλογος... 9 Εισαγωγή... 11 Μεθοδολογία μελέτης και αντιμετώπισης προβλημάτων... 11 Πώς να αποδώσετε στις πανελλαδικές εξετάσεις το μέγιστο... 12 Κεφάλαιο 1: Βασικά στοιχεία θεωρίας... 17 Πρόβλημα... 17 Βασικές έννοιες αλγορίθμων... 21 Κριτήρια αλγορίθμων... 21 Περιγραφή και αναπαράσταση αλγορίθμων... 22 Σύμβολα διαγράμματος ροής... 22 Κεφάλαιο 2: Θέματα και Ερωτήσεις θεωρίας... 23 Εκφωνήσεις θεμάτων... 23 Λύσεις θεμάτων θεωρίας... 83 Κεφάλαιο 3: Ασκήσεις στις δομές ακολουθίας... 147 Εκφωνήσεις ασκήσεων... 147 Λύσεις ασκήσεων Κεφαλαίου 3... 148 Άσκηση 3.1: Μετατροπή ωρών, λεπτών και δευτερολέπτων σε δευτερόλεπτα... 148 Άσκηση 3.2: Μετατροπή μέτρων, δεκατόμετρων και εκατοστών σε εκατοστά... 148 Άσκηση 3.3: Μετατροπή εκατοστών σε χιλιόμετρα, μέτρα και εκατοστά... 149 Άσκηση 3.4: Μετατροπή ημερών σε έτη, μήνες και ημέρες... 150 Κεφάλαιο 4: Δομή επιλογής... 153 Εκφωνήσεις ασκήσεων... 155 Λύσεις ασκήσεων Κεφαλαίου 4... 162 Άσκηση 4.1: Χαρακτηρισμός επίδοσης με απλή επιλογή... 162 Άσκηση 4.2: Χαρακτηρισμός κόστους με απλή επιλογή... 163 Άσκηση 4.3: Χαρακτηρισμός τύπου πορτοκαλιού με βάση το μέγεθος... 164 Άσκηση 4.4: Κλιμακωτός υπολογισμός κόστους ρεύματος με εμφωλευμένες δομές... 165 Άσκηση 4.5: Κλιμακωτός υπολογισμός κόστους ρεύματος με σύνθετη δομή επιλογής. 167 Άσκηση 4.6: Κλιμακωτός υπολογισμός κόστους ρεύματος με απλές δομές επιλογής... 168 Άσκηση 4.7: Βαθμός μαθητή σε ένα μάθημα με αντιμετώπιση απλών δομών επιλογής... 169 Άσκηση 4.8: Υπολογισμός χρέωσης συνδρομής κινητής τηλεφωνίας με πολλαπλή επιλογή... 172 Άσκηση 4.9: Υπολογισμός αντιτίμου διοδίων... 172 Άσκηση 4.10: Δίσεκτο έτος με δομές απλής επιλογής... 174 Άσκηση 4.11: Δίσεκτο έτος με εμφωλευμένη δομή επιλογής... 177 Άσκηση 4.12: Δίσεκτο έτος με σύνθετη δομή επιλογής... 179 Άσκηση 4.13: Δίσεκτο έτος με δομή πολλαπλής επιλογής... 179 Άσκηση 4.14: Υπολογισμός ταχυδρομικού τέλους με βάση βάρος και προορισμό... 180
6 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Άσκηση 4.15: Χαρακτηρισμός ατόμου με βάση το δείκτη μάζας... 181 Άσκηση 4.16: Υπολογισμός κόστους κατανάλωσης νερού με κλιμακωτή χρέωση... 182 Άσκηση 4.17: Υπολογισμός τελικός βαθμός επανεξεταζόμενου γραπτού... 183 Άσκηση 4.18: Διατύπωση ώρας σε δωδεκάωρη μορφή... 184 Κεφάλαιο 5: Δομές επανάληψης... 187 Μετατροπές από μια δομή επανάληψης σε άλλη δομή επανάληψης με γνωστό πλήθος επαναλήψεων... 189 Εκφωνήσεις ασκήσεων... 194 Λύσεις ασκήσεων Κεφαλαίου 5... 209 Άσκηση 5.1: Επαναληπτικός χαρακτηρισμός οικοπέδων από άποψη τιμής... 209 Άσκηση 5.2: Υπολογισμός τιμής υπολογιστή με επαναληπτική διαδικασία... 209 Άσκηση 5.3: Υπολογισμός βαθμολογίας με έλεγχο εγκυρότητας τιμών και πιθανότητα αναβαθμολόγησης... 211 Άσκηση 5.4: Υπολογισμός αθροισμάτων 20 ποσοτήτων σε 3 είδη... 212 Άσκηση 5.5: Υπολογισμός μεγίστης έκτασης, ελαχίστου πληθυσμού και μέσου όρου πληθυσμού 15 χωρών της ΕΕ... 213 Άσκηση 5.6: Υπολογισμός πλήθους μαθητών με πρόβλημα νεανικού διαβήτη... 214 Άσκηση 5.7: Υπολογισμός οικογενειακού επιδόματος με βάση το πλήθος παιδιών του υπαλλήλου και εγκυρότητα δεδομένων... 216 Άσκηση 5.8: Υπολογισμός τελικού βαθμού πολλών μαθητών... 216 Άσκηση 5.9: Κλιμακωτός υπολογισμός φόρου 30 υπαλλήλων... 218 Άσκηση 5.10: Υπολογισμός ποσοστών δημοσκόπησης... 219 Άσκηση 5.11: Υπολογισμός κλιμακωτής συνολικής προμήθειας ανά τύπο προϊόντος... 220 Άσκηση 5.12: Υπολογισμός υπερωριακής αμοιβής 100 υπαλλήλων... 221 Άσκηση 5.13: Εύρεση πιο συμφέροντος προϊόντος... 222 Άσκηση 5.14: Νικητής στο παιχνίδι πέτρα, ψαλίδι, χαρτί... 223 Άσκηση 5.15: Υπολογισμός επιδότησης προϊόντων με εμφωλευμένες δομές επιλογής με έλεγχο εγκυρότητας δεδομένων... 224 Άσκηση 5.16: Αγορές γραμματοσήμων μέχρις εξαντλήσεως του αποθέματος... 225 Άσκηση 5.17: Επίδομα τέκνων σε υπαλλήλους εταιρείας... 226 Άσκηση 5.18: Οικονομικά και στατιστικά στοιχεία σε ΚΤΕΟ με άγνωστο πλήθος και τύπο οχημάτων... 227 Άσκηση 5.19: Υπολογισμός συνολικής κλιμακωτής έκπτωσης σε πολυκατάστημα... 228 Άσκηση 5.20: Αποτελέσματα σχολικών αγώνων με άγνωστο πλήθος συμμετεχόντων αθλητών... 229 Άσκηση 5.21: Επιτυχόντες ΑΣΕΠ με άγνωστο πλήθος συμμετεχόντων... 231 Άσκηση 5.22: Μηχανογραφημένη λειτουργία πρατηρίου καυσίμων... 232 Άσκηση 5.23: Επιδότηση επενδυτικών έργων μέχρις εξαντλήσεως του κεφαλαίου... 233 Άσκηση 5.24: Επικινδυνότητα περιοχών για πυρκαγιά στον Ταΰγετο... 234 Άσκηση 5.25: Γλωσσολογική και στατιστική ανάλυση κειμένου... 235 Άσκηση 5.26: Εύρεση ηλικίας ατόμου... 236 Άσκηση 5.27: Υπολογισμός ασφαλίστρων με βάση είδος οχήματος, κυβισμό και ηλικία οδηγού... 238
Περιεχόμενα 7 Άσκηση 5.28: Χαρακτηρισμός αριθμού ως ακέραιος πραγματικός, άρτιος περιττός... 239 Άσκηση 5.29: Πλήθος ψηφίων ακεραίου... 239 Κεφάλαιο 6: Πίνακες... 241 Εκφωνήσεις ασκήσεων... 242 Λύσεις ασκήσεων Κεφαλαίου 6... 267 Άσκηση 6.1: Εύρεση ελαχίστου σε δισδιάστατο πίνακα... 267 Άσκηση 6.2: Αποθήκευση 20 προϊόντων σε 10 αποθήκες... 267 Άσκηση 6.3: Ξενοδοχειακή αλυσίδα με 5 ξενοδοχεία και μηνιαίες εισπράξεις κάθε ξενοδοχείου για ένα χρόνο... 268 Άσκηση 6.4: Αλυσίδα κινηματογράφων με 10 αίθουσες και μηνιαίες εισπράξεις κάθε αίθουσας για ένα χρόνο... 269 Άσκηση 6.5: Επιδόσεις ακοντισμού 10 αθλητών με 6 ρίψεις και ταξινόμηση των μέγιστων επιδόσεων... 270 Άσκηση 6.6: Επιδόσεις δισκοβολίας 20 αθλητών και ταξινόμηση των επιδόσεων... 271 Άσκηση 6.7: Πόντοι ανά παίκτη μπάσκετ και ταξινόμηση με βάση το σύνολο Άσκηση 6.8: των πόντων... 272 Βαθμοί διαγωνιζομένων και σειριακή αναζήτηση επιτυχόντος με βάση τον αριθμό μητρώου... 273 Άσκηση 6.9: Υπολογισμός εδρών των κομμάτων σε ψηφοφορία... 274 Άσκηση 6.10: Ταξινόμηση βαθμολογίας συμμετεχόντων σε Ολυμπιάδα Πληροφορικής... 276 Άσκηση 6.11: Αναζήτηση τυχερού μαθητή σε κλήρωση... 277 Άσκηση 6.12: Ταξινόμηση σχολείων σε πανελλήνιο σχολικό διαγωνισμό... 277 Άσκηση 6.13: Μηνιαία ποσοστά πληρότητας αεροπλάνων σε 15 προορισμούς για ένα έτος... 279 Άσκηση 6.14: Συνολικές οφειλές ταμείων σε νοσοκομείο από νοσήλεια... 281 Άσκηση 6.15: Σύγκριση πινάκων... 282 Άσκηση 6.16: Αξιολόγηση υποψηφίων και ερωτήσεων σε διαγωνισμό... 282 Άσκηση 6.17: Υπολογισμός τελικής βαθμολογίας υποψηφίων για υποτροφία με ταξινόμηση... 284 Άσκηση 6.18: Επιδόσεις μαθητών των τριών τάξεων Γυμνασίου... 285 Άσκηση 6.19: Θερμοκρασίες 20 πόλεων και σειριακή αναζήτηση... 287 Άσκηση 6.20: Ιππικό τρίαθλο και σειριακή αναζήτηση... 288 Άσκηση 6.21: Εισαχθέντες φοιτητές από θετική και τεχνολογική κατεύθυνση... 290 Άσκηση 6.22: Καταγραφή θερμοκρασιών σε Μετεωρολογικό Σταθμό ανά ώρα σε μια εβδομάδα... 292 Άσκηση 6.23: Στοιχεία δισκογραφικής εταιρείας για 20 CD επί ένα έτος... 293 Άσκηση 6.24: Εκλογή μελών σε διοικητικό συμβούλιο... 294 Άσκηση 6.25: Αξία μετοχών και κέρδος ή ζημιά επενδυτή σε μια εβδομάδα... 295 Άσκηση 6.26: Στατιστικά στοιχεία εθελοντών δασοπυροσβεστών... 297 Άσκηση 6.27: Καταγραφή ρύπων σε 4 σταθμούς ανά εικοσιτετράωρο... 298 Άσκηση 6.28: Βαθμολογία ευρωπαϊκού πρωταθλήματος ποδοσφαίρου... 299 Άσκηση 6.29: Μηνιαίες πωλήσεις 20 μοντέλων τηλεοράσεων για ένα έτος... 301
8 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Άσκηση 6.30: Πλήθος επιβατών σε τρένο... 302 Άσκηση 6.31: Κλάσεις βαθμολογίας μαθητών... 303 Άσκηση 6.32: Δανειστική βιβλιοθήκη με υπολογισμό πλήθους δανεισμένων βιβλίων και σειριακή αναζήτηση μέλους της... 305 Άσκηση 6.33: Νικητές ανά κατηγορία στο ράλλυ Βορείων Σποράδων... 307 Άσκηση 6.34: Μελέτη εξάπλωσης επιδημίας... 309 Άσκηση 6.35: Αρχηγός ποδοσφαιρικής ομάδας κατόπιν ψηφοφορίας... 310 Άσκηση 6.36: Αποκρυπτογράφηση μηνυμάτων... 312 Άσκηση 6.37: Επικινδυνότητα ηλεκτρομαγνητικής ακτινοβολίας... 313 Άσκηση 6.38: Υπολογισμός του αρνητικού μιας φωτογραφίας... 315 Άσκηση 6.39: Προσφορές σχολείων... 317 Άσκηση 6.40: Μετάδοση δεδομένων ήχου και εικόνας... 318 Άσκηση 6.41: Τριγωνικοί πίνακες αποτελεσμάτων σε Eurobasket... 320 Άσκηση 6.42: Αφαίρεση στήλης και γραμμής από πίνακα 2 διαστάσεων... 323 Άσκηση 6.43: Μετακίνηση στοιχείων μονοδιάστατου πίνακα... 324 Άσκηση 6.44: Παλινδρομική ή καρκινοειδής φράση... 325 Άσκηση 6.45: Ταξινόμηση δισδιάστατου πίνακα... 326 Άσκηση 6.46: Έξυπνη φυσαλίδα... 327 Κεφάλαιο 7: Υποπρογράμματα... 329 Λύσεις ασκήσεων Κεφαλαίου 7... 339 Άσκηση 7.1: Μετατροπές θερμοκρασίας με χρήση συνάρτησης... 339 Άσκηση 7.2: Υπολογισμός και εμφάνιση μέσου όρου διαγωνιζομένων στον ΑΣΕΠ με χρήση υποπρογράμματος... 340 Άσκηση 7.3: Υπολογισμός επιτηρητών σε διαγωνισμό του ΑΣΕΠ με χρήση συνάρτησης... 341 Άσκηση 7.4: Υπολογισμός κόστους στάθμευσης... 342 Άσκηση 7.5: Κόστος ενοικίασης αυτοκινήτων με βάση τον τύπο και τη διάρκεια ενοικίασης... 343 Άσκηση 7.6: Μηχανογράφηση πτηνοτροφικής μονάδας... 344 Άσκηση 7.7: Συγκρότηση 8άδας τελικού 110 μέτρων μετ' εμποδίων από δύο ημιτελικούς με υποπρόγραμμα... 346 Άσκηση 7.8: Εβδομαδιαία κέρδη (ή ζημίες) ξενοδοχειακής επιχείρησης... 348 Άσκηση 7.9: Νικητής στο παιχνίδι "Τρίλιζα"... 350 Άσκηση 7.10: Έλεγχος πρόσβασης σε σύστημα υπολογιστή... 351 Άσκηση 7.11: Κέρδη ομίλου 20 εταιρειών σε βάθος πενταετίας... 353 Άσκηση 7.12: Πρόσθεση κλασμάτων με υπολογισμό ΜΚΔ και ΕΚΠ... 354 Κεφάλαιο 8: Παρακολούθηση αλγορίθμων... 357 Λύσεις ασκήσεων Κεφαλαίου 8... 386 Κεφάλαιο 9: Εξάλειψη της εντολής GOTO... 413 Λύσεις ασκήσεων Κεφαλαίου 9... 415
Πρόλογος Αυτό το βιβλίο απευθύνεται, κυρίως, στους μαθητές της Γ' τάξης Γενικού Λυκείου Τεχνολογικής Κατεύθυνσης που διδάσκονται το μάθημα "Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον". Απευθύνεται, όμως, και σε όλους εκείνους που ασχολούνται με τον προγραμματισμό, και κατά συνέπεια με την "Ανάπτυξη Εφαρμογών", όπως είναι οι φοιτητές και οι σπουδαστές των διαφόρων σχολών Πληροφορικής, αλλά και στους μαθητές των ΕΠΑΛ, που ασχολούνται με τον προγραμματισμό. Διαβάζοντας αυτό το βιβλίο θα βοηθηθείτε στο να κατανοήσετε την έννοια των λογήςλογής προβλημάτων και τον τρόπο με τον οποίο πρέπει να σκεφθείτε για να τα επιλύσετε, όχι χειρωνακτικά αλλά με τη βοήθεια του ηλεκτρονικού υπολογιστή. Αυτός είναι και ο απώτερος σκοπός της "Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον". Αν και στην καθημερινή μας ζωή η έννοια του προβλήματος είναι γνωστή κι έχει "περάσει" στο υποσυνείδητό μας, είναι πολύ λίγες οι φορές που μπορούμε να βάλουμε σε "τάξη" το μυαλό μας για να σκεφτεί συγκροτημένα και να μην τα χάσουμε και να αναλύσουμε σωστά τα δεδομένα και τα ζητούμενα. Το παρόν σύγγραμμα έχει προέλθει από πολυετή εκπαιδευτική πείρα (τόσο μέσα στην τάξη, όσο και σε βαθμολογικό κέντρο) και περιλαμβάνει θέματα πανελληνίων εξετάσεων (από το 2000), και ασκήσεις και εργασίες που έχουν ανατεθεί σε μαθητές της Γ τάξης Γενικού Λυκείου Τεχνολογικής Κατεύθυνσης. Για το λόγο αυτό πιστεύω ότι αποτελεί ένα ισχυρό εφόδιο στην ανάλυση των βημάτων που απαιτεί η επίλυση ενός προβλήματος, στην εξοικείωσή σας με τον υπολογιστή, στην επίλυση των προβλημάτων με τη βοήθεια του ηλεκτρονικού υπολογιστή, αλλά και στην πορεία σας προς το μέλλον. Με χαρά θα δεχθώ τις παρατηρήσεις σας για το βιβλίο αυτό. Μπορείτε να με βρίσκετε είτε μέσω του εκδοτικού οίκου «Κλειδάριθμος», (Στουρνάρη 27Β, Αθήνα, Τ.Κ. 10682) είτε με e mail στην ηλεκτρονική διεύθυνση: kapposit@otenet.gr είτε μέσω του δικτυακού μου τόπου www.kappos.gr. Ξάνθη Ιούλιος 2013 Γιάννης Κάππος Δρ. Μηχ/γος Ηλ/γος Μηχανικός
Εισαγωγή Μεθοδολογία μελέτης και αντιμετώπισης προβλημάτων Για να επιλύσουμε οποιοδήποτε πρόβλημα, γενικά, πρέπει πρώτα να είμαστε σίγουροι ότι έχουμε καταλάβει τις απαιτήσεις του. Με άλλα λόγια, να είμαστε σίγουροι για το ποια είναι τα δεδομένα και ποια τα ζητούμενα. Σ αυτό θα μας βοηθήσει πολύ η σαφής διατύπωση του προβλήματος. Κατόπιν, πρέπει να αναλύσουμε και να καταγράψουμε τα βήματα που θα μας οδηγήσουν στην επίλυση του προβλήματος. Για επιλύσουμε ένα πρόβλημα, πρέπει να γνωρίζουμε τη μέθοδο επίλυσής του, διαφορετικά πρέπει να ενημερωθούμε πρώτα γι αυτήν. Για παράδειγμα, δεν μπορούμε να επιλύσουμε μια δευτεροβάθμια εξίσωση, αν δε γνωρίζουμε από τα Μαθηματικά πώς επιλύεται η δευτεροβάθμια εξίσωση. Η παραπάνω μεθοδολογία είναι γενική και περιγράφει τις πιο στοιχειώδεις ενέργειες που απαιτούνται για να επιλύουμε προβλήματα. Αν, όμως, για την επίλυση των προβλημάτων χρησιμοποιούμε ηλεκτρονικό υπολογιστή, τότε πρέπει να ακολουθούμε τα εξής βήματα: 1. Πρέπει να διατυπώνουμε το πρόβλημα με σαφήνεια. Δηλαδή, πρέπει να καθορίζουμε ποια θα είναι τα δεδομένα (τα οποία συνήθως θα τα δίνουμε εμείς στον υπολογιστή από το πληκτρολόγιο) και ποια θα είναι τα αποτελέσματα (τα οποία θα εμφανίζονται στην οθόνη ή στο χαρτί). 2. Σημαντικό ρόλο στην επίλυση του προβλήματος παίζει η κατανόησή του. Ποιος είναι, δηλαδή, ο τρόπος με τον οποίο από τα δεδομένα φτάνουμε στα αποτελέσματα. Σ αυτό θα μας βοηθήσει πολύ η προσπάθεια επίλυσης του προβλήματος με το "χέρι". Να προσπαθήσουμε, δηλαδή, να επιλύσουμε το πρόβλημα σαν να μην είχαμε στη διάθεσή μας ηλεκτρονικό υπολογιστή. Για να κατανοήσουμε όμως το πρόβλημα, πρέπει να διαβάσουμε ΟΛΟΚΛΗΡΗ την άσκηση και όχι ερώτημα ε- ρώτημα. 3. Αφού κατανοήσουμε το πρόβλημα, καταγράφουμε τα βήματα επίλυσής του. Αν το πρόβλημα είναι πολύπλοκο, καλό είναι να καταγράψουμε τα βήματα επίλυσής του με φυσική γλώσσα (με περιγραφή, δηλαδή, των ενεργειών βήμα προς βήμα που α- παιτούνται για την επίλυση του προβλήματος). Αυτός είναι και ο αλγόριθμος για την επίλυση ενός προβλήματος. 4. Μετά την περιγραφή των βημάτων που απαιτούνται για την επίλυση του προβλήματος, με φυσική γλώσσα, καλό είναι να δώσουμε και τον αλγόριθμο διαγραμματικά και να παρουσιάσουμε το διάγραμμα ροής της επίλυσης του προβλήματος. Θα διαπιστώσετε ότι από το διάγραμμα ροής είναι πολύ εύκολο να κατασκευάσουμε το πρόγραμμα σε κάποια γλώσσα προγραμματισμού (Basic, Pascal, κ.ά.) ή σε ψευδογλώσσα.
12 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 5. Επόμενο βήμα είναι η κατασκευή του προγράμματος σε ψευδογλώσσα ή σε κάποια γλώσσα προγραμματισμού. Το πρόγραμμα που θα κατασκευάσετε, γράψτε το πρώτα στο χαρτί και μετά σε υπολογιστή (αν το επιθυμείτε). 6. Πριν θεωρήσετε τη διαδικασία επίλυσης του προβλήματος ολοκληρωμένη, δοκιμάστε αν το πρόγραμμά σας είναι σωστό. Η δοκιμή γίνεται ακολουθώντας το πρόγραμμα εντολή-εντολή και δοκιμάζοντας τις τιμές που παίρνουν οι μεταβλητές του προγράμματος. Όπου έχετε δώσει εντολή οι τιμές να εισάγονται από το πληκτρολόγιο, δώστε δικές σας τιμές και κατά προτίμηση τιμές οι οποίες να είναι οριακές για το πρόβλημα που επιλύετε. Επαναλάβετε τις δοκιμές για όσο το δυνατό περισσότερες τιμές, έτσι ώστε να είστε σίγουροι ότι το πρόγραμμά σας είναι σωστό. Ένα σωστό πρόγραμμα έχει μια αρχή και ένα τέλος, καλύπτει όσο το δυνατόν περισσότερες περιπτώσεις και δε διακόπτεται από εκτέλεση εσφαλμένης εντολής. Για παράδειγμα, η διαίρεση α/β είναι γενικά αποδεκτή. Αν, όμως, η μεταβλητή β πάρει την τιμή 0, ο υπολογιστής διακόπτει την εκτέλεση του προγράμματος, εμφανίζοντας μήνυμα λάθους. Εμείς, ως προγραμματιστές, πρέπει να μεριμνήσουμε ώστε η διαίρεση α/β να γίνεται μόνο όταν το β 0. Ένας άλλος τρόπος για να ελέγξουμε το πρόγραμμά μας, είναι να το εκτελέσουμε στον υπολογιστή, οπότε θα εντοπίσουμε και τα σημεία που εμφανίζονται τα λάθη. Θυμηθείτε, όμως, ότι στις εξετάσεις δεν θα έχετε στη διάθεσή σας ηλεκτρονικό υπολογιστή, οπότε το ρόλο του υπολογιστή πρέπει να τον παίξετε εσείς οι ίδιοι. Για το λόγο αυτό, πρέπει να εξοικειωθείτε με τον τρόπο που λειτουργεί ο υπολογιστής ε- κτελώντας ένα πρόγραμμα. Αυτό είναι και το σημείο στο οποίο θα σας βοηθήσει το βιβλίο αυτό. Κατανομή χρόνου μελέτης Μια συστηματική μελέτη, ξεκινάει από τη σωστή κατανομή του χρόνου μελέτης. Πρέπει να γνωρίζετε ότι το 40% του χρόνου που απαιτείται για την επίλυση πρέπει να αναλωθεί στην ανάλυση και κατανόηση του προβλήματος, το 20% στην υλοποίηση και συγγραφή του αλγορίθμου και το υπόλοιπο 40% στον έλεγχο της ορθότητας του αλγορίθμου. Κάθε φορά λοιπόν που θα λύνετε ένα πρόβλημα πρέπει να ακολουθείτε το σύστημα 4 2 4. (Αυτό δεν το λέω εγώ αλλά το διάγραμμα του κύκλου ζωής λογισμικού στη σελίδα 319 του σχολικού βιβλίου, με αναγωγή, αν αφαιρέσουμε το στάδιο της συντήρησης λογισμικού, που δεν πρόκειται ποτέ να ζητηθεί από έναν μαθητή.) Πώς να αποδώσετε στις πανελλαδικές εξετάσεις το μέγιστο Στην ενότητα αυτή θα σας δοθούν μερικές πρακτικές συμβουλές για τον τρόπο με τον οποίο πρέπει να διαχειριστείτε το γραπτό σας στις Πανελλαδικές εξετάσεις, ώστε να μην κάνετε λάθη, να εμφανίσετε ένα σωστό γραπτό και να μην απολέσετε μονάδες που δικαιούστε.
Εισαγωγή 13 Θυμηθείτε ότι ο βαθμολογητής είναι άνθρωπος, που σημαίνει ότι μπορεί και να κάνει λάθος σε κάποια σημεία ή να μην προσέξει κάποια άλλα. Βοηθήστε τον λοιπόν στη βαθμολόγηση του γραπτού, παραθέτοντας ένα σωστά οργανωμένο τετράδιο εξετάσεων, ώστε να μη χάσετε από κάποιο λάθος σας. Αν σε κάποιο γραπτό ο Α βαθμολογητής βάλει 60 και ο Β βαθμολογητής 72, το γραπτό δε θα πάει σε τρίτο βαθμολογητή και ο μαθητής είναι πολύ πιθανό να αδικηθεί. Ποιος όμως φταίει; Ο Α ή ο Β βαθμολογητής; Τελικά η αλήθεια είναι ότι φταίει αυτός που την «πληρώνει». και αυτός που την πληρώνει στην προκειμένη περίπτωση είναι ο μαθητής. Πάντα να θυμάστε ότι στη διάθεσή σας έχετε ένα τετράδιο 16 σελίδων, οπότε ο χώρος που έχετε να γράψετε είναι αρκετός για να δώσετε μια εικόνα ενός καλογραμμένου διαγωνίσματος. Κάποια από τα σημεία που πρέπει να προσέξετε είναι και τα εξής: Ερωτήσεις αντιστοίχισης Στις ερωτήσεις αντιστοίχισης απαντήστε τις αντιστοιχίσεις με τη σειρά που σας δίνονται και μην τις ανακατεύετε. Είναι πολύ πιθανόν να μπερδευτεί ο βαθμολογητής και να σας αδικήσει. Ερωτήσεις Σωστού Λάθους Αν έχετε να απαντήσετε σε ένα θέμα Σωστού Λάθους και η εκφώνηση αναφέρει «Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις, 1 5, και δίπλα τη λέξη Σωστό, αν είναι σωστή, ή τη λέξη Λάθος, αν είναι λανθασμένη.» στις απαντήσεις σας μη γράψετε Σ ή Λ, αλλά πλήρη τη λέξη Σωστό ή Λάθος. Το ίδιο ισχύει, αν η εκφώνηση ζητάει να απαντήσετε σημειώνοντας το γράμμα Σ για τις σωστές προτάσεις και το γράμμα Λ για τις λανθασμένες. Γενικά συμμορφωθείτε με τις απαιτήσεις της εκφώνησης του θέματος. Επίσης, προτιμήστε να απαντήσετε τις προτάσεις Σωστού Λάθους με τη σειρά που δίνονται στην εκφώνηση και μην τις ανακατεύετε. Αν οι απαντήσεις με τη σωστή σειρά είναι οι εξής: 1 Σωστό 2 Λάθος 3 Λάθος 4 Σωστό 5 Λάθος στο τετράδιό σας μπορείτε να τα γράψετε με πολλούς συνδυασμούς. Κάποιοι από αυτούς δίνονται παρακάτω και δίπλα τους το σχόλιο αν πρέπει να το χρησιμοποιήσετε ή όχι.
14 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 1 Σωστό 2 Λάθος 3 Λάθος 4 Σωστό 5 Λάθος Αποδεκτό (και μάλλον προτιμητέο) 1 Σωστό 2 Λάθος 3 Λάθος 4 Σωστό 5 Λάθος Αποδεκτό 1 Σωστό 2 Λάθος 3 Λάθος 4 Σωστό 5 Λάθος 1 Σωστό 4 Σωστό 2 Λάθος 5 Λάθος 3 Λάθος 2 Λάθος 1 Σωστό 5 Λάθος 3 Λάθος 4 Σωστό Αποφύγετέ το Αποφύγετέ το Αποφύγετέ το (οπωσδήποτε) Ένα άλλο σημείο είναι η σειρά με την οποία θα παρουσιάσετε τα θέματά σας. Άσχετα με ποια χρονική στιγμή θα τα απαντήσετε, προτιμήστε στο τετράδιό σας να είναι τοποθετημένα με τη σειρά που δίνονται στην εκφώνησή τους. Μου έτυχε περίπτωση όπου το θέμα Β2 βαθμολογείτο με 10 μόρια, ο μαθητής το είχε γράψει στο τέλος τέλος και ο ένας από τους 2 βαθμολογητές το αγνόησε εντελώς. Κακώς, αλλά συνέβη. Ας υποθέσουμε, λοιπόν, ότι γνωρίζετε όλα τα ερωτήματα του θέματος Α, εκτός από το ερώτημα Α3. Απαντήστε το Α1, το Α2 και στη θέση του Α3 αφήστε κενό διάστημα και μάλιστα διπλάσιο από το εκτιμώμενο. Είναι προτιμότερο να σας διαγράψει ο επιτηρητής τον κενό χώρο, παρά να σας το παραλείψει ο βαθμολογητής επειδή το γράψατε στο τέλος των θεμάτων. Συνεχίστε με τα ερωτήματα Α4 και Α5, και στη συνέχεια με τα θέματα Β, Γ και Δ. Λύσεις των θεμάτων Γ και Το θέμα Γ προτιμήστε να το ξεκινήσετε από την πάνω αριστερή πλευρά ανοιχτής διπλής σελίδας, όπου και να είχατε ολοκληρώσει το θέμα Β. Χωρίστε την αριστερή σελίδα στη μέση και στο δεξιό μισό της αριστερής σελίδας λύστε με μολύβι το θέμα, γράφοντας απαλά, ώστε μετά να μπορείτε να το σβήσετε εύκολα. Ένα τέτοιο παράδειγμα φαίνεται
Εισαγωγή 15 στην επόμενη εικόνα για το θέμα Δ των επαναληπτικών εξετάσεων του Ημερήσιου Λυκείου του 2009 (δείτε και την Άσκηση 7.9). Τελειώνοντας η αριστερή σελίδα συνεχίστε το θέμα με το μολύβι στο μισό δεξιό της δεξιάς σελίδας. Αφού ολοκληρώσετε τη λύση της άσκησης και τον έλεγχό της, αντιγράψτε στα αριστερά μισά των σελίδων την άσκηση με στυλό και καθαρά, όπως φαίνεται στην παραπάνω εικόνα. Αφού ολοκληρώσετε και τον έλεγχο της άσκησης και βεβαιωθείτε ότι είναι σωστή, με μια γομολάστιχα σβήστε την πρόχειρη λύση που έχετε γράψει με το μολύβι και αφήστε αυτά που έχετε γράψει με το στυλό και τα σχήματα. Αν οι οδηγίες αναφέρουν ότι μπορεί-
16 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον τε για τα σχήματα να χρησιμοποιήσετε μολύβι, αφήστε τα σχήματά σας έτσι, αλλιώς ξαναδημιουργήστε τα με στυλό. Με την τεχνική αυτή δεν είστε υποχρεωμένοι να γυρίζετε μπρος πίσω στο πρόχειρο χάνοντας έτσι χρόνο και αυξάνοντας την πιθανότητα να κάνετε λάθος. Ακολουθήστε την ίδια τακτική και για το θέμα Δ.
Κεφάλαιο 1: Βασικά στοιχεία θεωρίας Το βιβλίο αυτό δεν έχει σκοπό να υποκαταστήσει το σχολικό βοήθημα στη θεωρία. Απλά θέλει να ενισχύσει κάποια από τα σημεία του σχολικού βιβλίου. Στο Κεφάλαιο αυτό θα αναφερθεί επιγραμματικά κάποια από τη θεωρία που περιλαμβάνεται στην εξεταστέα ύλη του μαθήματος. Πρόβλημα Πρόβλημα: Είναι μια κατάσταση που χρειάζεται αντιμετώπιση, απαιτεί λύση, η οποία λύση δεν είναι γνωστή ούτε προφανής. Κατανόηση προβλήματος: Η αντιμετώπιση ενός προβλήματος αποτυγχάνει αν το πρόβλημα που τίθεται δεν έχει γίνει απόλυτα κατανοητό. Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων, της σωστής διατύπωσης εκ μέρους του δημιουργού του και της αντίστοιχης σωστής ερμηνείας από τη μεριά εκείνου που καλείται να το αντιμετωπίσει. Η μορφή με την οποία παρουσιάζεται ένα πρόβλημα μπορεί να είναι οποιαδήποτε αρκεί να μπορεί να γίνει αντιληπτή από μία από τις πέντε ανθρώπινες αισθήσεις. Σαφήνεια διατύπωσης: Ο λόγος σαν μέσο επικοινωνίας και συνεννόησης πρέπει να χαρακτηρίζεται από σαφήνεια. Άστοχη χρήση ορολογίας και λανθασμένη σύνταξη είναι δύο στοιχεία που μπορούν να προκαλέσουν παρερμηνείες και παραπλανήσεις. Η ικανότητα εκφοράς σωστού προφορικού και γραπτού λόγου αποτελεί μεγάλο προτέρημα για κάθε άτομο. Η παρερμηνεία είναι δυνατή ακόμα και σε περιπτώσεις όπου όλοι οι λεξιλογικοί και συντακτικοί κανόνες τηρούνται με ευλάβεια. Σημαντικός ακόμη παράγοντας στη σωστή αντιμετώπιση ενός προβλήματος είναι η αποσαφήνιση του χώρου στον οποίο αναφέρεται, πληροφορία που παρέχεται από την εκφώνηση και τα δεδομένα του προβλήματος. Δεδομένο: Είναι οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό από έναν τουλάχιστον παρατηρητή με μία από τις πέντε αισθήσεις του. Πληροφορία: Είναι οποιοδήποτε γνωσιακό στοιχείο προέρχεται από επεξεργασία δεδομένων 1. 1 Η πληροφορία και το δεδομένο πολλές φορές συγχέονται. Η πληροφορία έχει σχετικά μικρή χρονική αξία. Μετά από την πάροδο κάποιου χρόνου γίνεται δεδομένο.
18 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Επεξεργασία δεδομένων: Είναι η διαδικασία εκείνη κατά την οποία ένας "μηχανισμός" δέχεται δεδομένα, τα επεξεργάζεται σύμφωνα με έναν προκαθορισμένο τρόπο και αποδίδει πληροφορίες. Επί χιλιετίες ο "μηχανισμός" επεξεργασίας δεδομένων ήταν και εξακολουθεί να είναι ο ανθρώπινος εγκέφαλος, ενώ στις μέρες μας ένας άλλος "μηχανισμός" επεξεργασίας δεδομένων είναι και ο υπολογιστής. Δομή προβλήματος: Με τον όρο αυτό αναφερόμαστε στα συστατικά μέρη του προβλήματος, στα επιμέρους τμήματα που το αποτελούν, καθώς επίσης και στον τρόπο που αυτά τα μέρη συνδέονται μεταξύ τους. Η σωστή κατανόηση του προβλήματος είναι βασική προϋπόθεση για να γίνει στη συνέχεια δυνατή η σωστή αποτύπωση της δομής του. Η καταγραφή της δομής ενός προβλήματος σημαίνει αυτόματα ότι έχει αρχίσει η διαδικασία ανάλυσης του προβλήματος σε άλλα απλούστερα. Με τη σειρά τους τα νέα προβλήματα μπορούν να αναλυθούν σε άλλα ακόμη πιο απλά. Η διαδικασία αυτή της ανάλυσης μπορεί να συνεχιστεί μέχρις ότου τα επιμέρους προβλήματα που προκύπτουν θεωρούνται αρκετά απλά και η αντιμετώπισή τους χαρακτηρίζεται ως δυνατή. Η δυσκολία αντιμετώπισης των προβλημάτων ελαττώνεται όσο περισσότερο προχωράει η ανάλυσή τους σε απλούστερα προβλήματα. Ο κατακερματισμός ενός προβλήματος σε άλλα απλούστερα είναι μια από τις διαδικασίες που ενεργοποιούν τόσο τη σκέψη, όσο κυρίως την αναλυτική ικανότητα του ατόμου. Τα υποπροβλήματα μπορούν είτε να περιγραφούν με λόγια, οπότε λέμε ότι έχουμε φραστική περιγραφή της δομής του προβλήματος, είτε να δοθούν σχηματικά, οπότε λέμε ότι έχουμε διαγραμματική αναπαράσταση της δομής του προβλήματος. Η διαγραμματική αναπαράσταση παρέχει μια απτή απεικόνιση της δομής του προβλήματος και βοηθάει τόσο στην καλύτερη κατανόηση του ιδίου του προβλήματος, όσο και στη σχεδίαση της λύσης του. Καθορισμός απαιτήσεων Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον επακριβή προσδιορισμό των δεδομένων που παρέχει το πρόβλημα και απαιτεί τη λεπτομερειακή καταγραφή των ζητούμενων που αναμένονται σαν αποτέλεσμα της επίλυσης του προβλήματος. Δεν υπάρχει μεθοδολογία για την ανίχνευση των δεδομένων του προβλήματος και επισημαίνεται ότι δεν είναι πάντοτε εύκολο αυτά να ανιχνευθούν. Σε πολλές περιπτώσεις προβλημάτων, τα δεδομένα πρέπει να "ανακαλυφθούν" μέσα στην περιγραφή του προβλήματος. Η διαδικασία αυτή απαιτεί προσοχή, συγκέντρωση και σκέψη. Επίσης, δεν υπάρχει μεθοδολογία για τον εντοπισμό και την αποσαφήνιση των ζητούμενων του προβλήματος, τα οποία πρέπει να αποσαφηνιστούν προσεκτικά. Δεν είναι πάντα ιδιαίτερα κατανοητό τι ακριβώς ζητάει ένα πρόβλημα. Στην περίπτωση αυτή, ενδεχομένως να πρέπει να υποβάλλετε ερωτήσεις σε αυτόν που έθεσε το πρόβλη-
Κεφάλαιο 1: Βασικά στοιχεία θεωρίας 19 μα, αλλά επειδή αυτός δεν είναι πάντα διαθέσιμος, ξεκινήστε να ρωτάτε τον εαυτό σας για πιθανές ασάφειες του προβλήματος. Είναι μια καλή μεθοδολογία να βάζετε τον εαυτό σας στη θέση του δημιουργού του προβλήματος. Στάδια αντιμετώπισης προβλήματος Τα στάδια αντιμετώπισης ενός προβλήματος είναι τα εξής: Κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και ζητούμενων του προβλήματος. Ανάλυση, όπου το αρχικό πρόβλημα διασπάται σε άλλα επί μέρους απλούστερα προβλήματα. Επίλυση, όπου υλοποιείται η λύση του προβλήματος, μέσω της λύσης των επιμέρους προβλημάτων. Κατηγορίες προβλημάτων Τα προβλήματα κατηγοριοποιούνται με τρία κριτήρια: α) τη δυνατότητα επίλυσης ενός προβλήματος, β) το βαθμό δόμησης της λύσης ενός προβλήματος, και γ) το είδος της επίλυσης ενός προβλήματος. 1. Δυνατότητα επίλυσης προβλήματος. Έχουμε τις εξής κατηγορίες: 1α. Επιλύσιμα, είναι εκείνα τα προβλήματα για τα οποία η λύση τους είναι ήδη γνωστή και έχει διατυπωθεί. Επιλύσιμα επίσης μπορεί να χαρακτηρισθούν και τα προβλήματα, των οποίων η λύση δεν έχει ακόμη διατυπωθεί, αλλά η συνάφειά τους με άλλα ήδη επιλυμένα προβλήματα μας επιτρέπει να θεωρούμε σαν βέβαιη τη δυνατότητα επίλυσης. 1β. Ανοικτά, ονομάζονται εκείνα τα προβλήματα για τα οποία η λύση τους δεν έχει ακόμη βρεθεί, αλλά παράλληλα δεν έχει αποδειχθεί ότι δεν επιδέχονται λύση. 1γ. Άλυτα, χαρακτηρίζονται εκείνα τα προβλήματα για τα οποία έχουμε φτάσει στην παραδοχή ότι δεν επιδέχονται λύση. 2. Βαθμός δόμησης της λύσης. Ισχύουν για επιλύσιμα προβλήματα και έχουμε τις εξής κατηγορίες: 2α. Δομημένα, χαρακτηρίζονται εκείνα τα προβλήματα των οποίων η επίλυση προέρχεται από μια αυτοματοποιημένη διαδικασία. 2β. Ημιδομημένα, ονομάζονται εκείνα τα προβλήματα των οποίων η λύση επιδιώκεται μέσα σε ένα εύρος πιθανών λύσεων, αφήνοντας περιθώρια επιλογής στον ανθρώπινο παράγοντα. 2γ. Αδόμητα, χαρακτηρίζονται τα προβλήματα εκείνα των οποίων οι λύσεις δεν μπορούν να δομηθούν ή η δυνατότητα δόμησή τους δεν έχει διερευνηθεί σε βάθος. 3. Είδος επίλυσης προβλήματος. Έχουμε τις εξής κατηγορίες: 3α. Απόφασης, είναι εκείνα τα προβλήματα τα οποία επιδέχονται ως λύση την απάντηση σε ένα ερώτημα με πιθανές απαντήσεις "Ναι" ή "Όχι".
20 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 3β. Υπολογιστικά, όπου το πρόβλημα που τίθεται απαιτεί τη διενέργεια υπολογισμών, για να μπορεί να δοθεί μια απάντηση στο πρόβλημα. Σε ένα υπολογιστικό πρόβλημα η λύση του είναι ο υπολογισμός μιας τιμής που ικανοποιεί τα δεδομένα του προβλήματος. 3γ. Βελτιστοποίησης, όπου το πρόβλημα που τίθεται επιζητά το βέλτιστο αποτέλεσμα για τα συγκεκριμένα δεδομένα που διαθέτει. Σε ένα πρόβλημα βελτιστοποίησης αναζητούμε την απάντηση που ικανοποιεί κατά τον καλύτερο τρόπο τα δεδομένα που παρέχει το πρόβλημα. Πρόβλημα και υπολογιστής Τα καθημερινά προβλήματα δεν είναι προβλήματα του χώρου της στατιστικής, των μαθηματικών ή της φυσικής. Συνήθως είναι σύνθετα προβλήματα (άλλοτε περισσότερο και άλλοτε λιγότερο) και η λύση τους γίνεται με βάση το συλλογισμό και τη σκέψη μας. Κάποιες φορές μπορεί να χρειαστεί και μολύβι, χαρτί και ενδεχομένως και κάποιο κομπιουτεράκι. Όμως όλες οι προσπάθειες αντιμετώπισης προβλημάτων στηρίζονται στις νοητικές μας δυνάμεις, στη συλλογιστική μας, και στην ικανότητα λήψης αποφάσεων. Αν και πριν από τους υπολογιστές λυνόντουσαν προβλήματα, οι υπολογιστές που έχουν εισβάλλει στη ζωή μας σχετίζονται με την επίλυση των προβλημάτων, και ήρθαν για να δράσουν επικουρικά στην ανθρώπινη δραστηριότητα. Αν θέλουμε να συγκρίνουμε άνθρωπο και υπολογιστή, ο άνθρωπος είναι νοήμον όν και διαθέτει έμφυτες τις ικανότητες που απαιτούνται για την επιτυχή αντιμετώπιση μιας τεράστιας γκάμας προβλημάτων. Επίσης, διαθέτει εγκέφαλο του οποίου η πολυπλοκότητα των συλλογισμών είναι εξαιρετικά μεγάλη και ο ακριβής τρόπος λειτουργίας του εξακολουθεί να παραμένει προς το παρόν αναπάντητο ερώτημα. Ο υπολογιστής δεν είναι ηλεκτρονικός εγκέφαλος. Απλά χειρίζεται τα στοιχεία που του ανέθεσε ο άνθρωπος, ενώ το ανθρώπινο πνεύμα μπορεί να σκέπτεται και να παράγει ιδέες. Στο σημείο αυτό υπερτερεί ο άνθρωπος. Λόγοι που αναθέτουμε την επίλυση προβλημάτων σε υπολογιστή: πολυπλοκότητα των υπολογισμών, επαναληπτικότητα των διαδικασιών, ταχύτητα εκτέλεσης των πράξεων, και μεγάλο πλήθος των δεδομένων. Λειτουργίες που εκτελεί ένας υπολογιστής: πρόσθεση, η οποία αποτελεί τη βασική πράξη, δεδομένου ότι και οι άλλες αριθμητικές πράξεις μπορούν να αντιμετωπιστούν σαν διαδικασίες πρόσθεσης, σύγκριση, η οποία συνιστά τη βασική λειτουργία για την επίλυση όλων των λογικών πράξεων, και
Κεφάλαιο 1: Βασικά στοιχεία θεωρίας 21 μεταφορά δεδομένων, λειτουργία που προηγείται και έπεται της επεξεργασίας δεδομένων. Με βάση τις τρεις αυτές λειτουργίες ο υπολογιστής διεκπεραιώνει όλες τις εργασίες που του ανατίθενται. Υπάρχουν περιπτώσεις που ο άνθρωπος θα χρειαζόταν χρόνια ή και αιώνες για να εκτελέσει πράξεις που ο υπολογιστής ολοκληρώνει σε μερικά μόλις λεπτά. Όμως δεν πρέπει κανείς να ξεχνά ότι πίσω από όλα αυτά κρύβεται ο ανθρώπινος εγκέφαλος, που ανέθεσε την επίλυση με τον κατάλληλο τρόπο. Υπάρχει λοιπόν ποσοτική υπεροχή του υπολογιστή και όχι ποιοτική, έναντι του ανθρωπίνου εγκεφάλου. Βασικές έννοιες αλγορίθμων Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο στόχο, που στοχεύουν στην επίλυση ενός προβλήματος. Κριτήρια αλγορίθμων Κάθε αλγόριθμος πρέπει να πληροί τα εξής κριτήρια: Είσοδος. Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια απλών εντολών ή με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή άλλων συναρτήσεων 1. Έξοδος. Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή ως αποτέλεσμα προς το χρήστη ή ως είσοδο προς έναν άλλο αλγόριθμο. Καθοριστικότητα. Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Δηλαδή αν σε μια εντολή υπάρχει διαίρεση, ο διαιρέτης πρέπει να μην είναι μηδέν, αν υπάρχει υπολογισμός τετραγωνικής ρίζας, το υπόρριζο να μην είναι αρνητικός αριθμός, κ.ά. Στην καθοριστικότητα εντάσσονται όσες αλγεβρικές εκφράσεις έχουν πεδία ορισμού, όπως είναι ο λογάριθμος, η εφαπτομένη και συνεφαπτομένη, κ.ά. Περατότητα. Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Μια διαδικασία που δεν τελειώνει μετά από ένα συγκεκριμένο α- ριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία. Αποτελεσματικότητα. Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι μια εντολή δεν αρκεί να έχει οριστεί, αλλά πρέπει να είναι και ε- κτελέσιμη. 1 Ένα παράδειγμα που δεν απαιτείται να δώσει ο χρήστης τιμής ως είσοδο μπορεί να είναι η χρήση διαφόρων συναρτήσεων που λαμβάνουν τιμές με διάφορους τρόπους, όπως για παράδειγμα μπορεί να είναι η συνάρτηση date() που λαμβάνει την τρέχουσα ημερομηνία από το ρολόι του υπολογιστή.
22 Οδηγός επιτυχίας στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Περιγραφή και αναπαράσταση αλγορίθμων Κάθε αλγόριθμος μπορεί να αναπαρασταθεί με τους εξής τρόπους: Με ελεύθερο κείμενο. Ο πιο ανεπεξέργαστος και αδόμητος τρόπος παρουσίασης αλγορίθμου. Εγκυμονεί κίνδυνο να παραβιάσει την αποτελεσματικότητα, γιατί μπορεί να οδηγήσει σε μη εκτελέσιμη εντολή. Με φυσική γλώσσα κατά βήματα. Εγκυμονεί κίνδυνο να παραβιάσει την καθοριστικότητα. Με διαγραμματικές τεχνικές. Συνιστούν γραφικό τρόπο παρουσίασης του αλγορίθμου. Πιο γνωστή μορφή είναι το διάγραμμα ροής. Δεν αποτελούν την καλύτερη λύση αναπαράστασης και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη. Με κωδικοποίηση. Αποτελούν προγράμματα γραμμένα είτε σε μια ψευδογλώσσα είτε σε κάποια γλώσσα προγραμματισμού που όταν εκτελεστεί δίνει τα ίδια αποτελέσματα με τον αλγόριθμο. Σύμβολα διαγράμματος ροής Τα κυριότερα γεωμετρικά σύμβολα που χρησιμοποιούνται στα διαγράμματα ροής είναι τα εξής: Έλλειψη: Δηλώνει την αρχή και το τέλος κάθε αλγορίθμου. Ρόμβος: Δηλώνει μια ερώτηση με δύο 1 εξόδους για απάντηση (ΝΑΙ και ΟΧΙ). Ορθογώνιο παραλληλόγραμμο: Δηλώνει την εκτέλεση μιας 2 πράξης. Πλάγιο παραλληλόγραμμο: Δηλώνει είσοδο ή έξοδο στοιχείων. Πολλές φορές αυτό το σχήμα μπορεί να διαφοροποιείται ανάλογα με το είδος της συσκευής που γίνεται η είσοδος ή η έξοδος. 1 2 Η διατύπωση του βιβλίου που αναφέρει δύο ή περισσότερες εξόδους κρίνεται άστοχη και δεν ισχύει. Αν θέλουμε να δηλώσουμε περισσότερες πράξεις, καλό είναι να χρησιμοποιούμε περισσότερα ορθογώνια παραλληλόγραμμα και να μην τοποθετούμε περισσότερες από μια πράξεις στο ίδιο ορθογώνιο παραλληλόγραμμο.