ZAMYLA CHAN: Ini aku, Zamyla. Hari ini di Mario, kita akan menjadi menggambar setengah piramida untuk Mario memanjat. Jadi mari kita bicara tentang kami to-do untuk masalah ini. Kami akan ingin untuk mendorong dan memvalidasi pengguna untuk input yang valid tentang bagaimana tinggi mereka ingin piramida Mario untuk menjadi. Dan kemudian, kita akan menggambar. Jadi mari kita mulai dengan mendorong dan memvalidasi pengguna untuk masukan mereka. Kita bisa memanfaatkan Fungsi CS50 Perpustakaan mendapatkan int yang akan memastikan bahwa pengguna input integer. Setiap bilangan bulat positif, negatif bilangan bulat, angka 0 semua permainan yang adil. Jika tidak, pengguna akan diminta untuk coba lagi sampai mereka masukan bilangan bulat yang valid. Sekarang meskipun mendapatkan int tidak banyak pekerjaan untuk kita dalam memastikan bahwa pengguna memberi kita integer, kita masih perlu menerapkan beberapa kendala tambahan itu. Setelah semua, kita tidak bisa memiliki Mario climbing setengah piramida tinggi negatif 12. Selain itu, spesifikasi masalah mengatakan bahwa kita hanya dapat memungkinkan Mario memanjat piramida ketinggian antara 0 dan 23. OK, sehingga berarti bahwa kita perlu untuk terus meminta pengguna untuk memberikan kita valid nomor dan hanya terus setelah mereka memberi kita tinggi valid. Bagaimana kita melakukannya? Nah, proses yang terus menerus memberi kita ide loops-- melakukan sesuatu berulang-ulang. Satu loop di C sebagai sementara loop yang akan terus mengeksekusi tubuh loop selama kondisi yang diberikan bernilai true. Segera setelah kondisi yang mengevaluasi ke false, program akan melanjutkan ke apa pun yang datang setelah itu. Jadi sementara loop adalah salah satu cara memastikan bahwa kami terus meminta pengguna untuk input yang valid. Dan setelah mereka memberi kita masukan valid, kami akan melanjutkan untuk apa pun yang datang berikutnya. Kita tahu bahwa kita akan meminta pengguna untuk masukan setidaknya sekali. Jadi sekarang kita datang ke adik dari while, yang merupakan do while. Dilakukan sementara loop akan mengeksekusi tubuh loop setidaknya sekali. Jadi tanpa memeriksa kondisi, itu akan mengeksekusi tubuh loop. Dan kemudian memeriksa kondisi untuk melihat apakah perlu terulang. Hal ini sangat berguna ketika kita memvalidasi input pengguna. Kita tahu bahwa kita akan meminta mereka setidaknya sekali. Jadi do a while mungkin terlihat seperti ini. Kami memiliki sebuah integer n. Dan dalam do while, kami segera meminta pengguna untuk integer. Jika n tidak valid, maka kami akan meminta mereka lagi dan lagi dan lagi sampai mereka memberi kita yang bulat valid. Akhirnya, setelah n adalah input yang valid, kita akan lanjutkan ke seluruh program kami. Jadi mari kita kembali ke spec dan cek apa kondisi untuk input yang valid akan menjadi. Ketinggian valid akan antara 0 dan 23, inklusif. ketinggian sehingga tidak valid akan kurang dari 0 atau lebih dari 23. Jadi ingat untuk merancang kondisi Anda dengan hati-hati, mengetahui bahwa kondisi untuk do while harus sementara n tidak valid. Sekarang ini tidak akan menjadi sederhana tunggal ekspresi Boolean. Kita akan harus menggabungkan dua ekspresi yang berbeda untuk membuat kondisi kita secara keseluruhan. Jadi mari kita melihat tabel kebenaran saya sudah sudah diberikan Anda petunjuk bahwa kita akan berhadapan dengan dua Booleans. Jadi, inilah tabel kebenaran di mana saya memiliki dua Booleans-- Boolean 1 dan 2. Jadi kita memiliki pilihan untuk mengevaluasi bool1 dan bool2 atau bool1 atau bool2. Dan hanya akan menjadi kenyataan jika kedua Booleans mengevaluasi dengan benar, sedangkan semua atau akan berlaku selama satu dua Booleans bernilai true. OK, jadi luangkan waktu, jeda ini video dan mencerna tabel kebenaran ini. Aku akan di sini menunggu. Ketika Anda datang kembali, lihat jika Anda dapat mengumpulkan ekspresi Boolean untuk Anda kondisi n menjadi input tidak valid. Jadi sekarang kita memiliki input pengguna yang valid, mari kita pergi ke depan dan berbicara tentang bagaimana kita mungkin menarik setengah piramida. Di sini, di editor teks sederhana ini, Saya sudah ditarik kiri sejajar piramida. Tapi kita tahu bahwa kita perlu kami piramida disejajarkan tepat. Jadi bagaimana mungkin saya melakukan ini? Yah, saya mungkin akan mencoba untuk mendorong segala sesuatu ke samping dengan hanya menempatkan sedikit karakter di antara. Dan kemudian, untuk selanjutnya line, aku akan menempatkan beberapa karakter lebih untuk mendorong bersama, dan further-- seterusnya dan forth-- sampai aku memiliki hak selaras piramida. Jadi kita memiliki piramida menyelaraskan benar, tapi tidak terlihat begitu besar dengan titik-titik. Tapi kami masih ingin mempertahankan bahwa jarak yang bagus. Jadi aku akan harfiah menyisipkan beberapa ruang. Alih-alih tiga titik, aku akan menempatkan satu, dua, tiga ruang. Pada baris kedua. Aku akan menempatkan satu, dua ruang. Dan di kedua dari belakang line, hanya satu ruang. Dan di sini saya punya hak selaras piramida. Dari melakukan contoh dalam teks Editor, kami memiliki ide untuk pola yang akan kami gunakan untuk menggambar setengah piramida. Untuk setiap baris, apa yang kita lakukan adalah kita ketik beberapa ruang, dan kemudian mengetik beberapa hash, dan kemudian diketik tombol Enter, yang adalah menciptakan baris baru. Jadi sekarang kita memiliki itu, mari kita pergi satu langkah lebih lanjut dan menemukan pola. Jadi saya akan mengatakan, untuk kepentingan contoh ini, kita sedang berhadapan dengan ketinggian 8. Baris pertama akan memiliki dua hash yang mengikuti tujuh ruang. The second-- tiga hash, enam ruang. Ketiga row-- empat hash, lima spaces-- seterusnya dan sebagainya sampai kita mendapatkan ke baris NTH. Jadi, saya meminta Anda untuk baris NTH, berapa banyak hash kita akan memiliki dan berapa banyak ruang? Jadi terserah Anda untuk mencari tahu rumus untuk mewakili berapa banyak hash dan berapa banyak ruang yang dibutuhkan untuk baris NTH ketika Anda memiliki beberapa ketinggian. Sekarang ketika Anda mencari tahu ini, hati-hati bagaimana Anda mengindeks. Apa yang saya maksudkan dengan ini adalah bahwa dalam kehidupan sehari-hari kita semua mulai menghitung, biasanya dengan 1. Namun dalam CS50 dan dalam ilmu komputer secara umum, kita 0 diindeks. Jadi baris pertama akan n 0 sebagai lawan 1. Hati-hati ini ketika Anda mencoba untuk mencari tahu pola Anda. Jadi sekarang mari kita kembali ke bagaimana kita akan menggambar piramida kami. Untuk setiap baris, kita akan ingin mencetak spasi, mencetak hash, dan kemudian mencetak baris baru. Petunjuk di sini adalah Kata "untuk" setiap baris. Dalam C, kita memiliki konstruk disebut untuk loop, yang terdiri dari inisialisasi, kondisi, update, dan tubuh loop. Katakanlah saya ingin mengatakan, halo dunia, 50 kali, saya untuk loop akan terlihat seperti ini. Aku menginisialisasi bulat saya ke 0. Kondisi ini yang saya kurang dari 50. Dan kemudian update saya hanya incrementing I oleh satu setiap kali. Kami juga dapat menggunakan untuk loop iterate atas hal-hal. Perhatikan di sini bagaimana kita belum sulit kode nomor, melainkan ditempatkan variabel tinggi bukan menjadi kondisi. Jadi apa yang saya lakukan di sini adalah aku iterasi lebih dari setiap baris piramida. Aku bisa melakukan sesuatu untuk setiap baris di dalam tubuh loop saya. Apa yang kita lakukan di dalam tubuh loop? Yah, seperti yang kita sudah mengatakan, kami mencetak ruang dan kami mencetak hash dan kami mencetak baris baru. Jadi luar saya untuk loop akan terlihat seperti ini. Aku iterate atas setiap baris piramida, menggunakan, dalam kasus ini, tinggi sebagai variabel yang menyimpan ketinggian piramida. Di dalam tubuh loop itu, aku akan mencetak spasi berulang kali, cetak hash berulang kali, dan kemudian mencetak baris baru. Jadi sekarang, menggunakan semua konsep-konsep yang Saya telah berbicara tentang di jalan-melalui ini, Anda harus dapat mendorong pengguna untuk input, memvalidasi masukan itu, dan kemudian menarik setengah piramida. Nama saya Zamyla, dan ini CS50.