1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Ini aku, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Hari ini di Mario, kita akan menjadi menggambar setengah piramida untuk Mario 4 00:00:06,910 --> 00:00:08,290 memanjat. 5 00:00:08,290 --> 00:00:11,570 >> Jadi mari kita bicara tentang kami to-do untuk masalah ini. 6 00:00:11,570 --> 00:00:13,610 Kami akan ingin untuk mendorong dan memvalidasi 7 00:00:13,610 --> 00:00:18,290 pengguna untuk input yang valid tentang bagaimana tinggi mereka ingin piramida Mario untuk menjadi. 8 00:00:18,290 --> 00:00:20,090 Dan kemudian, kita akan menggambar. 9 00:00:20,090 --> 00:00:24,870 Jadi mari kita mulai dengan mendorong dan memvalidasi pengguna untuk masukan mereka. 10 00:00:24,870 --> 00:00:27,640 >> Kita bisa memanfaatkan Fungsi CS50 Perpustakaan 11 00:00:27,640 --> 00:00:31,160 mendapatkan int yang akan memastikan bahwa pengguna input integer. 12 00:00:31,160 --> 00:00:35,730 Setiap bilangan bulat positif, negatif bilangan bulat, angka 0 semua permainan yang adil. 13 00:00:35,730 --> 00:00:41,670 Jika tidak, pengguna akan diminta untuk coba lagi sampai mereka masukan bilangan bulat yang valid. 14 00:00:41,670 --> 00:00:44,210 Sekarang meskipun mendapatkan int tidak banyak pekerjaan untuk kita 15 00:00:44,210 --> 00:00:46,730 dalam memastikan bahwa pengguna memberi kita integer, 16 00:00:46,730 --> 00:00:50,760 kita masih perlu menerapkan beberapa kendala tambahan itu. 17 00:00:50,760 --> 00:00:56,420 Setelah semua, kita tidak bisa memiliki Mario climbing setengah piramida tinggi negatif 12. 18 00:00:56,420 --> 00:00:59,040 >> Selain itu, spesifikasi masalah 19 00:00:59,040 --> 00:01:02,490 mengatakan bahwa kita hanya dapat memungkinkan Mario memanjat 20 00:01:02,490 --> 00:01:06,940 piramida ketinggian antara 0 dan 23. 21 00:01:06,940 --> 00:01:11,120 OK, sehingga berarti bahwa kita perlu untuk terus meminta pengguna 22 00:01:11,120 --> 00:01:14,320 untuk memberikan kita valid nomor dan hanya terus 23 00:01:14,320 --> 00:01:17,120 setelah mereka memberi kita tinggi valid. 24 00:01:17,120 --> 00:01:18,720 Bagaimana kita melakukannya? 25 00:01:18,720 --> 00:01:23,760 >> Nah, proses yang terus menerus memberi kita ide loops-- melakukan sesuatu 26 00:01:23,760 --> 00:01:24,720 berulang-ulang. 27 00:01:24,720 --> 00:01:28,220 Satu loop di C sebagai sementara loop yang akan terus 28 00:01:28,220 --> 00:01:33,480 mengeksekusi tubuh loop selama kondisi yang diberikan bernilai true. 29 00:01:33,480 --> 00:01:36,200 Segera setelah kondisi yang mengevaluasi ke false, 30 00:01:36,200 --> 00:01:39,770 program akan melanjutkan ke apa pun yang datang setelah itu. 31 00:01:39,770 --> 00:01:43,180 Jadi sementara loop adalah salah satu cara memastikan bahwa kami terus 32 00:01:43,180 --> 00:01:45,320 meminta pengguna untuk input yang valid. 33 00:01:45,320 --> 00:01:50,070 Dan setelah mereka memberi kita masukan valid, kami akan melanjutkan untuk apa pun yang datang berikutnya. 34 00:01:50,070 --> 00:01:54,380 Kita tahu bahwa kita akan meminta pengguna untuk masukan setidaknya sekali. 35 00:01:54,380 --> 00:01:59,200 Jadi sekarang kita datang ke adik dari while, yang merupakan do while. 36 00:01:59,200 --> 00:02:02,650 >> Dilakukan sementara loop akan mengeksekusi tubuh loop setidaknya sekali. 37 00:02:02,650 --> 00:02:06,150 Jadi tanpa memeriksa kondisi, itu akan mengeksekusi tubuh loop. 38 00:02:06,150 --> 00:02:09,750 Dan kemudian memeriksa kondisi untuk melihat apakah perlu terulang. 39 00:02:09,750 --> 00:02:13,080 Hal ini sangat berguna ketika kita memvalidasi input pengguna. 40 00:02:13,080 --> 00:02:15,830 Kita tahu bahwa kita akan meminta mereka setidaknya sekali. 41 00:02:15,830 --> 00:02:18,780 Jadi do a while mungkin terlihat seperti ini. 42 00:02:18,780 --> 00:02:20,090 Kami memiliki sebuah integer n. 43 00:02:20,090 --> 00:02:22,760 Dan dalam do while, kami segera 44 00:02:22,760 --> 00:02:24,750 meminta pengguna untuk integer. 45 00:02:24,750 --> 00:02:29,740 Jika n tidak valid, maka kami akan meminta mereka lagi dan lagi dan lagi sampai mereka 46 00:02:29,740 --> 00:02:31,820 memberi kita yang bulat valid. 47 00:02:31,820 --> 00:02:37,440 Akhirnya, setelah n adalah input yang valid, kita akan lanjutkan ke seluruh program kami. 48 00:02:37,440 --> 00:02:41,830 >> Jadi mari kita kembali ke spec dan cek apa kondisi untuk input yang valid 49 00:02:41,830 --> 00:02:43,670 akan menjadi. 50 00:02:43,670 --> 00:02:48,090 Ketinggian valid akan antara 0 dan 23, inklusif. 51 00:02:48,090 --> 00:02:53,350 ketinggian sehingga tidak valid akan kurang dari 0 atau lebih dari 23. 52 00:02:53,350 --> 00:02:56,420 Jadi ingat untuk merancang kondisi Anda dengan hati-hati, 53 00:02:56,420 --> 00:02:58,660 mengetahui bahwa kondisi untuk do while 54 00:02:58,660 --> 00:03:01,470 harus sementara n tidak valid. 55 00:03:01,470 --> 00:03:05,080 Sekarang ini tidak akan menjadi sederhana tunggal ekspresi Boolean. 56 00:03:05,080 --> 00:03:07,630 Kita akan harus menggabungkan dua ekspresi yang berbeda 57 00:03:07,630 --> 00:03:09,900 untuk membuat kondisi kita secara keseluruhan. 58 00:03:09,900 --> 00:03:13,290 >> Jadi mari kita melihat tabel kebenaran saya sudah sudah diberikan Anda petunjuk bahwa kita 59 00:03:13,290 --> 00:03:15,200 akan berhadapan dengan dua Booleans. 60 00:03:15,200 --> 00:03:19,620 Jadi, inilah tabel kebenaran di mana saya memiliki dua Booleans-- Boolean 1 dan 2. 61 00:03:19,620 --> 00:03:27,050 Jadi kita memiliki pilihan untuk mengevaluasi bool1 dan bool2 atau bool1 atau bool2. 62 00:03:27,050 --> 00:03:31,980 Dan hanya akan menjadi kenyataan jika kedua Booleans mengevaluasi dengan benar, sedangkan semua 63 00:03:31,980 --> 00:03:37,280 atau akan berlaku selama satu dua Booleans bernilai true. 64 00:03:37,280 --> 00:03:41,450 OK, jadi luangkan waktu, jeda ini video dan mencerna tabel kebenaran ini. 65 00:03:41,450 --> 00:03:42,930 Aku akan di sini menunggu. 66 00:03:42,930 --> 00:03:45,760 Ketika Anda datang kembali, lihat jika Anda dapat mengumpulkan 67 00:03:45,760 --> 00:03:51,910 ekspresi Boolean untuk Anda kondisi n menjadi input tidak valid. 68 00:03:51,910 --> 00:03:54,420 >> Jadi sekarang kita memiliki input pengguna yang valid, mari kita 69 00:03:54,420 --> 00:03:58,710 pergi ke depan dan berbicara tentang bagaimana kita mungkin menarik setengah piramida. 70 00:03:58,710 --> 00:04:03,410 Di sini, di editor teks sederhana ini, Saya sudah ditarik kiri sejajar piramida. 71 00:04:03,410 --> 00:04:07,050 Tapi kita tahu bahwa kita perlu kami piramida disejajarkan tepat. 72 00:04:07,050 --> 00:04:08,650 Jadi bagaimana mungkin saya melakukan ini? 73 00:04:08,650 --> 00:04:11,440 Yah, saya mungkin akan mencoba untuk mendorong segala sesuatu ke samping 74 00:04:11,440 --> 00:04:14,880 dengan hanya menempatkan sedikit karakter di antara. 75 00:04:14,880 --> 00:04:16,779 Dan kemudian, untuk selanjutnya line, aku akan menempatkan 76 00:04:16,779 --> 00:04:20,970 beberapa karakter lebih untuk mendorong bersama, dan further-- seterusnya dan forth-- 77 00:04:20,970 --> 00:04:23,360 sampai aku memiliki hak selaras piramida. 78 00:04:23,360 --> 00:04:27,780 Jadi kita memiliki piramida menyelaraskan benar, tapi tidak terlihat begitu besar dengan titik-titik. 79 00:04:27,780 --> 00:04:30,680 Tapi kami masih ingin mempertahankan bahwa jarak yang bagus. 80 00:04:30,680 --> 00:04:35,260 Jadi aku akan harfiah menyisipkan beberapa ruang. 81 00:04:35,260 --> 00:04:39,420 >> Alih-alih tiga titik, aku akan menempatkan satu, dua, tiga ruang. 82 00:04:39,420 --> 00:04:40,370 Pada baris kedua. 83 00:04:40,370 --> 00:04:42,640 Aku akan menempatkan satu, dua ruang. 84 00:04:42,640 --> 00:04:45,370 Dan di kedua dari belakang line, hanya satu ruang. 85 00:04:45,370 --> 00:04:48,290 Dan di sini saya punya hak selaras piramida. 86 00:04:48,290 --> 00:04:52,170 Dari melakukan contoh dalam teks Editor, kami memiliki ide untuk pola 87 00:04:52,170 --> 00:04:54,590 yang akan kami gunakan untuk menggambar setengah piramida. 88 00:04:54,590 --> 00:04:58,080 Untuk setiap baris, apa yang kita lakukan adalah kita ketik beberapa ruang, 89 00:04:58,080 --> 00:05:00,170 dan kemudian mengetik beberapa hash, dan kemudian diketik 90 00:05:00,170 --> 00:05:03,020 tombol Enter, yang adalah menciptakan baris baru. 91 00:05:03,020 --> 00:05:07,770 Jadi sekarang kita memiliki itu, mari kita pergi satu langkah lebih lanjut dan menemukan pola. 92 00:05:07,770 --> 00:05:10,170 >> Jadi saya akan mengatakan, untuk kepentingan contoh ini, 93 00:05:10,170 --> 00:05:12,480 kita sedang berhadapan dengan ketinggian 8. 94 00:05:12,480 --> 00:05:17,100 Baris pertama akan memiliki dua hash yang mengikuti tujuh ruang. 95 00:05:17,100 --> 00:05:20,020 The second-- tiga hash, enam ruang. 96 00:05:20,020 --> 00:05:24,260 Ketiga row-- empat hash, lima spaces-- seterusnya dan sebagainya 97 00:05:24,260 --> 00:05:26,350 sampai kita mendapatkan ke baris NTH. 98 00:05:26,350 --> 00:05:31,540 Jadi, saya meminta Anda untuk baris NTH, berapa banyak hash kita akan memiliki 99 00:05:31,540 --> 00:05:33,120 dan berapa banyak ruang? 100 00:05:33,120 --> 00:05:37,000 Jadi terserah Anda untuk mencari tahu rumus untuk mewakili berapa banyak hash 101 00:05:37,000 --> 00:05:42,020 dan berapa banyak ruang yang dibutuhkan untuk baris NTH ketika Anda memiliki beberapa ketinggian. 102 00:05:42,020 --> 00:05:46,060 >> Sekarang ketika Anda mencari tahu ini, hati-hati bagaimana Anda mengindeks. 103 00:05:46,060 --> 00:05:49,170 Apa yang saya maksudkan dengan ini adalah bahwa dalam kehidupan sehari-hari kita semua 104 00:05:49,170 --> 00:05:51,540 mulai menghitung, biasanya dengan 1. 105 00:05:51,540 --> 00:05:55,950 Namun dalam CS50 dan dalam ilmu komputer secara umum, kita 0 diindeks. 106 00:05:55,950 --> 00:06:00,620 Jadi baris pertama akan n 0 sebagai lawan 1. 107 00:06:00,620 --> 00:06:04,550 Hati-hati ini ketika Anda mencoba untuk mencari tahu pola Anda. 108 00:06:04,550 --> 00:06:07,570 Jadi sekarang mari kita kembali ke bagaimana kita akan menggambar piramida kami. 109 00:06:07,570 --> 00:06:12,300 Untuk setiap baris, kita akan ingin mencetak spasi, mencetak hash, 110 00:06:12,300 --> 00:06:14,050 dan kemudian mencetak baris baru. 111 00:06:14,050 --> 00:06:19,160 Petunjuk di sini adalah Kata "untuk" setiap baris. 112 00:06:19,160 --> 00:06:21,470 Dalam C, kita memiliki konstruk disebut untuk loop, 113 00:06:21,470 --> 00:06:25,250 yang terdiri dari inisialisasi, kondisi, update, 114 00:06:25,250 --> 00:06:26,790 dan tubuh loop. 115 00:06:26,790 --> 00:06:31,360 >> Katakanlah saya ingin mengatakan, halo dunia, 50 kali, saya untuk loop 116 00:06:31,360 --> 00:06:32,880 akan terlihat seperti ini. 117 00:06:32,880 --> 00:06:35,480 Aku menginisialisasi bulat saya ke 0. 118 00:06:35,480 --> 00:06:38,230 Kondisi ini yang saya kurang dari 50. 119 00:06:38,230 --> 00:06:42,350 Dan kemudian update saya hanya incrementing I oleh satu setiap kali. 120 00:06:42,350 --> 00:06:45,140 Kami juga dapat menggunakan untuk loop iterate atas hal-hal. 121 00:06:45,140 --> 00:06:47,820 Perhatikan di sini bagaimana kita belum sulit kode nomor, 122 00:06:47,820 --> 00:06:51,820 melainkan ditempatkan variabel tinggi bukan menjadi kondisi. 123 00:06:51,820 --> 00:06:56,420 Jadi apa yang saya lakukan di sini adalah aku iterasi lebih dari setiap baris piramida. 124 00:06:56,420 --> 00:07:00,160 Aku bisa melakukan sesuatu untuk setiap baris di dalam tubuh loop saya. 125 00:07:00,160 --> 00:07:02,350 >> Apa yang kita lakukan di dalam tubuh loop? 126 00:07:02,350 --> 00:07:07,120 Yah, seperti yang kita sudah mengatakan, kami mencetak ruang dan kami mencetak hash 127 00:07:07,120 --> 00:07:09,480 dan kami mencetak baris baru. 128 00:07:09,480 --> 00:07:11,950 Jadi luar saya untuk loop akan terlihat seperti ini. 129 00:07:11,950 --> 00:07:15,070 Aku iterate atas setiap baris piramida, menggunakan, 130 00:07:15,070 --> 00:07:18,890 dalam kasus ini, tinggi sebagai variabel yang menyimpan ketinggian piramida. 131 00:07:18,890 --> 00:07:22,870 Di dalam tubuh loop itu, aku akan mencetak spasi berulang kali, cetak 132 00:07:22,870 --> 00:07:26,730 hash berulang kali, dan kemudian mencetak baris baru. 133 00:07:26,730 --> 00:07:31,010 >> Jadi sekarang, menggunakan semua konsep-konsep yang Saya telah berbicara tentang di jalan-melalui ini, 134 00:07:31,010 --> 00:07:35,210 Anda harus dapat mendorong pengguna untuk input, memvalidasi masukan itu, 135 00:07:35,210 --> 00:07:37,370 dan kemudian menarik setengah piramida. 136 00:07:37,370 --> 00:07:41,510 >> Nama saya Zamyla, dan ini CS50. 137 00:07:41,510 --> 00:07:43,167