ZAMYLA Chan: Είναι μια μένα, Zamyla. Σήμερα στο Mario, θα πάμε να είναι αντλώντας το μισό πυραμίδα για τον Mario να ανέβει. Έτσι, ας μιλήσουμε για μας να-κάνουμε για αυτό το πρόβλημα. Εμείς πάμε να θέλουν να παρακινήσει και να επικυρώσει ο χρήστης για μια έγκυρη είσοδο του πώς υψηλή θέλουν πυραμίδα του Mario να είναι. Και τότε, θα πάμε να το σχεδιάσετε. Ας ξεκινήσουμε με την προτροπή και επικύρωση από το χρήστη για τη συμβολή τους. Μπορούμε να κάνουμε χρήση του Λειτουργία CS50 Βιβλιοθήκη πάρετε int που θα εξασφαλίσει ότι ο χρήστης εισάγει έναν ακέραιο. Τυχόν θετική ακέραιοι, αρνητικό ακέραιοι, ο αριθμός 0 είναι όλα δίκαιο παιχνίδι. Σε αντίθετη περίπτωση, ο χρήστης θα σας ζητηθεί να επαναλάβετε μέχρι να εισάγετε ένα έγκυρο ακέραιο. Τώρα αν πάρει int κάνει πολλή δουλειά για εμάς στην εξασφάλιση ότι η χρήστης μας δίνει έναν ακέραιο, πρέπει ακόμα να εφαρμόσει κάποια πρόσθετους περιορισμούς σε αυτό. Μετά από όλα, δεν μπορούμε να έχουμε Mario αναρρίχηση μισή πυραμίδα ύψους αρνητική 12. Εκτός από αυτό, το προδιαγραφή πρόβλημα λέει ότι μπορούμε μόνο να επιτρέπουν Mario να αναρριχηθεί μια πυραμίδα ύψη μεταξύ 0 και 23. Εντάξει, έτσι αυτό σημαίνει ότι χρειαζόμαστε να ζητήσει συνεχώς το χρήστη να μας δώσει μια έγκυρη αριθμό και μόνο να συνεχίσει από τη στιγμή που μας έχετε δώσει ένα έγκυρο ύψος. Πώς θα το κάνουμε αυτό; Λοιπόν, συνεχείς διεργασίες μας δώσει η ιδέα της loops-- κάνουμε κάτι επανειλημμένα. Ένας βρόχος σε C ως μια στιγμή βρόχο που θα συνεχώς εκτελέσει το σώμα του βρόχου όσο η δεδομένη κατάσταση είναι αληθής. Το συντομότερο αυτή την κατάσταση ψευδής, το πρόγραμμα θα προχωρήσει σε ό, τι έρχεται μετά από αυτό. Έτσι, ενώ βρόχοι είναι ένας τρόπος διασφαλίζοντας ότι είμαστε συνεχώς ζητήσει από το χρήστη για μια έγκυρη εισόδου. Και τη στιγμή που θα μας δώσει μια έγκυρη είσοδο, θα προχωρήσει σε ό, τι έρχεται το επόμενο. Ξέρουμε ότι θα πάμε να ζητήσουμε ο χρήστης για είσοδο τουλάχιστον μία φορά. Έτσι τώρα έχουμε έρθει σε μια αδελφή της ενώ βρόχο, το οποίο είναι το do while loop. Κάνουμε, ενώ βρόχους θα εκτελέσει το σώμα του βρόχου τουλάχιστον μία φορά. Έτσι, χωρίς να ελέγξει την κατάσταση, θα εκτελέσει το σώμα του βρόχου. Και στη συνέχεια, ελέγξτε την κατάσταση για να δείτε αν πρέπει να επαναληφθεί. Αυτό έρχεται σε βολικό όταν είμαστε επικύρωση εισόδου του χρήστη. Ξέρουμε ότι θα πάμε να τους ζητήσει τουλάχιστον μία φορά. Έτσι, ένα do while loop θα μπορούσε δείτε κάτι σαν αυτό. Έχουμε έναν ακέραιο n. Και στο εσωτερικό του do βρόχο while, εμείς αμέσως ζητήσει από το χρήστη για ένα ακέραιο. Αν n είναι άκυρη, τότε θα τους ωθήσει ξανά και ξανά και ξανά μέχρι να να μας δώσει αυτό που ισχύει ακέραιος. Τέλος, από τη στιγμή n είναι μια έγκυρη είσοδο, εμείς θα να προχωρήσει με το υπόλοιπο του προγράμματός μας. Έτσι, ας πάμε πίσω στο spec και έλεγχος ποιες είναι οι προϋποθέσεις για την έγκυρη είσοδο θα είναι. Οι έγκυρες ύψη πρόκειται να να είναι μεταξύ 0 και 23, συμπεριλαμβανομένων. είναι τόσο άκυρο ύψη πρόκειται να να είναι μικρότερη από 0 ή περισσότερο από 23. Έτσι θυμηθείτε να σχεδιάσουν κατάστασή σας με προσοχή, γνωρίζοντας ότι η κατάσταση για το do while loop θα πρέπει να είναι, ενώ n είναι άκυρη. Τώρα αυτό δεν πρόκειται να είναι μια απλά και μόνο Boolean έκφραση. Εμείς πάμε να πρέπει να συνδυάζουν δύο διαφορετικές εκφράσεις για να κάνουν όλη την κατάστασή μας. Έτσι, ας δούμε ένα πίνακα αληθείας έχω ήδη δώσει την υπόδειξη που είμαστε πρόκειται να ασχολούνται με δύο Booleans. Έτσι, εδώ είναι ένας πίνακας αλήθειας όπου έχουν δύο Booleans-- Boolean 1 και 2. Έτσι, έχουμε τη δυνατότητα να αξιολογήσει bool1 και bool2 ή bool1 ή bool2. Και θα είναι μόνο αλήθεια αν τα δύο Booleans αξιολόγηση στην αληθινή, ενώ όλες ή θα ισχύει για όσο διάστημα ένα από τα οι δύο Booleans αληθής. Εντάξει, έτσι ώστε να λάβει μια στιγμή, παύση αυτή βίντεο και να χωνέψει αυτό το πίνακα αληθείας. Θα είμαι εδώ να περιμένει. Όταν έρθει πίσω, δείτε αν μπορείτε να συναρμολογήσουν μια Boolean έκφραση για σας κατάσταση του n είναι μια άκυρη εισόδου. Έτσι τώρα που έχουμε έγκυρη είσοδο του χρήστη, ας να προχωρήσει και να μιλήσουμε για το πώς μπορούμε μπορεί να επιστήσει την μισή πυραμίδα. Εδώ σε αυτό το απλό πρόγραμμα επεξεργασίας κειμένου, Έχω σχεδιάσει ένα με αριστερή στοίχιση πυραμίδα. Αλλά γνωρίζουμε ότι χρειαζόμαστε μας πυραμίδα να ευθυγραμμιστεί σωστά. Λοιπόν, πώς θα μπορούσε να το κάνω αυτό; Λοιπόν, εγώ θα μπορούσε να προσπαθήσει να πιέσει πάντα προς την πλευρά από απλά βάζοντας ένα μικρό χαρακτήρα στο μεταξύ. Και στη συνέχεια, για το επόμενο γραμμή, Πάω να θέσει μερικοί περισσότερους χαρακτήρες για να ωθήσει κατά μήκος, και further-- ούτω καθεξής και ούτω forth-- μέχρι να έχω το δικαίωμα να ευθυγραμμίζονται πυραμίδα. Έτσι, έχουμε το δικαίωμα ευθυγράμμιση της πυραμίδας, αλλά δεν είναι και τόσο μεγάλη με τις τελείες. Αλλά ακόμα θέλουμε να να διατηρούν αυτό το ωραίο απόσταση. Έτσι, Πάω να κυριολεκτικά τοποθετήστε μερικά κενά. Αντί για τρεις τελείες, θα βάλτε ένα, δύο, τρεις θέσεις. Στη δεύτερη γραμμή. Θα βάλω ένα, δύο θέσεις. Και στην προτελευταία γραμμή, ένα μόνο χώρο. Και εδώ έχω το δικαίωμα να ευθυγραμμίζονται πυραμίδα. Από το να κάνουν το παράδειγμα στο κείμενο συντάκτης, έχουμε μια ιδέα για το σχέδιο ότι θα χρησιμοποιήσετε για να επιστήσει την μισή πυραμίδα. Για κάθε σειρά, αυτό που κάναμε Είναι γράφουμε κάποια κενά, και στη συνέχεια να πληκτρολογήσει μερικά hashes, και στη συνέχεια να πληκτρολογήσει το πλήκτρο Enter, η οποία είναι η δημιουργία μιας νέας γραμμής. Έτσι τώρα που έχουμε ότι, ας πάμε ένα βήμα παραπέρα και να βρούμε ένα μοτίβο. Έτσι, Πάω να πω, για το ενδιαφέρον αυτού του παραδείγματος, έχουμε να κάνουμε με ύψος 8. Η πρώτη σειρά πρόκειται να έχει δύο hashes που ακολουθεί επτά θέσεις. Οι second-- τρεις hashes, έξι χώρους. Τρίτον row-- τέσσερις hashes, πέντε spaces-- ούτω καθεξής και ούτω καθεξής μέχρι να φτάσουμε στη σειρά Ν. Έτσι, λοιπόν, θα σας ρωτήσω για τη σειρά Ν, πόσα hashes θα πάμε να έχουν και πόσες θέσεις; Γι 'αυτό είναι στο χέρι σας να καταλάβω ένα τύπο για να αντιπροσωπεύουν τον αριθμό των hashes και πόσες θέσεις χρειάζονται για νιοστή σειρά όταν έχετε κάποιο ύψος. Τώρα, όταν είστε υπολογίζοντας αυτό έξω, να είστε προσεκτικοί πώς είστε ευρετηρίαση. Τι εννοώ με αυτό είναι ότι στην καθημερινή ζωή όλων μας αρχίζουν να μετρούν, συνήθως από 1. Αλλά σε CS50 και στην επιστήμη των υπολογιστών σε γενικές γραμμές, είμαστε 0 ευρετήριο. Έτσι, η πρώτη σειρά θα είναι n από 0, σε αντίθεση προς 1. Να είστε προσεκτικοί αυτό όταν είσαι προσπαθώ να καταλάβω το σχέδιό σας. Έτσι τώρα ας πάμε πίσω στο πώς θα πάμε να επιστήσω την πυραμίδα μας. Για κάθε σειρά, θα πάμε να θέλουν να εκτύπωση των χώρων, την εκτύπωση των hashes, και στη συνέχεια να εκτυπώσετε μια νέα γραμμή. Η υπόδειξη εδώ είναι η λέξη "για" κάθε γραμμή. Στην C, έχουμε ένα κατασκεύασμα ονομάζεται για το βρόχο, το οποίο αποτελείται από ένα προετοιμασίας, μια κατάσταση, μια ενημερωμένη έκδοση, και το σώμα του βρόχου. Πείτε Ήθελα να πω, γεια κόσμο, 50 φορές, μου βρόχο θα δούμε κάτι σαν αυτό. Έχω προετοιμαστεί ακέραιος μου 0. Η προϋπόθεση είναι ότι θα είναι μικρότερο από 50. Και στη συνέχεια ενημέρωση μου είναι ακριβώς προσαύξηση Ι με ένα κάθε φορά. Μπορούμε επίσης να χρησιμοποιήσουμε για βρόχους να επαναλάβει πάνω από τα πράγματα. Παρατηρήστε εδώ πως δεν έχουμε σκληρό κωδικοποιημένο αριθμό, αλλά μάλλον τοποθετείται η μεταβλητή ύψος αντί στην κατάσταση. Έτσι, αυτό που κάνω εδώ είναι ότι είμαι επανάληψη πάνω από κάθε σειρά της πυραμίδας. Μπορώ να κάνω κάτι για το καθένα σειρά μέσα στο σώμα του βρόχου μου. Τι κάνουμε μέσα το σώμα του βρόχου; Λοιπόν, όπως έχουμε ήδη πει, είμαστε εκτύπωση χώρους και είμαστε hashes εκτύπωση και είμαστε εκτύπωση μια νέα γραμμή. Έτσι εξωτερική μου για το βρόχο θα μοιάζει με αυτό. Έχω επαναλάβει πάνω από κάθε σειρά της πυραμίδας, με τη χρήση, σε αυτή την περίπτωση, το ύψος ως μεταβλητή που αποθηκεύει το ύψος της πυραμίδας. Μέσα στο σώμα του εν λόγω βρόχου, είμαι πρόκειται να εκτυπώσετε χώρους επανειλημμένα, εκτύπωση τα hashes επανειλημμένα, και στη συνέχεια να εκτυπώσετε μια νέα γραμμή. Έτσι τώρα, χρησιμοποιώντας όλες τις έννοιες που Έχω μιλήσει για σε αυτό το walk-through, θα πρέπει να είναι σε θέση να ζητήσει από το χρήστη για την είσοδο, την επικύρωση ότι η είσοδος, και στη συνέχεια να επιστήσει την μισή πυραμίδα. Το όνομά μου είναι Zamyla, και αυτό είναι CS50.