Περίληψη
Αυτό το μάθημα ανοίγει την τέταρτη ενότητα του κύκλου μαθημάτων, αφιερωμένη στον έλεγχο ροής. Εξηγεί σε τι χρησιμεύει η ενότητα: να διδάξει πώς κυβερνάμε τη σειρά με την οποία εκτελούνται οι εντολές ενός προγράμματος, με αποφάσεις και με βρόχους, και πώς συλλογιζόμαστε για την ορθότητά τους, δηλαδή πώς εξασφαλίζουμε ότι κάθε περίπτωση εξυπηρετείται, ότι κάθε βρόχος κάνει ό,τι πρέπει και ότι τερματίζει· παρουσιάζει τα τέσσερα μαθήματά της και το νήμα που τα ενώνει· θυμίζει όσα η ενότητα θεωρεί γνωστά, κυρίως τις σύνθετες συνθήκες της ενότητας 3· διατυπώνει το πρόβλημα που λύνει η ενότητα, το πρόβλημα ενός προγράμματος που υπολογίζει τον μέγιστο κοινό διαιρέτη με σταθερό αριθμό βημάτων και που, ανάλογα με τα δεδομένα, απαντά λάθος ή σταματά σε μια διαίρεση με το μηδέν· προαναγγέλλει την αναλλοίωτη ως το εργαλείο με το οποίο η ενότητα θα αιτιολογεί τους βρόχους της· και δείχνει πού οδηγεί, στις ενότητες που ακολουθούν και στον κύκλο μαθημάτων Προγραμματισμός σε C++ II.
Μαθησιακοί στόχοι
- Περιγράφουμε τη διαδοχή των περιεχομένων της ενότητας και εξηγούμε τι προσφέρει κάθε μάθημα σε εκείνο που ακολουθεί.
- Θυμόμαστε τις σύνθετες συνθήκες της ενότητας 3 (τους λογικούς συνδέσμους, τη βραχυκύκλωση και την άρνηση με τους νόμους του Ντε Μόργκαν) και τις επαναλαμβάνουμε αν χρειάζεται.
- Προαναγγέλλουμε, με ένα παράδειγμα, την αναλλοίωτη ως εργαλείο συλλογισμού: μια σχέση ανάμεσα στις μεταβλητές που μια επανάληψη διατηρεί και που, όταν τελειώσει, δίνει το αποτέλεσμα.
- Αναγνωρίζουμε τι αναμένεται να ξέρουμε να κάνουμε στο τέλος της ενότητας, και το διακρίνουμε από όσα θα μάθουμε στις ενότητες που ακολουθούν.
Αρχική αξιολόγηση
Πριν διατρέξουμε την ενότητα, αξίζει να μετρήσουμε το σημείο εκκίνησης. Η αξιολόγηση αυτή είναι αυτοαξιολόγηση: δεν βαθμολογείται, και μοναδικός σκοπός της είναι να προσανατολίσει τη μελέτη. Οι τέσσερις πρώτες ερωτήσεις ελέγχουν όσα η ενότητα θεωρεί γνωστά: την άρνηση μιας σύνθετης συνθήκης, τη βραχυκύκλωση, το ίχνος μιας επανάληψης του μαθήματος 1.1 και το όριο ενός int. Οι επτά που ακολουθούν αγγίζουν, με τη σειρά των μαθημάτων, τις κεντρικές ιδέες της ενότητας, και αρκετές ξεκινούν από τα σχολικά μαθηματικά: τον μέγιστο κοινό διαιρέτη, τον συμβολισμό του αθροίσματος, τον τερματισμό μιας διαδικασίας. Κανείς δεν είναι υποχρεωμένος να τις απαντήσει σωστά ακόμη, και σε ορισμένες το «δεν το ξέρω ακόμη» είναι τίμια απάντηση: κάθε απάντηση, σωστή ή λανθασμένη, εξηγεί το ζήτημα και κατονομάζει το μάθημα που το πραγματεύεται. Οι ίδιες δεξιότητες μετρώνται ξανά στο τέλος, στο μάθημα της σύνθεσης.
Πριν ξεκινήσεις την ενότητα, μέτρησε το σημείο εκκίνησής σου. Είναι μια σύντομη αυτοαξιολόγηση: δεν βαθμολογείται και το αποτέλεσμα αποθηκεύεται μόνο στον περιηγητή σου.
Ερώτηση 1Από προηγούμενες ενότητεςΠοια είναι η άρνηση της συνθήκης
1 <= n && n <= 10;Αρνείται κάθε μέρος, αλλά κρατά τη σύζευξη: ξεχνά τον Ντε Μόργκαν. Επιπλέον, κανένας αριθμός δεν είναι συγχρόνως μικρότερος από 1 και μεγαλύτερος από 10, ώστε η συνθήκη αυτή είναι πάντα ψευδής.Αλλάζει σωστά τον σύνδεσμο, αλλά αρνείται λάθος τις σχέσεις: αποκλείει επιπλέον τα όρια 1 και 10, που ικανοποιούν την αρχική συνθήκη.Αρνείται μόνο το πρώτο μέρος.Κατά τον Ντε Μόργκαν, η άρνηση μιας σύζευξης είναι η διάζευξη των αρνήσεων, και η άρνηση της1 <= nείναι ηn < 1, όχι ηn <= 1. Η ενότητα τη χρειάζεται σε κάθε αλυσιδωτή απόφαση, γιατί ο κλάδοςelseεξυπηρετεί ακριβώς την άρνηση των συνθηκών που προηγούνται, και σε κάθε βρόχο, γιατί στην έξοδο ισχύει η άρνηση της συνθήκης του.Επανάληψη: Σχέσεις και λογική
Ερώτηση 2Από προηγούμενες ενότητεςΜε
int d{0};καιint n{5};, τι συμβαίνει όταν αποτιμάται ηd != 0 && n / d > 2;Αγνοεί τη βραχυκύκλωση: η διαίρεση δεν υπολογίζεται ποτέ.Δεν υπάρχει τρόπος μια σύζευξη με έναν ψευδή τελεσταίο να είναι αληθής.Η έκφραση είναι σωστή· ο μεταγλωττιστής δεν γνωρίζει την τιμή τουdκατά την εκτέλεση.Ο πρώτος τελεσταίος είναι ψευδής, και η βραχυκύκλωση δεν αποτιμά τον δεύτερο: ο φρουρός στα αριστερά προστατεύει τη διαίρεση. Η ενότητα μετατρέπει αυτόν τον φρουρό σε ρητές αποφάσεις και σε συνθήκες βρόχου που προστατεύουν το σώμα τους.Επανάληψη: Σχέσεις και λογική
Ερώτηση 3Από προηγούμενες ενότητεςΗ διαίρεση με διαδοχικές αφαιρέσεις του μαθήματος 1.1 αρχίζει με και , και επαναλαμβάνει «όσο , αφαίρεσε το από το και πρόσθεσε 1 στο ». Με και , πόσες φορές εκτελείται το σώμα της επανάληψης;
Μετρά τις αποτιμήσεις της συνθήκης, που είναι μία περισσότερες από τους γύρους.Σταματά την επανάληψη με : διαβάζει την ως .Συγχέει το πλήθος των γύρων με την αρχική τιμή του .Το ίχνος δίνει : το σώμα εκτελείται τέσσερις φορές, και η συνθήκη αποτιμάται πέντε, γιατί η τελευταία αποτίμηση είναι εκείνη που αποτυγχάνει. Το μάθημα 4.2 γράφει αυτή την επανάληψη σε C++ και μετατρέπει το ίχνος σε πίνακα.Επανάληψη: Από το πρόβλημα στον αλγόριθμο
Ερώτηση 4Από προηγούμενες ενότητεςΜε έναν
intτων 32 bit, τι εγγυάται το πρότυπο για την τιμή του46341 * 46341;Αγνοεί το εύρος του τύπου: αυτός ο αριθμός δεν χωρά σε ένανint.Πιστεύει ότι η υπερχείλιση σταματά στο όριο· το πρότυπο δεν υπόσχεται τίποτα.Τον τύπο του αποτελέσματος τον καθορίζουν οι τελεσταίοι, που είναιint, όχι η τιμή του αποτελέσματος.Το μέγιστο είναι . Η ενότητα συναντά αυτό το γινόμενο σε ένα σημείο όπου δεν το αναζητά κανείς: στη συνθήκηd * d <= nενός βρόχου που δοκιμάζει διαιρέτες, η οποία υπερχειλίζει ακριβώς όταν το είναι κοντά στο μέγιστο.Επανάληψη: Οι ακέραιοι και η αναπαράστασή τους
Ερώτηση 5Ένα πρόγραμμα περιέχει την αλυσίδα αποφάσεων
if (score >= 50), που γράφει «Επιτυχία»·else if (score >= 90), που γράφει «Άριστα»· καιelse, που γράφει «Αποτυχία». Τι γράφει όταν τοscoreισούται με 95;Πιστεύει ότι κερδίζει η πιο απαιτητική συνθήκη· κερδίζει η πρώτη που ικανοποιείται.Πιστεύει ότι εκτελούνται όλοι οι αληθείς κλάδοι· σε μια αλυσίδα εκτελείται μόνο ένας.Είναι τίμια απάντηση: το μάθημα 4.1 το εξηγεί, και η τελική αξιολόγηση θα επανέλθει στα όρια μιας αλυσίδας.Σε μια αλυσίδα εκτελείται ο πρώτος κλάδος του οποίου η συνθήκη είναι αληθής, και . Ο κλάδος «Άριστα» δεν εκτελείται ποτέ: η πραγματική περίπτωσή του είναι και , που είναι κενή. Το μάθημα 4.1 διδάσκει πώς διαβάζουμε την πραγματική περίπτωση κάθε κλάδου και πώς διατάσσουμε τις συνθήκες.Επανάληψη: Αποφάσεις
Ερώτηση 6Ποια από τις εκφράσεις που ακολουθούν συμβολίζει το άθροισμα ;
Προσθέτει φορές τον αριθμό , δηλαδή : συγχέει τον όρο με το άνω όριο.Προσθέτει : μετατοπίζει τα όρια και χάνει τον τελευταίο όρο, το σφάλμα κατά ένα των βρόχων.Το άνω όριο δεν μπορεί να είναι ο ίδιος ο δείκτης: η έκφραση δεν έχει σημασία.Ο δείκτης διατρέχει τους ακεραίους από 1 έως , και κάθε όρος είναι το ίδιο το . Ένας βρόχοςforπου αθροίζει είναι η άμεση μετάφραση αυτού του συμβολισμού: η μεταβλητή ελέγχου είναι ο δείκτης, τα όριά της είναι εκείνα του αθροίσματος, και το σώμα προσθέτει τον όρο.Επανάληψη: Βρόχοι
Ερώτηση 7Με
int total{0};, τι γράφει ηstd::println("{}", total);μετά τοfor (int i{0}; i < 5; ++i) { total += i; };Πιστεύει ότι τοiφτάνει στο 5: διαβάζει το<ως<=.Συγχέει τον αθροιστή με τον μετρητή: το πέντε είναι το πλήθος των γύρων, όχι το άθροισμα.Είναι τίμια απάντηση: το μάθημα 4.2 διδάσκει τη μορφή τουforκαι πώς μετράμε τους γύρους του.Η μεταβλητήiπαίρνει τις τιμές 0, 1, 2, 3 και 4, και · όταν τοiισούται με 5 η συνθήκη αποτυγχάνει και το σώμα δεν εκτελείται. Είναι το άθροισμα της ερώτησης που προηγήθηκε με όρια 0 και 4.Επανάληψη: Βρόχοι
Ερώτηση 8Στη διαίρεση με διαδοχικές αφαιρέσεις (, · όσο , το γίνεται και το γίνεται ), ποια σχέση ανάμεσα στις μεταβλητές ισχύει κάθε φορά που αποτιμάται η συνθήκη;
Ισχύει μόνο στην έξοδο: όσο η επανάληψη συνεχίζεται, η συνθήκη εξασφαλίζει το αντίθετο.Ισχύει μόνο στο τέλος· πριν από αυτό, το είναι μικρότερο από το πηλίκο.Είναι τίμια απάντηση: το μάθημα 4.3 διδάσκει πώς βρίσκουμε και πώς ελέγχουμε αυτή τη σχέση, και η τελική αξιολόγηση θα το ρωτήσει ξανά.Ισχύει στην αρχή, γιατί · και αν ισχύει πριν από έναν γύρο, ισχύει και μετά, γιατί . Στην έξοδο προστίθεται η άρνηση της συνθήκης, , και οι δύο μαζί δίνουν το αποτέλεσμα. Μια τέτοια σχέση λέγεται αναλλοίωτη, και το μάθημα 4.3 την κάνει μέθοδο για τη σχεδίαση των βρόχων και την αιτιολόγησή τους.Επανάληψη: Σχεδίαση σωστών βρόχων
Ερώτηση 9Μια διαδικασία ξεκινά από έναν οποιονδήποτε ακέραιο (θετικό, μηδενικό ή αρνητικό) και επαναλαμβάνει «όσο , αφαίρεσε 2 από το ». Τερματίζει για κάθε ;
Αυτό συμβαίνει με τη συνθήκη · με , η επανάληψη σταματά μόλις το γίνει 0 ή .Με αρνητικό η συνθήκη είναι ψευδής από την αρχή, και το σώμα δεν εκτελείται.Το συμπέρασμα είναι σωστό, αλλά ο λόγος όχι: δεν αρκεί να είναι ακέραιος· χρειάζεται η ποσότητα να είναι φυσικός αριθμός όσο η επανάληψη συνεχίζεται και να φθίνει.Η ποσότητα είναι φυσικός αριθμός όσο η επανάληψη συνεχίζεται (το εξασφαλίζει η συνθήκη) και φθίνει γνησίως: είναι φθίνουσα ποσότητα, το εργαλείο του μαθήματος 1.1 που το μάθημα 4.3 χρησιμοποιεί σε κάθε βρόχο. Με «όσο » η απάντηση θα άλλαζε: ένα περιττό προσπερνά το μηδέν.Επανάληψη: Σχεδίαση σωστών βρόχων
Ερώτηση 10Ποιος είναι ο μέγιστος κοινός διαιρέτης του 84 και του 36;
Είναι κοινός διαιρέτης, αλλά όχι ο μέγιστος.Είναι κοινός διαιρέτης, αλλά όχι ο μέγιστος: λείπει ο παράγοντας 3, που επίσης τον έχουν κοινό.Είναι το ελάχιστο κοινό πολλαπλάσιο, όχι ο μέγιστος κοινός διαιρέτης.Οι κοινοί διαιρέτες είναι 1, 2, 3, 4, 6 και 12. Ο αλγόριθμος του Ευκλείδη τον βρίσκει χωρίς να αναζητά διαιρέτες: και , ώστε . Το μάθημα 4.4 τον γράφει ως βρόχο και αποδεικνύει γιατί λειτουργεί.Επανάληψη: Αριθμητικοί αλγόριθμοι
Ερώτηση 11Για να αποφασίσουμε αν το 101 είναι πρώτος δοκιμάζοντας διαιρέτες, ως ποιον διαιρέτη αρκεί να φτάσουμε;
Χρησιμοποιεί το μισό: είναι σωστό, αλλά πέντε φορές πιο μακρύ από όσο χρειάζεται.Δοκιμάζει όλους τους υποψηφίους: είναι σωστό, αλλά δεν εκμεταλλεύεται ότι οι διαιρέτες έρχονται σε ζεύγη.Είναι τίμια απάντηση: το μάθημα 4.4 το αποδεικνύει.Αν το 101 είχε έναν διαιρέτη με , θα ήταν διαιρέτης και το , και ένας από τους δύο θα ήταν το πολύ . Αρκεί να δοκιμάσουμε από το 2 ως το 10: κανένας δεν διαιρεί το 101, που είναι πρώτος. Το μάθημα 4.4 αποδεικνύει τον κανόνα και τον γράφει χωρίς ρίζες και χωρίς γινόμενα που υπερχειλίζουν.Επανάληψη: Αριθμητικοί αλγόριθμοι
Φόρτωση του περιεχομένου…
Ολοκληρώθηκε
Συνδεθείτε για να αποθηκεύσετε την πρόοδό σας