ZAMYLA CHAN: Ini adalah-saya, Zamyla.
Hari ini, kita akan menerapkan Mario, di mana kita menarik Mario
piramida penuh baginya untuk melompat lebih.
Mari kita memecah sub-tugas untuk masalah ini.
>> Pertama, kami ingin meminta pengguna untuk ketinggian piramida.
Dan kemudian kita ingin memastikan bahwa masukan yang valid.
Dan kemudian kita akan ingin menarik piramida.
>> Jadi mari kita bicara tentang mendorong dan memvalidasi input pengguna.
Ini mungkin terlihat seperti ini, loop do-while yang
mendorong pengguna untuk bilangan bulat dan kemudian hanya mengulangi
jika itu bilangan bulat tidak valid.
Jadi apa yang harus kondisi ini terjadi?
>> Untuk ini, mari kita kembali dengan spesifikasi.
Nah, spec memberitahu kita bahwa setiap valid tinggi akan menjadi antara 0 dan 23,
inklusif.
Jadi itu berarti bahwa setiap valid tinggi akan menjadi kurang dari 0
atau lebih dari 23.
>> Jadi sekarang kita memiliki informasi ini, mari kita merancang kondisi kita.
Tapi kita harus berhati-hati, karena sekarang kita memiliki
dua Booleans yang ingin kita untuk mengevaluasi.
>> Di sini saya berikan Anda dengan tabel kebenaran.
Hal ini memungkinkan kita untuk mengambil dua Booleans, Boolean satu dan dua.
Dan kita dapat mengevaluasi baik bool1 dan bool2 atau bool1 atau bool2.
>> Jadi apa bedanya antara dan dan atau?
Nah, bool1 dan bool2 akan mengevaluasi dengan benar jika dan hanya
jika kedua Booleans benar, sedangkan atau operasi
akan benar jika salah satu dari yang Booleans atau keduanya benar.
Jadi dengan ini dalam pikiran, lihat apakah Anda dapat mencari tahu
apa kondisi yang tepat untuk lingkaran do-while Anda untuk n valid
akan menjadi.
>> Dengan itu, kami telah diminta dan divalidasi pengguna untuk ketinggian piramida
yang mereka inginkan.
Jadi sekarang, itu terserah kita menggambar piramida.
Piramida penuh untuk ini masalah akan terlihat sedikit
seperti ini, di mana kami memiliki piramida kiri, beberapa kesenjangan, dan kemudian piramida yang tepat.
Jadi mari kita istirahat ini turun sedikit.
>> Jika saya pergi ke editor teks saya, di sini saya sudah ditarik kita piramida kiri-blok.
Tapi itu tidak akan dilakukan.
Apa yang ingin kita lakukan adalah kita ingin membuat piramida benar-blok pertama.
Jadi untuk melakukan ini, hanya mendorong hash saya bersama ke samping,
Aku hanya akan menaruh beberapa karakter di antara, hanya titik-titik ini.
Lalu aku akan menempatkan dua di baris berikutnya, dan satu pada baris tersebut.
Dan jadi di sini aku punya benar-blok piramida.
>> Setelah itu, aku akan kembali ke baris atas
dan dimasukkan ke dalam celah, yang adalah, per spec, dua ruang.
Lalu aku akan mengisi sisi lain dari piramida.
Aku akan pergi ke baris kedua, menulis dua ruang untuk kesenjangan dan kemudian dua
hash.
Kembali ke baris ketiga, dua ruang untuk gap dan tiga hash.
Dan pada akhirnya, dua ruang untuk kesenjangan dan empat hash.
Jadi itulah yang penuh piramida akan terlihat seperti.
>> Tentu saja, kita tidak ingin titik-titik ini di jalan.
Jadi kita akan mengganti ini titik dengan menempatkan beberapa ruang di.
Satu, dua, tiga di baris pertama.
Satu, dua di kedua.
Dan satu di baris ketiga.
Jadi ini adalah apa yang akan kita lakukan jika kita ingin hanya membuat piramida penuh,
mengatakan, dalam editor teks kita.
>> Jadi mari kita ini, memahami pola,
dan mengubahnya ke beberapa pseudocode.
Untuk setiap baris piramida, kami ingin untuk mencetak piramida kiri dan kemudian
kesenjangan dan kemudian piramida yang tepat.
Untuk piramida kiri, kita mencetak jumlah yang diperlukan ruang,
diikuti oleh hash.
Kemudian kami mencetak gap, yang hanya dua ruang setiap kali.
Dan di piramida yang tepat, kami mencetak jumlah yang diperlukan hash.
>> Untuk baris kedua, kami melakukan proses yang tepat sama.
Kami mencetak ruang untuk sebelah kiri piramida, jumlah yang diperlukan
hash, kesenjangan, dua ruang, dan maka hash untuk piramida yang tepat.
>> Mari kita mengatasi pola untuk piramida kiri.
Jika aku punya, untuk tujuan dari contoh ini, ketinggian
delapan diminta oleh pengguna, maka baris pertama saya
akan memiliki satu hash dan tujuh ruang.
baris kedua saya akan dua hash, enam ruang.
Baris ketiga, tiga hash, lima spasi.
Anda mungkin dapat melakukan hal ini diri untuk ketinggian delapan
dan menentukan untuk setiap baris berapa banyak hash dan berapa banyak ruang yang Anda butuhkan.
Tapi apa yang kita ingin lakukan adalah kami ingin abstrak itu.
Jadi saya meminta Anda untuk setiap baris n, berapa banyak hash dan berapa banyak ruang yang kita butuhkan?
>> Sekarang, karena Anda menentukan pola untuk berapa banyak hash
dan berapa banyak ruang yang Anda butuhkan untuk setiap baris n untuk ketinggian tertentu,
ingat untuk berhati-hati bagaimana Anda mengindeks.
Apa yang saya maksudkan dengan ini adalah bahwa dalam sehari-hari kehidupan sebagian besar dari kita mulai menghitung per satu.
Jadi baris pertama akan menjadi nomor satu.
Dan baris kedua akan berturut-turut nomor dua, seterusnya dan sebagainya.
>> Tapi dalam ilmu komputer dan CS50, kita nol-diindeks.
Jadi kita benar-benar mulai menghitung dari nol.
Jadi baris pertama akan menjadi baris angka nol.
Dan baris kedua akan menjadi baris nomor satu.
Jadi jika saya memiliki ketinggian delapan untuk piramida saya, maka nilai terakhir dari n
akan benar-benar menjadi tujuh dan tidak delapan.
>> Jadi hati-hati tentang hal ini.
Dan menyadari ketika Anda menentukan pola Anda apakah Anda nol-diindeks
atau satu-diindeks
>> BAIK.
Jadi sekarang kita memiliki pola untuk piramida kiri,
kita perlu menentukan pola untuk kesenjangan.
Untungnya, ini benar-benar mudah.
Ini hanya selalu dua ruang.
>> Jadi sekarang kita lanjutkan ke pola yang tepat.
Baris pertama akan memiliki satu hash.
Kedua berturut-turut, dua.
Baris ketiga, tiga.
Seterusnya dan sebagainya.
Jadi sekali lagi, menentukan untuk setiap abstrak n dan tinggi setiap berapa banyak hash
dan berapa banyak ruang setiap baris harus memiliki.
>> BAIK.
Jadi kita tahu bahwa untuk setiap kita baris perlu melakukan beberapa proses.
Bagaimana kita melakukannya?
Nah, kita menggunakan untuk loop membangun, terdiri dari sebuah inisialisasi,
kondisi, dan update.
Untuk loop dapat digunakan mengulangi proses.
>> Jadi mengatakan saya ingin menyapa, dunia 50 kali, kemudian saya untuk loop
akan terlihat seperti ini, di mana Aku menginisialisasi variabel saya ke nol.
Kondisi ini yang saya kurang dari 50.
Dan kemudian update adalah bahwa hal itu bertahap per satu setiap kali.
Jadi apa ini akan dilakukan akan mencetak halo, dunia 50 kali berturut-turut.
>> Sekarang, mengatakan saya ingin iterate lebih tinggi dari piramida.
Maka bukan coding keras beberapa nilai dalam kondisi tersebut,
Saya hanya menggunakan variabel tinggi.
Jadi apa ini akan lakukan adalah iterate lebih tinggi setiap baris.
Dan aku bisa melakukan sesuatu di dalam tubuh loop itu.
>> Apa yang kita ingin lakukan dalam tubuh loop?
Yah, seperti yang kita ditunjukkan sebelumnya, kami ingin untuk mencetak ruang dan hash
untuk piramida kiri dan kemudian cetak dua ruang dan kemudian mencetak hash.
Jadi kita sudah tahu itu.
Jadi kita bisa mulai untuk mengisi dalam program kami lebih banyak.
>> Di sini saya memiliki luar untuk loop yang iterates atas setiap baris dalam piramida.
Dan di dalam tubuh yang akan saya untuk mencetak spasi berulang kali,
hash berulang kali, dan kemudian kesenjangan, dan kemudian membagi untuk piramida yang tepat,
dan kemudian, akhirnya, baru line untuk memulai baris berikutnya.
>> Dengan itu, kami diminta pengguna untuk input.
Kami sudah memastikan bahwa itu valid.
Dan kemudian kami telah ditarik piramida.
Jadi Mario berhasil bisa memanjat piramida.
>> Nama saya Zamyla.
Dan ini CS50.