Код већине програмских језика,do while петља је наредбаконтрола протока који извршава блок кода најмање једном, и онда непрестано извршава блок, или не, у зависности од датог логичког стања на крају блока. Имати на уму да за разлику од већине језика, Фортран-ова do петља је у ствари иста као и for петља.
Do while конструкција се састоји од процеса симбола и услова. Прво, код унутар блока се извршава, и онда се услов процењује. Ако је услов тачан код унутар блока се извршава поново. Ово се понавља све док услов не постане нетачан. Зато што do while петље проверавају услов након што је блок извршен, контролна структура је такође позната као и пост-тест петље. Супротно од while петље, која тестира услов пре него што се код унутар блока извршио, do-while петља је излазна-услов петља. Ово значи да се код мора увек извршити прво и онда се процењује израз или тест стања. Ако је тачно, код изршава тело петље поново. Овај процес се понавља све док израз има тачну вредност. Ако је вредност нетачна, петља се зауставља и контролише проток до изјаве пратећи do-while петљу.
Могуће је и у неким пожељним случајевима, да се услов увек процењује као тачан, ставарући бесконачну петљу. Када је оваква петља створена намерно, обично постоји још једна контролна структура (као што је изјава прекида) која дозвољава прекид петље.
Неки језици могу користити различиту конвенцију назива за овај тип петље. На пример, језик Паскал има "repeat until" петљу, која се наставља све док контролни израз није тачан (а затим се завршава) — док "while" петља ради све док је контролни израз тачан (и зауставља се чим израз постане нетачан).
Једнаке конструкције
do{do_work();}while(condition);
је једнако
do_work();while(condition){do_work();}
На овај начин, do ... while петља чува основну петљу са do_work(); у реду преwhileпетље.
Све док continue изјава није коришћена, ово горе је технички једнако следећем (иако ови примери нису типични или у модерном стилу):
while(true){do_work();if(!condition)break;}
или
LOOPSTART:do_work();if(condition)gotoLOOPSTART;
Демонстрирање do while петљи
Ови примери програма израчунавају факторијел од 5 користећи одговарајући језик синтаксе за do-while петљу.
Ранији Бејсик (као што је GW-BASIC) је користио синтаксу WHILE/WEND. Модерни Бејсик као што је PowerBASIC обезбеђује WHILE/WEND и DO/LOOP структуре, са синткаском DO WHILE/LOOP, DO UNTIL/LOOP, DO/LOOP WHILE, DO/LOOP UNTIL, и DO/LOOP (без спољашњег тестирања, али са условном EXIT LOOP негде унутар петље). Типични Бејсик извор кода :
program FactorialProginteger::counter=5integer::factorial=1factorial=factorial*countercounter=counter-1do while(counter>0)factorial=factorial*countercounter=counter-1end do print*,factorialend program FactorialProg
PL/I DO изјава сажима функцију пост-тест петље (do until), the pre-test loop (do while), и for петље. Све функције могу бити укључене у једној изјави. Пример показује само"do until" синтаксу.