Correo: fannikaro@gmail.com Contenido UNIDAD 1. Concepto fundamentales. UNIDAD 2. Algoritmos y estructuras de datos. UNIDAD 3. Tcnicas de programacin. UNIDAD 4. Programacin Estructurada. UNIDAD 5. Estructuras de Repeticin.
UNIDAD 5 ESTRUCTURAS DE REPETICIN Teorema de la programacin estructurada y caracterstica Teorema: Bohn y Jacopini demostraron que un programa propio puede ser escrito utilizando solamente tres tipos de estructuras de control: Secuenciales Selectivas Repetitivas Un programa se define como propio si cumple las siguientes caractersticas: Posee un solo punto de entrada y uno de salida o fin para control del programa. Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas partes del programa. Todas las instrucciones son ejecutables y no existen lazos o bucles infinitos (sin fin) Estructuras de Repeticin Las estructuras de repeticin son sentencias que permiten repetir la ejecucin de un bloque de instrucciones en funcin del resultado de la evaluacin de una expresin lgica. Estructuras de Repeticin Entre los tipos de estructuras de repeticin tenemos: Repita Mientras Repita Hasta Repita Para Estructuras de Repeticin En las estructuras de repeticin se utilizan diferentes herramientas para controlar el nmero de veces que se ejecuta el bloque de instrucciones Contador Acumulador Centinela Contador Variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o accin. Se debe realizar primeramente una operacin de inicializacin y posteriormente los correspondientes incrementos o decrementos. Operaciones sobre Contadores Inicializacin contador = valor_inicial; Incremento contador = contador + constante; Decremento contador = contador - constante; Operaciones sobre Contadores Ejemplo // inicializacin int i=0, j=1000; i++; // incremento j--; //decremento i+=1; // incremento -> i= i+1; j-=10; //decremento -> j = j-10
Acumuladores Son variables cuyo valor se modifica, en una cantidad variable, cada vez que ocurre un evento. La modificacin puede ser incrementar o decrementar el valor. Al igual que los contadores, los acumuladores deben ser inicializados antes de utilizarse. Operaciones sobre un Acumulador Inicializacin: acumulador = valor inicial Acumulacin: acumulador = acumulador + valor acumulador = acumulador * valor acumulador = acumulador - valor acumulador = acumulador / valor Ejemplo float pos_x=0.0, pos_y=0.0; pos_x = pos_x + ancho_tot/2; Centinelas Son variables que pueden tomar dos valores (cierto, falso). Segn la expresin lgica evaluada, uno de estos valores permiten la ejecucin repetida de un bloque de instrucciones. Adems de la inicializacin respectiva, existe otro punto crtico de los centinelas y es cuando se cambia su valor. Ejemplo Ejemplo int bandera = 0; bandera = 1; Estructuras de Repeticin Entre los tipos de estructuras de repeticin tenemos: Repita Mientras Repita Para Repita Hasta
Repita Mientras Es una estructura de repeticin que evala una expresin lgica, y mientras que el resultado de dicha la expresin lgica sea cierta ,ejecuta el bloque de instrucciones que contiene esta sentencia. Si el resultado de la expresin lgica es falso el bloque de instrucciones no se ejecuta. Repita Mientras Diagrama de Flujo Pseudocdigo Repita Mientras(expresin lgica) I1
I2 Fin repita mientras
while (expresin lgica){ I1
I2 } Repita Mientras Si la primera vez el resultado de la expresin lgica es falso, entonces el bloque de instrucciones se ejecuta cero veces. Si la expresin lgica nunca es falsa, entonces el lazo se ejecuta de forma infinita. Como la expresin se evala al principio es importante realizar la inicializacin de las variables Si no se desea un lazo infinito, se debe tener mucho cuidado en modificar el valor de las variables de la expresin lgica dentro del lazo. Ejemplo Pseudocdigo C++ i=0
Repita mientras (i <= 10) i = i + 1 escribir el valor de i fin repita
Int i = 0;
while(i <= 10){ i = i+1; cout<< El valor de i es: <<i; } Ejemplo Pseudocdigo C++ bandera = cierto; contador = 0;
Repita mientras (bandera =cierto) Escribir(contador) contador = contador + 1 Si (contador = 10) bandera = falso; Fin_si Fin_RM Boolean bandera=true; Int contador = 0;
while( bandera ==true){ cout<<contador; contador = contador +1; if (contador == 10){ bandera = false; } } Ejemplo #include <iostream> using namespace std; main(){ Int i = 0; while(i <= 10){ i = i+3; cout<< El valor de i es: <<i; } } Iteracin i salida (1) 0 El valor de i es: 0 (2) 3 El valor de i es: 3 (3) 6 El valor de i es: 6 (4) 9 El valor de i es: 9 Corrida en Frio Estructuras de Repeticin Entre los tipos de estructuras de repeticin tenemos: Repita Mientras Repita Para Repita Hasta Repita Para Una de las estructuras de repeticin ms utilizada es el repita para. Este utiliza un contador para iterar Este tipo de lazo itera desde un valor inicial hasta uno final. El incremento o decremento se puede controlar con una expresin aritmtica. El inicio y el fin se controlan con expresiones lgicas Ejemplo Pseudocdigo C++ i=0
Repita para (i = 0; i <= 10, i++) ... sentencias ... fin repita para
int i;
for ( i = 0; i <= 10 ; i++){ ... sentencias ... } Estructuras de Repeticin Entre los tipos de estructuras de repeticin tenemos: Repita Mientras Repita Para Repita Hasta Repita Hasta Es una estructura de repeticin que evala una expresin lgica, y mientras el resultado sea cierto el bloque de instrucciones, enmarcado entre las llaves de la estructura, es ejecutado. Es del tipo Repita Mientras pero la expresin lgica es evaluada al final del bloque de instrucciones Repita Hasta Si el resultado de la expresin es falso la primera vez, entonces el bloque de instrucciones se ejecuta cero veces. Si la condicin nunca se hace falsa, entonces el lazo se ejecuta de forma infinita. El bloque de instrucciones es ejecutado al menos una vez ya que la expresin lgica esta ubicada al final del lazo Repita Hasta Pseudocdigo C++
Hacer ... sentencias ... mientras (<condicin>)
do{ ... sentencias ... } while (<condicin>); Repita Hasta #include <iostream> using namespace std;
int main (){ int i = 1; do{ cout<<El valor de i es: <<i<<endl; i++; } while ( i <= 10 ); } Ejercicios Escriba un algoritmo que muestre los nmeros del 1 al 10000 Escriba un algoritmo que cuente los caracteres introducidos por teclado hasta que se consiga el signo (-)
Ejercicios Ejercicios Dado 10 nmeros enteros introducidos por teclado, calcular la suma de los nmeros pares, cuantos nmeros impares hay y calcular la media de los nmeros pares e impares. Calcular la suma de los nmeros pares y la suma de los nmeros impares comprendidos entre 1 y n (n es introducido por teclado) Calcular la suma de los cuadrados de los cien primeros nmeros naturales