while deyiminin önemli bir özelliği, test koşulunun döngünün başlangıcında olmasıdır. Bunun anlamı, ilk anda koşulun yanlış (veya sıfır) olması halinde, while gövdesinin hiçbir zaman çalıştırılmayacağıdır. Ancak gövdeyi hiç olmazsa bir kere çalıştırmamız gereken durumlar vardır. Bu durumlar çok yaygın değildir. Fakat gerektiği zaman do...while deyimini kullanmalıyız.
do..while döngü yapısının yazılışı şöyledir:
do{ Döngü1;
Döngü2;
...
Döngü_n;
}while(İfade) ;
do...while ve while döngüleri arasındaki tek fark, test koşulunun (ifadenin) do while döngüsünde, döngünün en sonunda olmasıdır. Bunun anlamı, programın döngüyü daima en az bir kez çalıştıracağıdır (ilk kez).
Sonra, ifadenin değerine bağlı olarak, tekrar do'ya dönülerek döngü sürebilir veya bir sonraki döngüyle devam edilebilir.
while yerine do...while kullanılarak, daha önce verdiğimiz boşluk sayma programının listesi aşağıdaki gibi düzenlenebilir:
#import <Foundation/Foundation.h>
#include <math.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int bosluk_sayisi = 0;
char kar;
NSLog(@"\Bir cümle giriniz \n ");
scanf("%c", &kar);
while( kar!='\n')
{
if ( kar == ' ' )
bosluk_sayisi++;
scanf("%c",&kar);
}
NSLog(@"\nBOSLUKLARIN SAYISI= %i \n\n", bosluk_sayisi);
[pool drain];
return 0;
}
Programı ünlü şair Behçet Necatigil’in bir mısraıyla test edersek aşağıdaki sonucu alırız: