1clase e12 estructurasderepeticionc

51
INFORMATICA I 2011/1 - CLASE 12 Estructuras de Repetición en C

description

Introducir a los estudiantes en el leguaje de programación C con el fin de entender sus principales características, su estructura, los tipos de datos y los operadores que maneja este lenguaje.

Transcript of 1clase e12 estructurasderepeticionc

Page 1: 1clase e12 estructurasderepeticionc

INFORMATICA I

2011/1 - CLASE 12

Estructuras de Repetición en C

Page 2: 1clase e12 estructurasderepeticionc
Page 3: 1clase e12 estructurasderepeticionc

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

1 Introducción

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

Page 4: 1clase e12 estructurasderepeticionc

Introducción

Introducción

En C existen tres estructuras de control repetitivas:

MientrasParaHaga-mientras

Pseudocódigo

whilefordo-while

Lenguaje C

Page 5: 1clase e12 estructurasderepeticionc

Ciclos en C

Un ciclo (bucle) es una estructura que permite la repetición de una o mas instrucciones un determinado numero de veces.

http://www.youtube.com/watch?v=aeg0mLp9IB0

Page 6: 1clase e12 estructurasderepeticionc

Ciclos en C

Expresión lógica que controla la secuencia de repetición. Normalmente, se evalúa antes de la ejecución del cuerpo del bucle.

Conjunto de instrucciones (asociadas al problema) que se ejecutan dentro del bucle:• Estructuras condicionales.• Instrucciones I/O.• Otros bucles.• Instrucciones de asignación.• Funciones.

(Condición)

Cuerpo

Fin

Page 7: 1clase e12 estructurasderepeticionc

Principios a considerar cuando se usan bucles c

Es importante analizar los requisitos del bucle,

pues se debe determinar su

inicialización, condición y actualización.

¿Qué principios considerar cuando se

diseñan bucles?

Algunas preguntas de utilidad:

• ¿Qué es lo que debe contener el cuerpo del

bucle?• Cuantas veces se itera

el bucle.

Page 8: 1clase e12 estructurasderepeticionc

Introducción

Introducción

1• El cuerpo del ciclo.

2• Las sentencias de inicialización.

3• Las condiciones para la terminación

del bucle.

Page 9: 1clase e12 estructurasderepeticionc

Introducción

Introducción

Las estructuras ciclicas se terminan cuando:1. La condición de evalución se vuelve falsa2. Cuando se ejecuta la instrucción break o

return

Page 10: 1clase e12 estructurasderepeticionc

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

2 Sentencia while

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

Page 11: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE

Sentencia while

Realiza un conjunto de operaciones mientras una condición se esté cumpliendo, o mientras una expresión sea verdadera

1• Se evalúa la condición-bucle

2• Si condición-bucle es verdadera :

• Se ejecuta el cuerpo del bucle• Vuelve el control al paso 1.

3• Si condición-bucle es falsa :

• Se termina el ciclo.

*• Condiciones:

• Cuantitativas y Caulitativas

Page 12: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE

Sintaxis

Mientras (condición) hagaInstrucciones

fin_mientras

while (condición){Instrucciones;

}

Pseudocódigo

Lenguaje C

Page 13: 1clase e12 estructurasderepeticionc

(Condición)

SENTENCIA WHILE

Sentencia while

Variable de control: Variable que representa la condición del bucle ya que su valor determina si el bucle se repite o no. Esta debe ser:• Inicializada.• Comprobada.• Actualizada.

Cuerpo

Fin

Page 14: 1clase e12 estructurasderepeticionc

(Condición)

SENTENCIA WHILE

Sentencia while

Cuerpo

Fin

while (contador < n) {

<Instrucciones>; ... contador = contador+1;

}

Inicializacióncontador = 0;

Comprobación

Actualización

Page 15: 1clase e12 estructurasderepeticionc

Falso

Verdadero

Cuerpo del bucle

SENTENCIA WHILE

Sentencia while

CONDICIÓNEVALUAR

Verdadero

EJECUTAR

Falso

Fin del ciclo

Page 16: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE

Ejemplo1

Realizar un programa que cuente hasta N

i = 0;while (i <= N) { printf("El valor del conteo es: %d\n", i); i++;}

Page 17: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE

Ejemplo2

Realizar un programa que pida que se ingresen las notas de los estudiantes, y que cuando halla una nota menor que 3, muestre un mensaje que diga “El estudiante perdió”. El programa únicamente debe finalizar cuando el usuario lo desee.

salir = 0;while (salir!=1) { printf("Ingrese la nota del estudiante:"); scanf("%f",&nota); if (nota < MIN_NOTA){ printf("El estudiante perdio\n"); } printf("Ingrese 0 para continuar, 1 para salir: "); scanf("%d",&salir);}

Page 18: 1clase e12 estructurasderepeticionc

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

Page 19: 1clase e12 estructurasderepeticionc

SENTENCIA FOR

Sentencia for

Realiza un conjunto de operaciones un determinado número de veces

1• Se inicializa la variable de control y se

evalúa la condición-bucle

2• Si condición es verdadera :

• Se ejecuta el cuerpo del bucle• Se incrementa la variable y se evalúa la condición

3• Si condición-bucle es falsa :

• Se termina el ciclo.

*• Condiciones:

• Cuantitativas

Page 20: 1clase e12 estructurasderepeticionc

SENTENCIA FOR

Sentencia for

Recomendado para:

1• Ciclos que son controlados por

contador

2• Ejecutar un conjunto de instrucciones un

determinado número de veces

Page 21: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE

Sintaxis

para VC desde LI hasta LF con INC<Instrucciones>

fin_para

for( VC; condicionBucle; INC o DEC){

instrucciones;}

Pseudocódigo

Lenguaje C

Page 22: 1clase e12 estructurasderepeticionc

SENTENCIA FOR

Sintaxis

for(VC; condicionBucle; INC o DEC){ instrucciones;}

Expre3: Modificación vble, como cambia la variable de control

Expre1: Se le da el valor inicial a la variable de control del bucle. Se pueden inicializar una o varias variables.

Expre2: Condición, que contiene una expresión lógica, mientras sea verdadera se realiza el bucle

Page 23: 1clase e12 estructurasderepeticionc

(Condición)

SENTENCIA FOR

Sentencia for

Cuerpo

Fin

for(i = 1 ; i < n; i++) {

<Instrucciones>; ...

}

InicializaciónComprobación

Actualización

Page 24: 1clase e12 estructurasderepeticionc

SENTENCIA FOR

Sintaxis

La(s) variable de control se puede incrementar o decrementar no solo en valores tipo int, también es

posible realizar tales operaciones usando valores tipo float o double permitiendo el incremento o decremento

en cantidades decimales.

double p; for(p=0.75; p<=5; p+= 0.25) { printf(“p = %lf\n”, p);}

float n; for(n=1; n>= 0; n-=0.1) { printf(“n = %f\n”, n);}

Page 25: 1clase e12 estructurasderepeticionc

SENTENCIA FOR

Ejemplo1

Realice programa que muestre los N primeros factoriales

fact=1;for (i = 1; i <= N; i++) { fact=fact*i; printf("factorial de %d: %d\n",i,fact); }

for (i = 1,fact=1; i <= N; i++) { fact=fact*i; printf("factorial de %d: %d\n",i,fact); }

Page 26: 1clase e12 estructurasderepeticionc

SENTENCIA FOR

Ejemplo2

Realice programa que sume los N primeros naturales pares.

suma=0; for (i = 1; i <= N; i++) { if(i%2==0){ suma+=i; } } printf("La suma es: %d\n",suma);

Page 27: 1clase e12 estructurasderepeticionc

SENTENCIA FOR

Ejemplo3

Realice programa que muestre los 10 primeros impares naturales, en orden descendente.

for (i = MAX_NUM; i >= 0; i--) { if(i%2 != 0){ printf("numero par: %d\n",i); }}

Page 28: 1clase e12 estructurasderepeticionc

SENTENCIA DO-WHILE

Comparación while, for

for( VC; condición; INC){

instrucciones;}

InicializaciónVC;while (condición){ InstruccionesX; INC;}

whilefor

Page 29: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE Y FOR

Recomendaciones

While: El uso más frecuente es cuando la repetición no está controlada por contador; la condición precede a cada repetición del bucle.

For: Bucle de conteo, cuando el número de repeticiones se conoce por anticipado y puede ser controlado por un contador; la evaluación de la condición precede a la ejecución del cuerpo del bucle.

Page 30: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE Y FOR

Recomendaciones

En el ciclo for no es recomendable modificar el valor de cualquiera de las variables de la condición del bucle dentro del cuerpo del bucle, ya que se pueden producir resultados imprevistos.

int i,limite = 11;for (i = 0; i <= limite; i++){

printf ( "%d\n" , i ) ;Iimite++ ;

}

for (i = 0; i <= limite; i++){

print f ("%d\n",i);i--;

}

Page 31: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE Y FOR

Bucles infinitos

Aplicaciones en los que el número de repeticiones no se pueden determinar por anticipado. Interesa que comiencen pero eventualmente que no terminen.

for ( ; ; ){ Instrucciones; if(condiciónTerminación)

break;}

while(1){ Instrucciones; if (condiciónTerminación)

break;}

Page 32: 1clase e12 estructurasderepeticionc

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

4 Sentencia do-while

Page 33: 1clase e12 estructurasderepeticionc

SENTENCIA DO-WHILE

Sentencia do-while

1• Se ejecuta el cuerpo del bucle.

2• Se evalúa la condicion.

• Si se cumple la condición, entonces se repite la ejecución de sentencia.

3• Se evalúa la condicion.

• Si no se cumple la condición la estructura termina y da paso a la continuación del programa

Bucle condicional que se ejecuta al menos una vez.

*• Condiciones:

• Cuantitativas y Caulitativas

Page 34: 1clase e12 estructurasderepeticionc

SENTENCIA DO-WHILE

Sentencia do-while

CONDICIÓN

Cuerpo del bucle

Falso

verdadero

EJECUTAR

EVALUAR

verdadero

Falso

Fin del ciclo

Page 35: 1clase e12 estructurasderepeticionc

SENTENCIA DO-WHILE

Sintaxis

do { Instrucciones;} while (expresión);

Page 36: 1clase e12 estructurasderepeticionc

SENTENCIA DO-WHILE

Comparación while, do-while

CONDICIÓN

Cuerpo del bucle

Falso

verdadero

CONDICIÓN

Cuerpo del bucle

Falso

verdadero

while do-while

Page 37: 1clase e12 estructurasderepeticionc

SENTENCIA DO-WHILE

Comparación while, do-while

do { InstruccionesX;} while (expresión);

while (expresión) { InstruccionesX;}

while do-while

Page 38: 1clase e12 estructurasderepeticionc

SENTENCIA DO-WHILE

Ejemplo

Programa que imprime un mensaje “continua programa” hasta que se le ingrese un carácter de terminación 0. (Realicelo con while, luego con do-while y compare!!)

do{ printf("continuar programa\n"); printf("Ingrese 0 para salir: "); scanf("%d",&salir);}while (salir!=CAR_FIN);

Page 39: 1clase e12 estructurasderepeticionc

SENTENCIA WHILE Y FOR

Recomendaciones

do -while: El uso más frecuente es cuando la repetición no está controlada por contador; el cuerpo del ciclo precede a la condición.

Page 40: 1clase e12 estructurasderepeticionc

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

5 Instrucciones Especiales

Page 41: 1clase e12 estructurasderepeticionc

INTRUCCIONES ESPECIALES

Instrucción break

La sentencia break es utilizada como método de terminación TEMPRANA del bucle a la que pertenece.

Si mientras se ejecuta el cuerpo del bucle, se encuentra con la instrucción break, se terminará inmediatamente el ciclo.

Page 42: 1clase e12 estructurasderepeticionc

Falso

Verdadero

Cuerpo del bucle

SENTENCIA WHILE

Instrucción break

CONDICIÓNEVALUAR

Verdadero

EJECUTAR

Fin del ciclo

break;

Page 43: 1clase e12 estructurasderepeticionc

INTRUCCIONES ESPECIALES

Ejemplo

Realizar un programa que pida que se ingresen notas de N estudiantes, y que cuando halla una nota mayo que 3, muestre un mensaje que diga “Hay alguien que ganó”, y termine el programa inmediatamente.

Page 44: 1clase e12 estructurasderepeticionc

INTRUCCIONES ESPECIALES

Instrucción continue

La sentencia continue hace que la ejecución de un bucle vuelva inmediatamente a la cabecera del bucle.

Programa que muestra conteo hasta 10, se muestra el siguiente valor del conteo solo si se le ha ingresado el número 0

Page 45: 1clase e12 estructurasderepeticionc

INTRUCCIONES ESPECIALES

Instrucción continue

#include <stdio.h>#define MAX_CONT 10#define CAR_ESPECIAL 0int main(void){ int i, equiv=0; int mostrar; for (i = 1; i <= MAX_CONT; i++) { printf("Ingrese 0 si quiere ver el conteo:"); scanf("%d", &mostrar); if (mostrar!= CAR_ESPECIAL){ continue; } printf("El valor del conteo es: %d\n", i); } return 0;}

VC CONDICIÓN

EJECUTA

msjread

No se ingresó 0Volver al ciclo

INC

Se ingresó 0

msj conteo=2

1<=10 ?

i=i+1i=1+1i=22<=10 ? …11<=10 ?

Fin del ciclo

Page 46: 1clase e12 estructurasderepeticionc

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados6 Ciclos anidados

Page 47: 1clase e12 estructurasderepeticionc

Ciclos Anidados

Ciclos anidados

Se pueden anidar ciclos repetitivos. Útil para aplicaciones de matrices de mas de una dimensión.

for( i=0; i<LIM1; i++){ for( j=0; j<LIM2; j++)

{Instruciones1;

}}

Page 48: 1clase e12 estructurasderepeticionc

Ciclos Anidados

Ejemplo1

Realice un programa que muestre las primeras 5 potencias(Utilizando multiplicaciones) de los primeros 7 naturales.

Page 49: 1clase e12 estructurasderepeticionc

Ciclos Anidados

Ejercicio

Realice un programa que muestre la siguiente secuencia de números:112123123412345…

El usuario debe ingresar cual es el ultimo numero que se debe mostrar en un renglón.

Page 50: 1clase e12 estructurasderepeticionc

Bibliografía

• Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo3.

• H.M. Deitel, P.J. Deitel. Como programar en C y C++

• Google

Page 51: 1clase e12 estructurasderepeticionc

GRACIAS POR SU ATENCIÓN