Diapositiva 1

Anuncio
CONTROL
DE FLUJO
Lenguajes de programación
LPSI
EUI
UPM
CONDICIONALES - IF
if (cond)
sent;
if (cond)
sent 1;
else
sent 2;
Lenguajes de programación
LPSI
EUI
UPM
if (cond1)
sent 1;
else
if (cond2);
……….
else
sent n;
if (i > 0)
printf (“la vble i es positiva\n”);
if (i > 0)
printf (“la vble i es positiva\n”);
else
if (i < 0)
printf (“la vble i es negativa\n”);
else
printf (“la vble i es 0\n”);
Lenguajes de programación
LPSI
EUI
UPM
¡cuidado!
int i = 5;
if (i < 0) ;
printf(“El valor de i es negativo.\n”);
¡¡¡FALSO!!!
Lenguajes de programación
LPSI
EUI
UPM
int i = 0;
if (i = 0)
printf (“Resultado nulo.\n”);
else
printf (“Resultado no nulo.\n”);
¡¡¡ ERROR !!!
Resultado no nulo.
Lenguajes de programación
LPSI
EUI
UPM
• Solución:
if (0 == i)
printf (“Resultado nulo.\n”);
else
printf (“Resultado no nulo.\n”);
Lenguajes de programación
LPSI
EUI
UPM
int i = 100;
if (i > 0)
if (i > 1000)
printf (“Demasiado grande.\n”);
else
printf (“Razonable.\”);
else
printf (“Negativo.\n”);
Lenguajes de programación
LPSI
EUI
UPM
int i = -46;
if (i > 0)
{ if (i > 1000)
printf (“Demasiado grande.\n”);
}
else
printf (“Negativo.\n”);
Lenguajes de programación
LPSI
EUI
UPM
CONDICIONAL - SWITCH
switch (expr entera)
{ case valor 1 : sent 1;
case valor 2 : sent 2;
………………
case valor n : sent n;
[default : sent n+1;]
}
Lenguajes de programación
LPSI
EUI
UPM
switch (dia)
{ case 1: printf (“Lunes\n”);
case 2: printf (“Martes\n”);
case 3: printf (“Miércoles\n”);
case 4: printf (“Jueves\n”);
case 5: printf (“Viernes\n”);
case 6: printf (“Sábado\n”);
case 7: printf (“Domingo\n”);
default: printf (“Día erróneo\n”);
}
Lenguajes de programación
LPSI
EUI
UPM
Para dia = 4
Jueves
Viernes
Sábado
Domingo
Día erróneo
Solución: ruptura de flujo
sentencia break
switch (dia)
{ case 1: printf (“Lunes\n”);
break;
case 2: printf (“Martes\n”);
break;
………………………
case 7: printf (“Domingo\n”);
break;
default: printf (“Día erróneo\n”);
}
Lenguajes de programación
LPSI
EUI
UPM
Para dia = 4
Jueves
char c;
………..
switch (c)
{ case 0:
case 1:
…..
case 9: printf (“El carácter es un dígito.\n”);
break;
default: printf (“No es dígito.\n”);
}
Lenguajes de programación
LPSI
EUI
UPM
printf (“On the “);
switch (i)
{ case 1: printf (“1st ”); break;
case 2: printf (“2nd ”); break;
case 3: printf (“3rd ”); break;
default: printf (“%dth “);
}
printf (“day of Christmas my true love sent to me “);
switch (i)
{ case 12: printf (“twelve lords a leaping, ”);
case 11: printf (“eleven ladies dancing, ”);
case 10: printf (“ten pipers piping, ”);
case 9: printf (“nine drummers drumming, ”);
case 8: printf (“eight maids a milking, ”);
case 7: printf (“seven swams a swimming, ”);
case 6: printf (“six geese a laying, ”);
case 5: printf (“five gold rings, ”);
case 4: printf (“four calling birds, ”);
case 3: printf (“three French hens, ”);
case 2: printf (“two turtle doves and , ”);
case 1: printf (“a partridge in a pear tree.\n ”);
}
Lenguajes de programación
LPSI
EUI
UPM
BUCLES - WHILE
while (cond)
sent;
int i = 5;
while (i > 0)
while (i)
{ printf (“i = %d\n”, i);
printf (“i = %d\n”, i--);
i--;
}
Lenguajes de programación
LPSI
EUI
UPM
int x = 0;
while (++x < 10)
printf (“%i ”, x);
int x = 0;
while (++x < 10);
printf (“%i ”, x);
int x = 0;
while (++x)
printf (“%i ”, x);
Lenguajes de programación
LPSI
EUI
UPM
int x = 0;
while ()
printf (“%i ”, x);
while ();
while (0)
printf (“¿Qué pasa aquí?”);
Lenguajes de programación
LPSI
EUI
UPM
BUCLES - DO WHILE
• Se garantiza, al menos, un paso por el
cuerpo del bucle
do
sent;
while (cond);
Lenguajes de programación
LPSI
EUI
UPM
int j = 10;
do
printf (“%i\n”, j--);
while (j);
printf (“¡¡¡Ignición!!!)
x = 0;
do
printf (“%d “, x);
while (++x <= 10);
x = 0;
do
{ printf (“%d “, x);
x++;
} while (x <= 10);
Lenguajes de programación
LPSI
EUI
UPM
BUCLES - FOR
for (inicialización; cond; actualización)
sentencia;
• Todas las partes son opcionales
• Los ‘;’ son necesarios, aunque no estén el
resto de las partes
Lenguajes de programación
LPSI
EUI
UPM
int j;
for (j = 5; j; j--)
printf (“j = %i\n”, j);
for (j = 5; j; j--)
{ printf (“j = %i ”, j);
printf (“%s\n”, j % 2 ? “es impar” : “es par”);
double angulo;
for (angulo = 0.0; angulo < 3.1416 ; angulo += 0.2)
printf (“seno de %f es %f\n”, angulo, sin(angulo));
Lenguajes de programación
LPSI
EUI
UPM
for ( ; ; ) ;
for (; i; );
for (; i < 10; );
for (i = 0, j = 50; i < j; i++, j--)
printf (“Vamos que llegas…”)
Lenguajes de programación
LPSI
EUI
UPM
EJERCICIOS
• Escribir un programa que lea dígitos entre el
1 y el 9 y los imprima como números
romanos (0 para terminar).
• Escribir un programa que lea un nº real y
otro entero, entre 0 y 15, e imprima el
resultado de elevar el primero al segundo.
• Escribir un programa que imprima un
cuadrado de lado n, siendo n un valor entre
2 y 40, dibujando sólo el contorno, es decir,
la parte interior del cuadrado deberá estar
vacía.
Lenguajes de programación
LPSI
EUI
UPM
• Escribir un programa que imprima el
mismo cuadrado del ejercicio anterior pero
utilizando para dibujarlo un carácter leído
por teclado.
• Escribir un programa que dibuje un
rectángulo de lado n x m, con las mismas
consideraciones que para el cuadrado del
ejercicio anterior.
Lenguajes de programación
LPSI
EUI
UPM
• Escribir un programa que lea caracteres
por teclado (se acaba al leer el ‘*’) e
imprima por pantalla el carácter leído y si
es: dígito, letra minúscula, letra
maýuscula, la letras ‘ñ’ o ‘Ñ’, u otro
carácter distinto.
• Escribir un programa que lea un nº real e
imprima sólo la parte decimal del mismo.
• Escribir un programa que lea un nº entero
long e imprima el nº de dígitos que
contiene.
Lenguajes de programación
LPSI
EUI
UPM
• Escribir un programa que lea un nº entero
long y lo imprima invertido.
• Escribir un programa que lea un entero
long y le quite todos los dígitos pares que
contenga, imprimiendo como resultado el
nº resultante.
• Escribir un programa que lea un carácter
cualquiera y un nº entero entre 1 y 12, e
imprima un triángulo, centrado en la
pantalla, de altura la indicada por el nº y
utilizando el carácter leído para dibujarlo.
Lenguajes de programación
LPSI
EUI
UPM
Descargar