Sunteți pe pagina 1din 12

III222A Tecnologas de la Informacin II Segundo Semestre, 2014

Apunte No. 2: Estructuras de Control :::: Sentencias Condicionales


Profesor: Milton A. Ramrez Klapp Universidad Del Desarrollo
ndice General
1 Introduccin 1
1.1 Estructura condicional Si-Entonces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Estructura condicional Segn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Ejercicios 10
1. Introduccin
Hasta ahora hemos estado trabajando con problemas que se pueden abordar de manera secuencial, lo que
signica en otras palabras que no ha sido necesario que el algoritmo que estemos construyendo tenga que
decidir qu hacer frente a ciertos comportamientos que se puedan dar durante la ejecucin del programa.
Sin embargo, en varias ocasiones se har necesario que la puesta en marcha del algoritmo tome un rumbo
determinado, en funcin de los datos de entrada. Por ejemplo, si el valor de un artculo en el comercio
tiene un precio mayor o igual que 200$, ser necesario emitir una boleta, y no en caso contrario. Y
precisamente este es el punto sobre el cual centraremos nuestra atencin: las sentencias condicionales.
Para simplicar las cosas, diremos que existen dos grupos de ellas:

1 Si-Entonces
2 Segn

, y que son
las que pasaremos a revisar por separado en cada una de las secciones que vienen a continuacin.
1.1 Estructura condicional Si-Entonces
En Pseint tiene una estructura como la que se muestra a continuacin:
1.1 Estructura condicional Si-Entonces
En donde:

1 Expresin Lgica

Es un expresin que puede ser verdadera o falsa.


En ningn caso corresponde a un nmero o a un texto.
De qu se compone:

1 Variables (nmeros, texto)


2 Operadores relacionales (<, >, , , =, =)
3 Operadores aritmticos (+, , , /, %)
4 Operadores lgicos (, , )
5 Operadores de texto
6 Smbolos de puntuacin (parntesis)
Cualquier combinacin aceptable
de los anteriores.

Ejemplos:

(x + 5 y
2
)
(0 a a 10)

2 Acciones por verdadero Qu se hace si la condicin se evala como verdadera.


3 Acciones por falso Qu se hace si la condicin se evala como falsa.
Ejemplo 1.1 Este algoritmo va a tomar como dato de entrada las tres calicaciones que obtiene un
estudiante a lo largo de una asignatura, y va a mostrar un resultado diciendo que que est aprobado o
reprobado, dependiendo si el promedio aritmtico es mayor o igual a 4 o no, respectivamente. Vamos
a partir con el anlisis del problema:
Al igual como lo hacamos en el apunte anterior, declaramos las variables que vayamos a emplear.
Recuerde que debe mantener la consistencia entre lo que se dice en el anlisis y lo que haga en esta
parte:
Como a, b y c son las variables de entrada, entonces es necesario leerlas, y para ello vamos a poner
los mensajes correspondientes:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 2
1.1 Estructura condicional Si-Entonces
A modo de aclaracin. En la escala chilena, las calicaciones varan entre 1.0 y 7.0, lo que signica
que el algoritmo debiera validar que las notas estn en ese rango. Sin embargo, ello requiere el uso de
sentencias repetitivas que veremos en otra oportunidad. Por el momento, vamos a pasar por alto esta
restriccin. Dicho esto, proseguimos con el algoritmo. Una vez que la mquina toma conocimiento
del valor de las notas, es necesario calcular su promedio. Si usted quiere, puede denir una variable
de tipo real llamada promedio, y que le asigne el valor de
(a + b + c)
3
, o bien no trabaja con ella, y
simplemente transcribe la frmula a la estructura Si-Entonces. Para estos efectos, necesitamos tener
claro cul va a ser la expresin lgica con la que vayamos a trabajar. De acuerdo al enunciado del
problema, sabemos que si el promedio es mayor o igual que 4, escribimos aprobado, o reprobado en
caso contrario. Entonces, es fcil observar que
a + b + c
3
4
corresponde a una sentencia que bien puede ser verdadera o falsa. Piense que si el promedio fuera 3.8,
entonces haramos la pregunta 3.8 4? Como la respuesta es Falso, entonces el mensaje debiera
ser reprobado. Esto se escribira as:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 3
1.1 Estructura condicional Si-Entonces
Y as es cmo queda el proceso nal:
Ejemplo 1.2 En este ejemplo, vamos a pedirle al usuario que ingrese un nmero que est entre 1 y
999, y que determine la cantidad de dgitos que lo componen, con la condicin que el resultado de
la pregunta lo guarde en una variable. Por el momento no vamos a validar que el nmero est en
el rango solicitado, sino que asumiremos de buena fe que as es. Para esto, debemos tener presente
que el dato de entrada va a ser un nmero entero. Con respecto al proceso es fcil observar que a
medida que avanzamos en las potencias de 10, la cantidad de dgitos que tenga un nmero aumenta
en 1. Por ejemplo:

Los nmeros entre 1 y 9 tienen un dgito.


Los nmeros entre 10 y 99 tienen dos dgitos.
Los nmeros entre 100 y 999 tienen tres dgitos, y as sucesivamente.

Este mismo principio lo vamos a emplear para resolver este problema. Para este caso, diremos que si
n es el nmero que har las veces de entrada, entonces la cantidad de dgitos tambin la guardaremos
en una variable que llamaremos arbitrariamente d. Por lo tanto, d ser la salida que entregue el
programa, junto con un mensaje apropiado para el usuario. De acuerdo a todo lo dicho hasta el
momento, este es el anlisis escrito en Pseint:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 4
1.1 Estructura condicional Si-Entonces
Despus seguimos con lo mismo que hicimos en el ejemplo anterior: denir las variables con las que
vamos a trabajar, y pedirle al usuario que ingrese los valores de todo aquello que se haya denido
como entrada:
Una vez que ya conocemos cul es el valor de n, es necesario hacer varias preguntas, que van a ir
anidadas, de tal manera que si la primera expresin no se cumple, se pasa al caso Sino. Al entrar
al Sino se vuelve a preguntar otra cosa: si da falso, pasamos a otro Sino, y as hasta llegar al nal
y tener alguna respuesta ms concreta. Importante. Cuando estamos trabajando con condiciones
lgicas que emplean el conectivo de la conjuncin y, es necesario emplear el smbolo &, o bien
&&, dependiendo de la conguracin de caracteres que tenga la instalacin de Pseint.
Es fcil notar que lo de arriba se puede volver bastante enredado en caso que tuviramos que evaluar
ms opciones. Una manera de producir los mismos resultados, pero de una manera no anidada es la
siguiente, y que contempla cada uno de los casos que ya hemos estudiado:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 5
1.1 Estructura condicional Si-Entonces
Observacin. Usted puede trabajar con cualquiera de los dos esquemas que se presentan en este
apunte para el caso en que tenga que evaluar mltiples condiciones que contengan expresiones lgicas
como conjunciones, disyunciones o negaciones. La resolucin termina cuando escribimos por medio
de un mensaje el valor de d:
Ejemplo 1.3 En este ejemplo vamos a mostrar el gnero de una persona, en base al nombre. Si es
Manuel o Alejandro, diremos que es masculino, o bien si es Alicia o Soledad, femenino. Para resolver
esto, es necesario tener presente que el dato de entrada va a ser el nombre, y que se trata de una
variable de tipo caracter, ya que no es numrico, por razones obvias. En cuanto al proceso, se evala
el valor del nombre, y se entrega la respuesta en funcin de lo que valga. La salida la guardaremos
en una variable de tipo caracter que denotaremos por g:
Proseguimos de la misma forma en cmo lo hicimos con los ejemplos anteriores: denir un nombre
para el proceso principal, declarar las variables con las que vamos a trabajar, y pedirle al usuario que
ingrese aquellas que en el anlisis hayan ido en la parte de la entrada:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 6
1.1 Estructura condicional Si-Entonces
Ahora es un buen momento para evaluar el valor del nombre. En este caso, vamos a trabajar con
el conectivo lgico o, que en Pseint se representa mediante el smbolo |, o bien ||, segn la
conguracin de caracteres que se haya elegido para trabajar. Cabe destacar que al igual que en
el ejemplo anterior, se puede trabajar con las estructuras Si-Entonces de manera anidada, pero por
razones de legibilidad se van a mostrar por separado (lo bueno es que vamos a llegar al mismo
resultado :)).
Ahora slo falta mostrar un mensaje con el resultado nal del algoritmo:
Observacin. Cabe destacar que el algoritmo slo va a funcionar en caso que el nombre tome
cualqiera de los cuatro valores que hemos indicado al inicio del ejercicio (Manuel, Alejandro, Soledad,
Alicia). Si el usuario ingresa alguno que no est en el listado, Pseint va a arrojar un error relacionado
con que la variable g no est inicializada. Esto se debe a que el encabezado del problema no especica
qu hacer en caso que el nombre ingresado no estuviera dentro de las alternativas posibles. Si as
fuera, podramos decir para simplicar las cosas que por defecto el gnero va a ser distinto del
que diga la expresin:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 7
1.2 Estructura condicional Segn
1.2 Estructura condicional Segn
Imagnese que usted tenga que construir un algoritmo que tenga que entregar el nombre del da de la
semana, a partir de un nmero n comprendido entre 1 y 7, de tal manera que si n = 1, el resultado
sea Lunes, n = 2 asociado con el martes y as sucesivamente hasta el caso en que n = 7 que va a ser
domingo. Si denotamos por n al nmero del da de la semana, y por d al nombre del da asociado con
n, podramos escribir un algoritmo como el que sigue a continuacin. Empezamos con el anlisis:
Seguimos con el proceso principal, denimos las variables, e ingresamos los valores de los datos de entrada:
El proceso de vericacin de n podra conducirnos a una serie de sentencias Si-Entonces anidadas de esta
manera (se presenta en este formato para gracar de mejor manera lo que se va a explicar a continuacin):
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 8
1.2 Estructura condicional Segn
Y terminamos mostrando el resultado nal:
Como usted podr ver, esto es bastante difcil de seguir, ya que entre ms condiciones tengamos que
evaluar, aumenta la probabilidad de cometer algn error. Para que tengamos una estructura algortmica
ms legible, existe una alternativa al uso de Si-Entonces, que permite generar los mismos resultados,
pero de una manera que reduce la posibilidad de equivocarnos. Esta nueva estructura se llama Segn, y
tiene una apariencia como esta:
Algo nos dice la imagen anterior. En primer lugar, la variable numrica indica que slo este tipo de
datos se pueden procesar en una instruccin de esta naturaleza, porque es una limitacin que tiene Pseint.
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 9
2. Ejercicios
Ms abajo, desde la opcin 1 en adelante, signica lo que hay que hacer en caso que la variable valga 1,
2 o 3. Pseint permite ms de tres valores, pero son los que aparecen cuando se presiona el botn
La lnea que dice De otro modo permite agregar las instrucciones que se deban ejecutar de manera
secuencial en caso que la variable numrica tome un valor que no est en el rango anterior. En este caso,
si n fuera mayor o igual a 8, podemos escribir un mensaje diciendo que la semana slo tiene 7 das, a
modo de error. En lugar de todos los Si-Entonces, podemos escribir esto:
2. Ejercicios
Para cada uno de los siguientes problemas, se pide que usted disee el algoritmo. No olvide que primero
debe hacer el anlisis.
1. El algoritmo debe preguntar por la edad del usuario: en caso que sea menor estricto a 18, debe
decir usted es menor de edad, o usted es mayor de edad en caso contrario.
2. i. El algoritmo le pide un nmero al usuario, y debe indicar con un mensaje si acaso el valor
ingresado est en el intervalo [10, 20].
ii. El algoritmo debe pedir los valores extremos de un intervalo [a, b], junto con un nmero
arbitrario, y decidir si est o no dentro del mismo.
3. Escriba un algoritmo que informe de la hora de inicio y de trmino de cada bloque horario que se
maneja en la UDD, a partir del nmero que le corresponde. Por ejemplo, si se ingresa el nmero
1, el algoritmo debiera responder 08:00 - 09:20. Los valores se muestran en la tabla adjunta:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 10
2. Ejercicios
Mdulo Horario
1 08:00 - 09:20
2 09:30 - 10:50
3 11:00 - 12:20
4 12:30 - 13:50
5 14:00 - 15:20
6 15:25 - 16:45
7 16:50 - 18:10
8 18:15 - 19:35
4. Construya un algoritmo que le pida al usuario un nmero entero. En caso que el valor est entre 1
y 5, debe escribir su nombre en forma literal uno, dos, etc. , y en caso contrario deber
entregar el cuadrado del nmero.
5. Disee un algoritmo que lea una calicacin entre 1 y 7, y la transforme a un concepto, que sea:
insuciente, regular, bueno, muy bueno.
6. (a) Construya un algoritmo que lea dos nmeros, y que entregue a cambio el menor de ellos.
(b) Construya un algoritmo que lea tres nmeros, y que entregue a cambio el menor de ellos.
7. Lo mismo del problema anterior, pero que ahora devuelva el mayor.
8. Reconstruya la solucin del ejemplo 1.2, de tal manera que el nuevo planteamiento haga uso de la
estructura Segn.
9. Construya un algoritmo que determine el tipo de solucin junto con las races de una expresin
polinomial de segundo grado de la forma ax
2
+ bx + c = 0, a, b, c R
10. Disee un algoritmo que determine si acaso un sistema de ecuaciones de orden 2 tiene solucin.
En caso armativo, debe entregar los valores de las incgnitas.
11. En el mbito de la nutricin, el ndice de masa corporal IMC determina cul debiera ser el
peso ideal de una persona, en funcin de su estatura h y masa m. La expresin analtica que se
emplea para determinarlo es la siguiente:
IMC =
m
h
2

kg
m
2

Los especialistas han construido una tabla que relaciona el IMC con el estado nutricional de una
persona:
IMC Estado Nutricional
IMC < 20 Bajo peso.
20 IMC 25 Normal.
25 < IMC 27.5 Sobrepeso.
27.5 < IMC 29.9 Obesidad leve (tipo I).
29.9 < IMC 39.9 Obesidad moderada (tipo II).
IMC > 39.9 Obesidad severa (tipo III).
Se pide que construya un algoritmo en Pseint que genere estas salidas:
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 11
2. Ejercicios
(a) Un mensaje que contenga el estado nutricional de la persona, en funcin del IMC, que a su
vez se calcula en base a la altura expresada en metros y a la masa corporal, que se mide
en kilogramos.
(b) Un mensaje que le indique al usuario en qu rango de peso corporal debiera estar para que su
IMC se pueda considerar normal, en caso que no lo sea.
Profesor: Milton A. Ramrez Klapp - miramire@gmail.com 12

S-ar putea să vă placă și