Los Ejemplos 3.8 y 3.9, además de mostrar el funcionamiento de la estructura de control de repetición while, son ejemplos clave del tipo de repetición controlada por contador. La variable i tiene el rol de contador debido a que registra cuántas veces se ha repetido el ciclo.
A manera de guía, siempre que se sepa o se pueda intuir a partir de la descripción del problema a resolver cuántas veces se va a repetir un grupo de sentencias, sin importar que el número de repeticiones sea muy pequeño o muy grande, tendremos la situación de un tipo de repetición controlada por contador, como por ejemplo:
A manera de guía, siempre que se sepa o se pueda intuir a partir de la descripción del problema a resolver cuántas veces se va a repetir un grupo de sentencias, sin importar que el número de repeticiones sea muy pequeño o muy grande, tendremos la situación de un tipo de repetición controlada por contador, como por ejemplo:
- Determinar el promedio de n calificaciones, donde n > 1.
- Determinar el mayor de n números, donde n > 1.
- Determinar la suma de los primeros n números enteros positivos (n > 1).
- Determinar la suma de los primeros n números pares, donde n > 1.
- Determinar la suma de números pares contenidos entre 1 y n, donde n > 1.
- Identificar los números primos entre 1 y n, donde n > 1, etc.
En todos estos ejemplos es posible conocer, antes de escribir una sola línea de código, el número de repeticiones que se tendrá.
El Ejemplo 3.18 es una muestra clave de la repetición controlada por contador. Todas las líneas deberían ser ya completamente comprendidas, por lo que el lector debería ser capaz de responder ¿cuántas veces se repetirá el ciclo de la línea 15?, ¿puede determinar esto sin ejecutar el programa?
Observe que en la línea 17 se ha puesto el especificador de formato “%f”, el cuál le indica a la función scanf que se va a leer un número de tipo flotante (float). Por otro lado, el mismo especificador en la línea 21, le indica a la función printf que va a imprimir un número de tipo float en la salida estándar, pero note que entre el “%” y la “f” hay un valor: “.1”, el cual le indica a la función printf que imprima el número con un decimal después del punto. Pruebe con otros valores, como “.2”, “.3” o “.4”, recompile y vea lo que sucede (vea la entrada de lectura de datos donde se aborda el concepto referente a ancho de campo).
Una posible salida para el Ejemplo 3.18 se muestra en la siguiente figura:
Observe que en la línea 17 se ha puesto el especificador de formato “%f”, el cuál le indica a la función scanf que se va a leer un número de tipo flotante (float). Por otro lado, el mismo especificador en la línea 21, le indica a la función printf que va a imprimir un número de tipo float en la salida estándar, pero note que entre el “%” y la “f” hay un valor: “.1”, el cual le indica a la función printf que imprima el número con un decimal después del punto. Pruebe con otros valores, como “.2”, “.3” o “.4”, recompile y vea lo que sucede (vea la entrada de lectura de datos donde se aborda el concepto referente a ancho de campo).
Una posible salida para el Ejemplo 3.18 se muestra en la siguiente figura: