21
CICLOS EN C

CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

Embed Size (px)

Citation preview

Page 1: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLOS EN C

Page 2: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

MENU DEL DIA• Repaso clase anterior.

• Estructuras en C.• Condicionales en C.

• Bucles en C.• Operadores de incremento y

decremento.• Ciclo while en C.• Principios a considerar cuando

se usan bucles.• Formas de controlar bucles

while.• Ruptura de ciclos while

Page 3: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

ESTRUCTURAS EN C

SI (expresión_logica) ENTONCES secuencia 1 | camino 1SINO Secuencia 2 | camino 2FIN_SI

if (expresión_logica) { código_secuencia1;}else { código_secuencia2;}

MIENTRAS(expresión_logica)HAGA secuencia FIN_MIENTRAS

while (expresion_logica) { secuencia}

PARA (VC = LI,LF,INC) HAGA secuencia FIN_PARA

for(expre1;expre2;expre3) { secuencia;}

Page 4: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CONDICIONALES EN C

if (condicion) { instrucciones_caso_verdadero}else { instrucciones_caso_falso}

if(condicion1) { instrucciones_condicion_1_verdadero}else if(condicion2){ instrucciones_condicion_2_verdadero} . . .else if(condicion_N) { instrucciones_condicion_N_verdadero}else { instrucciones_caso_falso} (A==B)&&(C!=D)

(edad>=18)&&(edad<=25)(A<100)||(A>1000)!(digito==1)

Page 5: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CONDICIONALES EN C

switch(selector) { case valor_1: instrucciones_1; break; case valor_2: instrucciones_2; break; . . . case valor_N: instrucciones_N; break; default: instrucciones_default; break;}

Variable que puede tomar determinados valores ordinales.

Posibles valores que puede tomar el selector:• Tipo carácter: ‘a’, ‘@’, ‘1’, …• Tipo entero: 1, 2, 3, 4, -8, …

No es necesario usar la palabra clave break en el default

Page 6: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

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

condición

cuerpo

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 asignacion.• Funciones.

Page 7: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

condición

cuerpo

BUCLES EN CVariable 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.

En C existen 3 estructuras de control repetitivas: • while.• for.• do while.

contador = 0;while (contador < n){ printf(*); contador = contador + 1;}

Inicialización

Comprobación

Actualización

Page 8: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

OPERADORES DE INCREMENTO Y DECREMENTO

C ofrece operadores de incremento (++) y decremento que soporta sintaxis abreviada (--).

Operación sintaxis Significado Comentario

Postincremento i++ i = i + 1 En una operación de asignación esta operación hace primero se realice la asignación y luego se incremente la variable en 1.

Preincremento ++i i = i + 1 En una operación de asignación esta operación hace primero se realice la el incremento de la variable en 1 y luego se realice la asignación.

Postdecremento i-- i = i - 1 En una operación de asignación esta operación hace primero se realice la asignación y luego se decremente en 1 la variable.

predecremento --i i = i - 1 En una operación de asignación esta operación hace primero se realice la disminución de la variable en 1 y luego se realice la asignación.

// Supóngase que inicialmente i = 3k=i++; // k = 3, i = 4k=++i; // k = 5, i = 5k=i--; // k = 5, i = 4k=--i; // k = 3, i = 3

Page 9: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLO WHILE EN CFuncionamiento:1.Se evalúa la condición del bucle.2.Si la condición del bucle es verdadera (distinto de 0):

a. Se ejecutan las sentencias que se hallan dentro del cuerpo del bucle.

b. Vuelve el control al paso 1.3.Si la condición del bucle es falsa, el control se transfiere a la secuencia siguiente al bucle.

MIENTRAS(expresión_logica)HAGA secuencia FIN_MIENTRAS

while (expresion_logica) { secuencia}

Sintaxis:

Page 10: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLO WHILE EN C

Ejemplo 1 (Uso sencillo de un bucle while):Realizar un programa que imprima los números desde el 1 hasta el 5.

while (expresion_logica) { secuencia}

Page 11: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLO WHILE EN C

Ejemplo 2 (Ejemplo anterior modificado usando un operador de preincremento):Realizar un programa que imprima los números desde el 1 hasta el 5.

while (expresion_logica) { secuencia}

Page 12: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLO WHILE EN CAlgunas anotaciones sobre los ciclos while.• El operador de incremento o decremento es comúnmente usado para controlar la iteración de un bucle.

while (i++ < N) { instrucción_1; . . . instrucción_N;}

ejemplo2.c (anteriormente visto).

int i = 0, N = 10; while (i++ < N); printf(“Hola mundo \n”);

int i = 0, N = 10; while (i++ < N) printf(“Hola mundo \n”);

• Un punto y coma (;) inmediatamente después de la instrucción while hace que el ciclo no tenga cuerpo.

!=

Ver ejemplo3.c

Page 13: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLO WHILE EN CAlgunas anotaciones sobre los ciclos while.• Cuando no se usan llaves el cuerpo del bucle solo tendrá una sola instrucción. Por claridad es recomendable usar llaves así el cuerpo del ciclo tenga solo una instrucción.

int i = 0, N = 10; while (i++ < N) printf(“Hola mundo \n”); printf(“Adios mundo cruel \n”);

int i = 0, N = 10; while (i++ < N) { printf(“Hola mundo \n”); } printf(“Adios mundo cruel \n”);

==

Ver ejemplo4.c

Page 14: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLO WHILE EN C

while (1) { printf(“fuck! \n”);}

while (4>3) { printf(“fuck! \n”);}

• Un bucle while se puede ejecutar siempre si su condición nunca se hace falsa (falta de actualización de la variable de control).

while (i > 0) { printf(“fuck! \n”);}

Para romper la ejecución de un programa presione las teclasCTRL + C

Ver ejemplo5.c

Page 15: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

CICLO WHILE EN C

while (0) { printf(“mamolas! \n”);}

while (4<3) { printf(“mamolas! \n”);}

• Un bucle no se ejecuta nunca si cuando se alcanza el while por primera vez la prueba o condición de repetición no se cumple, es decir si esta es falsa (0 en C).

i = -1;while (i > 0) { printf(“mamolas! \n”);}

Ver ejemplo6.c

Page 16: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

PRINCIPIOS A CONSIDERAR CUANDO SE USAN BUCLES C

¿Qué principios considerar cuando se diseñan bucles?

Es importante analizar los requisitos del nuevo bucle, pues se debe determinar su inicialización, prueba y actualización.

Algunas preguntas de utilidad: • ¿Qué es lo que debe contener el cuerpo del bucle?• Cuantas veces se itera el bucle.

Page 17: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

FORMAS DE CONTROLAR BUCLES WHILE (1)

• Bucles controlados por centinelas: Normalmente cuando no se conocen con exactitud cuantas veces se ejecutara un ciclo se hace necesario el uso de una valor centinela.• Un valor centinela es un valor que no se procesa como dato y es empleado para terminar el bucle.

Ver ejemplo7.c

Page 18: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

FORMAS DE CONTROLAR BUCLES WHILE (2)

• Bucles controlados por indicadores (banderas): Una bandera es una variable entera que puede tomar dos posibles valores (0: falso o 1: verdadero). Un bucle controlado por bandera-indicador se ejecuta hasta que se produce un suceso anticipado y se cambia el valor del indicador.

Sigue el siguiente modelo:1.Establecer el indicador de control del bucle a falso (0) o verdadero (1) con el fin de que se ejecute el while la primera vez (Normalmente se suele inicializar a falso).2.Mientas la condición de control del bucle sea verdadera:

a. Realizar las sentencias del cuerpo del bucle.b. Cuando se produzca la condición de salida se cambia el valor de la variable indicador o bandera, con el

objeto de que entonces la condición de control se haga falsa y, por lo tanto el bucle se termina.3.Ejecución de las sentencias siguientes al bucle.

Ver ejemplo8.c

Page 19: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

FORMAS DE CONTROLAR BUCLES WHILE (3)

• Para evitar el problema de asociado al valor del dato centinela se puede hacer uso de otra variable (que no tenga que ver nada con los datos a procesar) para controlar la ejecución del bucle. En otras palabras usar una bandera.

Ver ejemplo10.c

Page 20: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while

RUPTURA DE CICLOS WHILELa sentencia break es comúnmente para realizar la terminación anormal de un ciclo.

while (condicion) { if(condicion2) { break; }}

int clave = -9;int entrada;while (scanf(“%d”,&entrada)) { if(entrada != clave) printf(“%d”,entrada); else break;}

El uso de un break en un bucle no es muy recomendable ya que puede hacer difícil la comprensión del comportamiento del programa.

int clave = -9;int entrada;while (scanf(“%d”,&entrada) && (entrada != clave)) { printf(“%d”,entrada);}

Page 21: CICLOS EN C. MENU DEL DIA Repaso clase anterior. Estructuras en C. Condicionales en C. Bucles en C. Operadores de incremento y decremento. Ciclo while