[MUSIC PLAYING] ZAMYLA CHAN: Apakah Anda lebih suka menerima $ 10.000.000 sekarang atau menerima uang setiap hari bulan, di mana setiap hari berikutnya, Anda menerima dua kali lipat jumlah uang Anda menerima sehari sebelumnya? Dalam uang, kita akan membuktikan mengapa Anda harus pasti mengambil uang. Tugas Anda adalah menulis pennies.c-- sebuah program yang pertama kali meminta user bagaimana beberapa hari ada di bulan dan kemudian bertanya berapa banyak uang pengguna akan menerima pada hari pertama. Program ini kemudian harus menghitung jumlah yang pengguna akan memiliki terakumulasi pada akhir bulan dan menampilkannya. Kita dapat mematahkan program ini sampai dalam beberapa tugas. Kita harus meminta untuk beberapa input pengguna - hari dan bulan, dan uang pada hari pertama. Kita perlu untuk melacak berapa banyak uang pengguna memiliki dan memperbaruinya setiap hari, dua kali lipat jumlah uang yang mereka terima. Dan akhirnya, kita cetak mereka total akhir, dalam dolar. Mari kita mengatasi input pengguna pertama. Aku akan membuka apples.c, program jangka pendek yang berhubungan dengan input dan output. Di bagian atas di sini, saya telah menyertakan beberapa dari perpustakaan yang saya butuhkan - Perpustakaan CS50 dan standar I / O perpustakaan. Saya mencetak prompt menggunakan Fungsi printf dari standar I / O perpustakaan. Tapi sebenarnya mendorong pengguna terjadi di baris berikutnya dengan Fungsi getInt di CS50 perpustakaan. GetInt memperoleh masukan dari pengguna dan memastikan bahwa input adalah bilangan bulat. Jadi saya menyimpan input pengguna ke bilangan bulat i, kurangi 1 dari i, dan kemudian mencetak nilai baru jika i. Setelah kompilasi apples.c menggunakan perintah "membuat apel," Saya memiliki File apel eksekusi. Menjalankan itu, saya akan masukan 1. Program ini memberitahu saya bahwa Saya memiliki 0 apel tersisa. Dan sehingga bekerja seperti yang diharapkan. Jadi mari kita jalankan ini lagi dan input negatif 1. Sekarang, memiliki jumlah negatif dari apel tidak benar-benar masuk akal, tapi program menerimanya, karena negatif 1, baik, itu adalah sebuah integer. Dan sekarang program atau rakasa dalam program makan negatif apel, dan sekarang aku punya negatif 2 apel. Hm, jadi itu satu pelajaran - meskipun fungsi getInt dan fungsi terkait, seperti GetFlow atau GetString mendapatkan tipe data yang tepat, Anda harus memastikan bahwa input membuat akal bagi program anda. Dalam uang, tidak akan melakukan prompt untuk integer, Anda harus membuat memastikan bahwa input pengguna integer yang masuk akal mengingat konteksnya. Bulan hanya dapat memiliki 28, 29, 30, atau 31 hari. Kami ingin terus menuntut sebuah integer yang valid. Jika mereka memasukkan sebuah luar integer kami batas diterima, kami akan meminta mereka lagi dan lagi, sampai Anda memberi kita integer yang valid. Ingat "ulangi sampai" blok di Awal? Anda dapat membuat sebuah konstruksi yang serupa di C menggunakan "sementara" lingkaran atau "do-while loop". Struktur loop sementara memiliki kondisi yang harus dipenuhi untuk tubuh loop untuk mengeksekusi. Ini harus terlihat sedikit mirip, karena kondisinya yang seperti Blok awal dengan sudut dan masuk ke dalam kurung dari "sementara" lingkaran. Jadi kondisi yang akan memeriksa apakah integer adalah dalam batas yang sesuai. Anda dapat meminta integer menggunakan getInt dan kemudian jalankan "sementara" Anda lingkaran, mengulangi prompt dan pencetakan instruksi, sementara input tidak valid. Cara lain untuk memastikan input pengguna yang benar adalah dengan menggunakan "do-while" lingkaran, yang sangat mirip dengan loop Sementara. "Do-while" lingkaran mengeksekusi kode dalam tubuh seseorang dan kemudian cek apakah kondisi terpenuhi atau tidak. Hal ini berguna untuk mendapatkan input pengguna, karena Anda tahu bahwa Anda perlu untuk meminta mereka setidaknya sekali. Jika kondisi ini tidak terpenuhi, program akan mengeksekusi baris setelah Anda "do-while loop". Jika kondisi ini terpenuhi meskipun, loop akan mengulangi A "do-while" loop untuk memvalidasi pengguna masukan akan terlihat seperti ini. Saya mendeklarasikan n variabel, getInt, dan kemudian ulangi sampai n berlaku. Dan proses ini, saya menjelaskan, itu menggunakan integer jenis-data, yang Anda akan menggunakan untuk hari-hari bulan. Tapi kita tahu bahwa jumlah uang akan menumpuk dengan cepat, sehingga untuk menyimpan nomor yang lebih besar, menggunakan tipe data Longlong, tapi ingat sama prinsip validasi berlaku. Mengagumkan, jadi setelah kami memiliki dua valid masukan dari pengguna - hari dalam sebulan dan uang pada hari pertama - kita bisa pindah ke berikutnya bagian dari program. Hari pertama, pengguna mulai dengan namun banyak uang mereka ditentukan dan jumlah uang yang mereka menerima hari berikutnya adalah dua kali lipat. Jadi masuk akal untuk melacak dari kedua jumlah tersebut - berapa banyak uang pengguna memiliki dan bagaimana banyak uang mereka akan diberikan. Sekarang, melakukan sesuatu selama 28 sampai 31 hari berulang-ulang, jadi mari kita gunakan "untuk" loop untuk iterate atas hari di bulan, memperbarui total dan penny jumlahnya setiap waktu. "Untuk" berisi sintaks lingkaran berikut - inisialisasi, kondisi, dan update. Anda "untuk" lingkaran akan menginisialisasi variabel, ketika pertama kali masuk loop. Jika kondisi ini terpenuhi, tubuh loop akan mengeksekusi. Setelah itu, update akan mengeksekusi. Jika kondisi ini masih dipenuhi, Loop akan mengeksekusi dan memperbarui, dan ulangi, asalkan kondisi Anda bernilai true. Berikut adalah "untuk" lingkaran yang membagi suatu bilangan bulat p oleh 2 total 10 kali. Perhatikan bagaimana saya menyatakan integer p di luar saya "untuk" lingkaran, sehingga bilangan bulat dapat diakses luar "untuk" lingkaran. Setelah satu bulan telah berlalu, saatnya untuk memberitahu pengguna berapa banyak uang mereka sudah. Per spec, Anda perlu memberitahu pengguna berapa banyak dolar, bukan berapa banyak uang, yang mereka miliki. Namun sejauh ini, Anda telah terus melacak Jumlah dan uang menggunakan LongLongs, yang seluruh nomor. Ada 100 sen ke $ 1, jadi kecuali jumlah uang adalah kelipatan 100, Anda harus merupakan tempat desimal. Dua kali lipat autotype memungkinkan Anda untuk melakukan hal ini. Jadi bagaimana kita mengkonversi dari mewakili uang untuk dolar? Mari kita lihat pi.c. Program ini membutuhkan big_pi longlong dan membaginya dengan 100.000, dan mencetak hasil sampai lima tempat desimal. Jika kita ingin menampilkan empat desimal tempat, maka kita bisa mengganti ini nomor di sini. Jadi mari kita simpan, kompilasi pi, dan kemudian melihat hasilnya, yang kita berharap untuk menjadi 3.1415 - pertama lima digit pi. Hal ini tidak sekalipun. Dan mengapa? Nah, karena big_pi adalah sebuah longlong, yang merupakan seluruh nomor, yang tidak akan melacak desimal. Modifikasi saya perlu membuat adalah di divisi. Saya perlu untuk membuang ke ganda di sini sebelum membagi, karena ganda tidak bisa terus melacak tempat desimal. Dan aku akan menambahkan baris baru di sini untuk format yang lebih baik. Dan di sini kita memilikinya - 3,1416. Anda mungkin menyadari bahwa mencetak 3,1416 bukannya 3.1415 seperti yang diharapkan. Itu karena putaran selama Proses pembelahan, dibandingkan dengan hanya truncating nilai. Sekarang Anda harus mampu mencetak total akhir benar, yang selesai program. Selamat. Nama saya Zamyla. Dan ini adalah uang. [MUSIC PLAYING]