Στόχοι Ενότητας Chapter 6 Problem Solving and Algorithm Design Nell Dale John Lewis Αναγνώριση αν ένα πρόβληµα µπορεί να επιλυθεί µε τη χρήση υπολογιστή Περιγραφή της διαδικασίας επίλυσης προβληµάτων και συσχετισµό της µε τη διαδικασία του Polya (How to Solve It) ιάκριση ανάµεσα στην εκτέλεση ενός αλγορίθµου και την ανάπτυξη του Εφαρµογή της διαδικασίας σχεδίασης «από πάνω προς τα κάτω» (top-down design) για την ανάπτυξη ενός αλγορίθµου 6-2 Εισαγωγή Επίλυση προβληµάτων Αλγόριθµο ονοµάζουµε µια ταξινοµηµένη ακολουθία µη διφορούµενων βηµάτων που οδηγούν στη λύση ενός προβλήµατος. Πρόγραµµα ονοµάζουµε την αναπαράσταση ενός η πολλών αλγορίθµων σε µορφή κατανοητή από τον υπολογιστή Η διαδικασία της ανάπτυξης ενός αλγορίθµου σε συνδυασµό µε την συγγραφή ενός προγράµµατος καλείται προγραµµατισµός. Το σύνολο των γραµµατικών και συντακτικών κανόνων που µας επιτρέπει να δίνουµε εντολές στον Η/Υ µέσω ενός προγράµµατος καλείται γλώσσα προγραµµατισµού Η διαδικασία που ακολουθούµε για την ανάπτυξη ενός προγράµµατος καλείται κύκλος ανάπτυξης προγράµµατος 6-3 Επίλυση προβλήµατος είναι η δράση (οι δράσεις) της ανεύρεσης λύσης για µια περίπλοκη, βασανιστική και ενοχλητική κατάσταση ή για µια µη σαφώς προσδιορισµένη ερώτηση 6-4
Επίλυση προβληµάτων Αποσαφήνιση του προβλήµατος Ηβασική µεθοδολογία που ακολουθείται για την επίλυση προβληµάτων στηρίζεται στη θεωρία του G. Polya όπως αυτή περιγράφεται στο βιβλίο του How to Solve It: A New Aspect of Mathematical Method Η µεθοδολογία που προτείνει είναι αρκετά γενική ώστε να µπορεί να εφαρµοστεί σε γενικά προβλήµατα και όχι µόνο προβλήµατα µαθηµατικής υφής (για τα οποία αρχικά αναπτύχθηκε). Περιλαµβάνει τέσσερα βασικά στάδια: Αποσαφήνιση του προβλήµατος ιερεύνηση ύπαρξης λύσεων για παρόµοια προβλήµατα ή υποπροβλήµατα ιάσπαση του προβλήµατος σε απλούστερα υποπροβλήµατα Εύρεση λύσης για τα υποπροβλήµατα Περιγραφή της λύσης σε αλγοριθµική µορφή 6-5 Υποβολή ερωτήσεων για κατανόηση του προβλήµατος: Τι πρέπει να γνωρίζω για το πρόβλήµα; Τι πληροφορία χρειάζεται να επεξεργαστών ώστε να βρω τη λύση του προβλήµατος; Πως η λύση πρέπει να µοιάζει; Τι είδους ειδικές περιπτώσεις υπάρχουν και χρειάζεται να ληφθούν υπόψη; Πως πιστοποιείται η εύρεση της λύσης; 6-6 Ύπαρξη οικείων στοιχείων ιαίρειν και Βασίλευε εν πρέπει ποτέ να ανακαλύπτουµε ξανά τον τροχό Στους υπολογιστές βλέπουµε συχνά τα ίδια προβλήµατα ξανά και ξανά απλά σε διαφορετικό πλαίσιο Ένας καλός προγραµµατιστής µπορεί να αναγνωρίζει περιπτώσεις στις οποίες υφιστάµενες λύσεις για κάποιο υποπρόβλήµα µπορούν να ενσωµατωθούν στην ζητούµενη λύση Αποσύνθεση του προβλήµατος σε µικρά υποπροβλήµατα στα οποία η λύση είναι ευκολότερο να βρεθεί Εφαρµογή της έννοιας της αφαιρετικότητας Η εφαρµογή της διαδικασίας «διαίρειν και βασίλευε» µπορεί να εφαρµοστεί επαναληπτικά έως ότου καταλήξουµε σε υποπροβλήµατα τα οποία είναι εύκολα επιλύσιµα 6-7 6-8
Ανάπτυξη λύσης σε αλγοριθµική µορφή Επίλυση προβληµάτων στον υπολογιστή Ανάπτυξη του αλγορίθµου επίλυσης του προβλήµατος: ηµιουργία µιας ταξινοµηµένης ακολουθίας µη διφορούµενων βηµάτων που οδηγούν στη λύση Σχεδιασµός διαγράµµατος ροής: Σχηµατικός τρόπος αναπαράστασης του αλγορίθµου 6-9 Figure 6.2 The computer problem-solving process 6-10 Οι φάσεις επίλυσης προβληµάτων στον υπολογιστή Ψευδοκώδικας Αναπαράσταση του αλγορίθµου µε ένα µίγµα λέξεων της Αγγλικής γλώσσας και κοινών σε πολλές γλώσσες προγραµµατισµού εντολών Page 149 6-11 6-12
Εκτέλεση αλγορίθµου Εκτέλεση αλγορίθµου ηµιουργία Ολλανδικής σάλτσας Προετεοιµασία Ολλανδικής σάλτσας Page 150 Figure 6.4 6-13 6-14 Υλοποίηση Αλγορίθµου Top-Down Design Το πλάνο υλοποίησης πρέπει να είναι σε κατάλληλη µορφή υο βασικές µεθοδολογίες Top-down design Object-oriented design Αποσύνθεση του προβλήµατος σε υποπροβλήµατα ηµιουργία ιεραρχίας προβληµάτων και υποπροβληµάτων 6-15 6-16
Top-Down Design Παράδειγµα ιοργάνωση ενός µεγάλου πάρτι Figure 6.5 An example of top-down design Η διαδικασία συνεχίζεται έως ότου αποσαφηνιστούν όλες οι διαδικασίες Κάθε βήµα το οποίο χρειάζεται περαιτέρω αποσύνθεση ονοµάζεται αφαιρετικό βήµα 6-17 Figure 6.6 Subdividing the party planning 6-18 Πρόβληµα: Παράδειγµα προβλήµατος για υπολογιστή ηµιούργησε ένα κατάλογο διευθύνσεων (address list) ο οποίος περιλαµβάνει, για κάθε άτοµο στον κατάλογο, το όνοµα, τη διεύθυνση, τον αριθµό τηλεφώνου, και τη διεύθυνση ηλεκτρονικού ταχυδροµείου (e-mail). Ο κατάλογος πρέπει να εκτυπωθεί µε αλφαβητική σειρά Τα ονόµατα τα οποία θα εισαχθούν στον κατάλογο βρίσκονται στη παρούσα φάση σε κοµµάτια χαρτιού ή επαγγελµατικές κάρτες (business cards) Λύση µε top-down-design 6-19 Page 156 6-20
Λύση µε top-down-design Λύση µε top-down-design Page 157 6-21 Page 158 6-22 Λύση µε top-down-design Έλεγχος αλγορίθµου Ηδιαδικασία επίλυσης πρέπει να ελεγχθεί πριν υλοποιηθεί Ο έλεγχος του αλγορίθµου στη φάση ανάπτυξης περιλαµβάνει την εξέταση κάθε επιπέδου στην διαδικασία σχεδίασης top-down. Έλεγχος Walk-through: Χειρονακτική προσοµοίωση της εκτέλεσης του αλγορίθµου Χρήση υποθετικών δεδοµένων εισόδου και προσοµοίωση των βηµάτων εκτέλεσης του αλγορίθµου µε βάση τα δεδοµένα αυτά Page 159 6-23 6-24