1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Ia adalah saya, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Hari ini di Mario, kita akan menjadi lukisan separuh piramid untuk Mario 4 00:00:06,910 --> 00:00:08,290 untuk naik. 5 00:00:08,290 --> 00:00:11,570 >> Jadi mari kita bercakap tentang kami tugasan untuk masalah ini. 6 00:00:11,570 --> 00:00:13,610 Kami akan mahu untuk meminta dan mengesahkan 7 00:00:13,610 --> 00:00:18,290 pengguna untuk input yang sah bagaimana tinggi mereka mahu piramid Mario untuk menjadi. 8 00:00:18,290 --> 00:00:20,090 Dan kemudian, kita akan menarik ia. 9 00:00:20,090 --> 00:00:24,870 Jadi mari kita mulakan dengan mendorong dan mengesahkan pengguna untuk input mereka. 10 00:00:24,870 --> 00:00:27,640 >> Kita boleh gunakan Perpustakaan CS50 Fungsi 11 00:00:27,640 --> 00:00:31,160 mendapatkan int yang akan memastikan pengguna input integer. 12 00:00:31,160 --> 00:00:35,730 Setiap bilangan bulat positif, negatif integer, nombor 0 adalah semua permainan yang adil. 13 00:00:35,730 --> 00:00:41,670 Jika tidak, pengguna akan diminta untuk cuba semula sehingga mereka input integer yang sah. 14 00:00:41,670 --> 00:00:44,210 Sekarang walaupun mendapatkan int tidak banyak kerja-kerja untuk kita 15 00:00:44,210 --> 00:00:46,730 dalam memastikan bahawa pengguna memberikan kita integer, 16 00:00:46,730 --> 00:00:50,760 kita masih perlu memohon beberapa kekangan tambahan kepada itu. 17 00:00:50,760 --> 00:00:56,420 Lagipun, kita tidak boleh mempunyai Mario mendaki setengah piramid ketinggian 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 bahawa kita hanya boleh membolehkan Mario memanjat 20 00:01:02,490 --> 00:01:06,940 piramid ketinggian antara 0 dan 23. 21 00:01:06,940 --> 00:01:11,120 OK, jadi ini bermakna bahawa kita perlu untuk terus meminta pengguna 22 00:01:11,120 --> 00:01:14,320 untuk memberi kita yang sah nombor dan hanya terus 23 00:01:14,320 --> 00:01:17,120 apabila mereka telah memberikan kita ketinggian yang sah. 24 00:01:17,120 --> 00:01:18,720 Bagaimana kita berbuat demikian? 25 00:01:18,720 --> 00:01:23,760 >> Well, proses yang berterusan memberikan kita idea loops-- sesuatu melakukan 26 00:01:23,760 --> 00:01:24,720 secara berulang-ulang. 27 00:01:24,720 --> 00:01:28,220 Satu gelung dalam C sebagai seketika gelung yang akan berterusan 28 00:01:28,220 --> 00:01:33,480 melaksanakan badan gelung selagi syarat yang diberikan menilai kepada benar. 29 00:01:33,480 --> 00:01:36,200 Sebaik sahaja syarat menilai kepada palsu, 30 00:01:36,200 --> 00:01:39,770 program ini akan meneruskan apa sahaja yang datang selepas itu. 31 00:01:39,770 --> 00:01:43,180 Oleh itu, sambil gelung adalah salah satu cara untuk memastikan kami terus 32 00:01:43,180 --> 00:01:45,320 mendorong pengguna untuk input yang sah. 33 00:01:45,320 --> 00:01:50,070 Dan apabila mereka memberi kita input yang sah, kami akan meneruskan apa sahaja yang datang akan datang. 34 00:01:50,070 --> 00:01:54,380 Kita tahu bahawa kita akan meminta pengguna untuk input sekurang-kurangnya sekali. 35 00:01:54,380 --> 00:01:59,200 Jadi sekarang kita datang kepada saudara perempuan yang manakala gelung, yang do manakala gelung. 36 00:01:59,200 --> 00:02:02,650 >> Adakah manakala gelung akan melaksanakan badan gelung sekurang-kurangnya sekali. 37 00:02:02,650 --> 00:02:06,150 Jadi tanpa memeriksa keadaan, ia akan melaksanakan badan gelung. 38 00:02:06,150 --> 00:02:09,750 Dan kemudian memeriksa keadaan untuk melihat sama ada ia perlu berulang. 39 00:02:09,750 --> 00:02:13,080 Ini amat berguna apabila kami mengesahkan input pengguna. 40 00:02:13,080 --> 00:02:15,830 Kita tahu bahawa kita akan untuk bertanya kepada mereka sekurang-kurangnya sekali. 41 00:02:15,830 --> 00:02:18,780 Jadi lakukan semasa gelung mungkin melihat sesuatu seperti ini. 42 00:02:18,780 --> 00:02:20,090 Kami mempunyai integer n. 43 00:02:20,090 --> 00:02:22,760 Dan di dalam tugasan manakala gelung, kita segera 44 00:02:22,760 --> 00:02:24,750 mendorong pengguna untuk integer. 45 00:02:24,750 --> 00:02:29,740 Jika n adalah tidak sah, maka kita akan meminta mereka lagi dan lagi dan lagi sehingga mereka 46 00:02:29,740 --> 00:02:31,820 Berikanlah kepada kami pahala integer sah. 47 00:02:31,820 --> 00:02:37,440 Akhir kata, sekali n adalah input yang sah, kami akan meneruskan ke seluruh program kami. 48 00:02:37,440 --> 00:02:41,830 >> Jadi mari kita kembali ke spec dan daftar apa syarat-syarat untuk input yang sah 49 00:02:41,830 --> 00:02:43,670 akan menjadi. 50 00:02:43,670 --> 00:02:48,090 Ketinggian sah akan antara 0 dan 23, keseluruhan. 51 00:02:48,090 --> 00:02:53,350 ketinggian Jadi tidak sah akan tidak kurang daripada 0 atau lebih daripada 23. 52 00:02:53,350 --> 00:02:56,420 Jadi ingat untuk mereka bentuk keadaan anda dengan teliti, 53 00:02:56,420 --> 00:02:58,660 mengetahui bahawa keadaan untuk do gelung while 54 00:02:58,660 --> 00:03:01,470 harus manakala n adalah tidak sah. 55 00:03:01,470 --> 00:03:05,080 Sekarang ini tidak akan menjadi mudah ungkapan Boolean tunggal. 56 00:03:05,080 --> 00:03:07,630 Kami akan perlu untuk menggabungkan dua ungkapan yang berbeza 57 00:03:07,630 --> 00:03:09,900 untuk membuat seluruh keadaan kita. 58 00:03:09,900 --> 00:03:13,290 >> Jadi mari kita hanya melihat jadual kebenaran saya telah sudah memberikan kamu tanda-tanda bahawa 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 di sini adalah jadual kebenaran di mana saya mempunyai dua Booleans-- Boolean 1 dan 2. 61 00:03:19,620 --> 00:03:27,050 Oleh itu, kita mempunyai pilihan untuk menilai bool1 dan bool2 atau bool1 atau bool2. 62 00:03:27,050 --> 00:03:31,980 Dan hanya akan menjadi kenyataan jika kedua-dua Booleans menilai kepada yang sebenar, sedangkan semua 63 00:03:31,980 --> 00:03:37,280 atau akan menjadi kenyataan selagi salah satu daripada dua Booleans menilai kepada benar. 64 00:03:37,280 --> 00:03:41,450 OK, jadi mengambil masa, jeda ini video dan mencerna jadual kebenaran ini. 65 00:03:41,450 --> 00:03:42,930 Saya akan berada di sini menunggu. 66 00:03:42,930 --> 00:03:45,760 Apabila anda kembali, lihat jika anda boleh simpulkan 67 00:03:45,760 --> 00:03:51,910 ungkapan Boolean untuk anda keadaan n menjadi input tidak sah. 68 00:03:51,910 --> 00:03:54,420 >> Jadi sekarang kita mempunyai input pengguna sah, mari kita 69 00:03:54,420 --> 00:03:58,710 pergi ke depan dan bercakap tentang bagaimana kita mungkin menarik setengah piramid. 70 00:03:58,710 --> 00:04:03,410 Di sini dalam editor teks ini mudah, Saya telah disediakan piramid kiri sejajar. 71 00:04:03,410 --> 00:04:07,050 Tetapi kita tahu bahawa kita perlu kami piramid untuk kanan sejajar. 72 00:04:07,050 --> 00:04:08,650 Jadi bagaimana saya boleh melakukan ini? 73 00:04:08,650 --> 00:04:11,440 Well, saya mungkin cuba untuk menolak segala-galanya untuk sebelah 74 00:04:11,440 --> 00:04:14,880 dengan hanya meletakkan sedikit aksara di antaranya. 75 00:04:14,880 --> 00:04:16,779 Dan kemudian, untuk seterusnya line, saya akan meletakkan 76 00:04:16,779 --> 00:04:20,970 beberapa watak lebih untuk menolak bersama-sama, dan further-- sebagainya dan sebagainya forth-- 77 00:04:20,970 --> 00:04:23,360 sehingga saya mempunyai piramid kanan sejajar itu. 78 00:04:23,360 --> 00:04:27,780 Jadi kita mempunyai piramid align betul, tetapi ia tidak kelihatan begitu hebat dengan titik-titik. 79 00:04:27,780 --> 00:04:30,680 Tetapi kita masih mahu mengekalkan jarak bagus. 80 00:04:30,680 --> 00:04:35,260 Jadi saya akan literal memasukkan beberapa ruang. 81 00:04:35,260 --> 00:04:39,420 >> Daripada tiga titik, saya akan meletakkan 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 Saya akan meletakkan satu, dua ruang. 84 00:04:42,640 --> 00:04:45,370 Dan pada kedua terakhir talian, hanya satu ruang. 85 00:04:45,370 --> 00:04:48,290 Dan di sini saya mempunyai piramid tegak sejajar. 86 00:04:48,290 --> 00:04:52,170 Daripada melakukan contoh di dalam teks editor, kita mempunyai idea untuk corak 87 00:04:52,170 --> 00:04:54,590 yang kami akan gunakan untuk menarik setengah piramid. 88 00:04:54,590 --> 00:04:58,080 Bagi setiap baris, apa yang kita lakukan adalah kita menaip beberapa ruang, 89 00:04:58,080 --> 00:05:00,170 dan kemudian ditaip beberapa hash, dan kemudian ditaip 90 00:05:00,170 --> 00:05:03,020 utama Masukkan, yang mewujudkan barisan baru. 91 00:05:03,020 --> 00:05:07,770 Jadi sekarang yang kita ada itu, mari kita pergi satu langkah ke hadapan dan mencari corak. 92 00:05:07,770 --> 00:05:10,170 >> Jadi, saya akan berkata, bagi kepentingan contoh ini, 93 00:05:10,170 --> 00:05:12,480 kita berurusan dengan ketinggian 8. 94 00:05:12,480 --> 00:05:17,100 Baris pertama akan mempunyai dua Hash yang berikut 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-- sebagainya dan sebagainya 97 00:05:24,260 --> 00:05:26,350 sehingga kita sampai ke baris ke-n. 98 00:05:26,350 --> 00:05:31,540 Sebab itu, saya meminta anda untuk baris NTH, berapa ramai Hash kita akan mempunyai 99 00:05:31,540 --> 00:05:33,120 dan berapa banyak ruang? 100 00:05:33,120 --> 00:05:37,000 Supaya ia terpulang kepada anda untuk memikirkan formula untuk mewakili berapa banyak Hash 101 00:05:37,000 --> 00:05:42,020 dan berapa banyak ruang yang diperlukan untuk baris ke-n apabila anda mempunyai beberapa ketinggian. 102 00:05:42,020 --> 00:05:46,060 >> Sekarang apabila anda memikirkan ini keluar, berhati-hati bagaimana anda mengindeks. 103 00:05:46,060 --> 00:05:49,170 Apa yang saya maksudkan dengan ini adalah bahawa dalam kehidupan sehari-hari kita semua 104 00:05:49,170 --> 00:05:51,540 mula mengira, biasanya dengan 1. 105 00:05:51,540 --> 00:05:55,950 Tetapi dalam CS50 dan dalam bidang sains komputer secara umum, kami 0 diindeks. 106 00:05:55,950 --> 00:06:00,620 Jadi baris pertama akan n 0 berbanding dengan 1. 107 00:06:00,620 --> 00:06:04,550 Berhati-hati ini apabila anda berada cuba untuk memikirkan corak anda. 108 00:06:04,550 --> 00:06:07,570 Jadi sekarang mari kita kembali kepada bagaimana kita akan menarik piramid kami. 109 00:06:07,570 --> 00:06:12,300 Bagi setiap baris, kita akan mahu mencetak ruang, 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 tanda-tanda di sini adalah perkataan "untuk" setiap baris. 112 00:06:19,160 --> 00:06:21,470 Dalam C, kita perlu membina satu dipanggil untuk gelung, 113 00:06:21,470 --> 00:06:25,250 yang terdiri daripada satu pengawalan, keadaan, kemas kini, 114 00:06:25,250 --> 00:06:26,790 dan badan gelung. 115 00:06:26,790 --> 00:06:31,360 >> Mengatakan saya mahu berkata, hello dunia, 50 kali, saya untuk gelung 116 00:06:31,360 --> 00:06:32,880 akan kelihatan seperti ini. 117 00:06:32,880 --> 00:06:35,480 Saya memulakan integer saya kepada 0. 118 00:06:35,480 --> 00:06:38,230 Keadaan ini adalah bahawa saya adalah kurang daripada 50. 119 00:06:38,230 --> 00:06:42,350 Dan kemudian maklumat Ku adil menokok saya demi satu setiap kali. 120 00:06:42,350 --> 00:06:45,140 Kita juga boleh menggunakan untuk gelung untuk melelar lebih perkara. 121 00:06:45,140 --> 00:06:47,820 Perhatikan di sini bagaimana kita tidak mempunyai keras berkod nombor, 122 00:06:47,820 --> 00:06:51,820 tetapi diletakkan pembolehubah ketinggian dan bukannya ke dalam keadaan. 123 00:06:51,820 --> 00:06:56,420 Jadi apa yang saya lakukan di sini saya iterating atas setiap deretan piramid. 124 00:06:56,420 --> 00:07:00,160 Saya boleh melakukan sesuatu untuk setiap baris dalam badan gelung saya. 125 00:07:00,160 --> 00:07:02,350 >> Apa yang kita lakukan di dalam badan gelung? 126 00:07:02,350 --> 00:07:07,120 Well, seperti yang kita telah berkata, kita 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 gelung akan kelihatan seperti ini. 129 00:07:11,950 --> 00:07:15,070 Saya melelar lebih setiap baris piramid, menggunakan, 130 00:07:15,070 --> 00:07:18,890 dalam kes ini, ketinggian sebagai pembolehubah yang menyimpan ketinggian piramid. 131 00:07:18,890 --> 00:07:22,870 Di dalam badan gelung itu, saya akan mencetak ruang berulang kali, cetak 132 00:07:22,870 --> 00:07:26,730 yang Hash berulang kali, dan kemudian mencetak baris baru. 133 00:07:26,730 --> 00:07:31,010 >> Jadi sekarang, dengan menggunakan semua konsep-konsep yang Saya telah berbincang kira-kira dalam berjalan-melalui ini, 134 00:07:31,010 --> 00:07:35,210 anda akan dapat mendorong pengguna untuk input, mengesahkan input itu, 135 00:07:35,210 --> 00:07:37,370 dan kemudian menarik setengah piramid. 136 00:07:37,370 --> 00:07:41,510 >> Nama saya Zamyla, dan ini adalah CS50. 137 00:07:41,510 --> 00:07:43,167