Está en la página 1de 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 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 if (expresión_logica) {


secuencia 1 | camino 1 código_secuencia1;
SINO }
Secuencia 2 | camino 2 else {
FIN_SI código_secuencia2;
}

MIENTRAS(expresión_logica)HAGA while (expresion_logica) {


secuencia secuencia
FIN_MIENTRAS }

PARA (VC = LI,LF,INC) HAGA for(expre1;expre2;expre3) {


secuencia secuencia;
FIN_PARA }
CONDICIONALES EN C

if (condicion) {
instrucciones_caso_verdadero if(condicion1) {
} instrucciones_condicion_1_verdadero
else { }
instrucciones_caso_falso 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)
CONDICIONALES EN C

switch(selector) {
case valor_1: Variable que puede tomar
instrucciones_1; determinados valores
break; ordinales.
case valor_2:
instrucciones_2;
break;
. . . Posibles valores que puede
case valor_N: tomar el selector:
instrucciones_N; • Tipo carácter: ‘a’, ‘@’, ‘1’,
break; …
default:
instrucciones_default;
• Tipo entero: 1, 2, 3, 4, -8, …
break;
}

No es necesario usar la
palabra clave break en el
default
BUCLES EN C

Un ciclo (bucle) es una estructura que


permite la repetición de una o mas
instrucciones un determinado numero de
veces.

Expresión lógica que controla


la secuencia de repetición.
condición Normalmente, se evalúa antes
de la ejecución del cuerpo del
bucle.

Conjunto de instrucciones
cuerpo
(asociadas al problema) que
se ejecutan dentro del bucle:
• Estructuras condicionales.
• Instrucciones I/O.
• Otros bucles.
• Instrucciones de asignacion.
• Funciones.
BUCLES EN C
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.
condición • Actualizada.

cuerpo Inicializaci
contador = 0;
ón
while (contador < n){ Comprobaci
printf(*);
ón
contador = contador + 1; Actualizació
}
n

En C existen 3 estructuras de control repetitivas:


• while.
• for.
• do 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 = 3
k=i++; // k = 3, i = 4
k=++i; // k = 5, i = 5
k=i--; // k = 5, i = 4
k=--i; // k = 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 (expresion_logica) {
while): secuencia
Realizar un programa que imprima los }
números desde el 1 hasta el 5.
CICLO WHILE EN C

Ejemplo 2 (Ejemplo anterior


while (expresion_logica) {
modificado usando un operador de secuencia
preincremento): }
Realizar un programa que imprima los
números desde el 1 hasta el 5.
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) { ejemplo2.c (anteriormente
instrucción_1; visto).
. . .
instrucción_N;
}

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


ciclo no tenga cuerpo.
Ver ejemplo3.c
int i = 0, N = 10;
while (i++ < N);
printf(“Hola mundo \n”);

!=
int i = 0, N = 10;
while (i++ < N)
printf(“Hola mundo \n”);
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)
Ver ejemplo4.c
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”);
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) { while (i > 0) { while (4>3) {


printf(“fuck! \n”); printf(“fuck! \n”); printf(“fuck! \n”);
} } }

Para romper la ejecución de


un programa presione las Ver ejemplo5.c
teclas
CTRL + 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) { i = -1; while (4<3) {


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

Ver ejemplo6.c
PRINCIPIOS A CONSIDERAR
CUANDO SE USAN BUCLES C
Es importante
analizar los
requisitos del
Algunas preguntas nuevo bucle, pues ¿Qué principios
de utilidad: se debe considerar cuando
• ¿Qué es lo que determinar su se diseñan
debe contener el inicialización, bucles?
cuerpo del bucle? prueba y
• Cuantas veces se actualización.
itera el bucle.
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.
int clave = -9;
int entrada;
while (condicion) {
while (scanf(“%d”,&entrada)) {
if(condicion2) {
if(entrada != clave)
break;
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);
}

También podría gustarte