>> Doug LLOYD: Baiklah, jadi mari kita bicara tentang loop.
Jadi loop adalah jenis keren karena mereka memungkinkan program Anda
untuk mengeksekusi baris kode berulang-ulang.
Berulang kali, tanpa harus menyalin dan paste atau mengulanginya.
Ada tiga besar jenis loop Anda akan melihat.
Anda mungkin akan memiliki kesempatan untuk menggunakan masing-masing karena Anda maju melalui CS50.
Beberapa loop ini cukup akrab bagi Anda dari Scratch,
Jadi sekali lagi, seperti yang kita lakukan dengan conditional, kami akan menempatkan mereka berdampingan
jika ada analogi kita dapat menarik.
>> Pertama adalah selamanya dari Scratch, yang membandingkan untuk sementara (benar).
Ini adalah apa yang kita sebut loop tak terbatas.
Baris kode antara keriting yang kawat gigi, seperti potongan puzzle
yang cocok di dalam C dari selamanya memblokir,
akan mengeksekusi berulang kali dari atas ke bawah, berulang-ulang,
selamanya.
Setelah semua, jika Anda ingat kami pembahasan ekspresi Boolean,
benar selalu benar.
Jadi jika kita melakukan sesuatu yang begitu lama sebagai benar
adalah true-- tampaknya silly-- sedikit yang benar selalu benar, sehingga akan selalu dijalankan.
Ini akan menjalankan selamanya dan lamanya sampai kita
menemukan cara untuk keluar dari itu dengan pernyataan break, yang lagi-lagi,
kami melihat beberapa saat yang lalu kita berbicara tentang switch.
>> Atau hanya membunuh kami Program, yang kebetulan,
jika Anda pernah menemukan diri Anda dalam situasi dengan loop tak terbatas
dan Anda tidak tahu bagaimana untuk menghentikan program dari berjalan.
Tekan saja kontrol dan C dan yang akan membunuh program Anda untuk Anda.
Tapi ini, sekali lagi, adalah disebut loop tak terbatas.
Ini adalah sebuah loop yang akan berjalan selamanya.
Sekarang, sementara loop tidak selalu tak terbatas, karena juga
kita dapat mengganti Boolean yang ekspresi dengan sesuatu
sedikit lebih berguna daripada hanya benar.
Jadi, inilah contoh lain.
Sementara beberapa Boolean dan ekspresi dan kawat gigi kemudian keriting.
Itu cukup banyak analog mengulangi sampai, dari awal.
Meskipun dalam satu detik, aku akan menjelaskan perbedaan.
>> Jadi dalam C, jika ekspresi Boolean dalam loop sementara
bernilai true, garis Kode antara kurung kurawal
akan mengeksekusi berulang kali berulang dan lebih sampai ekspresi Boolean
false.
Jadi misalnya, Anda mungkin memiliki semacam counter.
Jadi mengatakan Anda di awal lingkaran ini mengatakan int x sama dengan nol.
Sementara x kurang dari 100, lakukan beberapa hal dalam yang kurung kurawal,
kemudian di akhir loop Anda, Anda mengatakan x plus plus, Anda incrementing x.
Akhirnya x akan mendapatkan 100 dan Anda akan
berhenti karena kondisi x kurang dari 100
tidak akan lagi menjadi kenyataan sebagai Begitu x adalah sama dengan 100.
100 tidak kurang dari 100.
>> Sekarang agak membingungkan, perilaku dari blok awal dibalik.
Jadi benar-benar hati-hati jika ini perampokan pertama Anda ke dalam menggunakan loop.
Pada dasarnya, ulangi sampai blok di Scratch
akan mengulangi sesuatu berulang-ulang,
sampai ekspresi, Boolean yang ekspresi dalam segi enam yang benar.
Sehingga akan terus melakukan itu sampai benar.
Sementara itu, sementara loop akan terus melakukannya sampai itu adalah palsu.
Jadi mereka sangat mirip, tetapi ada yang perbedaan kecil hanya
berhati-hati terutama ketika Anda membuat perampokan pertama Anda dari transisi
untuk Gores menjadi c.
Jenis berikutnya loop sebenarnya cukup mirip.
Ini disebut do while.
Lingkaran ini akan menjalankan semua lini kode antara kurung kurawal sekali,
dan kemudian akan memeriksa ekspresi Boolean.
Jika ekspresi Boolean bernilai true,
itu akan kembali dan ulangi bahwa proses berulang
-ulang sampai Boolean yang ekspresi false.
Jadi lingkaran ini, tidak seperti loop sementara, adalah dijamin untuk menjalankan setidaknya satu kali.
Ini bisa sangat berguna.
>> Terakhir, kita memiliki untuk loop.
Untuk loop adalah jenis sintaksis menarik
dan ada banyak hal yang terjadi di sini, jadi beruang dengan saya
seperti yang kita mencoba dan memecahkan potongan-potongan terpisah.
Umumnya, kasus penggunaan dari untuk loop adalah Anda
ingin mengulang sesuatu yang jumlah tertentu kali.
Dalam contoh ini di sini, Saya memiliki blok ulangi
dari Scratch, yang analog dengan untuk loop
di C, mengulangi sesuatu 10 kali.
Dan untuk loop pada kiri di sana, yang
adalah empat loop yang akan melakukan hal yang sama.
Ini akan pergi 10 kali.
Menghitung dari nol, kami kenaikan setiap lulus dari loop.
Dan kami terus melakukan itu sampai saya kurang dari 10.
>> Jadi apa yang terjadi?
Ada banyak seluruh kode ada.
Mari kita jatuhkan itu untuk apa yang terjadi langkah
demi langkah seperti yang kita menggali melalui untuk loop.
Hal pertama yang terjadi adalah variabel counter pusat.
Semuanya di sebelah kiri yang pertama koma di dalam kurung
dieksekusi.
Dalam hal ini, kita mengatakan int i sama dengan 0.
Mendeklarasikan variabel baru yang disebut i, bahwa variabel adalah tipe integer
dan kita mengatakan nilai dalam variabel yang akan menjadi nol.
>> Hal kedua yang kita lakukan adalah kita kemudian segera mengevaluasi
ekspresi Boolean.
Ekspresi Boolean adalah dalam tengah dua titik koma.
Saya kurang dari 10.
Itu benar di sini, kan?
Kami hanya mengatakan saya adalah sama dengan nol, dan 0 adalah kurang dari 10,
dan kondisi yang adalah benar dan kami sekarang akan
melanjutkan untuk mengeksekusi tubuh loop.
Jika itu palsu.
Jika, misalnya, saya mengatakan bukan i sama dengan 0 sana saya mengatakan saya sama dengan 15,
int i sama dengan 15.
Nah 15 tidak kurang dari 10, jadi kami tidak akan pernah masuk ke dalam tubuh loop
karena ekspresi Boolean ada akan mengevaluasi palsu.
>> Setelah kami melewati dari atas ke bawah, kita menemukan bahwa menutup brace keriting,
hal ketiga terjadi.
Variabel counter bertambah, atau lebih tepatnya, garis
kode dari pernyataan setelah koma kedua dalam dari
untuk loop kurung dijalankan.
Jadi kami memulai dengan mengatakan int i sama dengan 0.
Kemudian kita cek apakah atau tidak ekspresi Boolean benar.
0 adalah kurang dari, 10 jadi itu benar.
Jadi kita akan melanjutkan ke dalam tubuh loop.
Hal yang akan terjadi di dalam lingkaran, dan ketika kita menghadapi yang menutup keriting
brace, hal berikutnya yang kita lakukan adalah kita katakan saya ditambah, plus.
Saya nol sekarang saya adalah salah satu.
Kemudian, kita kembali memeriksa nilai ekspresi Boolean di tengah.
Salah satunya adalah kurang dari 10.
Jadi kita akan pergi melalui ini memproses lagi dan lagi.
Kita akan sampai ke penutupan penjepit keriting lagi.
Kami akan kenaikan i dari 1-2 dan 2-3.
Dan seterusnya dan seterusnya dan seterusnya, sampai akhirnya i nilai menjadi 10.
Adalah 10 kurang dari 10?
Tidak.
Menghitung dari 0, kita sudah melalui 10 iterasi loop.
Kami sudah berulang 10 kali, hanya seperti yang kita lakukan di blok Scratch.
Dan jadi itu pada dasarnya Proses untuk empat lingkaran.
>> Sekarang merampas kode aktual dan meletakkan
hanya beberapa pernyataan umum dasar.
Inilah yang terjadi.
Semua laporan di mulai dijalankan pertama.
Anda mungkin memiliki lebih dari satu.
Kemudian, ekspresi Boolean diperiksa.
Jika ekspresi bernilai benar, mengeksekusi tubuh loop satu waktu.
Jika ekspresi mengevaluasi false, kita sudah selesai.
Kami tidak mengeksekusi tubuh loop sama sekali.
Setelah kami telah dieksekusi tubuh loop satu waktu,
maka kita melakukan apa yang di bagian kenaikan sana.
Yang biasanya akan menjadi sesuatu seperti i ditambah, ditambah
atau sesuatu seperti itu, yang memodifikasi variabel counter.
Kemudian, setelah kami kenaikan, kami memeriksa ekspresi lagi
dan ulangi langkah-langkah berulang -ulang sampai ekspresi adalah
tidak lagi benar.
>> Jadi apa kasus penggunaan untuk loop?
Gunakan Anda menggunakan loop sementara saat Anda ingin loop untuk mengulang
jumlah yang tidak diketahui kali, tapi itu mungkin mungkin tidak menjalankan semua.
Sebuah contoh yang sangat umum dari sementara perulangan yang digunakan
adalah untuk menjalankan aliran kontrol untuk permainan.
Anda mungkin tidak tahu berapa lama pengguna akan bermain,
tetapi Anda ingin menyimpan melakukan hal yang sama.
Memperbarui posisi berbagai sprite di papan tulis.
Anda ingin menjaga hal-hal bergerak setiap saat,
tapi Anda tidak tahu kapan pengguna akan berhenti bermain
atau ketika mereka akan kehabisan kehidupan.
Jadi loop sementara benar-benar baik untuk sesuatu seperti itu.
Itu kasus penggunaan yang baik.
>> Untuk do a while, itu sangat mirip.
Anda ingin loop untuk mengulangi diketahui beberapa kali, tapi setidaknya sekali.
Anda mungkin menggunakan ini untuk permainan juga, tapi kasus penggunaan benar-benar umum
adalah mendorong pengguna untuk input.
Umumnya, Anda mungkin mengatakan sesuatu seperti, memberikan bilangan bulat positif,
dan Anda mungkin menempatkan bahwa dalam sebuah do while.
Sehingga akan selalu meminta mereka di setidaknya sekali untuk bilangan bulat positif.
Jika mereka memberikan bilangan bulat positif, Anda mungkin keluar dari loop.
Anda mungkin dilakukan.
Ekspresi Boolean di yang dilakukan sementara mungkin palsu.
>> Dan Anda tidak akan meminta mereka lagi.
Jika mereka memberikan angka negatif di mana mereka mengetik beberapa kata atau sesuatu yang
tidak benar-benar berguna untuk Anda, Anda mungkin menggunakan
jangan sementara loop untuk kembali dan melakukan lagi dan lagi dan lagi.
Anda pasti ingin bertanya mereka untuk memberikan nomor sekaligus,
tapi Anda tidak tahu berapa kali setelah itu mereka mungkin hama.
Dan jadi do sementara itu penggunaan besar kasus untuk mendorong pengguna untuk input.
Dan untuk loop menggunakan kasus biasanya adalah ketika
Anda ingin mengulang loop sejumlah diskrit kali,
meskipun Anda mungkin tidak tahu berapa kali
saat program dikompilasi.
>> Jadi misalnya, mungkin Anda memiliki program di mana Anda meminta pengguna untuk nomor.
Dan mereka masuk 100.
Dan kemudian Anda untuk loop akan dalam kasus yang berjalan 100 kali.
Atau mungkin mereka masuk 1000 dalam program Anda
dan kemudian menjalankan loop 1.000 kali.
Ini jumlah tertentu kali.
Mereka belum tentu tahu apa nomor yang
adalah program saat dikompilasi.
Ini tidak seperti loop sementara di mana itu bisa tak terbatas.
Ini agak nomor Anda hanya tidak tahu.
Sekarang meskipun saya sudah diuraikan semua kasus penggunaan ini,
Anda harus tahu bahwa di cukup banyak setiap keadaan,
Anda dapat interchange semua tiga dari loop ini.
Anda dapat menggunakan untuk loop di mana Anda sebaliknya akan menggunakan loop sementara.
Anda dapat menggunakan untuk loop dimanapun Anda akan menggunakan do while dan sebagainya.
Hal ini dapat menjadi sedikit rumit kadang-kadang, sehingga umumnya itu adalah praktik yang baik
untuk mematuhi kasus penggunaan khas.
Gunakan do a while jika Anda ingin sesuatu sekali, setidaknya.
Gunakan untuk loop jika Anda ingin melakukan sesuatu jumlah tertentu kali.
Setelah semua, itu sebabnya ada tiga jenis loop.
>> Sehingga mereka dapat digunakan dalam konteks yang tepat.
Tapi Anda bisa interchange mereka jika Anda inginkan.
Jika Anda merasa nyaman dengan loop sementara dan Anda selalu ingin menggunakan sementara loop.
Ini adalah sesuatu yang Anda dapat lakukan, meskipun
mungkin sintaksis sedikit rumit, di mana untuk loop
akan jauh lebih mudah.
>> Nama saya Doug Lloyd dan ini CS50.