ZAMYLA Chan: Είναι μια-μου, Zamyla.
Σήμερα, θα πάμε να εφαρμόσουν Mario, όπου αντλούμε Mario
ένα πλήρες πυραμίδα για αυτόν να πηδήξει πάνω.
Ας σπάσει το υπο-εργασίες για αυτό το πρόβλημα.
>> Πρώτον, θέλουμε να ζητήσει από το χρήστη για το ύψος της πυραμίδας.
Και τότε θα θέλετε να βεβαιωθείτε ότι η είσοδος είναι έγκυρη.
Και μετά θα πάμε να θέλω να επιστήσω την πυραμίδα.
>> Έτσι, ας μιλήσουμε για προτρέποντας και την επικύρωση εισόδου του χρήστη.
Θα μπορούσε να είναι κάπως έτσι αυτό, ένας βρόχος do-ενώ αυτή
ζητά από το χρήστη για ένα ακέραιος και τότε μόνο επαναλήψεις
αν αυτό ακέραιος είναι άκυρη.
Λοιπόν, τι θα πρέπει αυτή η κατάσταση να είναι;
>> Γι 'αυτό, ας πάμε πίσω στην προδιαγραφή.
Λοιπόν, το spec μας λέει ότι κάθε έγκυρη ύψος πρόκειται να είναι μεταξύ 0 και 23,
περιεκτικός.
Έτσι, τότε αυτό σημαίνει ότι οποιαδήποτε μη έγκυρη ύψος πρόκειται να είναι μικρότερη από 0
ή περισσότερο από 23.
>> Έτσι τώρα που έχουμε αυτή την πληροφορία, ας σχεδιάσουμε την κατάσταση μας.
Αλλά πρέπει να είμαστε προσεκτικοί, γιατί τώρα έχουμε
δύο Booleans που θέλουμε να αξιολογήσουμε.
>> Εδώ σας έχω παρέχονται με ένα πίνακα αληθείας.
Αυτό μας επιτρέπει να λάβει δύο Booleans, Boolean ένα και δύο.
Και μπορούμε να αξιολογήσουμε είτε bool1 και bool2 ή bool1 ή bool2.
>> Έτσι ποια είναι η διαφορά μεταξύ και ή;
Λοιπόν, bool1 και bool2 θα αξιολόγηση στην αληθινή, αν και μόνο
αν και οι δύο Booleans είναι αλήθεια, ενώ η λειτουργία ή
θα είναι αλήθεια, αν είτε μία από τις οι Booleans ή και τα δύο είναι αλήθεια.
Έτσι, με αυτό κατά νου, δείτε αν μπορείτε να καταλάβω
ποια είναι η κατάλληλη προϋπόθεση για την βρόχος do-ενώ σας για μια μη έγκυρη n
θα είναι.
>> Με αυτό, έχουμε ζητηθεί και να επικυρωθούν ο χρήστης για το ύψος της πυραμίδας
ότι θέλουν.
Έτσι τώρα, είναι στο χέρι μας να επιστήσει την πυραμίδα.
Η πλήρης πυραμίδα για το σκοπό αυτό το πρόβλημα θα φανεί λίγο
όπως αυτό, όπου έχουμε μια αριστερά της πυραμίδας, υπάρχει κάποια απόσταση, και στη συνέχεια το δικαίωμα πυραμίδα.
Ας αναλυθεί λίγο.
>> Αν πάω στο πρόγραμμα επεξεργασίας κειμένου μου, εδώ έχω μας που μια αριστερή στοίχιση πυραμίδα.
Αλλά αυτό δεν θα το κάνει.
Αυτό που θέλουμε να κάνουμε είναι να θέλουμε να δημιουργήσετε μια δεξιά στοίχιση πυραμίδα πρώτα.
Έτσι για να το κάνετε αυτό, απλά να ωθήσει hashes μου, μαζί με την πλευρά της,
Είμαι ακριβώς πρόκειται να θέσει ορισμένους χαρακτήρες στο μεταξύ, ακριβώς αυτές τις κουκκίδες.
Στη συνέχεια, Πάω να βάλει δύο για το επόμενη γραμμή, και ένα σε αυτή τη γραμμή.
Και έτσι εδώ έχω ένα δεξιά στοίχιση πυραμίδα.
>> Μετά από αυτό, θα πάω να επιστρέψτε στην πάνω σειρά
και να θέσει στο κενό, το οποίο είναι, σύμφωνα με την spec, δύο θέσεις.
Στη συνέχεια, Πάω να συμπληρώσετε το άλλη πλευρά της πυραμίδας.
Πάω να πάει στην δεύτερη σειρά, να γράψει δύο θέσεις για το χάσμα και στη συνέχεια δύο
hashes.
Επιστροφή στην τρίτη σειρά, δύο θέσεις για το χάσμα και τρεις hashes.
Και στο τέλος, δύο θέσεις για το χάσμα και τέσσερις hashes.
Έτσι, αυτό είναι ένα πλήρες πυραμίδα θα μοιάσει.
>> Φυσικά, δεν θέλουμε Αυτές οι κουκίδες στο δρόμο.
Έτσι θα πάμε να αντικαταστήσει αυτά τελείες βάζοντας κάποια κενά στο.
Ένα, δύο, τρία στην πρώτη γραμμή.
Ένα, δύο για το δεύτερο.
Και ένα στην τρίτη γραμμή.
Έτσι, αυτό είναι ό, τι θα κάνουμε αν ήθελε να κάνει μόνο ένα πλήρες πυραμίδας,
λένε, στον κειμενογράφο μας.
>> Έτσι, ας ρίξουμε αυτό, κατανόηση των προτύπων,
και να το μετατρέψει πάνω σε κάποιο ψευδοκώδικα.
Για κάθε σειρά της πυραμίδας, θέλουμε για να εκτυπώσετε το αριστερό πυραμίδας και, στη συνέχεια,
το χάσμα και στη συνέχεια το δικαίωμα πυραμίδα.
Για την αριστερά πυραμίδας, τυπώνουμε η απαιτούμενη ποσότητα των χώρων,
που ακολουθείται από τα hashes.
Στη συνέχεια, εκτυπώστε το χάσμα, το οποίο είναι μόλις δύο θέσεις κάθε φορά.
Και στη σωστή πυραμίδα, τυπώνουμε ο απαιτούμενος αριθμός των hashes.
>> Για τη δεύτερη σειρά, πραγματοποιήσαμε η ίδια ακριβώς διαδικασία.
Εμείς εκτύπωση των χώρων για την αριστερά πυραμίδα, η απαιτούμενη ποσότητα
της hashes, το κενό, δύο θέσεις, και τότε τα hashes για τη σωστή πυραμίδα.
>> Ας αντιμετωπίσουμε το μοτίβο για το αριστερό πυραμίδα.
Αν είχα, για τους σκοπούς της αυτού του παραδείγματος, ένα ύψος
οκτώ ζητήθηκε από το χρήστη, στη συνέχεια, μου πρώτη σειρά
θα έχουν ένα hash και επτά θέσεις.
δεύτερη σειρά μου θα έχουν δύο hashes, έξι χώρους.
Τρίτη σειρά, τρεις hashes, πέντε θέσεις.
Μπορείτε πιθανώς να το κάνετε αυτό τον εαυτό σας για ένα ύψος οκτώ
και να καθορίσει για κάθε σειρά πόσες hashes και πόσα κενά που χρειάζεστε.
Αλλά αυτό που θέλουμε να κάνουμε είναι να θέλουμε να αφηρημένο αυτό.
Γι 'αυτό σας ρωτήσω για κάθε νιοστή σειρά, πόσες hashes και πόσες θέσεις χρειαζόμαστε;
>> Τώρα, όπως μπορείτε να προσδιορίσετε το πρότυπο για το πώς πολλές hashes
και πόσες θέσεις θα πρέπει να έχετε για κάθε νιοστή σειρά για ένα δεδομένο ύψος,
θυμηθείτε να είναι προσεκτικοί πώς είστε ευρετηρίαση.
Τι εννοώ με αυτό είναι ότι σε καθημερινή ζωή οι περισσότεροι από μας αρχίζουν να μετρούν από το ένα.
Έτσι, η πρώτη σειρά θα είναι το νούμερο ένα.
Και η δεύτερη σειρά θα ήταν σειρά νούμερο δύο, ούτω καθεξής και ούτω καθεξής.
>> Αλλά στην επιστήμη των υπολογιστών και CS50, είμαστε μηδενικής ευρετήριο.
Έτσι, μπορούμε πραγματικά να αρχίσουμε να μετράμε από το μηδέν.
Έτσι, η πρώτη σειρά θα είναι αριθμός σειράς μηδέν.
Και η δεύτερη σειρά θα ήταν αριθμό της γραμμής μία.
Έτσι, αν είχα ένα ύψος οκτώ για πυραμίδα μου, τότε η τελευταία τιμή του η
θα είναι στην πραγματικότητα επτά και όχι οκτώ.
>> Γι 'αυτό να είστε προσεκτικοί σχετικά με αυτό.
Και να γνωρίζουν όταν είστε καθορισμό μοτίβο σας αν σας το μηδέν ευρετήριο
ή ένα ευρετήριο
>> ΕΝΤΆΞΕΙ.
Έτσι τώρα που έχουμε το πρότυπο για την αριστερά της πυραμίδας,
πρέπει να καθοριστεί το πρότυπο για το χάσμα.
Ευτυχώς, αυτό είναι πραγματικά εύκολο.
Είναι απλά πάντα δύο χώρους.
>> Έτσι τώρα προχωρούμε στο σωστό μοτίβο.
Η πρώτη σειρά θα έχει ένα hash.
Η δεύτερη σειρά, δύο.
Τρίτη σειρά, τρεις.
Έτσι, και τα λοιπά.
Έτσι και πάλι, να καθορίσει για κάθε αφηρημένη n και κάθε ύψος πόσα hashes
και πόσες θέσεις Κάθε σειρά θα πρέπει να έχουν.
>> ΕΝΤΆΞΕΙ.
Έτσι, γνωρίζουμε ότι για κάθε έχουμε σειρά πρέπει να πραγματοποιηθεί κάποια διαδικασία.
Πώς θα το κάνουμε αυτό;
Λοιπόν, έχουμε χρησιμοποιήσει το για την κατασκευή βρόχου, αποτελείται από μια αρχικοποίηση,
μια κατάσταση, και μια ενημέρωση.
Για να χρησιμοποιηθεί βρόχους να επαναλάβει τις διαδικασίες.
>> Έτσι λένε θέλω να πω ένα γεια, κόσμο 50 φορές, τότε μου για βρόχο
θα δούμε κάτι σαν αυτό, όπου Έχω προετοιμαστεί μεταβλητή μου στο μηδέν.
Η προϋπόθεση είναι ότι i είναι μικρότερο από 50.
Και τότε η ενημέρωση είναι ότι αυξάνεται ανά μία κάθε φορά.
Έτσι, ό, τι αυτό θα κάνουμε θα είναι να εκτύπωση Hello, world 50 φορές στη σειρά.
>> Τώρα, ας πούμε ήθελα να επαναλάβει πάνω από το ύψος της πυραμίδας.
Στη συνέχεια, αντί για σκληρό κωδικοποίησης κάποια αξία στην κατάσταση,
Απλά χρησιμοποιήστε το μεταβλητό ύψος.
Λοιπόν, τι θα κάνουμε είναι να επαναλάβει πάνω από το ύψος κάθε σειρά.
Και μπορώ να κάνω κάτι μέσα του σώματος του εν λόγω βρόχου.
>> Τι θέλουμε να κάνουμε μέσα στο σώμα του βρόχου;
Λοιπόν, όπως αναφέρθηκε προηγουμένως, θέλουμε για να εκτυπώσετε τις θέσεις και τα hashes
για το αριστερό πυραμίδας και στη συνέχεια να εκτυπώσετε δύο χώρους και στη συνέχεια να εκτυπώσετε τα hashes.
Έτσι, έχουμε ήδη καταλάβει ότι έξω.
Έτσι, μπορούμε να αρχίσουμε να συμπληρώσετε στο πρόγραμμά μας πολύ περισσότερο.
>> Εδώ έχω ένα εξωτερικό για βρόχο που επαναλαμβάνεται σε κάθε γραμμή στην πυραμίδα.
Και μέσα σε αυτό το σώμα Πάω για να εκτυπώσετε χώρους επανειλημμένα,
hashes επανειλημμένα, και στη συνέχεια το κενό, και στη συνέχεια hashes για τη σωστή πυραμίδα,
και στη συνέχεια, τελικά, ένα νέο γραμμή για να αρχίσει την επόμενη σειρά.
>> Με αυτό, έχουμε ζητηθεί ο χρήστης για την είσοδο.
Έχουμε βεβαιωθεί ότι είναι έγκυρη.
Και τότε έχουμε επιστήσει την πυραμίδα.
Έτσι Mario μπορεί με επιτυχία ανεβείτε την πυραμίδα.
>> Το όνομά μου είναι Zamyla.
Και αυτό είναι CS50.