ZAMYLA CHAN: Ia adalah satu-me, Zamyla.
Hari ini, kita akan melaksanakan Mario, di mana kita menarik Mario
piramid penuh untuk dia melompat ke atas.
Mari kita memecahkan sub-tugas untuk masalah ini.
>> Pertama, kita mahu segera pengguna untuk ketinggian piramid.
Dan kemudian kita ingin memastikan bahawa input yang sah.
Dan kemudian kita akan ingin menarik piramid.
>> Jadi mari kita bercakap tentang mendorong dan mengesahkan input pengguna.
Ia mungkin kelihatan seperti ini, gelung do-manakala
meminta pengguna untuk integer dan kemudian hanya ulangan
jika integer yang tidak sah.
Jadi apa yang perlu keadaan ini menjadi?
>> Untuk ini, mari kita kembali spesifikasi.
Well, spec yang memberitahu kita bahawa apa-apa yang sah ketinggian akan menjadi antara 0 dan 23,
inklusif.
Jadi maka itu bermakna bahawa apa-apa yang tidak sah ketinggian akan menjadi kurang daripada 0
atau lebih daripada 23.
>> Jadi sekarang kita mempunyai maklumat ini, mari kita mereka bentuk keadaan kita.
Tetapi kita perlu berhati-hati, kerana sekarang kita mempunyai
dua Booleans yang kita mahu menilai.
>> Di sini saya telah menyediakan anda dengan jadual kebenaran.
Ini membolehkan kami untuk mengambil dua Booleans, Boolean satu dan dua.
Dan kita boleh menilai sama ada bool1 dan bool2 atau bool1 atau bool2.
>> Jadi apa bezanya antara dan dan atau?
Well, bool1 dan bool2 akan menilai kepada benar jika dan hanya
jika kedua-dua Booleans adalah benar, sedangkan atau operasi
akan menjadi kenyataan jika salah seorang daripada yang Booleans atau kedua-duanya adalah benar.
Jadi dengan ini dalam fikiran, melihat jika anda boleh memikirkan
apa keadaan yang sesuai untuk anda gelung do-manakala bagi yang n tidak sah
akan menjadi.
>> Dengan itu, kami telah mendorong dan disahkan pengguna untuk ketinggian piramid
yang mereka mahu.
Oleh sebab itu, ia terpulang kepada kami untuk menarik piramid.
Piramid penuh untuk ini masalah akan kelihatan sedikit
seperti ini, di mana kita mempunyai piramid kiri, beberapa jurang, dan kemudian sebuah piramid tegak.
Jadi mari kita memecahkan ini turun sedikit.
>> Tetapi apabila aku mendapatkan editor teks saya, di sini saya telah dilukis kami piramid kiri sejajar.
Tetapi itu tidak akan lakukan.
Apa yang kita mahu lakukan ialah kita mahu mencipta sebuah piramid kanan sejajar pertama.
Jadi untuk melakukan ini, hanya menolak Hash saya bersama-sama ke tepi,
Saya hanya akan meletakkan beberapa watak di antara, hanya titik ini.
Kemudian saya akan meletakkan dua di garis depan, dan satu di talian itu.
Dan jadi di sini saya mempunyai piramid kanan sejajar.
>> Selepas itu, saya akan kembali ke baris atas
dan dimasukkan ke dalam jurang, yang adalah, setiap spec, dua ruang.
Kemudian saya akan mengisi Sisi lain piramid.
Saya akan pergi ke barisan kedua, menulis dua ruang untuk jurang dan kemudian dua
hash.
Kembali ke barisan ketiga, dua ruang untuk jurang dan tiga Hash.
Dan pada akhirnya, dua ruang untuk jurang dan empat Hash.
Jadi itulah yang penuh piramid akan kelihatan seperti.
>> Sudah tentu, kita tidak mahu titik ini dalam perjalanan.
Jadi, kita akan untuk menggantikan ini titik dengan meletakkan beberapa ruang dalam.
Satu, dua, tiga di baris pertama.
Satu, dua pada kedua.
Dan satu di baris ketiga.
Jadi ini adalah apa yang kita akan lakukan jika kita mahu hanya membuat piramid penuh,
berkata, dalam editor teks kami.
>> Jadi mari kita ini, memahami corak,
dan menukarkannya kepada beberapa kod pseudo.
Untuk setiap baris piramid, kita mahu untuk mencetak piramid kiri dan kemudian
jurang dan kemudian piramid yang betul.
Untuk piramid kiri, kita cetak amaun yang diperlukan ruang,
diikuti dengan cincangan.
Kemudian kami mencetak jurang, yang hanya dua ruang setiap kali.
Dan dalam piramid yang betul, kita cetak jumlah yang diperlukan daripada cincangan.
>> Untuk barisan kedua, kami telah menjalankan proses yang tepat sama.
Kami mencetak ruang untuk kiri piramid, amaun yang diperlukan
daripada Hash, jurang, dua ruang, dan maka Hash untuk piramid yang betul.
>> Mari kita menangani corak untuk piramid kiri.
Jika saya mempunyai, bagi maksud contoh ini, ketinggian
lapan diminta oleh pengguna, kemudian berturut-turut pertama saya
akan mempunyai satu hash dan tujuh ruang.
berturut-turut kedua saya akan mempunyai dua Hash, enam ruang.
baris ketiga, tiga Hash, lima ruang.
Anda mungkin boleh melakukan ini diri untuk ketinggian lapan
dan menentukan untuk setiap baris berapa banyak Hash dan berapa banyak ruang yang anda perlukan.
Tetapi apa yang kita mahu lakukan adalah kita mahu abstrak ia.
Jadi saya meminta anda untuk mana-mana baris ke-n, berapa banyak Hash dan berapa banyak ruang yang kita perlukan?
>> Sekarang, kerana anda menentukan corak untuk berapa banyak Hash
dan berapa banyak ruang yang anda perlukan untuk mana-mana baris ke-n untuk ketinggian yang diberikan,
ingat untuk berhati-hati bagaimana anda mengindeks.
Apa yang saya maksudkan dengan ini adalah bahawa dalam sehari-hari kehidupan kebanyakan daripada kita mula mengira demi satu.
Jadi baris pertama akan menjadi nombor satu.
Jajar yang kedua akan berturut-turut nombor dua, sebagainya dan sebagainya.
>> Tetapi dalam bidang sains komputer dan CS50, kami sifar diindeks.
Oleh itu, kita sebenarnya mula mengira pada sifar.
Jadi baris pertama akan menjadi nombor baris sifar.
Jajar yang kedua akan menjadi nombor baris satu.
Jadi, jika saya mempunyai ketinggian lapan bagi piramid saya, maka nilai terakhir n
sebenarnya akan menjadi tujuh dan tidak lapan.
>> Jadi berhati-hati tentang perkara ini.
Dan sedar apabila anda menentukan corak anda sama ada anda sifar diindeks
atau satu diindeks
>> OKEY.
Jadi sekarang kita mempunyai corak untuk piramid kiri,
kita perlu menentukan corak untuk jurang.
Nasib baik, ini adalah benar-benar mudah.
Ia hanya sentiasa dua ruang.
>> Jadi sekarang kita teruskan dengan corak yang betul.
Baris pertama akan mempunyai satu hash.
Barisan kedua, dua.
baris ketiga, tiga.
Sebagainya dan sebagainya.
Jadi sekali lagi, menentukan apa-apa abstrak n dan mana-mana ketinggian berapa Hash
dan ruang berapa banyak setiap baris sepatutnya.
>> OKEY.
Oleh itu, kita tahu bahawa bagi setiap kita berturut-turut perlu menjalankan beberapa proses.
Bagaimana kita berbuat demikian?
Well, kita menggunakan untuk gelung membina, terdiri daripada pengawalan yang,
syarat, dan kemas kini.
Untuk gelung boleh digunakan untuk mengulangi proses.
>> Jadi mengatakan saya mahu ia bertanya khabar, dunia 50 kali, maka saya untuk gelung
akan kelihatan seperti ini, di mana Saya memulakan pembolehubah saya kepada sifar.
Keadaan ini adalah bahawa saya adalah kurang daripada 50.
Dan kemudian maklumat ini ialah ia kenaikan demi satu setiap kali.
Jadi apa ini akan dilakukan adalah untuk mencetak hello, dunia 50 kali berturut-turut.
>> Sekarang, katakan saya mahu melelar lebih ketinggian piramid.
Ketika itu dan bukannya pengekodan keras beberapa nilai dalam keadaan,
Saya hanya menggunakan ketinggian berubah-ubah.
Jadi apa yang akan dilakukan adalah Itekadar mengatasi ketinggian setiap baris.
Dan saya boleh melakukan sesuatu di dalam daripada badan gelung itu.
>> Apa yang kita mahu lakukan di dalam badan gelung?
Well, seperti yang kita dinyatakan sebelum ini, kami mahu untuk mencetak ruang dan cincangan
untuk piramid kiri dan kemudian cetak dua ruang dan kemudian mencetak Hash.
Oleh itu, kita telah membuat kesimpulan bahawa keluar.
Oleh itu, kita boleh mula untuk mengisi dalam program kami banyak lagi.
>> Di sini saya mempunyai luar bagi gelung yang iterates atas setiap baris dalam piramid.
Dan di dalam badan yang saya akan untuk mencetak ruang berulang kali,
hash berulang kali, dan kemudian jurang, dan kemudian hash untuk piramid yang betul,
dan kemudian, akhirnya, baru line untuk memulakan baris seterusnya.
>> Dengan itu, kami telah mendorong pengguna untuk input.
Kami telah memastikan bahawa ia adalah sah.
Dan kemudian kita telah disediakan piramid.
Jadi Mario berjaya boleh mendaki piramid.
>> Nama saya Zamyla.
Dan ini adalah CS50.