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 (expresin_logica) ENTONCES
secuencia 1 | camino 1
SINO
Secuencia 2 | camino 2
FIN_SI

MIENTRAS(expresin_logica)HAGA
secuencia
FIN_MIENTRAS

PARA (VC = LI,LF,INC) HAGA


secuencia
FIN_PARA

if (expresin_logica) {
cdigo_secuencia1;
}
else {
cdigo_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 carcter: a, @,
1,
Tipo entero: 1, 2, 3, 4,
-8,

BUCLES EN C
Un ciclo (bucle) es una estructura
que permite la repeticin de una o
mas instrucciones un determinado
numero de veces.

condicin

cuerpo

Expresin
lgica
que
controla la secuencia de
repeticin. Normalmente, se
evala
antes
de
la
ejecucin 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
Variable de control: Variable
que representa la condicin del
bucle ya que su valor determina
si el bucle se repite o no. Esta
debe ser:
Inicializada.
Comprobada.
Actualizada.

condicin

cuerpo

En C existen
repetitivas:
while.
for.

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

estructuras

de

control

Inicializaci
n
Comproba
cin
Actualizaci
n

OPERADORES DE
INCREMENTO Y
DECREMENTO

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


abreviada
(--).
Operacin
sintaxi Significad
Comentario
s

Postincremento

i++

i=i+1

En una operacin de asignacin esta


operacin hace primero se realice la
asignacin y luego se incremente la
variable en 1.

Preincremento

++i

i=i+1

En una operacin de asignacin esta


operacin hace primero se realice la
el incremento de la variable en 1 y
luego se realice la asignacin.

Postdecremento

i--

i=i-1

En una operacin de asignacin esta


operacin hace primero se realice la
asignacin y luego se decremente en
1 la variable.

predecremento

--i

i=i-1

En una operacin de asignacin esta

// Supngase
k=i++; // k
k=++i; // k
k=i--; // k
k=--i; // k

que inicialmente i = 3
operacin hace primero se realice la
= 3, i = 4
= 5, i = 5 disminucin de la variable en 1 y
= 5, i = 4 luego se realice la asignacin.
= 3, i = 3

CICLO WHILE EN C
Funcionamiento:
1.Se evala la condicin del bucle.
2.Si la condicin 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 condicin del bucle es falsa, el
control se transfiere a la secuencia
siguiente al bucle.
Sintaxis:
MIENTRAS(expresin_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
nmeros 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
nmeros 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 comnmente usado para
controlar la iteracin de un bucle.
while (i++ < N) {
instruccin_1;
. . .
instruccin_N;
}

ejemplo2.c (anteriormente
visto).

Un punto y coma (;) inmediatamente despus de la instruccin 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 instruccin. Por
claridad es recomendable usar llaves as el cuerpo del ciclo tenga solo una instruccin.
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 condicin nunca se hace falsa (falta de
actualizacin de la variable de control).
while (1) {
printf(fuck! \n);
}

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

Para romper la ejecucin


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
condicin de repeticin 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
inicializacin,
prueba y
actualizacin.

Qu principios
considerar
cuando se
disean 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 condicin de control del bucle sea verdadera:
a. Realizar las sentencias del cuerpo del bucle.
b. Cuando se produzca la condicin de salida se cambia el valor de la variable
indicador o bandera, con el objeto de que entonces la condicin de control se haga
falsa y, por lo tanto el bucle se termina.
3.Ejecucin 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 ejecucin
del bucle. En otras palabras usar una bandera.

Ver ejemplo10.c

RUPTURA DE CICLOS WHILE


La sentencia break es comnmente para realizar la terminacin 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 difcil la


comprensin del comportamiento del programa.

int clave = -9;


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

También podría gustarte