You are on page 1of 35

Delcaracin if

Syntax

Declaracin if (expresin)
expresin

es evaluada para declaraciones TRUE (0)

o FALSE (=0)
Si

TRUE, entonces declaracin es ejecutada

Note Siempre que usted vea statement en una gua de sintaxis, puede ser substituido por una declaracin compuesta (del bloque). Recuerde: los espacios y las nuevas lneas no son significativos.

if (expression) { statement1 statement2 }

Declaracin if
Syntax

if (expression) statement

START
expression 0
TRUE

expression
expression = 0
FALSE

statement

END

Declaracin if
Example

int x = 5;
if (x) Si x es TRUE (no-cero) { printf("x = %d\n", x); entonces imprime el valor de x. } while (1); }
Que
Si

permite imprimir si x = 5? Si x = 0?

x = -82? Si x = 65536?

Declaracin if
if

Testeando para TRUE

(x) vs. if (x == 1) if (x) necesita solamente testear para no igual a 0 if (x == 1) necesita probar para la igualdad con 1
Recuerde:

TRUE es definido como no-cero, FALSE es definido como cero


Ejemplo: if (x ==1)

Ejemplo: if (x)

if (x)
8: 011B4 011B6 E208C2 320004 if (x) cp0.w 0x08c2 bra z, 0x0011c0

if (x == 1)
11: 011C0 011C2 011C4
804610 500FE1 3A0004

if (x == 1) mov.w 0x08c2,0x0000 sub.w 0x0000,#1,[0x001e] bra nz, 0x0011ce

Anidando Declaraciones if
Example

int power = 10; float band = 2.0; float frequency = 146.52; if (power > 5) { if (band == 2.0) { if ((frequency > 144) && (frequency < 148)) { printf("Yes, it's all true!\n"); } } }

Declaracin if-else
Syntax

if (expression) sentencia1 else entencia2


expression

es evaluada por TRUE (0) o FALSE

(=0)
Si Si

TRUE, entonces sentencia1 es ejecutada FALSE, entonces sentencia2 es ejecutada

Declaracin if-else
Sintaxis

if (expression) statement1 else statement2


START

expresion 0
TRUE

expression

statement1

expresion = 0
statement2

FALSE

END

Declaracin if-else
Example

float frequency = 146.52;

//frequency in MHz

if ((frequency > 144.0) && (frequency < 148.0)) { printf("You're on the 2 meter band\n"); } else { printf("You're not on the 2 meter band\n"); } }

if-else if
Syntax

if (expression1) sentencia1 else if (expression2) sentencia2 else sentencia3


expression1

es evaluada para TRUE (0) o

FALSE (=0)
Si Si

TRUE, entonces sentencia1 is ejecutada FALSE, entonces expresion2 es evaluada

Si
Si

TRUE, entonces sentencia2 es ejecutada


FALSE, entonces sentencia3 is ejecutada

Syntax

if ( expresion sentencia1 1)Flujo Diagrama de else if (expresion2) sentencia2 else sentencia3


START
TRUE
expression1

if-else if Sentencia

statement1

FALSE
expression2

TRUE

statement2

FALSE
statement3

END

Example

if-else if
printf("You're on the 2 meter band\n");

if ((freq > 144) && (freq < 148))

else if ((freq > 222) && (freq < 225)) printf("You're on the 1.25 meter band\n"); else if ((freq > 420) && (freq < 450)) printf("You're on the 70 centimeter band\n"); else printf("You're somewhere else\n");

Sintaxis

Sentencias switch

switch (expresion) { case const-expr1: sentencia1 case const-exprn: sentencian default: sentencian+1

es evaluada y testeada para igualar con la const-expr en cada clusula case La sentencia en la clausula igualada case es ejecutada
expresion

START

Sentencia switch
statement1

Const-expr1= YES expression?


NO

Const-expr2= expression?
NO

YES

statement2

Note que cada sentencia fracasa a la siguiente Este es el comportamiento por defecto de la sentencia switch

Const-exprn= YES expression?


NO

statementn

statementn+1

END

Sentencia switch
START

Diagrama de Flujo (modificado) Const-expr = YES statement


expression?
NO
1

break;

Const-expr2= YES expression?


NO

statement2 break;

Const-exprn= YES expression?


NO

statementn break;

statementn+1

Adicionando una sentencia break a cada bloque de sentencias permite eliminar fracasos, permitiendo solamente un caso de bloque de clausulas de la sentencias que se ejecutar

END

Sentencia switch
switch Ejemplo 1

switch(channel) { case 2: printf("WBBM Chicago\n"); break; case 3: printf("DVD Player\n"); break; case 4: printf("WTMJ Milwaukee\n"); break; case 5: printf("WMAQ Chicago\n"); break; case 6: printf("WITI Milwaukee\n"); break; case 7: printf("WLS Chicago\n"); break; case 9: printf("WGN Chicago\n"); break; case 10: printf("WMVS Milwaukee\n"); break; case 11: printf("WTTW Chicago\n"); break; case 12: printf("WISN Milwaukee\n"); break; default: printf("No Signal Available\n"); }

Sentencia switch
switch Ejemplo 2

switch(letter) { case 'a': printf("Letter 'a' found.\n"); break; case 'b': printf("Letter 'b' found.\n"); break; case 'c': printf("Letter 'c' found.\n"); break; default: printf("Letter not in list.\n"); }

Sentencia switch
switch Ejemplo 3

switch(channel) Apply this case to channel 4, 5, { 6, and 7 case 4 ... 7: printf("VHF Station\n"); break; case 9 ... 12: printf("VHF Station\n"); break; case 3: Case 3 and 8 are allowed to fall case 8: through to case 13 case 13: printf("Weak Signal\n"); break; case 14 ... 69: printf("UHF Station\n"); break; default: printf("No Signal Available\n"); }

Syntax

Lazos for

for (expresion1; expresion2; expresion3) sentencia


inicializa una variable de cuenta del lazo en el comienzo del lazo (e.g. i = 0) expression2 es la condicin de testeo el lazo continua siempre que esta sea true (e.g. i <= 10) expression3 es ejecutada al final de cada iteracin usualmente para modificar la variable de conteo del lazo (e.g. i++)
expression1

Lazos for
Syntax

Diagrama de Flujo

for (expresion1; expresion2; expresion3) sentencia


Inicializqa la variable de conteo

START
expression1 expression3
Modifica la variable del loop

i = 0

i++

Test de la variable del loop

i < n

TRUE

expression2?
FALSE

statement

END

Example (Code Fragment)

Lazos for

int i; for (i = 0; i < 5; i++) { printf("Loop iteration #%d\n", i); }


Expected Output: Loop Loop Loop Loop Loop iteration iteration iteration iteration iteration 0 1 2 3 4

Lazos for
Lo

que sea deen las tres expresiones puede ser blanquedo (los puntos y comas deben permanecer) Si expresion1 o expresion3 fallan , sus acciones simplemente desaparecen If expression2 falla, esta siempre se asume como true
Loops infinitos Un loop for sin cualquier expresin permite la ejecucin indefinida (puede dejar el lazo va la sentencia break )

Note

for ( ; ; ) { }

Syntax

Lazo while
while (expresion) sentencia

Si

expresion es true, sentencia puede ser ejecutada y entonces expresion puede ser re-evaluada determinar puede o no ejecutarse la sentencia otra vez Es posible que sentencia no se ejecute nunca si expresion es falsa cuando esta es evaluada primero

Lazos While
Diagrama de flujo
Syntax

while (expresion) sentencia


START

TRUE

expression?
FALSE

statement

END

Lazos While
Ejemplo
Ejemplo
Contador del Loop inicializado fuera del loop Condicin de chekeo inicial al iniciar el loop

int i = 0;

while (i < 5) { printf("Loop iteration #%d\n", i++); }


Salida esperada: Loop Loop Loop Loop Loop iteration iteration iteration iteration iteration 0 1 2 3 4

Contador del loop incrementa manualmente fuera del lazo

Lazos While
La

expresion siempre debe estar all, es la diferencia con un loop for while se usa mas a menudo que for cuando se implementan loops infinitos, aunque es solamente una cuestin de gusto personal Frecuentemente usada para un loop min en el programa
Nota
Infinitos Loops Un loop while con expression = 1 se ejecuta indefinidamente (se ouede abandonar el loop via sentenciabreak )

while (1) { }

Syntax

Loop do-while
do statement while (expression);

es ejecutada y entonces la expresion es evaluada para determinar cuando o no se ejecuta sentencia statement se ejecutar siempre por lo menos una vez, incluso si la expresin es falsa cuando el lazo comienza
sentencia

Loop do-while
Diagrama de flujo
Syntax

do sentencia while (expression);


START
statement
TRUE

expression?
FALSE

END

Loop do-while Loop


Ejemplo
Example (Code Fragment)

int i = 0; do {

Inicializa el contador del loop fuera del loop

Contador del loop es incrementado manualmente fura del loop

printf("Loop iteration #%d\n", i++); } while (i < 5); Condicion checkeda


Salida esperada: Loop Loop Loop Loop Loop iteration iteration iteration iteration iteration
al final de la iteracin del loop

0 1 2 3 4

Syntax

Sentencia break
break;

Causa

la inmediata terminacin de un loop incluso si la condicin de la salida no se ha cumplido

Existe

una sentencia switch de modo que la ejecucin no fracase a despus clausula case

Sentencia break
Diagrama de flujo con un loop while
Sintaxis

break;
START

TRUE
expression? statement break statement

FALSE

END

Sentencia break
Ejemplo
Ejemplo

int i = 0; while (i < 10) Existe en el loop si i = 5. { Iteraciones 6-9 no son ejecutadas. i++; if (i == 5) break; printf("Loop iteration #%d\n", i); }
Salida esperada: Loop Loop Loop Loop iteration iteration iteration iteration 1 2 3 4

Syntax

Sentencia continue
continue;

Hace

al programa saltar de nuevo al principio de un lazo sin la realizacin de la iteracin actual

Sentencia continue
Syntax

Diagrama de flujo con un loop while

continue;
START

TRUE
expression? statement continue statement

FALSE

END

Sentencia continue
Ejemplo

Ejemplo int i = 0; while (i < 6) Salta la iteracin remanente cuando { i = 2. La iteracin 2 puede no i++; ejecutarse. if (i == 2) continue; printf("Loop iteration #%d\n", i); }
Resultado esperado:

Loop Loop Loop Loop

iteration iteration iteration iteration

1 3 4 5

Iteracin 2 No es ejecutada