Unidad IV.- Estructuras selectivas y de repeticin.
Estructuras de Repeticin
Una de las principales ventajas de la computadora es que puede realizar tareas de una
manera ms rpida y eficiente que el ser humano. Cuando tenemos necesidad de realizar
una tarea un nmero especfico de veces, las estructuras de repeticin, tambin llamadas
ciclos o bucles, nos ayudan a hacerlo, adems facilitan la programacin ya que no tenemos
que escribir el mismo cdigo muchas veces. Esta cantidad puede ser fija (previamente
determinada por el programador) o puede ser variable (estar en funcin de algn dato
dentro del programa).
En C++, podemos encontrar tres tipos de ciclos:
Repetir mientras (while)
Repetir hasta (for)
Hacer Mientras (do.. while)
Conceptos Generales
Funcionamiento de Un Ciclo
Un ciclo, funciona de la siguiente manera: Evala una condicin de resultar cierta,
realiza una accin o bloque de acciones, luego vuelve a evaluar la condicin y si
nuevamente resulta cierta, realiza la (s) accin (es). Cuando la condicin de cmo
resultado falso, se sale del ciclo y contina con la ejecucin normal del programa.
Acumulador:
Es una variable, que, como su nombre lo indica se encarga de acumular valores.
Esto se vuelve muy til, por ejemplo, cuando queremos encontrar la suma de los
nmeros del 0 al 9, en el acumulador, vamos guardando los valores de dichas
cifras. Puede ser tanto real como entera. Su valor inicial, en la mayora de los
casos es cero.
Contador:
Es una variable de tipo entero, que nos ayuda, en el programa a contabilizar el
nmero de ejecuciones de una misma accin, de un grupo de alumnos etc. Un
acumulador tiene tres valores distintos:
Valor Inicial: es el valor con el cual iniciamos nuestro contador. Generalmente es cero.
Esta asignacin puede hacerse cuando se declara la variable.
Valor Final: despus de la ejecucin del ciclo, el valor del contador, ser distinto a su valor
inicial, este puede ser mayo o menor que el mismo, todo depende si fue una cuenta
creciente o decreciente.
Valor de Cambio: Es el valor Constante, en el cual se ir incrementando nuestro
contador, este puede ser positivo o negativo; es decir, si la cuanta se realiza de manera
ascendente o descendente.
NOTA: el lector no debe confundirse entre las variables tipo acumulador y tipo
contador, estas se diferencian unas de otras en que: los contadores, su valor de
cambio es una constante, ya que aumenta y disminuyen en el mismo valor,
mientras que los acumuladores su valor de cambio no es constante. Un
acumulador necesariamente lo inicializamos con cero (o al menos en la mayora
de los casos). Un contador puede iniciar con cualquier valor.
Bandera:
Las variables tipo bandera son aquellas que slo admiten dos valores: cierto o
falso, true o false, hombre o mujer... etc.
4.5 Sentencia while (Mientras):
Primero evala la condicin de ser cierta ejecuta la accin, de ser falsa o convertirse en
falsa termina la ejecucin y libera el bucle. Si la condicin es falsa en el primer intento no
se ejecutan las acciones ni una vez. Veamos cul es el diseo correspondiente a esta
estructura
Ejemplo 1.- Escribir un programa en C++ para calcular el total de caloras consumidas en un da.
#include <stdio.h>
#include <conio.h>
main()
{
int calorias,cont, num, tot_cal;
printf( " Utiliza numeros enteros\n\n");
printf("Introduzca el numero de alimentos consumidos durante el da ");
scanf("%d", &num); // num ser el nmero total de alimentos consumidos
tot_cal = 0; // inicializamos en cero el contador de caloras
cont = 1; // inicializamos en uno el contador de alimentos
printf("\n\nIntroducir el numero de calorias de cada uno de los %d alimentos ", num);
while (cont <= num) //mientras contador sea menor o igual a numero de alimentos repetir
{
printf("\n\nDame el numero de calorias del alimento numero %d ", cont);
scanf("%d", &calorias);
tot_cal+= calorias; // Acumulador de calorias
cont++; //contador de vueltas del ciclo
}
printf("\nEl total de caloras consumidas es: %d\n ",tot_cal);
getch();
}
Ejemplo 2
Escriba un programa en C++ en el que le usuario debe introducir enteros positivos entre 0 y 5. El
programa debe informar al usuario cuando haya escrito un entero que hace que la suma de los
nmeros dados pase de 21. Adems del mensaje LA SUMA ES MAYOR A 21, la computadora debe
imprimir la suma y el ltimo entero introducido.
#include <stdio.h>
#include <conio.h>
main()
{
int num, tot;
tot = 0;
num = 0;
while ((num >=0) && (num < 6) )
{
tot+= num;
printf("Teclee un numero <en el rango 0-5> ");
scanf("%d", &num);
if (tot > 21)
{
printf(" La suma es mayor a 21 ") ;
printf(" La suma es: %d\n ",tot);
printf(" El ultimo numero tecleado fue: %d\n", num);
num = 6;
}
printf("\n\nFin del programa");
getch();
}