Gelung do while

Dalam kebanyakan bahasa pengaturcaraan komputer, gelung do while ("buat sementara") ialah pernyataan aliran kawalan yang melaksanakan blok kod sekurang-kurangnya sekali, dan kemudian sama ada berulang kali melaksanakan blok atau berhenti melaksanakannya, bergantung pada keadaan Boolean (benar-palsu) yang diberikan pada penghujung blok.

Konstruk do while terdiri daripada simbol proses dan syarat. Pertama, kod dalam blok dilaksanakan, dan keadaannya dinilai kemudian. Jika keadaan itu benar, kod dalam blok itu dilaksanakan semula. Ini berulang sehingga keadaan menjadi palsu. Oleh kerana gelung do while menyemak keadaan selepas blok dilaksanakan, struktur kawalan sering juga dikenali sebagai gelung pascaujian. Berbeza dengan gelung while, yang menguji keadaan sebelum kod dalam blok dilaksanakan, gelung do while ialah gelung keadaan keluar. Ini bermakna bahawa kod mesti sentiasa dilaksanakan terlebih dahulu dan kemudian ungkapan atau keadaan ujian dinilai. Jika ia benar, kod itu melaksanakan badan gelung sekali lagi. Proses ini diulang selagi ungkapan bernilai benar. Jika ungkapan itu palsu, gelung ditamatkan dan kawalan dipindahkan ke pernyataan berikutnya. Dalam erti kata lain, ketika gelung while menetapkan kebenaran pernyataan sebagai prasyarat untuk pelaksanaan kod, gelung do-while memperuntukkan pelaksanaan berterusan tindakan tertakluk kepada kepalsuan syarat, dengan kepalsuan (iaitu kebenaran penolakan syarat) ditetapkan sebagai syarat berikutnya.

Ia adalah mungkin, dan dalam beberapa kes yang wajar, syarat itu sentiasa dinilai kepada benar lalu mewujudkan gelung tak terhingga. Apabila gelung sedemikian sengaja direka, biasanya terdapat struktur kawalan lain (seperti pernyataan pemutus) yang membenarkan penamatan gelung.

Sesetengah bahasa mungkin menggunakan konvensyen penamaan yang berbeza untuk jenis gelung ini. Sebagai contoh, bahasa Pascal dan Lua mempunyai gelung "repeat until" yang terus berjalan sehingga ungkapan kawalan adalah benar (dan kemudian ditamatkan) — manakala gelung while berjalan semasa ungkapan kawalan adalah benar (dan ditamatkan sebaik sahaja ungkapan menjadi palsu).

Pautan luar 

 do {...} while (0) dalam makro C
Kawalan aliran