Está en la página 1de 8

LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

LABORATORIO 2
ESTRUCTURAS CONDICIONALES – IF...ELSE

1 OBJETIVOS

Al finalizar esta actividad, serás capaz de:


 Construir expresiones lógicas (condiciones) en lenguaje C.
 Identificar las distintas condiciones que aparecen en un programa, reconociendo si
son dependientes, y qué tipo de dependencia existe entre ellas.
 Conocer las estructuras condicionales, distinguir entre sus distintas utilidades.
 Aplicar cada tipo de estructura condicional según las necesidades del programa.
 Diseñar la estructura lógica del programa en base a las expresiones construidas.

2 MOTIVACION

La ejecución secuencial de las instrucciones no es suficiente para poder informatizar


cualquier tipo de problema, sino que es necesario disponer de otras estructuras que nos
permitan canalizar el flujo de la información en el programa permitiendo que se puedan
realizar unas acciones u otras dependiendo del cumplimiento o no de una condición.

3 LA ESTRUCTURA CONDICIONAL EN C

El if…else en C

if (condición){
AccionesV
} else {
AccionesF
}

Si se cumple la condición se realizan las AccionesV y sino se realizan las AccionesF.

La parte else siempre va unida a un if y se puede omitir si no hay que realizar ninguna
acción cuando no se cumpla la condición.

Si tenemos varias condiciones excluyentes entre sí podemos utilizar una variante de esta
instrucción: los bloques anidados else if.

if (condición1){
Acciones a realizar si se cumple la condición1
} else if (condición2){
Acciones a realizar si no se cumple la condición1
pero sí se cumple la condición2
} else if (condición3){
Acciones a realizar si no se cumple la condición1 ni la condición2
pero sí se cumple la condición3
}…
else {
Acciones a realizar si no se cumple ninguna de las condiciones
anteriores
}
© Conchi Presedo García – EUITI Bilbao 2016 9
LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

Las llaves – { } – en C sirven para delimitar un bloque de instrucciones y se pueden omitir


cuando un bloque consta de una única línea de código fuente. Así, serían igualmente válidas
las dos expresiones siguientes:
if(a>5){ if(a>5)
b=a; b=a;
}

Para expresar condiciones simples disponemos de los típicos operadores de


comparación, que en C son: >, >=, <, <=, == (igualdad) y != (desigualdad).

Para expresar condiciones de cierta complejidad, disponemos de los operadores lógicos,


los que utilizaremos en C son: && (Y lógico), || (O lógico) y ! (Negación).

4 EJERCICIOS

4.1 Ejercicio 1 – Ejemplo de condiciones anidadas

4.1.1 Objetivo 1

 Especificar condiciones simples y condiciones anidadas.

4.1.2 Enunciado 1

Construir un programa que solicite por pantalla un número entero positivo y realice de
manera independiente los siguientes apartados:
a) Informe si es par o impar.
b) Informe si es múltiplo de 3 ó no.
c) Si es par, informe además si es múltiplo de 3 o no, y si es impar muestre si es
múltiplo de 5 o no.

Ejemplo de ejecución:
(los datos tecleados por Introduce un numero entero (>0): 45
el usuario están en
cursiva y subrayados ) ********* Apartado a *****
45 es impar

********* Apartado b *****


45 es multiplo de 3

********* Apartado c *****


45 es impar y es multiplo de 5

4.1.3 Ayuda para el enunciado 1

Para saber si un número es múltiplo de otro se utiliza la operación aritmética %, que nos
calcula el resto de una división. Así, dados dos números enteros a y b si el resto de la
división a%b es 0, podremos decir que a es múltiplo de b y que b es divisor de a.

© Conchi Presedo García – EUITI Bilbao 2016 10


LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

4.2 Ejercicio 2 – Validación de la fórmula NxOy

4.2.1 Objetivo 2

 Aprender a especificar de manera secuencial condiciones independientes entre sí.


 Aprender a identificar si se ha cumplido alguna de las condiciones.

4.2.2 Enunciado 2

Sabiendo que la valencia química del oxígeno es 2, y que la del nitrógeno es 1,3 y 5 para
según qué compuestos, se pide construir un programa que solicite los coeficientes x e y de
NxOy y compruebe si la fórmula sería correcta o no especificando en qué coeficiente/s está
el error. En la fórmula, x son las posibles valencias del Oxígeno e y son las del Nitrógeno.

Pedir datos separados por comas: scanf(“%d,%d”,&x,&y);

Ejemplos de
ejecución: Dime los valores de x e y separados por una coma: 3 , 8
ERROR en coeficiente x. ERROR en coeficiente y.
Dime los valores de x e y separados por una coma: 2 , 5
La formula N2O5 es CORRECTA.

4.2.3 Ayuda para el enunciado 2

Para poder mostrar un mensaje que especifique cada tipo de error debemos evaluar
sucesivamente (y de manera independiente) cada una de las condiciones de error.
Como método general, se puede utilizar una variable (en el ejemplo hay_errores) que nos
indique si ha habido errores o no. Antes de empezar a evaluar las condiciones la variable
valdrá 0 y en el momento que se produzca algún error su valor cambiará a 1.

hay_errores=0; // 1. En principio NO HAY ERRORES


// 2. COMPROBAMOS SUCESIVAMENTE los distintos tipos de error
// modificando el valor de hay_errores en cuanto se produzca alguno
// Comprobamos primera condición de error(condición1)
if (condición1){
printf("Mensaje de ERROR en condición1");
hay_errores=1;
}
// Comprobamos siguiente condición de error(condición2)
if (condición2){
printf("Mensaje de ERROR en condición2");
hay_errores=1;
}
****… Y así hasta que no queden más … ****
// 3. SI NO HUBO ERRORES visualizamos mensaje que lo indique
if(hay_errores= =0){
printf("Mensaje de TODO es CORRECTO"); }

4.3 Ejercicio 3 – Determinación del tipo de un triángulo


© Conchi Presedo García – EUITI Bilbao 2016 11
LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

4.3.1 Objetivo 3

 Aprender a especificar condiciones excluyentes entre sí de manera eficiente.

4.3.2 Enunciado 3

Construir un programa que informe sobre las características de un triángulo. Para ello
pedirá por pantalla las longitudes de los lados e indicará si el triángulo es equilátero,
isósceles o escaleno.

Ejemplo de ejecución:
Primer lado: 3.1
Segundo lado: 5.76
Tercer lado: 3.1
Triangulo ISOSCELES.

4.3.3 Ayuda para el enunciado 3

Un triángulo es equilátero si todos sus lados son iguales, es isósceles si dos lados son
iguales y el tercero distinto y es escaleno si sus tres lados son distintos.

4.4 Ejercicio 4 – Ordenación de tres números en descendente

4.4.1 Objetivo 4

 Aprender a especificar todos los casos posibles de manera eficiente.

4.4.2 Enunciado 4

Construir un programa que pida tres números enteros y los escriba en orden descendente.

Ejemplo de ejecución:
Dime el primer numero: 3
Dime el segundo numero: 5
Dime el tercer numero: 3
Los numeros en orden descendente son: 5, 3, 3

4.4.3 Ayuda para el enunciado 4

Los casos posibles suponiendo que n1, n2 y n3 son los tres números introducidos son:

Números pedidos  n1 (primero) n2 (segundo) n3 (tercero)


Caso 1 mayor mediano menor
Caso 2 mayor menor mediano
Caso 3 mediano mayor menor
Caso 4 menor mayor mediano
Caso 5 mediano menor mayor
Caso 6 menor mediano mayor

Tener en cuenta que los números pueden ser iguales.

© Conchi Presedo García – EUITI Bilbao 2016 12


LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

4.5 Ejercicio 5 – Cuadrante al que pertenece un punto P(x,y)

4.5.1 Objetivo 5

 Seguir practicando con condiciones.


 Mostrar la necesidad de alguna estructura que nos permita repetir instrucciones.

4.5.2 Enunciado 5

Dada la función f(x)= x3 - 4x2 + x - 9 se pide construir un programa que pida DOS valores
de x e indique para cada uno en qué cuadrante (primero, segundo, tercero o cuarto) se
encuentra el punto P(x,y), siendo y=f(x).

Ejemplo de
ejecución: Introducir primer valor para x: 3
El punto P(3.00,-15.00) se encuentra en el CUARTO cuadrante
Introducir segundo valor para x: -1.5
El punto P(-1.50,-22.88) se encuentra en el TERCER cuadrante

4.5.3 Ayuda para el enunciado 5

 Representar el cálculo de f(x) a partir de x. Se puede usar la función pow(a,b) que


calcula ab donde a, b y el resultado son de tipo real (double) . Está en la librería
math.h (por tanto deberemos poner al principio #include <math.h>).
 Primer cuadrante: Tanto x como y son positivos. Segundo: x negativo e y positivo.
Tercero: x e y negativos. Cuarto: x positivo e y negativo.
 Tener en cuenta que el punto resultante también puede estar en alguno de los ejes.

4.6 Ejercicio 6 – Validación de una fecha

4.6.1 Objetivo 6

 Seguir practicando con condiciones dependientes más complejas.


 Aprender la diferencia entre indicar que existe alguna condición que no se cumple y
especificar exactamente qué condiciones se cumplen o no.

4.6.2 Enunciado 6

Construir un programa que solicite una fecha (día, mes y año) y compruebe si es una fecha
válida, en cuyo caso mostrará el mensaje correspondiente. En caso contrario, presentará
textos indicativos de los errores.
NOTA: El programa deberá indicar TODOS los errores que haya, en día, mes, año o en el día
respecto al mes.

Ejemplos de Introduce una fecha en formato dd/mm/aaaa: 35/3/-2010


ejecución: ERROR en el anio. ERROR en el dia.
Presione una tecla para continuar…
Introduce una fecha en formato dd/mm/aaaa: 31/12/2000
Fecha CORRECTA.
Presione una tecla para continuar…

© Conchi Presedo García – EUITI Bilbao 2016 13


LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

4.6.3 Ayuda para el enunciado 6

Como ayuda, se da la solución del caso en el que NO ESPECIFICAMOS qué TIPO DE ERROR
hay en la fecha, solamente indicamos "Error en la fecha" con lo cual, EN CUANTO
ENCONTREMOS EL PRIMER ERROR el programa no sigue comprobando y TERMINA.

1 #include <stdlib.h>
2 #include <stdio.h>
3
4 /* Comprueba la validez de una fecha SIN ESPECIFICAR donde hay errores */
5 int main(void)
6 {
7 int dia,mes,anio; //Datos que se piden por teclado
8
9 printf("Introduce una fecha en formato dd/mm/aaaa: ");
10 scanf("%d/%d/%d",&dia,&mes,&anio);
11
12 // Comprobamos año, mes y día (entre 1 y 31)
13 if (error en año || (error en mes) || (error en dia)){
14 printf("\n\t\tERROR en la fecha.\n\n"); }
15 else{
16 // Aquí el año y el mes son correctos y el día está entre 1 y 31
17 // Comprobamos el día según el mes
18 if(dia>30 && (el mes tiene 30 días)){
19 printf("\n\t\tERROR en la fecha.\n\n"); }
20 else{
21 if(el mes es febrero){
22 if(dia>29){
23 printf("\n\t\tERROR en la fecha.\n\n"); }
24 else {
25 if(dia>28 && (el año no es bisiesto)){
26 printf("\n\t\tERROR en la fecha.\n\n"); }
27 else {
28 printf("\n\t\tFecha CORRECTA.\n\n"); }}
29 }else{
30 // Es un mes de 31 días
31 printf("\n\t\tFecha CORRECTA.\n\n");
32 } // Fin del else (línea 29)
33 } // Fin del segundo else (línea 20)
34 } // Fin del primer else (línea 15)
35 system("PAUSE");
36 }

SIGUE LA AYUDA …

Condiciones a considerar para comprobar si una fecha es correcta.

© Conchi Presedo García – EUITI Bilbao 2016 14


LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

 El año deberá ser positivo. Si no lo es: "Error en el año".


 El número de mes deberá ser válido. Si no lo es: "Error en el mes".
 El día deberá estar comprendido entre 1 y 31. Si no lo es: "Error en el día".
 También habrá que comprobar el día en función del mes. Si falla algo: "Error en el
día respecto al mes".
o Meses de 30 días: 4, 6, 9 y 11. Resto excepto febrero: 31 días.
o Febrero: 28 ó 29 dependiendo de si el año es bisiesto o no. Un año es bisiesto
si es múltiplo de 4 pero no de 100 ó bien si es múltiplo de 400.

Se sugiere rellenar el programa poniendo las condiciones que aparecen subrayadas y


después de probar y entender el programa, modificarlo siguiendo la ayuda del enunciado 2
para que nos indique todos los errores.

4.7 Ejercicio 7 – Cálculo del instante siguiente

4.7.1 Objetivo 7

 Construir secuencias de condiciones y condiciones anidadas más complejas.

4.7.2 Enunciado 7

Se ha de construir una aplicación que actúe como un reloj. Para ello se necesita un
programa que pida al usuario la hora en formato digital. Si la hora no es válida deberá
visualizarse un mensaje de error. Si la hora es válida deberá visualizarse la hora que sería
en el segundo siguiente al tecleado. Ejemplos:

Entrada Salida
1. Pedir hora, minuto y segundo en
10:30:40 10:30:41
formato hh:mm:ss
10:59:10 10:59:11
10:30:59 10:31:00 scanf(“%d:%d:%d”,&hora,&min,&seg);
10:59:59 11:00:00
2. Visualizar rellenando con dos ceros
23:59:11 23:59:12 aunque las horas resultantes dén 0 ó 5
23:30:59 23:31:00 por ejemplo
23:59:59 00:00:00
printf(“…%02d…”,hora);

Ejemplos de
ejecución: Introduce la hora en formato hh:mm:ss --> 10:65:00
ERROR!! La hora 10:65:00 no es correcta.
Introduce la hora en formato hh:mm:ss --> 10:35:00
10:35:01

4.7.3 Ayuda para el enunciado 7

 Determinar las reglas generales para el instante siguiente (teniendo en cuenta que
60 segundos son un minuto y 60 minutos son una hora)
 Determinar las excepciones. A partir de las excepciones, y teniéndolas en cuenta,
plantear el esquema o lógica del programa.

4.8 Ejercicio 8 – Cálculo de la duración total


© Conchi Presedo García – EUITI Bilbao 2016 15
LABORATORIO 2 FUNDAMENTOS DE INFORMÁTICA

4.8.1 Objetivo 8

 Construir secuencias de condiciones y condiciones anidadas más complejas.

4.8.2 Enunciado 8

Construir un programa que pida dos duraciones (en formato hh:mm:ss) y muestre la
duración total.
Ejemplos:

Entrada1 Entrada2 Duración total


20:50:10 11:10:2 Suma  1 día y 08:00:12
10:50:30 13:9:30 Suma  1 día y 00:00:00
10:30:30 10:30:30 Suma  21:01:00
10:40:30 10:30:30 Suma  21:11:00

Así, si la primera duración es de 20 horas, 50 minutos y 10 segundos y la segunda es de 11


horas, 10 minutos y 2 segundos la duración total será de un día (24 horas), 8 horas y 12
segundos.

Ejemplos de
ejecución: Introduce una duracion en formato hh:mm:ss --> 20:50:10
Introduce otra duracion en formato hh:mm:ss --> 11:10:2
La duracion total es 1 dia y 08:00:12

Introduce una duracion en formato hh:mm:ss --> 10:30:30


Introduce otra duracion en formato hh:mm:ss --> 10:30:30
La duracion total es 21:01:00

4.8.3 Ayuda para el enunciado 8

Se debe realizar por separado la suma de cada componente de la duración teniendo en


cuenta que 60 segundos son un minuto, 60 minutos son una hora y 24 horas son un día.
Por ejemplo, si las dos duraciones introducidas son 20:50:10 y 11:10:2 haríamos las
siguientes sumas 10+2=12 segundos, 50+10=60 minutos = 1 hora, 1+20+11=32 horas =
un día completo más 8 horas.

 Determinar las reglas generales para la suma de las duraciones.


 Determinar las excepciones. A partir de las excepciones, y teniéndolas en cuenta,
plantear el esquema o lógica del programa.

© Conchi Presedo García – EUITI Bilbao 2016 16

También podría gustarte