Anda di halaman 1dari 21

ESTRUCTURAS DE SELECCIN SENTENCIAS IF Y SWITCH

Sugerencias y herramientas para crear para crear y presentar diapositivas en formato panormico

Contenido
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

Estructuras de control La sentencia if Sentencia if de dos alternativas if-else Sentencias if if-else else anidadas Sentencias de control switch Expresiones condicionales: el operador ?: E l i en cortocircuito Evaluacin i i d de expresiones i l lgicas i Puesta a punto de programas Resumen Ejercicios

Estructuras de control

Las estructuras de control controlan el flujo de ejecucin de un programa o funcin. Las estructuras de control permiten combinar instrucciones o sentencias individuales en una simple unidad lgica con un punto de entrada y un punto de salida Las instrucciones o sentencias se organizan g en 3 tipos p de estructuras de control que sirven para controlar el flujo de la ejecucin: sentencia, seleccin (decisin) y repeticin. repeticin

La sentencia if

En C la estructura de control de seleccin p principal p es una sentencia if. La sentencia if tiene dos alternativas o formatos posibles. El formato mas sencillo tiene la sintaxis siguiente: If (condicin) sentencia;
condicin; es una expresin entera (lgica). Sentencia; es cualquier sentencia ejecutable, que se ejecutara solo si la condicin toma un valor distinto de cero

Ejemplos

/* este programa lee dos nmeros enteros y comprueba cual es el valor del resto de la divisin, si el resto es cero, n es divisible por d*/ #include <stdio.h> #include <stdlib.h> int main () { int n, d; printf ("introduzca dos enteros: "); scanf ("%d,%d",&n,&d); if (n%d==0) printf("%d es divisible por %d\n",n,d); system("PAUSE"); return 0; }

Ejemplos

/*visualiza la tarifa de luz segn el gasto de corriente elctrica para un gasto menor de 1000kwh la tarifa es de 1.2, entre 1000 y 1850kwh es de 1 y mayor a 1850kwh es de 0.9 USD */

#include <stdio.h> #include <stdlib.h> #define TARIFA1 1.2 #define TARIFA2 1.0 #define TARIFA3 0.9 int main () { float gasto, tasa; printf ("\n gasto de corriente:"); scanf("%f", &gasto); if (gasto<1000.0) tasa=TARIFA1; if (gasto>=1000.0 && gasto<=1850.0) tasa=TARIFA2; if (gasto>1850.0) tasa=TARIFA3; printf("\nTasa que le corresponde a %.1f Kwh es de %f\n",gasto,tasa); system("PAUSE"); return 0; }

Sentencia if de dos alternativas: if-else


Un segundo formato de la sentencia if es la sentencia if-else. Este formato de la sentencia if tiene la siguiente sintaxis: If (expresin_logica) Sentencia1 else Sentencia2 En este formato Accion1 y Accion2 son individualmente, individualmente o bien una nica sentencia que termina en un (;) o un grupo de sentencias encerrado entre llaves

Ejemplos

/*calcular el mayor de los nmeros ledos en el teclado y visualizar en la pantalla*/ #include <stdio.h> #include <stdlib.h> int main() { int x,y; printf("introduzca dos enteros:"); scanf("%d,%d",&x,&y); if(x>y) printf("el mayor es:%d\n",x); else printf("el mayor es:%d\n",y); system("PAUSE"); return 0; }

Ejemplos

/*dada la funcin f(x), calcular la funcin para un valor dado de x y visualizarlo en la pantalla f(x)= {x^2-x para x<=0.0 {-x^2+3x para x>0 #include <stdio.h> #include <stdlib.h> #include <math.h> int main () { float f,x; printf ("\n Elige un valor de x:"); scanf ("%f",&x); /*seleccion del rango en el que se encuentra x*/ if (x<=0.0) f=pow(x,2)-x; else f=-pow(x,2)+3*x; printf ("f(%.1f)=%.3f\n",x,f); system ("PAUSE"); return 0; } */

Sentencias if if-else else anidadas


Una sentencia if es anidada cuando la secuencia de la rama verdadera o la rama falsa, es a su vez una sentencia if. if Una sentencia if anidada se puede utilizar para i l implementar t decisiones d ii con varias i alternativas lt ti o multi-alternativas

Formato

Ejemplos

/*calcular el mayor de 3 nmeros enteros*/ #include <stdio.h> #include <stdlib.h> int main () { int a,b,c, mayor; printf ("\nIntroduzca tres numeros enteros:"); scanf ("%d,%d,%d",&a,&b,&c); if (a>b) if(a>c)mayor=a; else mayor=c; else if (b>c) mayor=b; else mayor=c; printf ("El mayor es %d\n",mayor); system("PAUSE"); return 0; }

Sentencia de control switch


La sentencia switch es una sentencia C que se utiliza para seleccionar una de entre mltiples alternativas. La sentencia switch es especialmente p til cuando al seleccin se basa en el valor de una variable simple o de una expresin p simple p denominada expresin p de control o selector. El valor de esta expresin puede ser de tipo int o chart, pero no float ni double

Sintaxis

Ejemplos

/*dada una nota de un examen mediante un cdigo escribir el literal que le corresponde a la nota*/ # #include <stdio.h> #include <stdlib.h> int main () { char nota; printf ("Introduzca calificacion (A-F) y pulse Intro:"); scanf("%c",&nota); switch (nota) { case 'A': puts("Exelente. Examen superado"); break; case 'B': puts("Notable. Suficiencia");

case 'C': puts("Aprobado"); break; case 'D': case 'F': puts("Suspendido"); break break; default: puts("No es posible esta nota"); } puts ("Final de programa"); system("PAUSE"); return 0; }

Expresiones condicionales: El operador ?:


C tiene un tercer mecanismo de seleccin, una expresin que produce uno de dos valores, resultado de una expresin lgica o booleana (tambin denominada condicin) Este mecanismo se denomina expresin condicin). condicional. Una expresin condicional tiene el formato C?A:B y es realmente una operacin ternaria (tres operandos) d ) en el l que C, C A y B son los l tres operandos d y ?: es el operador Condicin ? Expresion1 : expresion2

Evaluacin en cortocircuito de expresiones lgicas


Cuando se evalan expresiones lgicas en C se puede emplear una tcnica denominada evaluacin en cortocircuito. Este tipo de evaluacin significa que se puede detener la evaluacin de una expresin p lgica g tan p pronto como su valor pueda ser determinado con certeza. Si x es negativo, la expresin

(x>=0)&&(y>1) ( 0)&&( 1) Se evala en cortocircuito ya que x>=0 ser falso y por tanto el valor final de la expresin ser falso.

Errores frecuentes de programacin


Uno de los errores mas comunes en una sentencia if es utilizar un operador de asignacin (=) en lugar de un operador de igualdad ( (==) ) En una sentencia if anidada, cada clausula else se corresponde con la if precedente mas cercana. Las comparaciones con los operadores == de cantidades algebraicamente iguales pueden producir d una expresin lgica l f l falsa, d b d a que la debido l mayora de d los l nmeros reales l no se almacenan exactamente Cuando en una sentencia switch o en un bloque de sentencias falta una de las llaves ({,}) aparece un mensaje de error cumpound statement missing } in fuction El selector de una sentencia switch debe ser de tipo entero o compatible entero Cuando se utiliza una sentencia switch, asegrese que el selector switch y las etiquetas case son del mismo tipo (int, chart pero no float). Si el valor se evala a un valor no listado en ninguna de las etiquetas case, case la sentencia switch no gestionara ninguna accin; por esta causa se suele poner una etiqueta default para resolver este problema

Resumen

Ejercicios

Escribir un programa que lea tres enteros y emita un mensaje que indique si i estn t o no en orden d numrico i Determine si el carcter asociado a un cdigo introducido por el teclado corresponde a un carcter alfabtico, digito, de puntuacin, especial o no imprimible Escribir un programa que acepte fechas escritas de modo usual y las visualice como tres nmeros E ibi y ejecutar Escribir j t un programa que simule i l un calculador l l d simple. i l L Lee d dos enteros y un carcter. Si el carcter es un +, se imprime la suma; si es un se imprime la diferencia; si es un *, se imprime el producto; si es un /, se imprime el cociente; y si es un % se imprime el resto

Patrn de prueba de pantalla panormica (16:9)

Prueba de la relacin de aspecto


(Debe parecer circular)

4x3 16x9

Anda mungkin juga menyukai