DOUG LLOYD: Εντάξει, έτσι ας μιλήσουμε για βρόχους. Έτσι βρόχοι είναι είδος δροσερό επειδή επιτρέπουν το πρόγραμμά σας για την εκτέλεση γραμμές κώδικα ξανά και ξανά και ξανά. Επανειλημμένα, χωρίς να χρειάζεται να αντιγράψετε και να επικολλήσετε ή αλλιώς επαναλάβετε τους. Υπάρχουν τρεις μεγάλες τα είδη των βρόχων που θα δείτε. Θα πρέπει πιθανώς ευκαιρία για να χρησιμοποιήσει ο καθένας, όπως σας πρόοδος μέσω CS50. Μερικά από αυτά τα κυκλώματα είναι αρκετά γνωστά σε σας από το μηδέν, οπότε και πάλι, όπως κάναμε με υποθετικά, θα τους θέσει ένα δίπλα στο άλλο αν υπάρχει μια αναλογία μπορούμε να αντλήσουμε. Πρώτη είναι για πάντα από το μηδέν, η οποία συγκρίνει με while (true). Αυτό είναι αυτό που λέμε ένα άπειρο βρόχο. Οι γραμμές του κώδικα μεταξύ των σγουρά τιράντες, όπως και τα κομμάτια του παζλ ότι ταιριάζει στο εσωτερικό του C από το μπλοκ για πάντα, θα εκτελέσει επανειλημμένα από την κορυφή προς τα κάτω, ξανά και ξανά και ξανά, για πάντα. Μετά από όλα, αν θυμάστε μας συζήτηση των Boolean εκφράσεις, αλήθεια είναι πάντα αλήθεια. Έτσι, αν κάνουμε κάτι τόσο καιρό, όπως ισχύει είναι αυτό true-- φαίνεται λίγο silly-- αλήθεια είναι πάντα αλήθεια, γι 'αυτό θα τρέξει πάντα. Θα τρέξει για πάντα και ποτέ και ποτέ μέχρι να βρούμε έναν τρόπο για να ξεφύγει από αυτό με μια δήλωση διάλειμμα, η οποία και πάλι, είδαμε πριν από λίγο καιρό εμείς μιλούσαν για αλλαγή. Ή αλλιώς σκοτώνουν απλώς μας πρόγραμμα, το οποίο παρεμπιπτόντως, αν ποτέ βρεθείτε σε ένα κατάσταση με ατέρμονα βρόχο και δεν ξέρετε πώς να σταματήσει το πρόγραμμά σας από το τρέξιμο. Απλά πατήστε ελέγχου και C και ότι θα σκοτώσει το πρόγραμμά σας για σας. Αλλά αυτό, πάλι, είναι ονομάζεται ένας άπειρος βρόχος. Είναι ένας βρόχος που θα τρέχει για πάντα. Τώρα, ενώ οι βρόχοι δεν είναι πάντα άπειρο, γιατί επίσης μπορούμε να αντικαταστήσουμε το Boolean έκφρασης με κάτι λίγο πιο χρήσιμο από μόνο αληθινό. Έτσι, εδώ είναι ένα άλλο παράδειγμα. Ενώ και κάποια Boolean έκφρασης και στη συνέχεια άγκιστρα. Αυτό είναι λίγο πολύ ανάλογο να επαναλάβετε μέχρι, από το μηδέν. Αν και σε ένα δεύτερο, θα εξηγήσει τη διαφορά. Έτσι σε C, εάν η λογική έκφραση στο εσωτερικό του βρόχου while είναι αληθής, τις γραμμές Κωδικός μεταξύ των άγκιστρα θα εκτελέσει επανειλημμένα ξανά και ξανά και ξανά μέχρι Boolean έκφραση ψευδής. Έτσι, για παράδειγμα, μπορεί να έχουν κάποιο είδος του μετρητή. Έτσι που λέτε στην αρχή Αυτός ο βρόχος λένε int x ισούται με μηδέν. Ενώ το x είναι μικρότερο από 100, να κάνει μια-δυο τα πράγματα μέσα σε αυτό το άγκιστρα, στη συνέχεια, στο τέλος του βρόχου σας, λέτε x συν συν, εσείς προσαύξηση x. Τελικά x θα πάρει σε 100 και θα σας να σταματήσει επειδή η κατάσταση το χ είναι μικρότερο από 100 δεν θα είναι πλέον αλήθεια, όπως Μόλις x είναι ίσο με 100. 100 δεν είναι μικρότερη από 100. Τώρα κάπως συγκεχυμένα, η συμπεριφορά του μπλοκ μηδέν αντιστρέφεται. Γι 'αυτό να είστε πολύ προσεκτικοί αν αυτό είναι πρώτη επιδρομή στη χρήση βρόχων. Βασικά, η επανάληψη μέχρι το μπλοκ στο Ξυστό Θα επαναλάβω κάτι ξανά και ξανά και ξανά, μέχρι την έκφραση, το Boolean έκφραση στο εξάγωνο είναι αλήθεια. Γι 'αυτό θα συνεχίσουμε να κάνουμε μέχρι να είναι αλήθεια. Εν τω μεταξύ, το βρόχο while θα να συνεχίσει να το κάνει μέχρι να είναι ψευδής. Έτσι είναι αρκετά παρόμοια, αλλά υπάρχει αυτό το μικρό διάκριση μόνο να είστε προσεκτικοί ιδιαίτερα, όπως κάνετε πρώτη επιδρομή από τη μετάβαση να το μηδέν σε c. Το επόμενο είδος του βρόχου είναι στην πραγματικότητα αρκετά παρόμοια. Έχει καλέσει το do while loop. Αυτός ο βρόχος θα εκτελέσει όλες τις γραμμές του κώδικα μεταξύ των άγκιστρα φορά, και, στη συνέχεια, θα ελέγξει η λογική έκφραση. Αν η λογική έκφραση είναι αληθής, θα πάει πίσω και επαναλάβετε ότι η διαδικασία ξανά και ξανά και ξανά μέχρι το Boolean έκφραση είναι ψευδής. Έτσι, αυτό το βρόχο, σε αντίθεση με ένα βρόχο while, είναι εγγυημένη για να τρέξει τουλάχιστον μία φορά. Αυτό μπορεί να είναι αρκετά χρήσιμο. Τέλος, έχουμε ένα για το βρόχο. Για βρόχοι είναι το είδος του συντακτικά ελκυστική και υπάρχει μια παρτίδα σε εξέλιξη εδώ, έτσι ώστε να φέρει μαζί μου καθώς προσπαθούμε και να σπάσει αυτά τα κομμάτια μεταξύ τους. Σε γενικές γραμμές, η περίπτωση χρήσης ενός βρόχου for είναι εσείς θέλω να επαναλάβω κάτι συγκεκριμένο αριθμό φορών. Σε αυτό το παράδειγμα εδώ, Έχω την επανάληψη μπλοκ από την αρχή, η οποία είναι ανάλογο με το βρόχο for σε C, επαναλαμβάνοντας κάτι 10 φορές. Και για το βρόχο για η αριστερά εκεί, η οποία είναι τέσσερις βρόχο που θα κάνουμε το ίδιο πράγμα. Αυτό θα πάει 10 φορές. Μετρώντας από το μηδέν, εμείς αυξήσετε κάθε πέρασμα του βρόχου. Και συνεχίζουμε να το κάνουμε αυτό μέχρι θ είναι μικρότερη από 10. Έτσι τι συμβαίνει; Υπάρχουν ένα σωρό κώδικα εκεί. Ας το σπάσει για να τι συμβαίνει βήμα από το βήμα καθώς σκάβουν μέσα από ένα βρόχο for. Το πρώτο πράγμα που συνέβη είναι ο μετρητής μεταβλητή είναι το κέντρο. Τα πάντα στα αριστερά της πρώτης ερωτηματικό μέσα στις παρενθέσεις εκτελείται. Σε αυτή την περίπτωση, είμαστε λέγοντας int i ισούται με 0. Δηλώνοντας μια νέα μεταβλητή που ονομάζεται i, ότι οι μεταβλητές είναι ένα είδος ακέραιος και λέμε την αξία μέσα ότι η μεταβλητή θα είναι μηδέν. Το δεύτερο πράγμα που κάνουμε είναι μπορούμε στη συνέχεια να αξιολογήσουν αμέσως η λογική έκφραση. Boolean έκφραση είναι στην μέση των δύο ερωτηματικά. Ι είναι μικρότερη από 10. Αυτό είναι αλήθεια εδώ, σωστά; Εμείς απλά είπα ότι είναι ίση με μηδέν, και έτσι 0 είναι μικρότερη από 10, και έτσι ώστε η κατάσταση Είναι αλήθεια και τώρα θα προχωρήσει να εκτελέσει το σώμα του βρόχου. Αν ήταν ψευδής. Αν, για παράδειγμα, είπα αντί i ισούται με 0 εκεί είπα ότι ισούται με 15, int i ισούται με 15. Καλά 15 δεν είναι μικρότερη από 10, έτσι ώστε να Ποτέ δεν θα εισέρχονται στο σώμα του βρόχου επειδή η λογική έκφραση θα υπήρχε αξιολογήσει ότι είναι ψευδείς. Μετά περνάμε από πάνω προς τα κάτω, συναντούμε ότι το κλείσιμο σγουρά στήριγμα, ένα τρίτο πράγμα που συμβαίνει. Ο μετρητής είναι μεταβλητή αυξάνεται, ή μάλλον, οι γραμμές του κώδικα δηλώσεις του μετά το δεύτερο ερωτηματικό στο εσωτερικό της για βρόχους παρενθέσεις εκτελείται. Ξεκινάμε λοιπόν από λέγοντας int i ισούται με 0. Στη συνέχεια ελέγχουμε εάν ή όχι η Boolean έκφραση είναι αληθής. 0 είναι μικρότερη από 10 γι 'αυτό είναι αλήθεια. Έτσι θα πάμε να προχωρήσει μέσα στο σώμα ο βρόχος. Τα πράγματα θα συμβούν μέσα στο βρόχο, και όταν συναντούμε ότι το κλείσιμο σγουρά στήριγμα, το επόμενο πράγμα που κάνουμε είναι να λέμε i συν, συν. Ήμουν μηδέν Τώρα είναι ένα. Στη συνέχεια, ελέγξτε και πάλι την αξία του ο Boolean έκφραση στη μέση. Ένας είναι μικρότερη από 10. Έτσι θα πάμε μέσα από αυτό επεξεργαστεί ξανά και ξανά. Θα φτάσουμε στο κλείσιμο σγουρά στήριγμα και πάλι. Θα αυξήσετε i από 1 έως 2 και από 2 ως 3. Και ούτω καθεξής και ούτω καθεξής και ούτω καθεξής, μέχρις ότου τελικά αξία i γίνεται 10. Είναι μικρότερη από 10 10; Κανένα. Μετρώντας από 0, έχουμε πάει με 10 επαναλήψεις βρόχου. Έχουμε επαναλαμβάνεται 10 φορές, απλά όπως κάναμε στο μπλοκ Ξυστό. Και έτσι αυτό είναι βασικά η διαδικασία για μια περίοδο τεσσάρων βρόχο. Τώρα αφαιρώντας το πραγματικό κώδικα και τη θέση της σε μόλις μερικές βασικές γενικές δηλώσεις. Εδώ είναι τι θα συμβεί. Όλες οι δηλώσεις ξεκινήστε εκτελούνται πρώτα. Μπορείτε να έχετε περισσότερες από μία. Στη συνέχεια, η Boolean έκφραση ελέγχεται. Αν η έκφραση είναι αληθής, εκτελέσει το σώμα του βρόχου ένα χρόνο. Αν η έκφραση αξιολογεί ψευδείς, τελειώσαμε. Εμείς δεν εκτελούν το σώμα του βρόχου καθόλου. Μετά έχουμε την εκτέλεση της σώμα ο βρόχος μία φορά, Στη συνέχεια, κάνουμε ό, τι είναι το μέρος προσαύξηση εκεί. Η οποία είναι συνήθως πρόκειται να είναι κάτι σαν i συν, συν ή κάτι τέτοιο, ότι τροποποιεί ένα μετρητή μεταβλητή. Στη συνέχεια, αφού αυξήσετε, εμείς ελέγξτε και πάλι την έκφραση και επαναλάβετε αυτά τα βήματα ξανά και ξανά και ξανά μέχρι η έκφραση είναι δεν ισχύει πλέον. Έτσι, ποιες είναι οι περιπτώσεις χρήσης για ένα βρόχο; Χρησιμοποιήστε χρησιμοποιείτε ένα βρόχο, ενώ όταν θέλετε ένα βρόχο να επαναλάβω ένας άγνωστος αριθμός των φορές, αλλά αυτό ενδεχομένως να μην λειτουργούν καθόλου. Μια πραγματικά κοινό παράδειγμα ενώ ένα looping χρησιμοποιείται είναι να τρέξει τη ροή ελέγχου για ένα παιχνίδι. Μπορεί να μην ξέρω πόσο καιρό η χρήστης πρόκειται να παίζει, αλλά θέλετε να κρατήσετε κάνει το ίδιο πράγμα. Ενημέρωση των θέσεων διάφορα ξωτικά στο διοικητικό συμβούλιο. Θέλετε να κρατήσετε τα πράγματα κινείται σε κάθε στιγμή, αλλά δεν ξέρετε πότε το χρήστης πρόκειται να σταματήσει να παίζει ή όταν πρόκειται να τελειώσουν οι ζωές. Έτσι, ένας βρόχος while είναι πραγματικά καλό για κάτι τέτοιο. Αυτή είναι μια καλή περίπτωση χρήσης. Για do while loop, είναι αρκετά παρόμοια. Θέλετε ένα βρόχο να επαναλάβω μια άγνωστη πολλές φορές, αλλά τουλάχιστον μία φορά. Μπορείτε να χρησιμοποιήσετε αυτό για ένα παιχνίδι πάρα πολύ, αλλά μια πραγματικά κοινή υπόθεση χρήσης ωθεί το χρήστη για την είσοδο. Σε γενικές γραμμές, θα μπορούσε να πει κάτι όπως, να μου δώσει ένα θετικό ακέραιο, και μπορείτε να βάλετε ότι μέσα σε ένα do while loop. Γι 'αυτό θα τους ζητήσει πάντα τουλάχιστον μία φορά για ένα θετικό ακέραιο. Αν σας δώσω ένα θετικό ακέραιο, μπορεί να ξεφύγει από το βρόχο. Μπορεί να γίνει. Η Boolean έκφραση σε αυτό το διάστημα κάνει μπορεί να είναι ψευδής. Και δεν θα τους ζητήσει και πάλι. Αν σας δώσω ένα αρνητικό αριθμό, όπου πληκτρολογεί κάποια λέξη ή κάτι που είναι δεν είναι πραγματικά χρήσιμο να σας, μπορείτε να χρησιμοποιήσετε το δεν βρόχος while να πάτε πίσω και να κάνουμε ξανά και ξανά και ξανά. Σίγουρα θέλω να ρωτήσω να σας δώσω έναν αριθμό φορά, αλλά δεν ξέρετε πόσες φορές μετά από αυτό θα μπορούσαν να είναι τα παράσιτα. Και έτσι ένα do ενώ είναι μια μεγάλη χρήση θήκη για προτρέπει το χρήστη για την είσοδο. Και για χρήση βρόχων περίπτωση είναι συνήθως όταν θέλετε να επαναλάβετε ένα βρόχο ένα διακριτό αριθμό φορών, και αν δεν μπορείτε γνωρίζουν τον αριθμό των φορών τη στιγμή που το πρόγραμμα μεταγλωττιστεί. Έτσι, για παράδειγμα, ίσως έχετε ένα πρόγραμμα όπου μπορείτε να ζητήσει από το χρήστη για έναν αριθμό. Και μπαίνουν 100. Και τότε σας για βρόχο θα σε αυτή την περίπτωση να τρέξει 100 φορές. Ή ίσως εισέλθουν 1.000 στο πρόγραμμά σας και στη συνέχεια εκτελέστε το βρόχο 1.000 φορές. Είναι ένα συγκεκριμένο αριθμό φορών. Δεν είναι απαραίτητα ξέρετε τι αυτό τον αριθμό είναι το πρόγραμμα στιγμή έχει συνταχθεί. Δεν είναι σαν ένα while loop όπου θα μπορούσε να είναι άπειρη. Είναι μάλλον μια σειρά ότι απλά δεν ξέρω. Τώρα, ακόμη και αν έχω περιγράφονται όλες αυτές οι περιπτώσεις χρήσης, θα πρέπει να γνωρίζετε ότι σε αρκετά πολύ κάθε περίσταση, μπορείτε να εναλλάσσετε όλα τρεις από αυτές τις θηλιές. Μπορείτε να χρησιμοποιήσετε ένα βρόχο for, όπου μπορείτε θα έπρεπε να χρησιμοποιήσει ένα βρόχο while. Μπορείτε να χρησιμοποιήσετε ένα βρόχο for όπου θέλετε να χρησιμοποιήσετε ένα do while loop και ούτω καθεξής. Μπορεί να είναι λίγο δύσκολο μερικές φορές, έτσι γενικά είναι μια καλή πρακτική να εμμείνει σε μια τυπική περίπτωση χρήσης. Χρησιμοποιήστε ένα do while loop αν ήθελε κάτι μία φορά, τουλάχιστον. Χρησιμοποιήστε ένα για το βρόχο, αν θέλετε να κάνετε κάτι συγκεκριμένο αριθμό φορών. Μετά από όλα, γι 'αυτό υπάρχουν τρία διαφορετικά είδη βρόχων. Έτσι μπορούν να χρησιμοποιηθούν στο σωστό πλαίσιο. Αλλά μπορείτε να εναλλάσσετε τους αν θέλετε. Εάν αισθάνεστε άνετα με while loops και θέλετε πάντα να χρησιμοποιήσετε, ενώ βρόχους. Είναι κάτι που μπορείτε να το κάνετε, αν και Μπορεί να είναι λίγο συντακτικά δύσκολο, όταν ένα βρόχο for θα είναι πολύ πιο απλή. Το όνομά μου είναι Doug Lloyd και αυτό είναι CS50.