Uso de repeticion controlada por contador y por bandera o centinela
En este programa aprenderemos sobre el uso de ciclos. En particular el uso de la repeticion controlada por contador implementada a traves de la estructura for.
En el desarrollo de programas realizar la misma operacion muchas veces es una tarea muy comun por lo que en vez de repetir las instrucciones existen estructuras de control para realizar esta operacion y realizar la iteracion correspondiente las veces que sea necesaria.
En este programa se manejan dos tipos de iteraciones. La iteracion controlada por bandera o centinela y la repeticion controlada por contador.
En la repeticion por centinela o bandera se encierra el bloque de codigo que queramos ciclar por medio de un while
while(valor bandera){
leer el valor ingresado; si es el centinela se sale del ciclo en la proxima iteracion
bloque de codigo a ciclar
}
leer el valor ingresado; si es el centinela se sale del ciclo en la proxima iteracion
bloque de codigo a ciclar
}
En la repeticion controlada por contador se controla la cantidad de iteraciones a traves de una variable tipo contador que sera la variable de control y salida del ciclo la cual debe estar inicializada antes de comenzar las iteraciones. Cada vez que se realizan las iteraciones la variable de control se evalua con una condicion definida por el programador.
La variable de control debe estar forsozamente inicializada fuera del while ya que de lo contrario estariamos reinicializando la variable en cada iteracion y esto haria que nunca se cumpliera la condicion para salir del ciclo. Este error se le conoce comunemente copmo ciclo infinito. Si en la ejecucion de algun programa llegas a ver esto deten su ejecucion depura tu codigo y comienza de nuevo a probar tu codigo.
inicializa variable de control
while(condicion de ciclo){
bloque de codigo a ciclar
bloque de codigo a ciclar
incremento/decremento de la variable de control
}
Seudocodigo para repeticion controlada por contador con un while
Como un extra se puede colocar un contador para contar la cantidad de ciclos y desplegarlo al momento ejecutar el ciclo; esto es util sobre todo en programas que solicitan datos de un usuario.
En cada ciclo la variable de control se realiza una operacion de incremento o decremento dependiendo de la implementacion del ciclo.
Errores comunes en ciclos
Error de diferencia por uno
La variable de control no se inicializa de forma correcta
Ciclo infinito
Se da cuando la condición del ciclo no se cumple
Manejo de la variable de control
Se recomienda que la variable de control siempre sea un valor entero. Verificar que la operacion de incremento o decremento segun sea el caso genere la cantidad de iteraciones que el ciclo requiera.
El siguiente programa fue ejecutado en plataforma Windows con el compilador Dev C++.
Para poder ejecutarse en Visual Studio 2013 les dejo la siguiente liga
https://msdn.microsoft.com/en-us/library/bb384838.aspx
En este programa que tiene como proposito imprimir las tablas de multiplicar a traves de una repeticion controlada por contador. Las caracteristicas de este tipo de repeticion se encuentran ya definidas en la estructura for siendo 'contador' la variable de control. El ciclo comienza de 1 hasta 10 en el que durante cada ciclo se multiplica el valor de contador con la entrada del usuario e imprime el resultado de la operacion en pantalla. El ciclo continua a lo a lo largo de las 10 iteraciones con el incremento de +1 en cada uno hasta completar los 10 ciclos controlados a traves de la condicion contador <= 10.
Ejecucion del programa
La ejecucion del ciclo for esta dentro de un while el cual a traves del valor -1 funciona como el valor bandera para salir de la ejecucion del programa.
/*Tabla de multiplicar
Juan carlos lopez Nuñez
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc, char *argv[])
{
int tabla, contador, respuesta;
printf("Tablas de multiplicar\n\n");
printf("¿Que tabla deseas calcular?: ");
scanf("%d", &tabla);
while(tabla != -1){
printf("\nTabla del %d.\n", tabla);
for(contador = 1; contador <= 10; contador++)
{
respuesta = tabla * contador;
printf("%d * %d = %d\n", tabla, contador, respuesta);
}
printf("¿Que tabla deseas calcular?: ");
scanf("%d", &tabla);
system("cls");
printf("Tablas de multiplicar\n\n");
}
printf("\nCreditos.\nHecho por Juan lopez\nVuelve pronto\n\n");
system("PAUSE");
return 0;
}