1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,640 ZAMYLA Chan: Είναι μια-μου, Zamyla. 3 00:00:02,640 --> 00:00:06,950 Σήμερα, θα πάμε να εφαρμόσουν Mario, όπου αντλούμε Mario 4 00:00:06,950 --> 00:00:10,730 ένα πλήρες πυραμίδα για αυτόν να πηδήξει πάνω. 5 00:00:10,730 --> 00:00:14,430 Ας σπάσει το υπο-εργασίες για αυτό το πρόβλημα. 6 00:00:14,430 --> 00:00:17,930 >> Πρώτον, θέλουμε να ζητήσει από το χρήστη για το ύψος της πυραμίδας. 7 00:00:17,930 --> 00:00:20,510 Και τότε θα θέλετε να βεβαιωθείτε ότι η είσοδος είναι έγκυρη. 8 00:00:20,510 --> 00:00:23,280 Και μετά θα πάμε να θέλω να επιστήσω την πυραμίδα. 9 00:00:23,280 --> 00:00:26,850 >> Έτσι, ας μιλήσουμε για προτρέποντας και την επικύρωση εισόδου του χρήστη. 10 00:00:26,850 --> 00:00:29,920 Θα μπορούσε να είναι κάπως έτσι αυτό, ένας βρόχος do-ενώ αυτή 11 00:00:29,920 --> 00:00:33,250 ζητά από το χρήστη για ένα ακέραιος και τότε μόνο επαναλήψεις 12 00:00:33,250 --> 00:00:35,700 αν αυτό ακέραιος είναι άκυρη. 13 00:00:35,700 --> 00:00:38,220 Λοιπόν, τι θα πρέπει αυτή η κατάσταση να είναι; 14 00:00:38,220 --> 00:00:40,630 >> Γι 'αυτό, ας πάμε πίσω στην προδιαγραφή. 15 00:00:40,630 --> 00:00:46,240 Λοιπόν, το spec μας λέει ότι κάθε έγκυρη ύψος πρόκειται να είναι μεταξύ 0 και 23, 16 00:00:46,240 --> 00:00:47,350 περιεκτικός. 17 00:00:47,350 --> 00:00:51,400 Έτσι, τότε αυτό σημαίνει ότι οποιαδήποτε μη έγκυρη ύψος πρόκειται να είναι μικρότερη από 0 18 00:00:51,400 --> 00:00:53,840 ή περισσότερο από 23. 19 00:00:53,840 --> 00:00:57,220 >> Έτσι τώρα που έχουμε αυτή την πληροφορία, ας σχεδιάσουμε την κατάσταση μας. 20 00:00:57,220 --> 00:00:59,230 Αλλά πρέπει να είμαστε προσεκτικοί, γιατί τώρα έχουμε 21 00:00:59,230 --> 00:01:02,130 δύο Booleans που θέλουμε να αξιολογήσουμε. 22 00:01:02,130 --> 00:01:04,150 >> Εδώ σας έχω παρέχονται με ένα πίνακα αληθείας. 23 00:01:04,150 --> 00:01:07,520 Αυτό μας επιτρέπει να λάβει δύο Booleans, Boolean ένα και δύο. 24 00:01:07,520 --> 00:01:13,600 Και μπορούμε να αξιολογήσουμε είτε bool1 και bool2 ή bool1 ή bool2. 25 00:01:13,600 --> 00:01:17,390 >> Έτσι ποια είναι η διαφορά μεταξύ και ή; 26 00:01:17,390 --> 00:01:21,810 Λοιπόν, bool1 και bool2 θα αξιολόγηση στην αληθινή, αν και μόνο 27 00:01:21,810 --> 00:01:25,680 αν και οι δύο Booleans είναι αλήθεια, ενώ η λειτουργία ή 28 00:01:25,680 --> 00:01:30,190 θα είναι αλήθεια, αν είτε μία από τις οι Booleans ή και τα δύο είναι αλήθεια. 29 00:01:30,190 --> 00:01:33,110 Έτσι, με αυτό κατά νου, δείτε αν μπορείτε να καταλάβω 30 00:01:33,110 --> 00:01:37,460 ποια είναι η κατάλληλη προϋπόθεση για την βρόχος do-ενώ σας για μια μη έγκυρη n 31 00:01:37,460 --> 00:01:38,850 θα είναι. 32 00:01:38,850 --> 00:01:43,540 >> Με αυτό, έχουμε ζητηθεί και να επικυρωθούν ο χρήστης για το ύψος της πυραμίδας 33 00:01:43,540 --> 00:01:44,550 ότι θέλουν. 34 00:01:44,550 --> 00:01:47,740 Έτσι τώρα, είναι στο χέρι μας να επιστήσει την πυραμίδα. 35 00:01:47,740 --> 00:01:50,520 Η πλήρης πυραμίδα για το σκοπό αυτό το πρόβλημα θα φανεί λίγο 36 00:01:50,520 --> 00:01:56,340 όπως αυτό, όπου έχουμε μια αριστερά της πυραμίδας, υπάρχει κάποια απόσταση, και στη συνέχεια το δικαίωμα πυραμίδα. 37 00:01:56,340 --> 00:01:58,630 Ας αναλυθεί λίγο. 38 00:01:58,630 --> 00:02:03,510 >> Αν πάω στο πρόγραμμα επεξεργασίας κειμένου μου, εδώ έχω μας που μια αριστερή στοίχιση πυραμίδα. 39 00:02:03,510 --> 00:02:05,160 Αλλά αυτό δεν θα το κάνει. 40 00:02:05,160 --> 00:02:10,139 Αυτό που θέλουμε να κάνουμε είναι να θέλουμε να δημιουργήσετε μια δεξιά στοίχιση πυραμίδα πρώτα. 41 00:02:10,139 --> 00:02:13,580 Έτσι για να το κάνετε αυτό, απλά να ωθήσει hashes μου, μαζί με την πλευρά της, 42 00:02:13,580 --> 00:02:18,240 Είμαι ακριβώς πρόκειται να θέσει ορισμένους χαρακτήρες στο μεταξύ, ακριβώς αυτές τις κουκκίδες. 43 00:02:18,240 --> 00:02:22,560 Στη συνέχεια, Πάω να βάλει δύο για το επόμενη γραμμή, και ένα σε αυτή τη γραμμή. 44 00:02:22,560 --> 00:02:26,070 Και έτσι εδώ έχω ένα δεξιά στοίχιση πυραμίδα. 45 00:02:26,070 --> 00:02:28,540 >> Μετά από αυτό, θα πάω να επιστρέψτε στην πάνω σειρά 46 00:02:28,540 --> 00:02:33,930 και να θέσει στο κενό, το οποίο είναι, σύμφωνα με την spec, δύο θέσεις. 47 00:02:33,930 --> 00:02:37,680 Στη συνέχεια, Πάω να συμπληρώσετε το άλλη πλευρά της πυραμίδας. 48 00:02:37,680 --> 00:02:42,030 Πάω να πάει στην δεύτερη σειρά, να γράψει δύο θέσεις για το χάσμα και στη συνέχεια δύο 49 00:02:42,030 --> 00:02:42,920 hashes. 50 00:02:42,920 --> 00:02:47,020 Επιστροφή στην τρίτη σειρά, δύο θέσεις για το χάσμα και τρεις hashes. 51 00:02:47,020 --> 00:02:51,480 Και στο τέλος, δύο θέσεις για το χάσμα και τέσσερις hashes. 52 00:02:51,480 --> 00:02:54,400 Έτσι, αυτό είναι ένα πλήρες πυραμίδα θα μοιάσει. 53 00:02:54,400 --> 00:02:57,260 >> Φυσικά, δεν θέλουμε Αυτές οι κουκίδες στο δρόμο. 54 00:02:57,260 --> 00:03:01,220 Έτσι θα πάμε να αντικαταστήσει αυτά τελείες βάζοντας κάποια κενά στο. 55 00:03:01,220 --> 00:03:03,720 Ένα, δύο, τρία στην πρώτη γραμμή. 56 00:03:03,720 --> 00:03:05,650 Ένα, δύο για το δεύτερο. 57 00:03:05,650 --> 00:03:08,200 Και ένα στην τρίτη γραμμή. 58 00:03:08,200 --> 00:03:12,060 Έτσι, αυτό είναι ό, τι θα κάνουμε αν ήθελε να κάνει μόνο ένα πλήρες πυραμίδας, 59 00:03:12,060 --> 00:03:13,700 λένε, στον κειμενογράφο μας. 60 00:03:13,700 --> 00:03:15,860 >> Έτσι, ας ρίξουμε αυτό, κατανόηση των προτύπων, 61 00:03:15,860 --> 00:03:19,870 και να το μετατρέψει πάνω σε κάποιο ψευδοκώδικα. 62 00:03:19,870 --> 00:03:24,500 Για κάθε σειρά της πυραμίδας, θέλουμε για να εκτυπώσετε το αριστερό πυραμίδας και, στη συνέχεια, 63 00:03:24,500 --> 00:03:26,580 το χάσμα και στη συνέχεια το δικαίωμα πυραμίδα. 64 00:03:26,580 --> 00:03:30,260 Για την αριστερά πυραμίδας, τυπώνουμε η απαιτούμενη ποσότητα των χώρων, 65 00:03:30,260 --> 00:03:31,740 που ακολουθείται από τα hashes. 66 00:03:31,740 --> 00:03:35,030 Στη συνέχεια, εκτυπώστε το χάσμα, το οποίο είναι μόλις δύο θέσεις κάθε φορά. 67 00:03:35,030 --> 00:03:38,080 Και στη σωστή πυραμίδα, τυπώνουμε ο απαιτούμενος αριθμός των hashes. 68 00:03:38,080 --> 00:03:41,410 >> Για τη δεύτερη σειρά, πραγματοποιήσαμε η ίδια ακριβώς διαδικασία. 69 00:03:41,410 --> 00:03:44,510 Εμείς εκτύπωση των χώρων για την αριστερά πυραμίδα, η απαιτούμενη ποσότητα 70 00:03:44,510 --> 00:03:49,930 της hashes, το κενό, δύο θέσεις, και τότε τα hashes για τη σωστή πυραμίδα. 71 00:03:49,930 --> 00:03:52,490 >> Ας αντιμετωπίσουμε το μοτίβο για το αριστερό πυραμίδα. 72 00:03:52,490 --> 00:03:55,660 Αν είχα, για τους σκοπούς της αυτού του παραδείγματος, ένα ύψος 73 00:03:55,660 --> 00:03:58,790 οκτώ ζητήθηκε από το χρήστη, στη συνέχεια, μου πρώτη σειρά 74 00:03:58,790 --> 00:04:01,020 θα έχουν ένα hash και επτά θέσεις. 75 00:04:01,020 --> 00:04:03,860 δεύτερη σειρά μου θα έχουν δύο hashes, έξι χώρους. 76 00:04:03,860 --> 00:04:06,749 Τρίτη σειρά, τρεις hashes, πέντε θέσεις. 77 00:04:06,749 --> 00:04:09,040 Μπορείτε πιθανώς να το κάνετε αυτό τον εαυτό σας για ένα ύψος οκτώ 78 00:04:09,040 --> 00:04:13,470 και να καθορίσει για κάθε σειρά πόσες hashes και πόσα κενά που χρειάζεστε. 79 00:04:13,470 --> 00:04:16,209 Αλλά αυτό που θέλουμε να κάνουμε είναι να θέλουμε να αφηρημένο αυτό. 80 00:04:16,209 --> 00:04:22,660 Γι 'αυτό σας ρωτήσω για κάθε νιοστή σειρά, πόσες hashes και πόσες θέσεις χρειαζόμαστε; 81 00:04:22,660 --> 00:04:25,410 >> Τώρα, όπως μπορείτε να προσδιορίσετε το πρότυπο για το πώς πολλές hashes 82 00:04:25,410 --> 00:04:29,920 και πόσες θέσεις θα πρέπει να έχετε για κάθε νιοστή σειρά για ένα δεδομένο ύψος, 83 00:04:29,920 --> 00:04:32,910 θυμηθείτε να είναι προσεκτικοί πώς είστε ευρετηρίαση. 84 00:04:32,910 --> 00:04:37,160 Τι εννοώ με αυτό είναι ότι σε καθημερινή ζωή οι περισσότεροι από μας αρχίζουν να μετρούν από το ένα. 85 00:04:37,160 --> 00:04:39,680 Έτσι, η πρώτη σειρά θα είναι το νούμερο ένα. 86 00:04:39,680 --> 00:04:43,620 Και η δεύτερη σειρά θα ήταν σειρά νούμερο δύο, ούτω καθεξής και ούτω καθεξής. 87 00:04:43,620 --> 00:04:47,620 >> Αλλά στην επιστήμη των υπολογιστών και CS50, είμαστε μηδενικής ευρετήριο. 88 00:04:47,620 --> 00:04:50,750 Έτσι, μπορούμε πραγματικά να αρχίσουμε να μετράμε από το μηδέν. 89 00:04:50,750 --> 00:04:54,020 Έτσι, η πρώτη σειρά θα είναι αριθμός σειράς μηδέν. 90 00:04:54,020 --> 00:04:56,640 Και η δεύτερη σειρά θα ήταν αριθμό της γραμμής μία. 91 00:04:56,640 --> 00:05:02,510 Έτσι, αν είχα ένα ύψος οκτώ για πυραμίδα μου, τότε η τελευταία τιμή του η 92 00:05:02,510 --> 00:05:05,850 θα είναι στην πραγματικότητα επτά και όχι οκτώ. 93 00:05:05,850 --> 00:05:07,010 >> Γι 'αυτό να είστε προσεκτικοί σχετικά με αυτό. 94 00:05:07,010 --> 00:05:10,750 Και να γνωρίζουν όταν είστε καθορισμό μοτίβο σας αν σας το μηδέν ευρετήριο 95 00:05:10,750 --> 00:05:12,360 ή ένα ευρετήριο 96 00:05:12,360 --> 00:05:13,070 >> ΕΝΤΆΞΕΙ. 97 00:05:13,070 --> 00:05:15,380 Έτσι τώρα που έχουμε το πρότυπο για την αριστερά της πυραμίδας, 98 00:05:15,380 --> 00:05:18,650 πρέπει να καθοριστεί το πρότυπο για το χάσμα. 99 00:05:18,650 --> 00:05:20,480 Ευτυχώς, αυτό είναι πραγματικά εύκολο. 100 00:05:20,480 --> 00:05:22,690 Είναι απλά πάντα δύο χώρους. 101 00:05:22,690 --> 00:05:25,240 >> Έτσι τώρα προχωρούμε στο σωστό μοτίβο. 102 00:05:25,240 --> 00:05:27,220 Η πρώτη σειρά θα έχει ένα hash. 103 00:05:27,220 --> 00:05:28,640 Η δεύτερη σειρά, δύο. 104 00:05:28,640 --> 00:05:29,530 Τρίτη σειρά, τρεις. 105 00:05:29,530 --> 00:05:30,790 Έτσι, και τα λοιπά. 106 00:05:30,790 --> 00:05:35,540 Έτσι και πάλι, να καθορίσει για κάθε αφηρημένη n και κάθε ύψος πόσα hashes 107 00:05:35,540 --> 00:05:38,810 και πόσες θέσεις Κάθε σειρά θα πρέπει να έχουν. 108 00:05:38,810 --> 00:05:39,700 >> ΕΝΤΆΞΕΙ. 109 00:05:39,700 --> 00:05:45,050 Έτσι, γνωρίζουμε ότι για κάθε έχουμε σειρά πρέπει να πραγματοποιηθεί κάποια διαδικασία. 110 00:05:45,050 --> 00:05:46,600 Πώς θα το κάνουμε αυτό; 111 00:05:46,600 --> 00:05:50,440 Λοιπόν, έχουμε χρησιμοποιήσει το για την κατασκευή βρόχου, αποτελείται από μια αρχικοποίηση, 112 00:05:50,440 --> 00:05:52,310 μια κατάσταση, και μια ενημέρωση. 113 00:05:52,310 --> 00:05:54,830 Για να χρησιμοποιηθεί βρόχους να επαναλάβει τις διαδικασίες. 114 00:05:54,830 --> 00:05:59,610 >> Έτσι λένε θέλω να πω ένα γεια, κόσμο 50 φορές, τότε μου για βρόχο 115 00:05:59,610 --> 00:06:03,510 θα δούμε κάτι σαν αυτό, όπου Έχω προετοιμαστεί μεταβλητή μου στο μηδέν. 116 00:06:03,510 --> 00:06:06,200 Η προϋπόθεση είναι ότι i είναι μικρότερο από 50. 117 00:06:06,200 --> 00:06:09,670 Και τότε η ενημέρωση είναι ότι αυξάνεται ανά μία κάθε φορά. 118 00:06:09,670 --> 00:06:14,700 Έτσι, ό, τι αυτό θα κάνουμε θα είναι να εκτύπωση Hello, world 50 φορές στη σειρά. 119 00:06:14,700 --> 00:06:18,080 >> Τώρα, ας πούμε ήθελα να επαναλάβει πάνω από το ύψος της πυραμίδας. 120 00:06:18,080 --> 00:06:21,560 Στη συνέχεια, αντί για σκληρό κωδικοποίησης κάποια αξία στην κατάσταση, 121 00:06:21,560 --> 00:06:23,280 Απλά χρησιμοποιήστε το μεταβλητό ύψος. 122 00:06:23,280 --> 00:06:27,180 Λοιπόν, τι θα κάνουμε είναι να επαναλάβει πάνω από το ύψος κάθε σειρά. 123 00:06:27,180 --> 00:06:30,280 Και μπορώ να κάνω κάτι μέσα του σώματος του εν λόγω βρόχου. 124 00:06:30,280 --> 00:06:32,710 >> Τι θέλουμε να κάνουμε μέσα στο σώμα του βρόχου; 125 00:06:32,710 --> 00:06:36,550 Λοιπόν, όπως αναφέρθηκε προηγουμένως, θέλουμε για να εκτυπώσετε τις θέσεις και τα hashes 126 00:06:36,550 --> 00:06:40,730 για το αριστερό πυραμίδας και στη συνέχεια να εκτυπώσετε δύο χώρους και στη συνέχεια να εκτυπώσετε τα hashes. 127 00:06:40,730 --> 00:06:42,500 Έτσι, έχουμε ήδη καταλάβει ότι έξω. 128 00:06:42,500 --> 00:06:45,670 Έτσι, μπορούμε να αρχίσουμε να συμπληρώσετε στο πρόγραμμά μας πολύ περισσότερο. 129 00:06:45,670 --> 00:06:49,850 >> Εδώ έχω ένα εξωτερικό για βρόχο που επαναλαμβάνεται σε κάθε γραμμή στην πυραμίδα. 130 00:06:49,850 --> 00:06:53,340 Και μέσα σε αυτό το σώμα Πάω για να εκτυπώσετε χώρους επανειλημμένα, 131 00:06:53,340 --> 00:06:56,860 hashes επανειλημμένα, και στη συνέχεια το κενό, και στη συνέχεια hashes για τη σωστή πυραμίδα, 132 00:06:56,860 --> 00:07:00,440 και στη συνέχεια, τελικά, ένα νέο γραμμή για να αρχίσει την επόμενη σειρά. 133 00:07:00,440 --> 00:07:02,860 >> Με αυτό, έχουμε ζητηθεί ο χρήστης για την είσοδο. 134 00:07:02,860 --> 00:07:04,510 Έχουμε βεβαιωθεί ότι είναι έγκυρη. 135 00:07:04,510 --> 00:07:06,280 Και τότε έχουμε επιστήσει την πυραμίδα. 136 00:07:06,280 --> 00:07:09,540 Έτσι Mario μπορεί με επιτυχία ανεβείτε την πυραμίδα. 137 00:07:09,540 --> 00:07:10,970 >> Το όνομά μου είναι Zamyla. 138 00:07:10,970 --> 00:07:13,840 Και αυτό είναι CS50. 139 00:07:13,840 --> 00:07:15,419