SPEAKER 1: Mari kita bercakap tentang air.
Dalam masalah ini, kita meminta pengguna untuk memberitahu kita berapa lama dalam beberapa minit pancuran mereka adalah
dan kemudian kita mengira bersamaan beberapa botol air
bahawa pancuran mereka digunakan.
>> Jadi apakah kami tugasan ini bagi masalah ini?
Pertama, kita akan mahu untuk meminta dan kemudian mengesahkan
input yang pengguna memberikan kita.
Apabila kita memastikan kita bahawa mempunyai input pengguna sah,
kita akan mengira jumlah bersamaan dengan botol air
bahawa pengguna mempunyai semasa pancuran mereka, dan kemudian kita
akan memberitahu mereka dengan mencetak nombor itu.
>> Jadi mari kita menangani pertama kami tugas, mendorong dan mengesahkan
input pengguna.
Untuk ini kita telah menulis satu fungsi untuk anda dipanggil
get_int terletak di Perpustakaan CS50.
get_int memastikan bahawa input pengguna integer, jadi mana-mana nombor positif,
nombor negatif, atau sifar semua diterima.
Tetapi jika pengguna input apa-apa lagi, jadi apa-apa gabungan huruf atau nombor
atau nombor perpuluhan, maka pengguna akan diminta untuk mencuba semula
dan fungsi yang tidak akan menerima apa-apa sehingga pengguna memberikan mereka integer.
>> Jadi bagaimana kita menggunakan get_int?
Jika anda membuka ruang kerja anda dan mencipta satu fail bernama integer.c mari
taip yang berikut.
Hashtag termasuk cs50.h.
Ini adalah perlu kerana get_int adalah fungsi perpustakaan cs50,
jadi kita mesti hashtag termasuk pengisytiharan dalam usaha
untuk menggunakan fungsi ini.
Dan kemudian dalam utama saya berfungsi Saya hanya akan
untuk hanya memanggil get_int fungsi.
>> Jadi mari kita menjalankan ini dan melihat bagaimana ia berfungsi.
Saya telah disusun, jadi mari kita hanya pergi ke hadapan dan menjalankan program ini,
./integer.
Di sini saya mempunyai segera dan di sini di mana saya input nilai.
Katakanlah saya dimasukkan ke dalam hanya beberapa integer, 50, Petikan program dan letak jawatan
dan itulah yang.
>> Tetapi katakan saya berjalan lagi dan Saya input sesuatu yang lain.
Mungkin, hello dunia.
Itu bukan satu integer jadi program akan meminta saya untuk mencuba semula.
Mari kita cuba lagi dengan mungkin perpuluhan masa ini.
0.5, sekali lagi, bukan integer supaya program ini tidak akan menerimanya
dan ia akan memberitahu saya untuk mencuba semula.
Jadi mari kita memberikan nombor lain.
Program ini menerimanya, letak jawatan, dan kami sudah selesai.
>> Jadi sekarang kita mempunyai fungsi yang membolehkan kita dan memastikan
bahawa pengguna input yang integer, tetapi bagaimana boleh kita
sebenarnya menjejaki integer diinput oleh pengguna?
Well, semua yang kita akan lakukan adalah kedai nilai ini dalam pembolehubah, mengatakan n.
Jadi jika saya mengisytiharkan integer n, dan saya menetapkan nilai yang ke get_int,
kemudian n kemudian akan menyimpan apa sahaja berhargai pengguna yang dimasukkan.
>> Baiklah, jadi sekarang kita telah memastikan bahawa pengguna akan memberi kita integer
dan kita tahu bagaimana untuk mengesan integer, tetapi ingat,
integer positif dan negatif.
Oleh itu, ia tidak benar-benar masuk akal dalam konteks masalah ini
bahawa pengguna mengambil mandi daripada kata negatif 12 minit.
Oleh itu, kita perlu memastikan bahawa pengguna sebenarnya memberikan kita integer positif.
Sekarang kita tidak mempunyai hanya fungsi tunggal untuk itu,
jadi kita akan mempunyai untuk mewujudkan diri kita sendiri.
>> Oleh itu, kita mahu untuk terus segera pengguna
sehingga mereka memberi kita integer positif.
Jika saya melakukan sesuatu secara berterusan maka itulah serupa dengan gelung, pengulangan.
Jadi salah satu konstruk yang kita gunakan dalam c untuk melaksanakan pengulangan dan gelung
adalah gelung sementara.
Jadi gelung sementara, kerana ditunjukkan di sini, akan melaksanakan
apa yang ada di badan gelung sebagai selagi itu menilai syarat yang diberikan
kepada benar.
Sebaik sahaja syarat menilai kepada palsu, maka
program ini akan diteruskan untuk apa sahaja datang selepas mayat gelung.
>> Oleh itu, sambil gelung akan benar-benar berguna dalam CS50.
Tetapi dalam khusus ini kes, kita tahu bahawa kita berada
akan segera pengguna sekurang-kurangnya sekali dan kemudian hanya gelung jika perlu.
Jadi di sini kita datang ke membina khas dan itulah
hampir sama dengan manakala gelung dipanggil gelung do-sementara.
>> Jadi gelung do-while melaksanakan yang badan gelung sekurang-kurangnya sekali
dan kemudian ia memeriksa untuk melihat sama ada ia perlu melaksanakan,
yang bertentangan dengan gelung sementara, yang akan memeriksa keadaan
dan kemudian melaksanakan badan.
Jadi dalam gelung do-manakala apa yang kita mungkin lakukan adalah meminta pengguna untuk integer,
dan kemudian memeriksa jika ia tidak sah atau tidak.
Jika ia tidak sah, maka kita akan mengulangi proses tersebut meminta pengguna
untuk memberi kita integer lain, dan kemudian hanya apabila integer yang sah,
kami akan terus apa sahaja yang datang selepas itu.
>> Sekarang anda akan melihat bahawa pengisytiharan integer n
adalah sedikit berbeza dengan apa yang kita lakukan sebelum ini dalam contoh sebelum ini
dan ini adalah kerana skop.
Jika kita mengisytiharkan integer n dalam badan gelung do-sementara,
maka kita tidak akan dapat mengakses bahawa nilai n luar kerinting mereka
pendakap yang menunjukkan badan gelung.
Tetapi kita sebenarnya mahu mengakses nilai n kemudian di dalam program kami.
>> OK, jadi sekarang mari kita bercakap tentang apa syarat ini sepatutnya.
Kami mahu hanya reprompt yang pengguna selagi n tidak sah.
Jadi berfikir untuk diri sendiri apa yang tidak sah nilai integer akan kelihatan seperti
dan kemudian buat Boolean yang ungkapan untuk menyatakan bahawa.
>> Kami hampir selesai dengan subtask kami untuk mendorong dan mengesahkan input pengguna.
Jadi mari kita membuat ini sedikit lebih mesra pengguna
dan memberi pengguna sedikit bit maklumat lanjut
daripada apa yang kita mendorong mereka untuk.
Jadi mari kita segera pengguna, mengikut spec, dengan minit tali.
Jadi menggunakan kenyataan printf anda, membuat memastikan bahawa anda sepadan ini betul-betul.
>> Baiklah.
Jadi sekarang kita mempunyai pengguna yang sah input, integer positif
nilai untuk berapa minit mereka menghabiskan di bilik mandi.
Jadi apa yang akan datang adalah untuk mengira jumlah bersamaan botol.
Apa yang kita akan lakukan di sini mungkin sangat jelas kepada anda pada mulanya,
dan itulah OK.
Apa yang kita mahu lakukan ialah kita mahu mula mengamalkan
idea mengesan corak dan membangunkan formula untuk masalah ini.
>> Oleh itu, kita diberitahu setiap spec bahawa satu minit di bilik mandi
adalah bersamaan dengan kira-kira 12 botol air.
Oleh itu, maka dua minit akan bersamaan dengan 24,
dan lima minit akan bersamaan dengan 60.
Jadi sekarang jika anda berfikir anda akan dapat semuanya, maka mari kita
melihat jika anda boleh datang dengan corak atau formula
untuk menyatakan jika kita berkata, n minit, berapa banyak botol air
akan yang dinyatakan dalam syarat-syarat n?
>> Sekali lagi, walaupun ini mungkin mudah pada mulanya,
kemudian apabila kita dapat masalah yang lebih rumit
kita akan mahu masuk ke dalam amalan mengenal pasti
corak dan membangunkan formula untuk memikirkan perkara-perkara ini.
>> Dalam c anda mempunyai akses kepada operasi aritmetik standard,
penambahan, penolakan, pendaraban, dan pembahagian.
Jadi saya akan serahkan kepada anda sekarang untuk memikirkan
bagaimana untuk menyatakan yang bilangan yang sama berjumlah botol
bahawa pengguna dimakan semasa mandi mereka.
>> Baiklah, kita hampir selesai.
Kami telah mendorong pengguna untuk input mereka, kami telah memastikan bahawa itu input yang sah,
dan kemudian kami telah digambarkan bagaimana untuk mengira bersamaan
beberapa botol yang mereka digunakan.
Jadi perkara terakhir yang perlu dilakukan adalah untuk output jumlah bersamaan botol
dan mudah-mudahan menggalakkan mereka untuk menjimatkan air.
>> Keluarkan nilai akan menjadi kenyataan printf.
Jika saya mahu memberitahu anda bahawa saya mempunyai tiga haiwan peliharaan, misalnya,
Saya mungkin menggunakan kenyataan printf yang kelihatan seperti ini.
Saya mempunyai tiga haiwan peliharaan, dan yang baru line untuk pemformatan bagus.
>> Sekarang kita tidak mahu hanya perkara kod keras.
Berkata bilangan saya Haiwan kesayangan perubahan dari masa ke masa.
Kemudian saya akan gunakan ruang letak dalam satu kenyataan printf saya.
Jadi di sini nombor saya adalah integer.
Jadi, saya akan membuat pemegang tempat untuk integer menggunakan% i.
Saya akan menulis tali, dan kemudian selepas tali
Saya menulis koma dan kemudian pembolehubah yang saya mahu untuk mencetak.
Jadi nilai yang akan dicetak sebagai ganti yang pemegang tempat,% i.
>> Anda boleh menggunakan ruang letak, kerana dengan baik, untuk terapung dengan% f.
Anda juga boleh mempunyai beberapa ruang letak dalam rentetan.
Sebagai contoh, jika saya mempunyai beberapa nombor anjing dan beberapa beberapa kucing,
Saya meletakkan dua ruang letak di sini dan kemudian dua pembolehubah saya untuk masing-masing.
>> Jadi sekarang kita tahu bagaimana untuk mencetak nilai-nilai yang disimpan dalam pembolehubah,
Perkara yang terakhir untuk lakukan adalah untuk memastikan kita bahawa
mencetak nilai dalam format yang tepat yang dinyatakan dalam penentuan itu.
Dengan itu, kami telah mendorong pengguna dan mengesahkan input mereka.
Kami telah kemudiannya dikira bersamaan beberapa botol air
yang mereka makan semasa mandi mereka, dan kami telah outputted bahawa nilai kepada mereka.
Dan sebagainya, kita telah menyelesaikan air.
>> Nama saya ialah [? Zamila,?] dan ini adalah CS50.