En el While si la condición es verdadera se ejecuta la instrucción pertinente... lo cual significa que cabe la posibilidad que si la condición no es verdadera el flujo del programa ni siquiera ejecute la instrucción dentro del bloque del While; por otro lado el For al menos por una vez (depeendiendo de la condición) el flujo del programa ejecuta la sentencia al interior del bloque; el For es ideal para recorrer arrays.