Baiklah.
Jadi sekarang mari kita bercakap tentang sesuatu benar-benar berguna dalam programming--
kenyataan bersyarat.
Jadi ungkapan bersyarat membolehkan program anda
untuk membuat keputusan dan mengambil yang berbeza garpu di jalan, sesuatu
Saya dirujuk kepada sedikit lebih awal, bergantung kepada nilai-nilai pembolehubah,
atau berdasarkan apa input pengguna di pengaturcara, pada baris arahan,
atau jika anda mempunyai segera yang atau sesuatu seperti itu.
C mempunyai beberapa cara yang berbeza untuk daftar ungkapan bersyarat, yang
kami juga kadang-kadang akan memanggil cabang bersyarat dalam program-program anda.
Dan beberapa daripada ini akan kelihatan agak biasa kepada anda dari awal,
jadi kita juga akan menarik mereka sehingga sebelah menyebelah, hanya
anda boleh membuat analogi dalam kepala anda.
>> Jadi, jika jika- adalah cantik mudah bersyarat.
Jika anda ingat dari calar di sebelah kanan di sini
anda boleh mengisi iaitu heksagon dengan muka yang biru jika mouse ke bawah
atau jika x ialah kurang daripada 10, atau sesuatu seperti itu.
Kemudian, jika x adalah kurang daripada 10, atau jika tetikus sebenarnya, ke bawah,
semua kod bahagian dalam sekeping teka-teki akan melaksanakan.
Semua perkara-perkara yang patut di dalam yang bentuk C.
>> Begitu juga, kita perlu jika di sebelah kiri sana.
Jika ungkapan Boolean, yang saya hanya menggunakan
sebagai pengganti untuk salah satu daripada Boolean ungkapan kita sebelum ini dibincangkan,
kerinting terbuka, kerinting rapat.
Jadi berfikir kerinting terbuka pendakap dan kerinting tertutup
sebagai jenis sama dengan sandwic kesan jika blok di sebelah kanan
dari awal.
>> Jika ungkapan Boolean masuk jika kenyataan itu adalah benar,
maka semua baris kod antara pendakap kerinting
akan melaksanakan dalam usaha dari atas ke bawah.
Jika ungkapan Boolean adalah palsu, kita akan
melangkau segala sesuatu di antara pendakap kerinting, kerana kita hanya
mahu turun ke bawah garpu yang di jalan raya jika ungkapan Boolean adalah benar.
>> Kita boleh mengambil langkah ini satu lagi dengan jika lain.
Jadi blok calar ini agak sama dengan yang
kita lihat beberapa saat yang lalu, kecuali ia mengambil masa dua laluan yang berbeza berdasarkan
kepada apa yang berlaku.
Jadi, jika tetikus turun, atau jika x adalah kurang daripada 10,
kami akan melakukan segala yang ada di antara bahawa garpu pertama, bahawa C. pertama,
>> Jika tidak, jika tetikus adalah , atau x tidak kurang daripada 10,
kami akan melakukan segala-galanya dalam set kedua.
Dan itu sama dengan apa yang anda lihat di sini untuk ungkapan C. Jika Boolean,
melakukan barangan di antara pertama set pendakap kerinting.
Yang lain, melakukan barangan di antara kedua set pendakap kerinting.
Jadi, jika Boolean ungkapan adalah benar, kita akan
melakukan apa sahaja yang di antara set pertama.
Jika ungkapan Boolean adalah palsu, yang akan mencetuskan lagi,
dan kami akan melakukan apa sahaja dalam set kedua pendakap kerinting.
Sekali lagi, atas ke bawah, semua garis-garis di antara penyokong gigi.
>> Dalam C, ia adalah mungkin untuk mewujudkan jika-lain jika Ahli lain yang rantai.
Malah anda boleh mempunyai jika-lain jika Ahli lain jika-lain, jika, dan sebagainya dan sebagainya dan sebagainya
pada.
Di Awal, ini diperlukan bersarang dalam blok.
Anda menambah jika-lain, dan anda terpaksa meletakkan satu lagi bahagian dalam lagi itu,
dan sebagainya, dan ia mendapat jenis daripada bersarang dan rumit.
Tetapi C, kita tidak perlu berbuat demikian.
Kita boleh sebenarnya hanya mempunyai ia menjadi rantaian seperti ini.
Sekali lagi, seperti yang anda jangkakan, semua cawangan ini adalah saling eksklusif.
Anda boleh hanya pernah pergi turun satu cawangan.
Jika ini adalah benar.
Jika tidak, jika ini adalah benar.
Jika tidak, melakukan ini.
Jadi semua empat daripada cawangan di ini contoh saling eksklusif.
Ia merupakan satu-pun jika rantaian jika-lain.
>> Ia adalah mungkin walaupun, dan kadang-kadang sangat berguna,
untuk mewujudkan satu rangkaian yang tidak cawangan saling eksklusif.
Dalam contoh ini, hanya yang ketiga dan cawangan keempat saling eksklusif.
Ia mungkin bahawa anda boleh memenuhi syarat yang pertama,
dan anda dapat memuaskan syarat kedua,
dan anda boleh memenuhi condition-- ketiga di mana
anda akan turun cawangan pertama, kemudian anda pergi ke cawangan kedua,
maka anda akan turun cawangan ketiga.
Atau mungkin anda memenuhi pertama keadaan, dan syarat kedua,
tetapi anda tidak memenuhi keadaan ketiga.
Dalam kes ini anda pergi ke pertama cawangan dan cawangan kedua,
dan kemudian cawangan keempat,
>> Sebab untuk ini adalah bahawa lagi hanya akan mengikat kepada yang terdekat jika.
Jadi, walaupun ada yang lain di sini, yang
tidak mewujudkan semestinya yang saling rantai eksklusif segala-galanya.
Ia hanya ungkapan sana dengan Boolean
ungkapan 3-- itulah saling eksklusif dengan yang lain itu.
Jadi ada kemungkinan, dan kadang-kadang agak berguna,
seperti yang saya katakan, untuk mewujudkan satu rangkaian cawangan tidak saling eksklusif.
Mari kita lihat pada yang lain jenis bersyarat, yang
anda tidak pernah melihat sebelum ini dalam Scratch.
Ada sesuatu yang dinamakan penyata suis.
Kenyataan suis jenis kemas kerana ia adalah
kenyataan bersyarat yang membolehkan anda menentukan kes-kes yang berbeza,
dan bukannya bergantung kepada Boolean ungkapan untuk membuat keputusan untuk anda.
Jadi, sebagai contoh, katakan bahawa saya mempunyai program ini,
dan saya meminta pengguna untuk memberi input kepada saya.
Maka aku katakan, int x = Dapatkan Int (), dan jika anda tidak biasa lagi,
mendapatkan int adalah satu fungsi yang juga termasuk dalam perpustakaan CS50,
jadi jika anda # include cs50.h anda akan mempunyai Dapatkan akses kepada Int () dan semua yang
cousins-- GetFloat, GetString, dan sebagainya.
Pada asasnya satu Dapatkan fungsi untuk setiap jenis data yang kita telah dibincangkan.
>> Jadi Int x sama GetInt.
Pada dasarnya apa yang berlaku adalah saya di terminal.
Saya meminta pengguna untuk menaip nombor.
>> Dan di sini saya beralih apa yang saya lakukan, bergantung
kepada apa yang pengguna ditaip di prompt.
Maka jika mereka ditaip satu, saya mencetak satu.
Dan kemudian saya pecah.
Jika mereka jenis dua, saya mencetak dua.
Dan kemudian saya pecah.
Adalah penting untuk memecahkan antara setiap kes
kerana jika tidak, anda akan jatuh melalui.
Jadi, jika saya tidak mempunyai apa-apa rehat di sana, dan pengguna
salah taip, apa yang akan berlaku ialah ia akan mencetak satu, dua, tiga, maaf.
Itulah jenis tingkah laku yang aneh, bukan?
Anda mungkin fikir begitu.
Tetapi sebenarnya ada beberapa kes di mana ini boleh menjadi satu perkara yang cukup berguna.
Jadi di sini adalah satu lagi contoh suis kenyataan di mana saya meninggalkan waktu rehat.
Tetapi saya melakukannya dengan sengaja.
>> Jadi apa yang berlaku di sini?
Berfikir untuk kali kedua.
Anda juga mungkin mahu untuk berhenti seketika video.
>> Apa yang berlaku di sini jika jenis pengguna empat?
Jadi saya telah meminta pengguna untuk input.
Dan mereka menyediakan nilai 4.
Apa yang akan dicetak apabila saya berbuat demikian?
Pada slaid sebelumnya, terdapat rehat antara semua kes.
Dan maka ia akan hanya mencetak empat dan kemudian berhenti.
Tetapi dalam kes ini, ia tidak akan.
Apa yang akan berlaku adalah anda akan jatuh melalui setiap kes.
>> Jadi dalam kes ini, saya telah dianjurkan kes saya dalam apa-apa cara yang jika jenis pengguna 4,
Saya akan mencetak empat, tiga, dua, satu, letupan off.
Dan jika mereka ditaip 5, saya akan mula di lima dan melakukan perkara yang sama.
Jika mereka ditaip 1, saya akan hanya melakukan satu, letupan off.
>> Jadi dalam kes ini, saya menggunakan suis jenis bijak supaya
bahawa saya berhasrat untuk jatuh melalui semua kes.
Tetapi secara amnya anda mungkin akan mahu memecahkan antara mereka semua,
melainkan jika anda mempunyai keadaan seperti ini di mana anda berada
jenis memanfaatkan fakta bahawa anda akan jatuh melalui kes tanpa rehat.
Jadi itulah kedua utama jenis kenyataan bersyarat.
Terakhir iaitu:? Jadi saya mempunyai dua coretan kod C di sini.
Satu di sebelah kiri dan satu di sebelah kanan.
Yang di sebelah kiri perlu mungkin menjadi agak biasa kepada anda.
>> Saya mempunyai Int x.
Dan saya mungkin perlu telah meminta pengguna
bagi- ini mungkin perlu Int x sama GetInt, atau sesuatu seperti itu.
Dan kemudian saya membuat keputusan.
Jika beberapa ungkapan Boolean adalah benar, menyerahhakkan x nilai 5.
Jika tidak, menyerahhakkan x nilai 6.
>> Yang di sebelah kiri mungkin perlu agak biasa dari perbincangan kita
Jika daripada yang lain hanya sebentar tadi.
Anda akan terkejut untuk mengetahui bahawa garis di sebelah kanan
melakukan perkara yang sama?
>> Jadi ini dipanggil: atau kadang-kadang dipanggil pengendali pertigaan.
Dan ia agak sejuk.
Ia biasanya digunakan sebagai helah comel.
>> Tetapi apa yang ia membolehkan anda untuk lakukan adalah untuk meniru Jika yang lain dengan benar-benar kecil,
benar-benar trivially pendek cawangan bersyarat.
Anda biasanya tidak akan menggunakan: jika anda mempunyai enam baris kod antara setiap set
pendakap daripada kerinting.
Tetapi jika anda hanya membuat keputusan yang cepat,
jika anda akan melakukan satu perkara atau yang lain dan ia sangat mudah,
ini mungkin menjadi satu contoh bagaimana untuk melakukannya dengan: pengendali pertigaan.
Jadi Int x sama bersuara?
Perkara selepas soalan tanda adalah apa yang x yang nilai
akan jika bersuara adalah benar.
>> Perkara selepas usus besar adalah apa nilai x
akan jika ungkapan adalah palsu.
Jadi saya meminta diri saya sendiri, adalah ungkapan yang benar?
Jika ia, menetapkan x nilai 5.
Jika tidak, menyerahhakkan x nilai 6.
Sekali lagi, seperti yang saya katakan.
Ini biasanya hanya helah comel.
Dan kadang-kadang jika anda menjadi benar-benar selesa dengan itu,
anda akan melakukan ini kerana ia kelihatan jenis sejuk dalam program-program anda.
Secara umumnya saya membentangkan kepada anda sekarang supaya anda biasa dengan ia
jika anda melihatnya.
Tetapi tentu tahu anda tidak mempunyai menulisnya dalam mana-mana kod anda.
Tetapi ia adalah sesuatu yang biasa dengan, kerana anda pasti akan menghadapi
coretan kod di sini dan di sana di mana ini: sintaksis,
AKA pengendali pertigaan, digunakan.
>> Ringkasan begitu cepat pada apa conditional berada,
dan apa pilihan yang ada kepada anda dalam C. Anda Jika dan jika-lain,
dan jika lain jika, dan sebagainya.
Anda boleh menggunakan ungkapan Boolean bagi mereka untuk membuat keputusan.
>> Dengan kenyataan suis anda menggunakan kes diskret untuk membuat keputusan.
Anda secara khusus akan berkata, jika ia satu, atau jika ia dua, atau jika ia adalah tiga,
Saya akan melakukan perkara ini, atau Perkara ini, atau perkara ini.
Dan: boleh digunakan untuk menggantikan sangat mudah jika cawangan-lain,
atau jika Ahli lain rantaian untuk membuat kod anda kelihatan mewah sedikit.
>> Saya Doug Lloyd.
Dan ini adalah CS50.