[ti2] - apunte no. 2. sentencias condicionales

12
III222A Tecnologías de la Información II Segundo Semestre, 2014 Apunte No. 2: Estructuras de Control :::: Sentencias Condicionales Profesor: Milton A. Ramírez Klapp Universidad Del Desarrollo Índice General 1 Introducción 1 1.1 Estructura condicional Si-Entonces ............................. 1 1.2 Estructura condicional Según ................................ 8 2 Ejercicios 10 1. Introducción Hasta ahora hemos estado trabajando con problemas que se pueden abordar de manera secuencial, lo que significa 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 ejecución del programa. Sin embargo, en varias ocasiones se hará necesario que la puesta en marcha del algoritmo tome un rumbo determinado, en función de los datos de entrada. Por ejemplo, si el valor de un artículo 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 atención: las sentencias condicionales. Para simplificar las cosas, diremos que existen dos grupos de ellas: ( 1 Si-Entonces 2 Según ) , y que son las que pasaremos a revisar por separado en cada una de las secciones que vienen a continuación. 1.1 Estructura condicional Si-Entonces En Pseint tiene una estructura como la que se muestra a continuación:

Upload: milton-a-ramirez-klapp

Post on 22-Nov-2015

31 views

Category:

Documents


5 download

TRANSCRIPT

  • III222A Tecnologas de la Informacin II Segundo Semestre, 2014

    Apunte No. 2: Estructuras de Control :::: Sentencias CondicionalesProfesor: 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 quesignifica en otras palabras que no ha sido necesario que el algoritmo que estemos construyendo tenga quedecidir 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 rumbodeterminado, en funcin de los datos de entrada. Por ejemplo, si el valor de un artculo en el comerciotiene un precio mayor o igual que 200$, ser necesario emitir una boleta, y no en caso contrario. Yprecisamente este es el punto sobre el cual centraremos nuestra atencin: las sentencias condicionales.

    Para simplificar las cosas, diremos que existen dos grupos de ellas:

    {1 Si-Entonces2 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 (,,, =, 6=)3 Operadores aritmticos (+,, , /, %)4 Operadores lgicos (,,)5 Operadores de texto6 Smbolos de puntuacin (parntesis)

    Cualquier combinacin aceptablede los anteriores.

    Ejemplos:

    { (x + 5 y2) (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 calificaciones que obtiene unestudiante a lo largo de una asignatura, y va a mostrar un resultado diciendo que que est aprobado oreprobado, dependiendo si el promedio aritmtico es mayor o igual a 4 o no, respectivamente. Vamosa 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 estaparte:

    Como a, b y c son las variables de entrada, entonces es necesario leerlas, y para ello vamos a ponerlos mensajes correspondientes:

    Profesor: Milton A. Ramrez Klapp - [email protected] 2

  • 1.1 Estructura condicional Si-Entonces

    A modo de aclaracin. En la escala chilena, las calificaciones varan entre 1.0 y 7.0, lo que significaque el algoritmo debiera validar que las notas estn en ese rango. Sin embargo, ello requiere el uso desentencias repetitivas que veremos en otra oportunidad. Por el momento, vamos a pasar por alto estarestriccin. Dicho esto, proseguimos con el algoritmo. Una vez que la mquina toma conocimientodel valor de las notas, es necesario calcular su promedio. Si usted quiere, puede definir 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 tenerclaro cul va a ser la expresin lgica con la que vayamos a trabajar. De acuerdo al enunciado delproblema, sabemos que si el promedio es mayor o igual que 4, escribimos aprobado, o reprobado encaso 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 debieraser reprobado. Esto se escribira as:

    Profesor: Milton A. Ramrez Klapp - [email protected] 3

  • 1.1 Estructura condicional Si-Entonces

    Y as es cmo queda el proceso final:

    Ejemplo 1.2 En este ejemplo, vamos a pedirle al usuario que ingrese un nmero que est entre 1 y999, y que determine la cantidad de dgitos que lo componen, con la condicin que el resultado dela pregunta lo guarde en una variable. Por el momento no vamos a validar que el nmero est enel rango solicitado, sino que asumiremos de buena fe que as es. Para esto, debemos tener presenteque el dato de entrada va a ser un nmero entero. Con respecto al proceso es fcil observar que amedida 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 sin es el nmero que har las veces de entrada, entonces la cantidad de dgitos tambin la guardaremosen una variable que llamaremos arbitrariamente d . Por lo tanto, d ser la salida que entregue elprograma, junto con un mensaje apropiado para el usuario. De acuerdo a todo lo dicho hasta elmomento, este es el anlisis escrito en Pseint:

    Profesor: Milton A. Ramrez Klapp - [email protected] 4

  • 1.1 Estructura condicional Si-Entonces

    Despus seguimos con lo mismo que hicimos en el ejemplo anterior: definir las variables con las quevamos a trabajar, y pedirle al usuario que ingrese los valores de todo aquello que se haya definidocomo entrada:

    Una vez que ya conocemos cul es el valor de n, es necesario hacer varias preguntas, que van a iranidadas, de tal manera que si la primera expresin no se cumple, se pasa al caso Sino. Al entraral Sino se vuelve a preguntar otra cosa: si da falso, pasamos a otro Sino, y as hasta llegar al finaly tener alguna respuesta ms concreta. Importante. Cuando estamos trabajando con condicioneslgicas que emplean el conectivo de la conjuncin y, es necesario emplear el smbolo &, o bien&&, dependiendo de la configuracin 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 evaluarms opciones. Una manera de producir los mismos resultados, pero de una manera no anidada es lasiguiente, y que contempla cada uno de los casos que ya hemos estudiado:

    Profesor: Milton A. Ramrez Klapp - [email protected] 5

  • 1.1 Estructura condicional Si-Entonces

    Observacin. Usted puede trabajar con cualquiera de los dos esquemas que se presentan en esteapunte para el caso en que tenga que evaluar mltiples condiciones que contengan expresiones lgicascomo conjunciones, disyunciones o negaciones. La resolucin termina cuando escribimos por mediode 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 esManuel o Alejandro, diremos que es masculino, o bien si es Alicia o Soledad, femenino. Para resolveresto, es necesario tener presente que el dato de entrada va a ser el nombre, y que se trata de unavariable de tipo caracter, ya que no es numrico, por razones obvias. En cuanto al proceso, se evalael valor del nombre, y se entrega la respuesta en funcin de lo que valga. La salida la guardaremosen una variable de tipo caracter que denotaremos por g :

    Proseguimos de la misma forma en cmo lo hicimos con los ejemplos anteriores: definir un nombrepara el proceso principal, declarar las variables con las que vamos a trabajar, y pedirle al usuario queingrese aquellas que en el anlisis hayan ido en la parte de la entrada:

    Profesor: Milton A. Ramrez Klapp - [email protected] 6

  • 1.1 Estructura condicional Si-Entonces

    Ahora es un buen momento para evaluar el valor del nombre. En este caso, vamos a trabajar conel conectivo lgico o, que en Pseint se representa mediante el smbolo |, o bien ||, segn laconfiguracin de caracteres que se haya elegido para trabajar. Cabe destacar que al igual que enel ejemplo anterior, se puede trabajar con las estructuras Si-Entonces de manera anidada, pero porrazones de legibilidad se van a mostrar por separado (lo bueno es que vamos a llegar al mismoresultado :)).

    Ahora slo falta mostrar un mensaje con el resultado final del algoritmo:

    Observacin. Cabe destacar que el algoritmo slo va a funcionar en caso que el nombre tomecualqiera 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 relacionadocon que la variable g no est inicializada. Esto se debe a que el encabezado del problema no especificaqu hacer en caso que el nombre ingresado no estuviera dentro de las alternativas posibles. Si asfuera, podramos decir para simplificar las cosas que por defecto el gnero va a ser distinto delque diga la expresin:

    Profesor: Milton A. Ramrez Klapp - [email protected] 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 lasemana, a partir de un nmero n comprendido entre 1 y 7, de tal manera que si n = 1, el resultadosea Lunes, n = 2 asociado con el martes y as sucesivamente hasta el caso en que n = 7 que va a serdomingo. Si denotamos por n al nmero del da de la semana, y por d al nombre del da asociado conn, podramos escribir un algoritmo como el que sigue a continuacin. Empezamos con el anlisis:

    Seguimos con el proceso principal, definimos las variables, e ingresamos los valores de los datos de entrada:

    El proceso de verificacin de n podra conducirnos a una serie de sentencias Si-Entonces anidadas de estamanera (se presenta en este formato para graficar de mejor manera lo que se va a explicar a continuacin):

    Profesor: Milton A. Ramrez Klapp - [email protected] 8

  • 1.2 Estructura condicional Segn

    Y terminamos mostrando el resultado final:

    Como usted podr ver, esto es bastante difcil de seguir, ya que entre ms condiciones tengamos queevaluar, aumenta la probabilidad de cometer algn error. Para que tengamos una estructura algortmicams 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, ytiene una apariencia como esta:

    Algo nos dice la imagen anterior. En primer lugar, la variable numrica indica que slo este tipo dedatos se pueden procesar en una instruccin de esta naturaleza, porque es una limitacin que tiene Pseint.

    Profesor: Milton A. Ramrez Klapp - [email protected] 9

  • 2. Ejercicios

    Ms abajo, desde la opcin 1 en adelante, significa 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 manerasecuencial 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, amodo 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 primerodebe hacer el anlisis.

    1. El algoritmo debe preguntar por la edad del usuario: en caso que sea menor estricto a 18, debedecir 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 valoringresado est en el intervalo [10, 20].

    ii. El algoritmo debe pedir los valores extremos de un intervalo [a, b], junto con un nmeroarbitrario, 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 semaneja en la UDD, a partir del nmero que le corresponde. Por ejemplo, si se ingresa el nmero1, el algoritmo debiera responder 08:00 - 09:20. Los valores se muestran en la tabla adjunta:

    Profesor: Milton A. Ramrez Klapp - [email protected] 10

  • 2. Ejercicios

    Mdulo Horario1 08:00 - 09:202 09:30 - 10:503 11:00 - 12:204 12:30 - 13:505 14:00 - 15:206 15:25 - 16:457 16:50 - 18:108 18:15 - 19:35

    4. Construya un algoritmo que le pida al usuario un nmero entero. En caso que el valor est entre 1y 5, debe escribir su nombre en forma literal uno, dos, etc. , y en caso contrario deberentregar el cuadrado del nmero.

    5. Disee un algoritmo que lea una calificacin entre 1 y 7, y la transforme a un concepto, que sea:insuficiente, 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 laestructura Segn.

    9. Construya un algoritmo que determine el tipo de solucin junto con las races de una expresinpolinomial de segundo grado de la forma ax2 + 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 afirmativo, debe entregar los valores de las incgnitas.

    11. En el mbito de la nutricin, el ndice de masa corporal IMC determina cul debiera ser elpeso ideal de una persona, en funcin de su estatura h y masa m. La expresin analtica que seemplea para determinarlo es la siguiente:

    IMC =m

    h2

    [kgm2

    ]Los especialistas han construido una tabla que relaciona el IMC con el estado nutricional de unapersona:

    IMC Estado NutricionalIMC < 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 - [email protected] 11

  • 2. Ejercicios

    (a) Un mensaje que contenga el estado nutricional de la persona, en funcin del IMC, que a suvez se calcula en base a la altura expresada en metros y a la masa corporal, que se mideen kilogramos.

    (b) Un mensaje que le indique al usuario en qu rango de peso corporal debiera estar para que suIMC se pueda considerar normal, en caso que no lo sea.

    Profesor: Milton A. Ramrez Klapp - [email protected] 12