>> DOUG LLOYD: Baiklah, jadi mari kita bercakap tentang gelung.
Jadi gelung adalah jenis sejuk kerana ia membolehkan program anda
untuk melaksanakan baris kod berulang-ulang.
Berkali-kali, tanpa perlu menyalin dan paste atau sebaliknya mengulangi mereka.
Terdapat tiga utama jenis gelung anda akan melihat.
Anda mungkin akan mempunyai kesempatan untuk menggunakan masing-masing sebagai anda kemajuan melalui CS50.
Sebahagian daripada gelung ini cukup biasa kepada anda dari awal,
jadi sekali lagi, seperti yang kita lakukan dengan conditional, kami akan meletakkan mereka sebelah menyebelah
jika ada analogi kita boleh menarik.
>> Pertama adalah selama-lamanya dari Awal, yang membandingkan untuk sementara (benar).
Ini adalah apa yang kita panggil gelung tak terhingga.
Baris kod antara kerinting kawat gigi, sama seperti kepingan teka-teki
yang patut di dalam C untuk selama-lamanya menghalang,
akan melaksanakan berulang kali dari atas ke bawah, berkali-kali,
selama-lamanya.
Lagipun, jika anda masih ingat kami perbincangan ungkapan Boolean,
benar selalunya benar.
Jadi, jika kita lakukan sesuatu yang begitu lama yang benar
adalah true-- ia seolah-olah satu silly-- sedikit benar selalunya benar, maka ia akan sentiasa berjalan.
Ia akan berjalan selama- selama-lamanya sehingga kita
mencari jalan untuk keluar daripada dengan kenyataan rehat, yang sekali lagi,
kita lihat sebentar lalu kami bercakap tentang suis.
>> Atau jika tidak, hanya membunuh kami Program yang secara kebetulan,
jika anda pernah mendapati diri anda dalam Keadaan dengan gelung tak terhingga
dan anda tidak tahu bagaimana untuk menghentikan program anda berjalan.
Hanya tekan kawalan dan C dan yang akan membunuh program anda untuk anda.
Tetapi ini, sekali lagi, dipanggil gelung tak terhingga.
Ia adalah satu gelung yang akan berlangsung selama-lamanya.
Sekarang, manakala gelung tidak selalu tak terhingga, kerana juga
kita boleh menggantikan Boolean ungkapan dengan sesuatu
sedikit lebih berguna daripada hanya benar.
Jadi di sini adalah contoh yang lain.
Walaupun dan beberapa Boolean bersuara dan penyokong gigi kemudian kerinting.
Yang cukup banyak seakan- mengulangi sehingga, dari awal.
Walaupun dalam kedua, saya akan menjelaskan perbezaan.
>> Jadi, dalam C, jika ungkapan Boolean di dalam gelung sementara
menilai kepada benar, garis kod antara pendakap kerinting
akan melaksanakan berulang kali berulang-ulang dan lebih sehingga ungkapan Boolean
menilai kepada palsu.
Jadi, sebagai contoh, anda mungkin mempunyai beberapa jenis kaunter.
Jadi katakan anda pada awal gelung ini mengatakan int x sama sifar.
Walaupun x kurang daripada 100, adakah pasangan perkara di dalam bahawa pendakap kerinting,
maka pada akhir gelung anda, anda mengatakan x plus plus, anda menokok x.
Akhirnya x akan mendapatkan 100 dan anda akan
berhenti kerana keadaan x kurang daripada 100
tidak lagi benar kerana segera yang x sama dengan 100.
100 adalah tidak kurang daripada 100.
>> Sekarang agak mengelirukan, tingkah laku blok calar akan bertukar.
Jadi berhati-hati jika ini adalah kemasukan pertama anda ke dalam menggunakan gelung.
Pada asasnya, ulangan sehingga blok dalam Scratch
akan mengulangi sesuatu berkali-kali,
sehingga ungkapan, Boolean ungkapan dalam heksagon adalah benar.
Jadi ia akan terus melakukan sehingga ia adalah benar.
Sementara itu, gelung while akan terus melakukannya sehingga ia adalah palsu.
Jadi mereka agak sama, tetapi ada bahawa perbezaan sedikit hanya
berhati-hati untuk terutamanya kerana anda membuat kemasukan pertama anda dari peralihan
denganScratch ke dalam c.
Jenis yang seterusnya gelung sebenarnya cukup sama.
Ia dipanggil do manakala gelung.
Gelung ini akan melaksanakan semua garis kod antara pendakap kerinting sekali,
dan kemudian ia akan menyemak ungkapan Boolean.
Jika ungkapan Boolean menilai kepada benar,
ia akan kembali dan mengulangi proses yang berulang-ulang
dan lebih sehingga Boolean ungkapan menilai kepada palsu.
Jadi gelung ini, tidak seperti gelung sementara, adalah dijamin menjalankan sekurang-kurangnya satu masa.
Ini boleh agak berguna.
>> Akhir sekali, kita mempunyai untuk gelung.
Untuk gelung adalah jenis sintaksis tidak menarik
dan ada banyak berlaku di sini, maka, dengan saya
seperti yang kita cuba dan memecahkan serpihan ini selain.
Secara umumnya, kes penggunaan daripada untuk gelung adalah anda
mahu mengulangi sesuatu yang bilangan tertentu masa.
Dalam contoh ini di sini, Saya mempunyai blok ulangan
dari awal, iaitu seakan-akan untuk gelung
dalam C, mengulangi sesuatu yang 10 kali.
Dan untuk gelung pada kiri sana, yang
adalah gelung empat yang akan melakukan perkara yang sama.
Ini akan pergi 10 kali.
Mengira dari sifar, kita kenaikan setiap laluan gelung.
Dan kita terus melakukan itu sehingga i adalah kurang daripada 10.
>> Jadi apa yang berlaku?
Ada banyak keseluruhan kod di sana.
Mari kita memecahkan ia ke apa yang berlaku langkah
demi langkah seperti yang kita menebuknya untuk gelung.
Perkara pertama yang berlaku adalah pembolehubah kaunter adalah pusat.
Segala-galanya di sebelah kiri yang pertama koma bertitik dalam kurungan
dilaksanakan.
Dalam kes ini, kami berkata int i sama dengan 0.
Mengisytiharkan pembolehubah baru yang dikenali sebagai i, pembolehubah ialah integer jenis
dan kita katakan nilai dalam pembolehubah yang akan menjadi sifar.
>> Perkara kedua yang kita lakukan adalah kita kemudian segera menilai
ungkapan Boolean.
Ungkapan Boolean yang ada di tengah-tengah dua koma bertitik.
Saya adalah kurang daripada 10.
Itu betul di sini, bukan?
Kami hanya berkata i adalah sama dengan sifar, dan sebagainya 0 adalah kurang daripada 10,
dan sebagainya syarat adalah benar dan kami akan kini
meneruskan untuk melaksanakan badan gelung.
Jika ia adalah palsu.
Jika, sebagai contoh, saya berkata daripada i sama dengan 0 di sana saya berkata i sama 15,
int i sama 15.
Well 15 adalah tidak kurang daripada 10, jadi kami tidak akan masuk ke dalam badan gelung
kerana ungkapan Boolean ada akan menilai sebagai palsu.
>> Selepas kita layak dari atas ke bawah, kita temui bahawa menutup kerinting,
satu perkara yang ketiga berlaku.
Pembolehubah kaunter adalah incremented, atau lebih tepat, garis
daripada kod kenyataan selepas koma bertitik kedua bahagian dalam
untuk gelung kurungan dilaksanakan.
Oleh itu, kita memulakan dengan berkata int i sama dengan 0.
Kemudian kami memeriksa sama ada atau tidak ungkapan Boolean adalah benar.
0 adalah kurang daripada, 10 supaya ia benar.
Jadi, kita akan meneruskan ke dalam badan gelung.
Perkara yang akan berlaku di dalam gelung, dan apabila kita menghadapi bahawa menutup kerinting
menyokong, perkara yang akan datang kita lakukan adalah, i plus, plus.
Saya adalah sifar sekarang saya adalah satu.
Kemudian, kita sekali lagi menyemak nilai ungkapan Boolean di tengah-tengah.
Satu adalah kurang daripada 10.
Oleh itu, kita akan pergi melalui ini memproses lagi dan lagi.
Kita akan mendapat tutup kerinting lagi.
Kami akan kenaikan i dari 1-2 dan 2-3.
Dan sebagainya dan sebagainya dan sebagainya, sehingga akhirnya nilai i yang menjadi 10.
Adalah 10 kurang daripada 10?
No.
Mengira dari 0, kami telah pergi melalui 10 lelaran gelung.
Kami telah berulang-ulang 10 kali, hanya seperti yang kita lakukan di dalam blok calar itu.
Dan supaya pada dasarnya proses untuk gelung empat.
>> Sekarang mengambil dari kod sebenar dan meletakkannya
hanya dalam beberapa kenyataan umum asas.
Berikut adalah apa yang berlaku.
Semua kenyataan di mula dilaksanakan pertama.
Anda mungkin mempunyai lebih daripada satu.
Kemudian, ungkapan Boolean ditandakan.
Jika ungkapan menilai kepada benar, melaksanakan badan gelung satu masa.
Jika ungkapan menilai kepada palsu, kami sudah selesai.
Kami tidak melaksanakan badan gelung sama sekali.
Selepas kami telah dilaksanakan yang badan gelung satu masa,
maka kita yang berlaku sesuai dengan sebahagian kenaikan di sana.
Yang biasanya akan menjadi sesuatu seperti i plus, plus
atau sesuatu seperti itu, yang mengubah pembolehubah kaunter.
Kemudian, selepas kita kenaikan, kita menyemak ungkapan lagi
dan mengulangi langkah-langkah berulang-ulang dan lebih sehingga ungkapan adalah
tidak lagi benar.
>> Jadi apakah kes-kes penggunaan untuk gelung?
Gunakan anda menggunakan gelung sementara apabila anda mahu gelung untuk mengulangi
nombor yang tidak diketahui kali, tetapi ia mungkin mungkin tidak menjalankan semua.
Satu contoh yang benar-benar biasa manakala menggelung digunakan
adalah untuk menjalankan aliran kawalan untuk permainan.
Anda mungkin tidak tahu berapa lama pengguna akan bermain,
tetapi anda hendak simpan melakukan perkara yang sama.
Mengemaskini kedudukan sprites pelbagai di papan.
Anda mahu untuk menjaga perkara-perkara bergerak pada setiap masa,
tetapi anda tidak tahu bila pengguna akan berhenti bermain
atau apabila mereka akan kehabisan nyawa.
Jadi gelung sementara adalah benar-benar baik untuk sesuatu seperti itu.
Itulah kes penggunaan yang baik.
>> Untuk lakukan semasa gelung, ia agak sama.
Anda mahu gelung mengulangi yang tidak diketahui beberapa kali, tetapi sekurang-kurangnya sekali.
Anda mungkin menggunakan ini untuk permainan juga, tetapi kes penggunaan biasa benar-benar
adalah mendorong pengguna untuk input.
Secara umumnya, anda mungkin berkata sesuatu seperti, berilah integer positif,
dan anda mungkin meletakkan bahawa dalam sebuah do manakala gelung.
Jadi ia akan sentiasa bertanya kepada mereka di kurangnya sekali bagi integer positif.
Jika mereka memberi anda integer positif, anda mungkin keluar daripada gelung.
Anda mungkin perlu dilakukan.
Ungkapan Boolean dalam manakala tidak mungkin palsu.
>> Dan anda tidak akan bertanya kepada mereka lagi.
Jika mereka memberi anda nombor negatif di mana mereka menaip beberapa perkataan atau sesuatu yang
tidak benar-benar berguna untuk anda, anda mungkin menggunakan
jangan manakala gelung untuk kembali dan melakukan lagi dan lagi dan lagi.
Anda pasti ingin bertanya mereka memberi anda nombor sekali,
tetapi anda tidak tahu berapa kali selepas itu mereka mungkin perosak.
Dan sebagainya lakukan semasa ia adalah satu penggunaan yang besar kes untuk mendorong pengguna untuk input.
Dan untuk gelung menggunakan kes biasanya adalah apabila
anda mahu mengulangi gelung beberapa diskret kali,
walaupun anda tidak mungkin tahu berapa kali
masa ini program ini disusun.
>> Jadi, sebagai contoh, mungkin anda mempunyai program di mana anda meminta pengguna untuk nombor.
Dan mereka masuk 100.
Dan kemudian anda untuk gelung akan dalam kes yang berjalan 100 kali.
Atau mungkin mereka masuk 1000 dalam program anda
dan kemudian berjalan gelung 1,000 kali.
Ia adalah satu bilangan tertentu masa.
Mereka tidak semestinya tahu apa nombor itu
adalah program masa ini disusun.
Ia tidak seperti gelung sementara di mana ia boleh menjadi tak terhingga.
Ia agak sebilangan bahawa anda hanya tidak tahu.
Sekarang walaupun saya menggariskan semua kes-kes ini digunakan,
anda perlu tahu bahawa dalam cantik banyak setiap keadaan,
anda boleh bertukar ganti semua tiga gelung ini.
Anda boleh menggunakan untuk gelung di mana anda jika tidak akan menggunakan gelung sementara.
Anda boleh menggunakan untuk gelung di mana sahaja anda akan menggunakan do manakala gelung dan sebagainya.
Ia boleh menjadi sedikit rumit kadang-kadang, jadi secara amnya ia adalah amalan yang baik
mematuhi kes penggunaan biasa.
Gunakan lakukan semasa gelung jika anda mahu sesuatu sekali, sekurang-kurangnya.
Gunakan untuk gelung jika anda mahu lakukan sesuatu bilangan tertentu masa.
Lagipun, itulah sebabnya terdapat tiga jenis gelung.
>> Jadi mereka boleh digunakan dalam konteks yang betul.
Tetapi anda boleh bertukar ganti mereka jika anda mahu.
Jika anda berasa selesa dengan gelung semasa dan anda sentiasa mahu untuk digunakan semasa gelung.
Ia adalah sesuatu yang yang boleh anda lakukan, walaupun ia
mungkin sintaksis sedikit rumit, di mana untuk gelung
akan menjadi lebih banyak mudah.
>> Nama saya Doug Lloyd dan ini adalah CS50.