Video: greedy 2024
Apabila anda masuk ke gelang pengaturcaraan dalam bahasa C, anda dapati kegembiraan dan ketakutan tanpa henti, atau tak terhingga , gelung. Gelung ini terus selama-lamanya kerana sama ada programmer terlupa memasukkan cara untuk keluar dari gelung atau keadaan keluar tidak pernah dipenuhi. Sama ada jalan, gelung tidak berkesudahan adalah rasa sakit.
Tetapi kadang-kadang program C mengandungi gelung yang tidak berkesudahan dengan tujuan. Jenis pembinaan ini mungkin kelihatan aneh, tetapi asas banyak program moden adalah bahawa mereka duduk dan berputar sementara mereka menunggu sesuatu yang berlaku. Gelung ini kelihatan seperti ini:
untuk (;;) {check_Keyboard (); check_Mouse (); check_Events (); check_System ();}
Perhatikan bahwa kondisi dalam kurungan setelah kata kunci untuk hilang kata kunci, yang baik-baik saja. Hasilnya adalah gelung yang tidak berkesudahan di mana penyataannya diperiksa berulang-ulang, satu demi satu: Program ini mencari aktiviti di suatu tempat. Apabila aktiviti ditemui, program dimatikan dan melakukan sesuatu yang menarik. Tetapi kebanyakan masa, program itu hanya duduk dalam jenis gelung ini, menunggu sesuatu berlaku. (Pemproses kata biasa boleh melakukan beribu-ribu gelung ini kerana ia menunggu di antara ketukan kekunci seperti yang anda sedang menaip.)
Masukkan kod sumber ini dan simpannya ke cakera. Kemudian kumpulkan dan jalankan program ini:
#include int main () {char ch; meletakkan ("Program Menaip"); meletakkan ("Taipkan:"); untuk (;;) {ch = getchar ();} return (0);}
Ya, anda boleh menaip. Dan anda dapat melihat teks anda di skrin. Tetapi bagaimana anda berhenti?
Untuk berhenti, anda perlu memecahkan gelung yang tidak berkesudahan, yang boleh dilakukan dengan menekan Ctrl + C. Tetapi itu bukan cara anda mahu program anda berfungsi. Sebaliknya, keadaan keluar mesti ditakrifkan untuk gelung, di mana kata kunci pecah masuk.
Pemaju bahasa C tahu bahawa, dalam sesetengah keadaan, satu gelung mesti dipecahkan berdasarkan syarat yang tidak dapat diramalkan atau ditetapkan di dalam pernyataan. Jadi, dalam kebijaksanaan mereka, mereka memperkenalkan kata kunci pemecah.
Apa yang berlaku ialah dengan segera berhenti gelung (mana-mana gelung bahasa C, bukan hanya untuk gelung). Apabila komputer melihat rehat, ia hanya menganggap bahawa gelung itu selesai dan terus seolah-olah keadaan akhir gelung dipenuhi:
#include int main () {char ch; meletakkan ("Program Menaip"); meletakkan ("Taipkan, tekan '~' untuk keluar:"); untuk (;;) {ch = getchar (); jika {ch == '~'} {break;}} kembali (0);}
Sekarang keadaan keluar ditakrifkan. Jika perbandingan dalam Talian 12 memeriksa untuk melihat sama ada watak ~ (tilde) dimasukkan. Sekiranya sedemikian, gelung itu dihentikan oleh kenyataan rehat.
Tukar kod sumber anda agar sepadan dengan apa yang baru ditunjukkan. Menyusun dan lari. Sekarang, anda boleh menghentikan program dengan menaip ~ aksara.
Perhatikan bahawa kenyataan jika boleh juga ditulis tanpa penyokong:
jika (ch == '~') pecah;
Baris ini mungkin sedikit lebih mudah dibaca daripada menggunakan pendakap.