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.