Baiklah.
Jadi sekarang mari kita bicara tentang sesuatu benar-benar berguna dalam programming--
pernyataan bersyarat.
Ekspresi kondisional sehingga memungkinkan program Anda
untuk membuat keputusan dan mengambil yang berbeda garpu di jalan, sesuatu
Saya singgung sedikit lebih awal, tergantung pada nilai-nilai variabel,
atau berdasarkan apa yang input pengguna di programmer, pada baris perintah,
atau jika Anda memiliki prompt atau semacam itu.
C memiliki beberapa cara yang berbeda untuk mengungkapkan ekspresi kondisional, yang
kami juga kadang-kadang akan memanggil cabang kondisional dalam program Anda.
Dan beberapa di antaranya akan melihat cukup akrab bagi Anda dari awal,
jadi kita bahkan akan menarik mereka up berdampingan, hanya
Anda dapat membuat analogi di kepala Anda.
>> Jadi, jika if-- adalah cukup sederhana bersyarat.
Jika Anda ingat dari goresan di sini
Anda bisa mengisi yang heksagon dengan ekspresi biru jika mouse ke bawah
atau jika x kurang dari 10, atau semacam itu.
Dan kemudian, jika x kurang dari 10, atau jika mouse sebenarnya, bawah,
semua kode dalam dari potongan puzzle akan mengeksekusi.
Semua hal-hal yang sesuai dalam yang berbentuk C.
>> Demikian pula, kita harus jika di sebelah kiri ada.
Jika ekspresi Boolean, yang aku hanya menggunakan
sebagai pengganti salah satu Boolean ekspresi sebelumnya kita bahas,
penjepit keriting terbuka, dekat penjepit keriting.
Jadi pikirkan keriting terbuka brace dan brace keriting tertutup
sebagai semacam analog dengan sandwich efek jika blok di sebelah kanan
dari awal.
>> Jika ekspresi Boolean dalam jika pernyataan itu benar,
maka semua baris kode antara kurung kurawal
akan mengeksekusi dalam rangka dari atas ke bawah.
Jika ekspresi Boolean adalah palsu, kita akan
melewatkan segala sesuatu di antara kurung kurawal, karena kita hanya
ingin turun garpu yang di jalan jika ekspresi Boolean benar.
>> Kita bisa mengambil satu langkah lebih lanjut dengan jika lain.
Jadi blok Scratch ini sangat mirip dengan yang
kami melihat hanya satu detik lalu, kecuali dibutuhkan dua jalan yang berbeda berdasarkan
pada apa yang terjadi.
Jadi jika mouse turun, atau jika x kurang dari 10,
kami akan melakukan segala sesuatu yang ada di antara bahwa garpu pertama, yang pertama C,
>> Jika tidak, jika mouse up, atau x tidak kurang dari 10,
kami akan melakukan segala sesuatu di set kedua.
Dan itulah analog dengan apa yang Anda lihat di sini untuk ekspresi C. Jika Boolean,
melakukan hal-hal antara set pertama dari kurung kurawal.
Lain, melakukan hal-hal antara kedua set kurung kurawal.
Jadi jika Boolean yang ekspresi benar, kita akan
melakukan apa pun yang antara set pertama.
Jika ekspresi Boolean adalah palsu, yang akan memicu yang lain,
dan kami akan melakukan apa pun di set kedua kurung kurawal.
Sekali lagi, atas ke bawah, semua baris di antara kawat gigi.
>> Dalam C, itu mungkin untuk membuat jika-lain jika-lain rantai.
Bahkan Anda dapat memiliki jika-lain jika-lain jika-lain, jika, dan seterusnya dan seterusnya dan
pada.
Dalam Scratch, ini diperlukan bersarang blok.
Anda menambahkan lain jika-dan Anda harus menempatkan satu sama lain dalam lain yang,
dan sebagainya, dan itu mendapat jenis bersarang dan rumit.
Tapi C, kita tidak perlu melakukan itu.
Kita bisa benar-benar hanya memiliki itu menjadi rantai seperti ini.
Sekali lagi, seperti yang Anda harapkan, semua cabang-cabang yang saling eksklusif.
Anda hanya bisa pernah pergi ke salah satu cabang.
Jika hal ini benar.
Jika tidak, jika hal ini benar.
Jika tidak, lakukan ini.
Jadi semua empat cabang di ini Misalnya saling eksklusif.
Ini adalah jika-lain jika-lain rantai.
>> Hal ini dimungkinkan meskipun, dan kadang-kadang sangat berguna,
untuk membuat rantai tidak cabang saling eksklusif.
Dalam contoh ini, hanya ketiga dan cabang keempat yang saling eksklusif.
Bisa jadi Anda bisa memenuhi kondisi pertama,
dan Anda bisa memuaskan kondisi kedua,
dan Anda bisa memuaskan condition-- ketiga dalam hal
Anda akan pergi ke cabang pertama, maka Anda pergi ke cabang kedua,
maka Anda akan pergi ke cabang ketiga.
Atau mungkin Anda memenuhi pertama kondisi, dan kondisi kedua,
tetapi Anda tidak memuaskan kondisi ketiga.
Dalam hal ini Anda pergi ke pertama cabang dan cabang kedua,
dan kemudian cabang keempat,
>> Alasan untuk ini adalah bahwa lain hanya akan mengikat terdekat jika.
Jadi meskipun ada sebuah lain di sini, yang
tidak selalu membuat saling rantai eksklusif dari segala sesuatu.
Ini hanya ungkapan ada dengan Boolean
ekspresi 3-- itulah saling eksklusif dengan yang lain itu.
Jadi mungkin, dan kadang-kadang cukup berguna,
seperti yang saya katakan, untuk menciptakan sebuah rantai cabang tidak saling eksklusif.
Mari kita lihat berbeda jenis bersyarat, yang
Anda belum terlihat sebelumnya di Scratch.
Ada sesuatu yang disebut pernyataan switch.
Pernyataan switch jenis rapi karena itu
pernyataan bersyarat yang memungkinkan Anda untuk menentukan kasus yang berbeda,
bukan mengandalkan Boolean ekspresi untuk membuat keputusan untuk Anda.
Jadi misalnya, katakanlah bahwa saya memiliki program ini,
dan aku meminta user untuk memberikan masukan kepada saya.
Jadi saya katakan, int x = Dapatkan Int (), dan jika Anda tidak terbiasa lagi,
mendapatkan int adalah fungsi yang juga termasuk di perpustakaan CS50,
jadi jika Anda # include CS50.H Anda akan memiliki Akses Mendapatkan Int () dan semua yang
cousins-- GetFloat, GetString, dan sebagainya.
Pada dasarnya satu Dapatkan fungsi untuk setiap Jenis data yang kita sudah dibahas.
>> Jadi Int x sama getInt.
Pada dasarnya apa yang terjadi adalah aku di terminal.
Saya meminta user untuk mengetikkan nomor.
>> Dan di sini aku beralih apa yang saya lakukan, tergantung
pada apa yang pengguna mengetik pada prompt.
Jadi, jika mereka mengetik satu, saya mencetak satu.
Dan kemudian saya istirahat.
Jika mereka tipe dua, saya mencetak dua.
Dan kemudian saya istirahat.
Sangat penting untuk istirahat antara setiap kasus
karena jika tidak Anda akan jatuh.
Jadi jika saya tidak punya istirahat di sana, dan pengguna
diketik satu, apa yang akan terjadi itu akan mencetak satu, dua, tiga, maaf.
Itu semacam perilaku aneh, kan?
Anda mungkin berpikir begitu.
Tapi sebenarnya ada beberapa kasus di mana ini bisa menjadi hal yang cukup berguna.
Jadi, inilah contoh lain dari switch Pernyataan mana saya menghilangkan istirahat.
Tapi aku melakukannya dengan sengaja.
>> Jadi apa yang terjadi di sini?
Berpikir untuk kedua.
Anda bahkan mungkin ingin menghentikan video sementara.
>> Apa yang terjadi di sini jika jenis pengguna empat?
Jadi saya sudah meminta pengguna untuk input.
Dan mereka memberikan nilai 4.
Apa yang akan dicetak ketika saya melakukan itu?
Pada slide sebelumnya, ada istirahat antara semua kasus.
Dan sehingga akan hanya mencetak empat dan kemudian berhenti.
Tapi dalam kasus ini, tidak akan.
Apa yang akan terjadi adalah Anda akan jatuh setiap kasus.
>> Jadi dalam hal ini saya telah mengatur kasus saya sedemikian rupa bahwa jika jenis pengguna 4,
Saya akan mencetak empat, tiga, dua, satu, ledakan off.
Dan jika mereka mengetik 5, saya akan mulai di lima dan melakukan hal yang sama.
Jika mereka mengetik 1, saya akan hanya melakukan satu, ledakan off.
>> Jadi dalam hal ini, saya menggunakan saklar jenis cerdik sehingga
bahwa saya berniat untuk jatuh melalui semua kasus.
Tetapi umumnya tidak mungkin akan Anda ingin istirahat antara mereka semua,
kecuali jika Anda memiliki sebuah situasi seperti ini di mana Anda
jenis memanfaatkan fakta bahwa Anda akan jatuh melalui kasus tanpa istirahat.
Jadi itulah kedua utama jenis pernyataan bersyarat.
Yang terakhir yang adalah:? Jadi saya memiliki dua potongan kode C di sini.
Satu di sebelah kiri dan satu di sebelah kanan.
Yang di sebelah kiri harus mungkin cukup akrab bagi Anda.
>> Saya memiliki Int x.
Dan aku mungkin harus telah meminta pengguna
for-- ini mungkin harus Int x sama getInt, atau sesuatu seperti itu.
Dan kemudian aku membuat keputusan.
Jika beberapa ekspresi Boolean adalah benar, menetapkan x nilai 5.
Jika tidak, menetapkan x nilai 6.
>> Yang di sebelah kiri mungkin harus cukup akrab dari diskusi kami
Jika dari Lain beberapa saat yang lalu.
Apakah Anda akan terkejut untuk mengetahui bahwa garis di sebelah kanan
melakukan hal yang sama persis?
>> Jadi ini disebut:? Atau kadang-kadang disebut operator ternary.
Dan itu cukup keren.
Ini biasanya digunakan sebagai trik lucu.
>> Tapi apa yang memungkinkan Anda lakukan adalah untuk mensimulasikan Jika Lain dengan benar-benar kecil,
benar-benar sepele singkat cabang bersyarat.
Biasanya Anda tidak akan menggunakan: jika Anda memiliki enam baris kode antara setiap set
kurung keriting.
Tapi jika Anda hanya membuat keputusan cepat,
jika Anda akan melakukan satu hal atau yang lain dan itu sangat sederhana,
ini mungkin menjadi contoh bagaimana melakukannya dengan:? operator ternary.
Jadi Int x sama dengan ekspresi?
Hal setelah pertanyaan mark adalah apa yang nilai x
akan jika ungkapan benar.
>> Hal setelah usus besar adalah apa nilai x
akan jika ekspresi itu palsu.
Jadi aku bertanya pada diri sendiri, adalah ekspresi yang benar?
Jika ya, menetapkan x nilai 5.
Jika tidak, menetapkan x nilai 6.
Sekali lagi, seperti saya katakan.
Hal ini biasanya hanya trik lucu.
Dan kadang-kadang jika Anda menjadi benar-benar nyaman dengan itu,
Anda akan melakukan ini karena terlihat jenis dingin dalam program Anda.
Umumnya saya menyajikannya ke Anda sekarang sehingga Anda akrab dengan itu
jika Anda melihatnya.
Namun yang pasti tahu Anda tidak memiliki untuk menulis dalam kode Anda.
Tapi itu adalah sesuatu yang harus akrab dengan, karena Anda pasti akan menemukan
potongan kode di sini dan ada di mana ini:? sintaks,
AKA operator terner, digunakan.
>> Ringkasan begitu cepat pada apa conditional yang,
dan apa pilihan yang tersedia untuk Anda dalam C. Anda harus Jika dan jika-lain,
dan jika lain jika, dan lain-lain.
Anda dapat menggunakan ekspresi Boolean bagi mereka untuk membuat keputusan.
>> Dengan laporan beralih Anda gunakan kasus diskrit untuk membuat keputusan.
Anda akan secara khusus mengatakan, jika satu, atau jika itu dua, atau jika itu tiga,
Aku akan melakukan hal ini, atau hal ini, atau hal ini.
Dan:? Dapat digunakan untuk menggantikan sangat sederhana cabang jika-lain,
atau jika-lain rantai untuk membuat kode Anda terlihat sedikit mewah.
>> Aku Doug Lloyd.
Dan ini CS50.