La diferencia con el bucle while radica en que este evalúa la condición al principio, y si esta no se cumple, el código que está encerrado dentro del cuerpo no se ejecuta.
En cambio, el bucle do-while evalúa la condición para seguir ejecutándose luego de haber ejecutado el código dentro de su cuerpo; es decir, siempre se ejecuta por lo menos una vez el código.
[1] La sintaxis en pseudocódigo es la siguiente: Al igual que en el bloque while, la condición de salida ha de ser una sentencia que devuelva un valor booleano, y esta puede ser el valor booleano sí, verdadero (true) si la condición se cumple, o falso si esta no se cumple (false).
La forma más obvia tal vez, y la más usada sin duda, son las sentencias comparativas, que usan los operandos igual, diferente, menor o igual, mayor o igual, menor y mayor.
En el caso del lenguaje C, se utilizan los siguientes símbolos para representar las comparaciones anteriores: ==, !=, <=, >=, <, >, Suma 1 al valor de a (que inicialmente valía 3) mientras este sea menor o igual que b (que vale 5), lo que da como resultado 6 (nótese que, en la última ejecución del bucle, la variable a comienza valiendo 5, por lo que cumple la condición "mientras", y se le suma 1).