1clase e12 estructurasderepeticionc

Post on 29-Jun-2015

1036 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

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

INFORMATICA I

2011/1 - CLASE 12

Estructuras de Repetición en C

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

1 Introducción

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

Introducción

Introducción

En C existen tres estructuras de control repetitivas:

MientrasParaHaga-mientras

Pseudocódigo

whilefordo-while

Lenguaje C

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

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

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.

Introducción

Introducción

1• El cuerpo del ciclo.

2• Las sentencias de inicialización.

3• Las condiciones para la terminación

del bucle.

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

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

2 Sentencia while

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

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

SENTENCIA WHILE

Sintaxis

Mientras (condición) hagaInstrucciones

fin_mientras

while (condición){Instrucciones;

}

Pseudocódigo

Lenguaje C

(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

(Condición)

SENTENCIA WHILE

Sentencia while

Cuerpo

Fin

while (contador < n) {

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

}

Inicializacióncontador = 0;

Comprobación

Actualización

Falso

Verdadero

Cuerpo del bucle

SENTENCIA WHILE

Sentencia while

CONDICIÓNEVALUAR

Verdadero

EJECUTAR

Falso

Fin del ciclo

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++;}

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);}

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

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

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

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

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

(Condición)

SENTENCIA FOR

Sentencia for

Cuerpo

Fin

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

<Instrucciones>; ...

}

InicializaciónComprobación

Actualización

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);}

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); }

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);

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); }}

SENTENCIA DO-WHILE

Comparación while, for

for( VC; condición; INC){

instrucciones;}

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

whilefor

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.

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--;

}

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;}

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

4 Sentencia do-while

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

SENTENCIA DO-WHILE

Sentencia do-while

CONDICIÓN

Cuerpo del bucle

Falso

verdadero

EJECUTAR

EVALUAR

verdadero

Falso

Fin del ciclo

SENTENCIA DO-WHILE

Sintaxis

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

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

SENTENCIA DO-WHILE

Comparación while, do-while

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

while (expresión) { InstruccionesX;}

while do-while

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);

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.

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados

5 Instrucciones Especiales

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.

Falso

Verdadero

Cuerpo del bucle

SENTENCIA WHILE

Instrucción break

CONDICIÓNEVALUAR

Verdadero

EJECUTAR

Fin del ciclo

break;

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.

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

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

AGENDA1 Introducción

2 Sentencia while

3 Sentencia for

4 Sentencia do-while

5 Instrucciones Especiales

6 Ciclos anidados6 Ciclos anidados

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;

}}

Ciclos Anidados

Ejemplo1

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

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.

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

GRACIAS POR SU ATENCIÓN

top related