Entrada de un número determinado de datos
Detalles- Detalles
- Categoría: Programación
- Publicado el Martes, 02 Enero 2007 11:22
Si necesitamos obtener desde un dispositivo de entrada (teclado, fichero, conexión de red, etc... ) un número determinado de datos, el bucle ideal es un for.
Eso resulta obvio, dado que el bucle for se ejecuta un número determinado de veces, tal y como comentábamos en Un bucle para cada cosa.
Por ejemplo, supongamos el siguiente problema: Tenemos las notas de un examen de una serie de alumnos, y queremos conocer la media. Queremos diseñar un programa que pida por teclado cuántos examenes tenemos, y luego pida las notas de los exámenes, para finalmente mostrar la media.
Al echarle una pensada, nos damos cuenta de que una vez que es conocido el dato de cuántos exámenes tenemos, sabemos exactamente cuántas notas debemos pedir. Es decir, si nos dicen que tenemos 14 exámenes, a continuación debemos pedir 14 notas. El bucle for sería ideal para eso.
Observa este ejemplo...
1 2 3 4 5 6 7 8 9 10 11 12 | String entrada; Console.Write("Cuántos datos vas a introducir?: "); int numIteraciones=Int32.Parse(Console.ReadLine()); for (int contador=1;contador<=numIteraciones;contador++) { //realizar entrada de dato Console.Write("Introduce dato número "+contador+" -->"); entrada = Console.ReadLine(); //procesar un elemento Console.WriteLine("ENCONTRADO DATO: " + entrada); } Console.WriteLine("FIN"); |
Quizá te preguntes si se podría haber utilizado algún otro bucle. Pues si... el bucle while daría buen resultado. El bucle while no da ningún problema si se utiliza para contar. No obstante, el bucle for aporta mayor claridad al código cuando puede ser utilizado. El bucle do...while sin embargo no funcionaría bien aquí, ya que se ejecuta 1 o más veces. En este caso, es perfectamente posible que nos tengamos que leer 0 datos.
Un ejemplo con el bucle while
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | String entrada; Console.Write("Cuántos datos vas a introducir?: "); int numIteraciones=Int32.Parse(Console.ReadLine()); int contador = 1; while (contador<=numIteraciones) { //realizar entrada de dato Console.Write("Introduce dato número "+contador+" -->"); entrada = Console.ReadLine(); //procesar un elemento Console.WriteLine("ENCONTRADO DATO: " + entrada); contador++; } Console.WriteLine("FIN"); |
¿Y si fuera necesario interrumpir la entrada de datos por cualquier motivo?.... Entonces no podríamos utilizar el bucle for. Sería preceptivo utilizar while, incluyendo la condición de terminación en el while.
Por ejemplo, este código se ejecuta un número determinado de veces, o hasta que se introduce la cadena 'fin'.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | String entrada; Console.Write("Cuántos datos vas a introducir?: "); int numIteraciones=Int32.Parse(Console.ReadLine()); int contador = 1; bool salir = false; while (contador<=numIteraciones && !salir) { //realizar entrada de dato Console.Write("Introduce dato número "+contador+" -->"); entrada = Console.ReadLine(); //procesar un elemento Console.WriteLine("ENCONTRADO DATO: " + entrada); if (entrada == "fin") salir = true; contador++; } Console.WriteLine("FIN"); |

