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 en C.
• Principios a considerar cuando
se usan bucles.
• Formas de controlar bucles
while.
• Ruptura de ciclos while
ESTRUCTURAS EN C
SI (expresión_logica) ENTONCES
secuencia 1 | camino 1
SINO
Secuencia 2 | camino 2
FIN_SI
MIENTRAS(expresión_logica)HAGA
secuencia
FIN_MIENTRAS
PARA (VC = LI,LF,INC) HAGA
secuencia
FIN_PARA
if (expresión_logica) {
código_secuencia1;
}
else {
código_secuencia2;
}
while (expresion_logica) {
secuencia
}
for(expre1;expre2;expre3) {
secuencia;
}
CONDICIONALES EN C
if (condicion) {
instrucciones_caso_verdadero
}
else {
instrucciones_caso_falso
}
(A==B)&&(C!=D)
(edad>=18)&&(edad<=25)
(A<100)||(A>1000)
!(digito==1)
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
}
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;
}
No es necesario usar la palabra
clave break en el default
Variable que puede tomar
determinados valores ordinales.
Posibles valores que puede
tomar el selector:
• Tipo carácter: ‘a’, [email protected], ‘1’, …
• Tipo entero: 1, 2, 3, 4, -8, …
BUCLES EN C
Un 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.
BUCLES EN C
condición
cuerpo
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.
contador = 0;
while (contador < n){
printf(*);
contador = contador + 1;
}
En C existen 3 estructuras de control repetitivas:
• while.
• for.
• do while.
Inicialización
Comprobación
Actualización
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
k=i++; // k
k=++i; // k
k=i--; // k
k=--i; // k
que inicialmente i = 3
= 3, i = 4
= 5, i = 5
= 5, i = 4
= 3, i = 3
CICLO WHILE EN C
Funcionamiento:
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.
Sintaxis:
MIENTRAS(expresión_logica)HAGA
secuencia
FIN_MIENTRAS
while (expresion_logica) {
secuencia
}
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
}
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
}
CICLO WHILE EN C
Algunas 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).
• Un punto y coma (;) inmediatamente después de la instrucción while hace que el ciclo no
tenga cuerpo.
int i = 0, N = 10;
while (i++ < N);
printf(“Hola mundo \n”);
!=
int i = 0, N = 10;
while (i++ < N)
printf(“Hola mundo \n”);
Ver ejemplo3.c
CICLO WHILE EN C
Algunas 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
CICLO WHILE EN C
• 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 (1) {
printf(“fuck! \n”);
}
while (i > 0) {
printf(“fuck! \n”);
}
Para romper la ejecución de un
programa presione las teclas
CTRL + C
while (4>3) {
printf(“fuck! \n”);
}
Ver ejemplo5.c
CICLO WHILE EN C
• 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).
while (0) {
printf(“mamolas! \n”);
}
Ver ejemplo6.c
i = -1;
while (i > 0) {
printf(“mamolas! \n”);
}
while (4<3) {
printf(“mamolas! \n”);
}
PRINCIPIOS A CONSIDERAR CUANDO
SE USAN BUCLES C
Algunas preguntas de
utilidad:
• ¿Qué es lo que debe
contener el cuerpo del
bucle?
• Cuantas veces se
itera el bucle.
Es importante analizar
los requisitos del
nuevo bucle, pues se
debe determinar su
inicialización, prueba y
actualización.
¿Qué principios
considerar cuando se
diseñan bucles?
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
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
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
RUPTURA DE CICLOS WHILE
La 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);
}
Descargar

INTRODUCCION AL LENGUAJE C