Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2014 03 07 Sentencias Condicionales PDF
2014 03 07 Sentencias Condicionales PDF
CLASE #4 – 7-Marzo-2014
Algoritmos con sentencias condicionales
En esta clase
Algoritmo – IEK/IEL/ICM/IAE 2
Expresiones relacionales
Son expresiones que permiten determinar la relación que existe entre dos
operandos a través de un operador relacional. El mismo permite comparar
los valores de dos operandos de igual naturaleza. Un expresión relacional
posee dos operandos y un operador relacional. El resultado de evaluar
una expresión relacional siempre es verdadera o falsa (valor lógico).
Operación Símbolo en SL
Igual ==
No Igual <>
Mayor que >
Menor que <
Mayor o igual >=
Menor o igual <=
Algoritmo – IEK/IEL/ICM/IAE 3
Expresiones lógicas
Operación Símbolo en SL
Y and (conjunción)
O or (disyunción)
NO not (negación)
SI and SI = SI SI or SI = SI not SI = NO
NO and SI = NO SI or NO = SI not NO = SI
SI and NO = NO NO or SI = SI
NO and NO = NO NO or NO = NO
Algoritmo – IEK/IEL/ICM/IAE 4
Precedencia de operadores
Nivel Operador
1(mayor) ^
2 -,+ (cambio de signo, identidad)
3 *,/,%
4 +,-
5 ==,<>,<,<=,>,>=
6 not
7 and
8(menor) or
Algoritmo – IEK/IEL/ICM/IAE 5
Propósito de las sentencias condicionales
Falsa Verdadera
Paso..1 Condic.
Fin Fin
Algoritmo – IEK/IEL/ICM/IAE 6
Sentencia “si”
SINTAXIS Inicio
si ( <expr-LOGICA> ) { SI
<lista-sentencias> Condic. Proceso
}
NO
Fin
Se ejecuta <lista-sentencias> cuando la condición resultante de
<expr-LOGICA> es verdadera
<expr-LOGICA>
Retorna Verdadero(TRUE o SI) o Falso (FALSE o NO)
Algoritmo – IEK/IEL/ICM/IAE 7
Sentencia “si” – Ejemplo
programa cond_si
var
a : numerico
inicio
imprimir(“Ingrese un numero:”)
leer(a)
si ( a < 0 ) {
imprimir ("\nEs un nro. negativo")
}
imprimir(“Fin del programa”)
fin
Algoritmo – IEK/IEL/ICM/IAE 8
Sentencia “si” – Ejemplo
Imprimir el mensaje “Es un nro. mayor a 100 y es par” cuando un número leído
por teclado es mayor a 100 y par.
var
a : numerico; espar : logico
inicio
imprimir(“Ingrese un nro.”); leer(a)
espar = FALSE
si ( a % 2 == 0 ) {
espar = TRUE
}
Algoritmo – IEK/IEL/ICM/IAE 9
Sentencia “si” con “sino”
Inicio
SINTAXIS
si ( <expr-condic> ) { NO SI
<lista-sentencias-verdadera> Condic.
sino
<lista-sentencias-falsa>]
} Proceso-A Proceso-B
Algoritmo – IEK/IEL/ICM/IAE 10
Sentencia “si” con “sino” - ejemplo 1
programa cond_si_sino
var
a : numerico
inicio
// Imprimir "es un nro. negativo" si
// el nro. leido lo es.
leer(a)
si ( a < 0 ) {
imprimir ("\nEs un nro. negativo")
sino
imprimir ("\nEs un nro.mayor o igual a cero")
}
fin
Algoritmo – IEK/IEL/ICM/IAE 11
Sentencia “si” con “sino” - ejemplo 2
Algoritmo – IEK/IEL/ICM/IAE 12
Ejercicios con sentencias “si” y “si-sino”
Ejercicio 1
Hacer un algoritmo que determine si un alumno tiene o no derecho a examen
final en una materia. Un alumno tiene firma si la semisuma de los puntajes de
los parciales es mayor o igual a 60. Si tiene derecho entonces imprimir el
nombre y su promedio. Si no tiene derecho indicar que debe rendir el tercer
parcial.
Se leen los puntajes de los dos parciales y el nombre del alumno.
Ejemplos:
- Si p1=60 y p2=40 nombre=”Juan Perez”
Se debe imprimir
Juan Perez debe rendir el tercer parcial.
Algoritmo – IEK/IEL/ICM/IAE 13
Ejercicios con sentencias “si” y “si-sino”
Ejercicio 2
Hacer un algoritmo que determine si tres valores ingresados pueden ser lados
de una triángulo. Ninguno de sus lados puede ser superior a la suma de los
otros dos. Si los valores pueden ser lados de un triángulo, entonces calcular la
superficie según la fórmula del semiperímetro (ver ejercitario anterior)
Ejemplos:
- Si a=10, b=40 y c=100
Se imprime : “No pueden ser lados de un triangulo”.
Algoritmo – IEK/IEL/ICM/IAE 14
Ejercicios con sentencias “si” y “si-sino”
Ejercicio 3
Determinar la cantidad de días de un año en particular, teniendo en cuenta los
siguientes criterios:
Los meses de enero, marzo, mayo, julio, agosto, octubre, diciembre tienen 31
días.
Los meses de abril, junio, setiembre, noviembre tienen 30 días.
El mes de febrero tiene 28 días a no ser que sea un año bisiesto, en ese caso
tiene 29 días.
Un año es bisiesto si es múltiplo de 4 pero no de 100 a no ser que lo sea
también de 400.
Algoritmo – IEK/IEL/ICM/IAE 15
Sentencia escalonada “eval”
SINTAXIS
eval {
caso ( <expr-LOGICA> )
<lista-sentencias>
caso ( <expr-LOGICA> )
<lista-sentencias>
caso ( <expr-LOGICA> )
<lista-sentencias>
[ sino
<lista-sentencias-sino> ]
}
[ ] : Indica opcionalidad
Se ejecuta <lista-sentencias> cuando la condición resultante de
<expr-LOGICA> es verdadera en cada “caso”
Algoritmo – IEK/IEL/ICM/IAE 16
Sentencia escalonada “eval”
Funcionamiento
Inicio
eval SI
Condic-a Proceso-a
NO
SI
Condic-b Proceso-b
NO
Proceso-sino
Fin
Algoritmo – IEK/IEL/ICM/IAE 17
Sentencia escalonada “eval” - ejemplo
programa pos_neg_cero
var
a : numerico
inicio
imprimir(“Introduzca un nro.:”); leer(a)
eval {
caso ( a == 0 ) {
imprimir (“Es cero”)
caso ( a > 0 )
imprimir (“Es positivo”)
caso ( a < 0 ) sino
imprimir (“Es negativo”) imprimir (“Es negativo”)
}
fin
Algoritmo – IEK/IEL/ICM/IAE 18
Ejemplo anterior con “si”- “sino”
programa pos_neg_cero
var
a : numerico
inicio
leer(a)
si ( a == 0 ) {
imprimir (“Es cero”)
sino si ( a > 0 )
imprimir (“Es positivo”)
sino si ( a < 0 )
imprimir (“Es negativo”)
}
fin
Algoritmo – IEK/IEL/ICM/IAE 19
Ejercicios con sentencias “si”,“si-sino” y “eval”
Ejercicio 4
Dada cuatro variables enteras a, b, c y d imprimir la variable cuyo valor es el
mayor. Solo imprimir el mensaje cuando efectivamente exista una variable mayor,
en caso contrario imprimir el mensaje “no existe una sola variable con valor
mayor” (ver ejemplos)
Ejemplos:
Mensaje a imprimir
a=10 b=20 c=15 d=19 Variable mayor b con valor 20.
a=10 b=20 c=15 d=20 No existe una sola variable con valor mayor.
a=10 b=10 c=10 d=5 No existe una sola variable con valor mayor.
Desarrollar el ejercicio con si-sino y con eval.
Algoritmo – IEK/IEL/ICM/IAE 20
Ejercicios con sentencias “si”,“si-sino” y “eval”
Ejercicio 5
Escribir un programa en SL que dada una fecha en formato DDMMAAAA, imprima
el nombre del dia de la semana que corresponda.
Para calcular utilice la siguiente fórmula para el Calendario Gregoriano,
considerando a=año, d=dia y m=mes
y0 = a - ( 14 – m ) / 12
x = y0 + y0/4 – y0/100 + y0/400
m0 = m + 12 . ( (14 - m)/12 ) - 2
d0 = (d + x + (31. m0)/12) % 7
Considerar en las divisiones solo el valor entero sin parte decimal.
El valor final de d0 corresponde al número del día de la semana tal que
0=Domingo, 1=lunes, 2=martes, .. , 6=sabado.
Ejemplo:
Dado el nro= 11032013 (11 de marzo de 2013) entonces se debe imprimir Lunes.
Algoritmo – IEK/IEL/ICM/IAE 21
Ejercicios con sentencias “si”,“si-sino” y “eval”
Ejercicio 6
Escribir un programa en SL que dada tres fechas en formato DDMMAAAA, imprima
las tres fechas pero en orden cronológico inverso (la fecha más reciente antes de
la fecha mas antigua). Además imprima en formato DD-Mes-AAAA, donde Mes son
los primeros tres caracteres del nombre del mes (ENE, FEB, MAR, .. , DIC)
Por ejemplo: 5012014, 10032009, 30122010 debe imprimirse
05-ENE-2014
30-DIC-2010
10-MAR-2009
Ejercicio 7
Dada la temperatura t (en Fahrenheit) y la velocidad del viento v ( en millas por
hora), se define la temperatura efectiva como:
0.16
w=35.74+0.6215t +(0.4275 t−35.75)v
Escriba un programa en SL que lea los valores de t y v e imprima la temperatura
efectiva en grados centígrados. La fórmula no es válida si t es mayor que 50 (en
valor absoluto) o si v es mayor que 120 o menos de 3. Si no se dan estas
condiciones imprima el mensaje adecuado ( t fuera de rango, v > 120 o v < 3 ).
Algoritmo – IEK/IEL/ICM/IAE 22
Tarea #2: Resolver los ejercicios 1, 2, 3, 4, 5, 6 y 7 de
estas diapositivas en SL.