Estructuras Condicionales if ( condicion ) { instrucciones if ( condicion ) { instrucciones } } else { if ( condicion ) { instrucciones } else { instrucciones } instrucciones }
CASO 1: “Si un alumno tiene un promedio mayor o igual a 9 se le hara un 20% de descuento en la colegiatura, si tiene un promedio mayor o igual a 8 pero menor que 9 el descuento será del 10%, si su promedio es menor que 8 pero mayor o igual a 7 el descuento será del 5% y si promedia con 7 o menos no tendrá descuento.”
CASO 2: Si edad<12, entonces imprime "niñez" sino si edad >=12 y edad < 18 entonces imprime "adolescente" sino si edad >= 18 y edad < 30 entonces imprime "joven" sino si edad >= 30 y edad < 60 entonces imprime "maduro" sino si edad >=60 entonces imprime "tercera edad" #include<stdio.h> #include<conio.h> int main() { float promedio=0,descuento=0,colegiatura=1500,total=0; printf("\n\tCual fue tu promedio?: ");scanf("%f",&promedio); if(promedio>=9) { descuento=0.2; } else { if(promedio>=8 && promedio <9) { descuento=0.1;
} else { if(promedio>=7 && promedio <8) { descuento=0.05; } else { descuento=0; } } } total=colegiatura-colegiatura*descuento; printf("\n\tTu colegiatura sera de %.2f",total); getch(); }
VER 2.0 #include<stdio.h> #include<conio.h> int main() { float promedio=0,descuento=0,colegiatura=1500,total=0; printf("\n\tCual fue tu promedio?: ");scanf("%f",&promedio); if(promedio>=9) { descuento=0.2; } else if(promedio>=8 && promedio <9) { descuento=0.1; } else if(promedio>=7 && promedio <8) { descuento=0.05; } else { descuento=0; } total=colegiatura-colegiatura*descuento; printf("\n\tTu colegiatura sera de %.2f",total); getch(); }
PRACTICA #5
ifs ANIDADOS
Un if anidado es un if que es el objeto de otro if o else. Una sentencia else siempre se refiere al if más próximo que esté en el mismo bloque. Un compilador bajo el estándar ANSI permite tener como máximo 15 niveles de profundidad. Es posible encadenar varios ifs y varios elses en algo conocido como escalera if-else-if por su apariencia visual. Forma General: if(comparación) sentencia; else if(comparación) sentencia; else if(comparación) sentencia; else sentencia; Las condiciones son evaluadas de arriba hacia abajo. Tan pronto se cumpla con una condición, las sentencias asociadas a ella son ejecutadas y el resto de la escalera es brincado. Si ninguna de las condiciones son ciertas, el último else es ejecutado (si está presente). Por ejemplo: Si se requiere hacer un programa que pida el sexo de una persona y la edad e imprima si es hombre o mujer mayor o menor de edad el programa seria de la siguiente forma: #include< conio.h> #include< stdio.h> void main(void) { char sexo; int edad; clrscr(); printf("Cuantos años tiene "); scanf("%d",&edad); printf("De que sexo es "); scanf("%c",&sexo); if (edad>=18) if (sexo=='F') printf("Mujer mayor de edad"); else printf("Hombre mayor de edad "); else if (sexo=='F') printf("Mujer menor de edad"); else printf("Hombre menor de edad "); getch(); } En la practica anterior se trataron los operadores relaciónales, además de los operadores relaciónales C cuenta con los operadores lógicos. Como se aprendió anteriormente, los operadores relaciónales comparan dos valores y devuelven
un resultado verdadero o falso, basado en la comparación. Los operadores lógicos agrupan resultados de verdadero/falso.
OPERADORES LOGICOS OPERADOR
SIGNIFICADO
&& || !
Y O NO
Los operadores lógicos se utilizan para soportar las operaciones lógicas básicas de Y, O y NO de acuerdo con esta tabla de verdad. La tabla utiliza 1 para verdadero y 0 para falso. X
Y
X&&Y
X||Y
!X
0 0 1 1
0 1 1 0
0 0 1 0
0 1 1 1
1 1 0 0
Los operadores lógicos y relaciónales tienen una prioridad más baja que los operadores aritméticos. Esto quiere decir que una expresión como 10+c> a+12 se evalúa como si se hubiera escrito (10+c)>(a+12). Se puede agrupar cualquier numero de operaciones relaciónales utilizando operadores lógicos. Por ejemplo, esta expresión enlaza 3 operaciones relaciónales: v>max || !(m==100)&& 0<e El operador ! tiene la jerarquía mas alta mientras que el operador || la más baja. Hay un factor importante a recordar sobre los operadores lógicos y relaciónales: el resultado 0 ó 1. Aunque C defina como verdadero cualquier valor distinto de 0, los operadores relacionales y lógicos siempre dan el valor de 1 para verdadero. Sus programas pueden hacer uso de este hecho. El siguiente programa determina si dos números son positivos: #include< conio.h> #include< stdio.h> void main(void) { int n1,n2; clrscr(); printf(“Teclea un numero “); scanf(“%d”,&n1); printf(“Teclea otro numero”); scanf(“%d”,&n2); if(n1>0&& n2>0) printf(“Los números son positivos”); getch(); }
DESARROLLO DE LA PRACTICA PRACT5A.C Una tienda que vende pantalones Dickies al menudeo y al mayoreo tiene las siguientes tarifas, si se compran menos de 5 pantalones estos se cobran a su precio normal, en caso de que se copren 5 o mas pero menos de 12 , se les descuenta el 15% en cada pantalon, si se compran mas de 12 se les descuenta 30% en cada pantalon. Escriba un programa que pida como dato de entrada el numero de pantalones que se desean comprar y con ello imprima el total a pagar por la compra hecha. PRACT5B.C Escriba un programa para determinar si un solicitante puede lograr un préstamo. Deberá pedir los siguientes datos para cada solicitante: Nombre, historia crediticia(‘b’buena o ‘m’ mala), cantidad pedida, salario anual, y valor de otras propiedades. El banco solo considerará a los solicitantes con un estado de crédito bueno. De aquellos, solo aceptara los que tengan mas de 6 puntos. Los puntos se obtienen como sigue: 5 puntos si el salario es 50% del préstamo o más. 3 puntos si el salario es por lo menos 25% pero menos de 50% del préstamo. 1 punto si el salario es por lo menos 10% pero menos de 25% del préstamo. 5 puntos si se tiene otra propiedad del doble del préstamo o mas. 3 puntos si se tiene otra propiedad igual al préstamo pero menor del doble. PRACT5C.C Escriba un programa que pida una letra minúscula, el programa deberá imprimir si la letra es una vocal (a,e,i,o,u), semivocal (y) o una consonante. PRACT5D.C Para determinar si un año es bisiesto o no debe de cumplir las siguiente regla: Ser divisible entre 4 y no divisible entre 100 o bien divisible entre 400. Escriba un programa que pida como entrada el año e imprima si el año es bisiesto o no. PRACT5E.C Escriba un programa que pida el numero de mes (del 1 al 12 ) e imprima el numero de dias que tiene el mes, donde: El mes 2 tiene 28 dias Los meses 4,6,9 y 11 tienen 30 dias
Los meses 1,3,5,7,8,10 y 12 tienen 31 dias Si da un mes diferente a los anteriores debera imprimir el mensaje “MES ERRONEO”. NOTA: PUEDE UTILIZAR OPERADORES LOGICOS EN LOS PROGRAMAS 5C,5D Y 5E.