1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 SPEAKER 1: Mari kita bercakap tentang air. 3 00:00:01,960 --> 00:00:07,280 Dalam masalah ini, kita meminta pengguna untuk memberitahu kita berapa lama dalam beberapa minit pancuran mereka adalah 4 00:00:07,280 --> 00:00:11,040 dan kemudian kita mengira bersamaan beberapa botol air 5 00:00:11,040 --> 00:00:12,970 bahawa pancuran mereka digunakan. 6 00:00:12,970 --> 00:00:16,379 >> Jadi apakah kami tugasan ini bagi masalah ini? 7 00:00:16,379 --> 00:00:20,050 Pertama, kita akan mahu untuk meminta dan kemudian mengesahkan 8 00:00:20,050 --> 00:00:22,100 input yang pengguna memberikan kita. 9 00:00:22,100 --> 00:00:24,790 Apabila kita memastikan kita bahawa mempunyai input pengguna sah, 10 00:00:24,790 --> 00:00:28,230 kita akan mengira jumlah bersamaan dengan botol air 11 00:00:28,230 --> 00:00:30,770 bahawa pengguna mempunyai semasa pancuran mereka, dan kemudian kita 12 00:00:30,770 --> 00:00:33,720 akan memberitahu mereka dengan mencetak nombor itu. 13 00:00:33,720 --> 00:00:37,230 >> Jadi mari kita menangani pertama kami tugas, mendorong dan mengesahkan 14 00:00:37,230 --> 00:00:38,550 input pengguna. 15 00:00:38,550 --> 00:00:40,910 Untuk ini kita telah menulis satu fungsi untuk anda dipanggil 16 00:00:40,910 --> 00:00:43,950 get_int terletak di Perpustakaan CS50. 17 00:00:43,950 --> 00:00:48,710 get_int memastikan bahawa input pengguna integer, jadi mana-mana nombor positif, 18 00:00:48,710 --> 00:00:51,700 nombor negatif, atau sifar semua diterima. 19 00:00:51,700 --> 00:00:55,900 Tetapi jika pengguna input apa-apa lagi, jadi apa-apa gabungan huruf atau nombor 20 00:00:55,900 --> 00:00:59,710 atau nombor perpuluhan, maka pengguna akan diminta untuk mencuba semula 21 00:00:59,710 --> 00:01:04,319 dan fungsi yang tidak akan menerima apa-apa sehingga pengguna memberikan mereka integer. 22 00:01:04,319 --> 00:01:06,410 >> Jadi bagaimana kita menggunakan get_int? 23 00:01:06,410 --> 00:01:10,830 Jika anda membuka ruang kerja anda dan mencipta satu fail bernama integer.c mari 24 00:01:10,830 --> 00:01:12,110 taip yang berikut. 25 00:01:12,110 --> 00:01:14,760 Hashtag termasuk cs50.h. 26 00:01:14,760 --> 00:01:18,480 Ini adalah perlu kerana get_int adalah fungsi perpustakaan cs50, 27 00:01:18,480 --> 00:01:21,890 jadi kita mesti hashtag termasuk pengisytiharan dalam usaha 28 00:01:21,890 --> 00:01:23,370 untuk menggunakan fungsi ini. 29 00:01:23,370 --> 00:01:26,570 Dan kemudian dalam utama saya berfungsi Saya hanya akan 30 00:01:26,570 --> 00:01:29,560 untuk hanya memanggil get_int fungsi. 31 00:01:29,560 --> 00:01:31,750 >> Jadi mari kita menjalankan ini dan melihat bagaimana ia berfungsi. 32 00:01:31,750 --> 00:01:35,092 Saya telah disusun, jadi mari kita hanya pergi ke hadapan dan menjalankan program ini, 33 00:01:35,092 --> 00:01:36,480 ./integer. 34 00:01:36,480 --> 00:01:39,880 Di sini saya mempunyai segera dan di sini di mana saya input nilai. 35 00:01:39,880 --> 00:01:44,880 Katakanlah saya dimasukkan ke dalam hanya beberapa integer, 50, Petikan program dan letak jawatan 36 00:01:44,880 --> 00:01:45,960 dan itulah yang. 37 00:01:45,960 --> 00:01:49,350 >> Tetapi katakan saya berjalan lagi dan Saya input sesuatu yang lain. 38 00:01:49,350 --> 00:01:51,350 Mungkin, hello dunia. 39 00:01:51,350 --> 00:01:55,660 Itu bukan satu integer jadi program akan meminta saya untuk mencuba semula. 40 00:01:55,660 --> 00:01:59,160 Mari kita cuba lagi dengan mungkin perpuluhan masa ini. 41 00:01:59,160 --> 00:02:03,450 0.5, sekali lagi, bukan integer supaya program ini tidak akan menerimanya 42 00:02:03,450 --> 00:02:05,290 dan ia akan memberitahu saya untuk mencuba semula. 43 00:02:05,290 --> 00:02:07,070 Jadi mari kita memberikan nombor lain. 44 00:02:07,070 --> 00:02:09,830 Program ini menerimanya, letak jawatan, dan kami sudah selesai. 45 00:02:09,830 --> 00:02:13,520 >> Jadi sekarang kita mempunyai fungsi yang membolehkan kita dan memastikan 46 00:02:13,520 --> 00:02:16,790 bahawa pengguna input yang integer, tetapi bagaimana boleh kita 47 00:02:16,790 --> 00:02:20,330 sebenarnya menjejaki integer diinput oleh pengguna? 48 00:02:20,330 --> 00:02:25,260 Well, semua yang kita akan lakukan adalah kedai nilai ini dalam pembolehubah, mengatakan n. 49 00:02:25,260 --> 00:02:30,580 Jadi jika saya mengisytiharkan integer n, dan saya menetapkan nilai yang ke get_int, 50 00:02:30,580 --> 00:02:34,700 kemudian n kemudian akan menyimpan apa sahaja berhargai pengguna yang dimasukkan. 51 00:02:34,700 --> 00:02:38,620 >> Baiklah, jadi sekarang kita telah memastikan bahawa pengguna akan memberi kita integer 52 00:02:38,620 --> 00:02:42,550 dan kita tahu bagaimana untuk mengesan integer, tetapi ingat, 53 00:02:42,550 --> 00:02:45,610 integer positif dan negatif. 54 00:02:45,610 --> 00:02:49,110 Oleh itu, ia tidak benar-benar masuk akal dalam konteks masalah ini 55 00:02:49,110 --> 00:02:53,570 bahawa pengguna mengambil mandi daripada kata negatif 12 minit. 56 00:02:53,570 --> 00:02:59,310 Oleh itu, kita perlu memastikan bahawa pengguna sebenarnya memberikan kita integer positif. 57 00:02:59,310 --> 00:03:02,130 Sekarang kita tidak mempunyai hanya fungsi tunggal untuk itu, 58 00:03:02,130 --> 00:03:04,620 jadi kita akan mempunyai untuk mewujudkan diri kita sendiri. 59 00:03:04,620 --> 00:03:07,190 >> Oleh itu, kita mahu untuk terus segera pengguna 60 00:03:07,190 --> 00:03:09,730 sehingga mereka memberi kita integer positif. 61 00:03:09,730 --> 00:03:14,300 Jika saya melakukan sesuatu secara berterusan maka itulah serupa dengan gelung, pengulangan. 62 00:03:14,300 --> 00:03:19,130 Jadi salah satu konstruk yang kita gunakan dalam c untuk melaksanakan pengulangan dan gelung 63 00:03:19,130 --> 00:03:20,410 adalah gelung sementara. 64 00:03:20,410 --> 00:03:23,020 Jadi gelung sementara, kerana ditunjukkan di sini, akan melaksanakan 65 00:03:23,020 --> 00:03:27,030 apa yang ada di badan gelung sebagai selagi itu menilai syarat yang diberikan 66 00:03:27,030 --> 00:03:27,900 kepada benar. 67 00:03:27,900 --> 00:03:30,640 Sebaik sahaja syarat menilai kepada palsu, maka 68 00:03:30,640 --> 00:03:34,830 program ini akan diteruskan untuk apa sahaja datang selepas mayat gelung. 69 00:03:34,830 --> 00:03:39,400 >> Oleh itu, sambil gelung akan benar-benar berguna dalam CS50. 70 00:03:39,400 --> 00:03:42,590 Tetapi dalam khusus ini kes, kita tahu bahawa kita berada 71 00:03:42,590 --> 00:03:48,140 akan segera pengguna sekurang-kurangnya sekali dan kemudian hanya gelung jika perlu. 72 00:03:48,140 --> 00:03:51,080 Jadi di sini kita datang ke membina khas dan itulah 73 00:03:51,080 --> 00:03:55,020 hampir sama dengan manakala gelung dipanggil gelung do-sementara. 74 00:03:55,020 --> 00:03:58,840 >> Jadi gelung do-while melaksanakan yang badan gelung sekurang-kurangnya sekali 75 00:03:58,840 --> 00:04:01,750 dan kemudian ia memeriksa untuk melihat sama ada ia perlu melaksanakan, 76 00:04:01,750 --> 00:04:05,310 yang bertentangan dengan gelung sementara, yang akan memeriksa keadaan 77 00:04:05,310 --> 00:04:07,200 dan kemudian melaksanakan badan. 78 00:04:07,200 --> 00:04:11,880 Jadi dalam gelung do-manakala apa yang kita mungkin lakukan adalah meminta pengguna untuk integer, 79 00:04:11,880 --> 00:04:14,450 dan kemudian memeriksa jika ia tidak sah atau tidak. 80 00:04:14,450 --> 00:04:18,130 Jika ia tidak sah, maka kita akan mengulangi proses tersebut meminta pengguna 81 00:04:18,130 --> 00:04:22,290 untuk memberi kita integer lain, dan kemudian hanya apabila integer yang sah, 82 00:04:22,290 --> 00:04:25,060 kami akan terus apa sahaja yang datang selepas itu. 83 00:04:25,060 --> 00:04:28,030 >> Sekarang anda akan melihat bahawa pengisytiharan integer n 84 00:04:28,030 --> 00:04:31,670 adalah sedikit berbeza dengan apa yang kita lakukan sebelum ini dalam contoh sebelum ini 85 00:04:31,670 --> 00:04:33,640 dan ini adalah kerana skop. 86 00:04:33,640 --> 00:04:37,920 Jika kita mengisytiharkan integer n dalam badan gelung do-sementara, 87 00:04:37,920 --> 00:04:42,640 maka kita tidak akan dapat mengakses bahawa nilai n luar kerinting mereka 88 00:04:42,640 --> 00:04:45,050 pendakap yang menunjukkan badan gelung. 89 00:04:45,050 --> 00:04:51,080 Tetapi kita sebenarnya mahu mengakses nilai n kemudian di dalam program kami. 90 00:04:51,080 --> 00:04:55,730 >> OK, jadi sekarang mari kita bercakap tentang apa syarat ini sepatutnya. 91 00:04:55,730 --> 00:05:00,400 Kami mahu hanya reprompt yang pengguna selagi n tidak sah. 92 00:05:00,400 --> 00:05:04,640 Jadi berfikir untuk diri sendiri apa yang tidak sah nilai integer akan kelihatan seperti 93 00:05:04,640 --> 00:05:08,060 dan kemudian buat Boolean yang ungkapan untuk menyatakan bahawa. 94 00:05:08,060 --> 00:05:13,070 >> Kami hampir selesai dengan subtask kami untuk mendorong dan mengesahkan input pengguna. 95 00:05:13,070 --> 00:05:16,010 Jadi mari kita membuat ini sedikit lebih mesra pengguna 96 00:05:16,010 --> 00:05:18,390 dan memberi pengguna sedikit bit maklumat lanjut 97 00:05:18,390 --> 00:05:20,510 daripada apa yang kita mendorong mereka untuk. 98 00:05:20,510 --> 00:05:24,500 Jadi mari kita segera pengguna, mengikut spec, dengan minit tali. 99 00:05:24,500 --> 00:05:28,935 Jadi menggunakan kenyataan printf anda, membuat memastikan bahawa anda sepadan ini betul-betul. 100 00:05:28,935 --> 00:05:30,230 >> Baiklah. 101 00:05:30,230 --> 00:05:33,840 Jadi sekarang kita mempunyai pengguna yang sah input, integer positif 102 00:05:33,840 --> 00:05:37,400 nilai untuk berapa minit mereka menghabiskan di bilik mandi. 103 00:05:37,400 --> 00:05:41,300 Jadi apa yang akan datang adalah untuk mengira jumlah bersamaan botol. 104 00:05:41,300 --> 00:05:45,250 Apa yang kita akan lakukan di sini mungkin sangat jelas kepada anda pada mulanya, 105 00:05:45,250 --> 00:05:46,640 dan itulah OK. 106 00:05:46,640 --> 00:05:49,320 Apa yang kita mahu lakukan ialah kita mahu mula mengamalkan 107 00:05:49,320 --> 00:05:53,810 idea mengesan corak dan membangunkan formula untuk masalah ini. 108 00:05:53,810 --> 00:05:57,200 >> Oleh itu, kita diberitahu setiap spec bahawa satu minit di bilik mandi 109 00:05:57,200 --> 00:05:59,960 adalah bersamaan dengan kira-kira 12 botol air. 110 00:05:59,960 --> 00:06:03,020 Oleh itu, maka dua minit akan bersamaan dengan 24, 111 00:06:03,020 --> 00:06:05,850 dan lima minit akan bersamaan dengan 60. 112 00:06:05,850 --> 00:06:08,390 Jadi sekarang jika anda berfikir anda akan dapat semuanya, maka mari kita 113 00:06:08,390 --> 00:06:10,390 melihat jika anda boleh datang dengan corak atau formula 114 00:06:10,390 --> 00:06:14,990 untuk menyatakan jika kita berkata, n minit, berapa banyak botol air 115 00:06:14,990 --> 00:06:17,930 akan yang dinyatakan dalam syarat-syarat n? 116 00:06:17,930 --> 00:06:20,680 >> Sekali lagi, walaupun ini mungkin mudah pada mulanya, 117 00:06:20,680 --> 00:06:23,240 kemudian apabila kita dapat masalah yang lebih rumit 118 00:06:23,240 --> 00:06:26,360 kita akan mahu masuk ke dalam amalan mengenal pasti 119 00:06:26,360 --> 00:06:30,120 corak dan membangunkan formula untuk memikirkan perkara-perkara ini. 120 00:06:30,120 --> 00:06:33,450 >> Dalam c anda mempunyai akses kepada operasi aritmetik standard, 121 00:06:33,450 --> 00:06:36,520 penambahan, penolakan, pendaraban, dan pembahagian. 122 00:06:36,520 --> 00:06:38,420 Jadi saya akan serahkan kepada anda sekarang untuk memikirkan 123 00:06:38,420 --> 00:06:41,300 bagaimana untuk menyatakan yang bilangan yang sama berjumlah botol 124 00:06:41,300 --> 00:06:43,990 bahawa pengguna dimakan semasa mandi mereka. 125 00:06:43,990 --> 00:06:45,700 >> Baiklah, kita hampir selesai. 126 00:06:45,700 --> 00:06:50,650 Kami telah mendorong pengguna untuk input mereka, kami telah memastikan bahawa itu input yang sah, 127 00:06:50,650 --> 00:06:53,330 dan kemudian kami telah digambarkan bagaimana untuk mengira bersamaan 128 00:06:53,330 --> 00:06:55,480 beberapa botol yang mereka digunakan. 129 00:06:55,480 --> 00:06:59,430 Jadi perkara terakhir yang perlu dilakukan adalah untuk output jumlah bersamaan botol 130 00:06:59,430 --> 00:07:02,410 dan mudah-mudahan menggalakkan mereka untuk menjimatkan air. 131 00:07:02,410 --> 00:07:06,270 >> Keluarkan nilai akan menjadi kenyataan printf. 132 00:07:06,270 --> 00:07:09,720 Jika saya mahu memberitahu anda bahawa saya mempunyai tiga haiwan peliharaan, misalnya, 133 00:07:09,720 --> 00:07:13,090 Saya mungkin menggunakan kenyataan printf yang kelihatan seperti ini. 134 00:07:13,090 --> 00:07:15,880 Saya mempunyai tiga haiwan peliharaan, dan yang baru line untuk pemformatan bagus. 135 00:07:15,880 --> 00:07:17,880 >> Sekarang kita tidak mahu hanya perkara kod keras. 136 00:07:17,880 --> 00:07:20,740 Berkata bilangan saya Haiwan kesayangan perubahan dari masa ke masa. 137 00:07:20,740 --> 00:07:25,080 Kemudian saya akan gunakan ruang letak dalam satu kenyataan printf saya. 138 00:07:25,080 --> 00:07:27,350 Jadi di sini nombor saya adalah integer. 139 00:07:27,350 --> 00:07:31,480 Jadi, saya akan membuat pemegang tempat untuk integer menggunakan% i. 140 00:07:31,480 --> 00:07:33,930 Saya akan menulis tali, dan kemudian selepas tali 141 00:07:33,930 --> 00:07:38,000 Saya menulis koma dan kemudian pembolehubah yang saya mahu untuk mencetak. 142 00:07:38,000 --> 00:07:42,730 Jadi nilai yang akan dicetak sebagai ganti yang pemegang tempat,% i. 143 00:07:42,730 --> 00:07:47,630 >> Anda boleh menggunakan ruang letak, kerana dengan baik, untuk terapung dengan% f. 144 00:07:47,630 --> 00:07:50,420 Anda juga boleh mempunyai beberapa ruang letak dalam rentetan. 145 00:07:50,420 --> 00:07:53,950 Sebagai contoh, jika saya mempunyai beberapa nombor anjing dan beberapa beberapa kucing, 146 00:07:53,950 --> 00:07:59,210 Saya meletakkan dua ruang letak di sini dan kemudian dua pembolehubah saya untuk masing-masing. 147 00:07:59,210 --> 00:08:03,130 >> Jadi sekarang kita tahu bagaimana untuk mencetak nilai-nilai yang disimpan dalam pembolehubah, 148 00:08:03,130 --> 00:08:06,030 Perkara yang terakhir untuk lakukan adalah untuk memastikan kita bahawa 149 00:08:06,030 --> 00:08:10,920 mencetak nilai dalam format yang tepat yang dinyatakan dalam penentuan itu. 150 00:08:10,920 --> 00:08:14,990 Dengan itu, kami telah mendorong pengguna dan mengesahkan input mereka. 151 00:08:14,990 --> 00:08:17,920 Kami telah kemudiannya dikira bersamaan beberapa botol air 152 00:08:17,920 --> 00:08:22,100 yang mereka makan semasa mandi mereka, dan kami telah outputted bahawa nilai kepada mereka. 153 00:08:22,100 --> 00:08:24,440 Dan sebagainya, kita telah menyelesaikan air. 154 00:08:24,440 --> 00:08:28,730 >> Nama saya ialah [? Zamila,?] dan ini adalah CS50. 155 00:08:28,730 --> 00:08:29,909