Περίληψη
Αυτό το μάθημα κλείνει την τέταρτη ενότητα του κύκλου μαθημάτων, αφιερωμένη στον έλεγχο ροής. Ανασυνθέτει την αλυσίδα των εννοιών που οδηγεί από τη συνθήκη στους αριθμητικούς αλγορίθμους, περνώντας από την απόφαση και την ανάλυση σε περιπτώσεις, τον βρόχο και τις τρεις μορφές του, τα μοτίβα βρόχων, την αναλλοίωτη και τη φθίνουσα ποσότητα· ξεχωρίζει όσα από αυτά ισχύουν σε κάθε γλώσσα από όσα είναι ίδια της C++· συγκεντρώνει την απροσδιόριστη συμπεριφορά της ενότητας, που εστιάζεται στους μετρητές, στους αθροιστές και στις συνθήκες που υπερχειλίζουν, με ένα πρόγραμμα που τη δείχνει και τη διόρθωσή του· επαναλαμβάνει στην τελική του αξιολόγηση τις δεξιότητες της αρχικής· και τελειώνει με έξι προκλήσεις που συνδυάζουν ολόκληρη την ενότητα, από τον επεκτεταμένο αλγόριθμο του Ευκλείδη ως το ημερολόγιο ενός μήνα.
Μαθησιακοί στόχοι
- Να σχεδιάζει αποφάσεις με ξένες και εξαντλητικές περιπτώσεις και να τις δοκιμάζει με μία είσοδο ανά περίπτωση και ανά όριο.
- Να σχεδιάζει σωστούς βρόχους που τερματίζουν, επιλέγοντας τη μορφή και τα μοτίβα τους με βάση την προδιαγραφή.
- Να αιτιολογεί την ορθότητα ενός βρόχου με μια αναλλοίωτη και τον τερματισμό του με μια φθίνουσα ποσότητα, και στους αριθμητικούς αλγορίθμους της ενότητας.
- Να αναγνωρίζει την απροσδιόριστη συμπεριφορά της ενότητας (τον μετρητή, τον αθροιστή και τη συνθήκη που υπερχειλίζουν, τη διαίρεση που η συνθήκη έπρεπε να αποτρέψει) και να ξαναγράφει τον βρόχο χωρίς αυτήν.
- Να ξεχωρίζει, σε όσα έμαθε στην ενότητα, όσα ισχύουν σε κάθε γλώσσα από όσα είναι ίδια της C++.
Όσα πέτυχε η ενότητα
Η ενότητα έθεσε ως σκοπό να διδάξει πώς κυβερνάται η σειρά εκτέλεσης με αποφάσεις και βρόχους, και πώς συλλογιζόμαστε για την ορθότητά τους: να εξυπηρετείται κάθε περίπτωση, κάθε βρόχος να κάνει ό,τι πρέπει και να τερματίζει. Ο σκοπός εκπληρώθηκε στηριγμένος μόνο σε όσα η εισαγωγή δήλωσε ως γνωστά: τις συνθήκες της ενότητας 3, τους τύπους της ενότητας 2 και το ίχνος και τη φθίνουσα ποσότητα του μαθήματος 1.1. Το πρόγραμμα που υπολόγιζε τον μέγιστο κοινό διαιρέτη με τρία σταθερά βήματα, και που ανάλογα με τα δεδομένα απαντούσε λάθος ή διαιρούσε με το μηδέν, αντικαταστάθηκε από έναν βρόχο τριών γραμμών, και τώρα μπορεί να αποδειχθεί ότι αυτός ο βρόχος είναι σωστός για όλα τα μη αρνητικά δεδομένα.
Αποφάσεις
Το μάθημα Αποφάσεις δίδαξε την εντολή if, πάντα με άγκιστρα. Έδειξε ότι σε μια αλυσίδα από else if εκτελείται ο πρώτος κλάδος του οποίου η συνθήκη είναι αληθής, έτσι ώστε η πραγματική περίπτωση κάθε κλάδου είναι η συνθήκη του μαζί με την άρνηση όλων όσων προηγούνται· γι' αυτό η σειρά μετράει και ένας κλάδος μπορεί να μείνει απρόσιτος χωρίς προειδοποίηση. Καθόρισε το κριτήριο ορθότητας κάθε απόφασης: οι περιπτώσεις της πρέπει να είναι ξένες (είναι, λόγω της μορφής της αλυσίδας) και εξαντλητικές (είναι, αν τελειώνει σε else), και πρέπει να συμπίπτουν με εκείνες της προδιαγραφής, πράγμα που δοκιμάζεται στο εσωτερικό κάθε περίπτωσης και στις δύο πλευρές κάθε ορίου. Παρουσίασε τον τελεστή συνθήκης, για να επιλέγουμε ανάμεσα σε δύο σύντομες τιμές χωρίς ολόκληρη απόφαση. Έκλεισε με τα enum class και switch, των οποίων την ξεχασμένη περίπτωση επισημαίνει ο μεταγλωττιστής.
Βρόχοι
Το μάθημα Βρόχοι παρουσίασε τα while, do και for ως τρεις μορφές του ίδιου μηχανισμού: το while αποτιμά τη συνθήκη του πριν από κάθε γύρο και μπορεί να μην κάνει κανέναν· το do κάνει τουλάχιστον έναν· το for συγκεντρώνει στην κεφαλίδα του την αρχικοποίηση, τη συνθήκη και το βήμα, και η μεταβλητή ελέγχου του ζει μόνο μέσα στον βρόχο. Δίδαξε τις ισοδυναμίες τους, τον πίνακα ίχνους, με αποτιμήσεις της συνθήκης για γύρους ενός while που τερματίζει λόγω της συνθήκης του (και αποτιμήσεις σε ένα do), και τη μέτρηση των γύρων από την κεφαλίδα, που προλαμβάνει το σφάλμα κατά ένα. Πρόσθεσε τα break, continue και τους εμφωλευμένους βρόχους, των οποίων το εσωτερικό σώμα εκτελείται τόσες φορές όσες δίνει ένα άθροισμα: με σταθερά όρια, με το τρίγωνο.
Σχεδίαση σωστών βρόχων
Το μάθημα Σχεδίαση σωστών βρόχων έκανε τον βρόχο αντικείμενο σχεδίασης. Συγκέντρωσε τα μοτίβα (μετρητής, αθροιστής, μέγιστο και ελάχιστο, φρουρός και σημαία), το καθένα ορισμένο από ό,τι σημαίνει η μεταβλητή του μετά από κάθε γύρο. Όρισε την αναλλοίωτη, έναν ισχυρισμό που ισχύει κάθε φορά που αποτιμάται η συνθήκη, με τις τρεις υποχρεώσεις της: αρχικοποίηση, διατήρηση και συμπέρασμα, που μαζί με την ψευδή συνθήκη δίνει τη μετασυνθήκη· και την αναγνώρισε ως επαγωγή στο πλήθος των γύρων. Δίδαξε τη σχεδίαση ανάποδα, από τη μετασυνθήκη στην αναλλοίωτη και από την αναλλοίωτη στο σώμα. Αιτιολόγησε τον τερματισμό με τη φθίνουσα ποσότητα, και έδειξε τρεις βρόχους στους οποίους η αριθμητική της C++ την ακυρώνει: τον πραγματικό που προσπερνά το 1.0, τον μη προσημασμένο μετρητή που κάνει τον κύκλο και τον προσημασμένο μετρητή που υπερχειλίζει. Έδωσε, τέλος, την πρώτη επαφή με τον αποσφαλματωτή.
Αριθμητικοί αλγόριθμοι
Το μάθημα Αριθμητικοί αλγόριθμοι εφάρμοσε όσα προηγήθηκαν σε τέσσερις κλασικούς αλγορίθμους, γραμμένους μέσα στη main και αποδεδειγμένους. Τον έλεγχο πρώτου με δοκιμαστικές διαιρέσεις, με την πρόταση ότι αρκεί να φτάσουμε ως το και με τη συνθήκη d <= n / d, που δεν υπερχειλίζει εκεί όπου η d * d <= n υπερχειλίζει. Τον αλγόριθμο του Ευκλείδη, με την αναλλοίωτη και τη φθίνουσα ποσότητα , και τους δύο κινδύνους του στη C++: το αρνητικό αποτέλεσμα και τη διαίρεση με το μηδέν αν η συνθήκη αποτιμάται μετά το σώμα. Την αλλαγή βάσης με διαδοχικές διαιρέσεις και τον κανόνα του Χόρνερ, που αποτιμά ένα πολυώνυμο με έναν πολλαπλασιασμό ανά συντελεστή. Και τη μέθοδο της διχοτόμησης, εγγυημένη από το θεώρημα ενδιάμεσων τιμών, που την κυβερνά ένας ακέραιος μετρητής του οποίου το πλήθος γύρων υπολογίζεται εκ των προτέρων.
Φόρτωση του περιεχομένου…
Ολοκληρώθηκε
Συνδεθείτε για να αποθηκεύσετε την πρόοδό σας