Sentencia do … while

La sentencia do … while ejecuta una sentencia, simple o compuesta, una o más veces dependiendo del valor de una expresión. Su sintaxis es:

do_while_1

do_while_2

La ejecución de una sentencia do … while se ejecuta de la siguiente manera:

  1. Se ejecuta el bloque (sentencia simple o compuesta) de do.do_whilw_3
  2. Se evalúa la expresión correspondiente a la condición de finalización del bucle obteniendo un resultado verdadero o falso.do_while_4
  3. Si el resultado es falso (false o 0), se pasa el control a la siguiente sentencia del programa.do_while_6
  4. Si el resultado es verdadero (true o distinto de 0), el proceso repite desde el bloque do.do_while_5

Un ejemplo, este código obliga al usuario a introducir un valor positivo:

do_while_listadoAl ejecutarlo vemos el resultado:

do_while_salida

Cuando se utiliza una sentencia do … while el bloque de sentencia se ejecuta al menos una vez, porque la condición de terminación se evalúa al final. En cambio, cuando se ejecuta una sentencia while puede suceder que el bloque de sentencias no se ejecute, lo que ocurrirá siempre que la condición de terminación sea inicialmente falsa.

do_while_raiz1

do_while_formula1

El proceso descrito se repite hasta que la diferencia en valor absoluto de las dos últimas aproximaciones calculadas sea tan pequeña como nosotros queramos (teniendo en cuenta los límites establecidos por el tipo de datos utilizado). Según esto, la última aproximación será la raíz válida cuando se cumpla que:

do_while_formula2

Veamos la solución para este problema paso a paso:

  1. Como siempre, iniciamos las bibliotecas que vamos a  utilizar para los  cálculos y demás funciones.

    raiz2_listado_1

  2. Definimos las variables que vamos a utilizar en los cálculos.
  3. raiz2_listado_2A continuación leemos los datos n, aprox y epsilon.

    raiz2_listado_3

  4. Aplicamos la fórmula Newton.

    raiz2_listado4Al aplicar la fórmula por primera vez, la variable antaprox contiene el valor aproximado a la raíz cuadrada que hemos introducido a través del teclado. Para las sucesivas veces, antaprox contendrá la última aproximación calculada.

  5. Cuando la condición especificada en la estructura do … while mostrada anteriormente sea falsa, el proceso habrá terminado. Sólo nos queda imprimir el proceso.

    raiz2_listado_5

El programa completado se muestra a continuación:

raiz2_listado

Si ejecutamos el programa veremos:

raiz2_salida

¿Que pasara si introducimos valores negativos? Generaría un error interno quedándose bloqueado el programa hasta que pulsemos la combinación de teclas Ctrl+z.

raiz2_salida_error

Modificamos el programa anterior utilizando una sentencia do … while para cada entrada de datos, que preguntará por el valor  solicitado mientras el valor que se introduzca sea negativo sustituyendo la lectura de datos desde el teclado …

raiz2_listado_3

… por esta nueva manera de entrar datos utilizando las sentencias:

raiz3_listado

Si compilamos y ejecutamos el programa tendremos la salida:

raiz3_salida

Observamos que se ha intentado meter números negativos, cuando esto ocurre, la sentencia do … while vuelve a preguntar la entrada de datos correspondiente, hasta que no se cumpla while(condición).

atras2

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s