Чем While/Do while отличается от For?
Разница только на уровне синтаксиса, просто for - частный случай while:
int counter = start;
while(condition(counter)) {
   //...
   after(&counter);
}
против
for(int counter = start; condition(counter); after(&counter)) {
  //...
}
Почти ничем, из while легко сделать for, а из for легко сделать while.
Просто для удобства сделали так, что while выполняется, пока истинно заданное условие, которое проверяется до или после выполнения одного цикла, а for выполняется определённое в счётчике количество раз.