ESTRUCTURAS SELECTIVAS




               Elaborado por; Ing. Alberto Pérez
FLUJO DE CONTROL
 En las estructuras selectivas se evalúa una condición y en
  función del resultado de la misma se realiza una
  instrucción u otra.
 Las estructuras selectivas o alternativas pueden ser:

  -Simples
  -Dobles
  -Múltiples



                                     Elaborado por; Ing. Alberto Pérez
ALTERNATIVA SIMPLE
 La estructura alternativa simple si-
  entonces ejecuta una determinada
  acción    cuando      se     cumple
  determinada condición .
 Si la condición es verdadera
  entonces ejecuta la acción S1 (o
  acciones en caso de ser S1 una
  acción compuesta y constar de
  varias acciones).
 Si la condición es falsa entonces no
  hace nada.                        Elaborado por; Ing. Alberto Pérez
EJEMPLO:
 Si <condición> entonces
       <acción S1>
   fin_si

 // S1 acción compuesta
  si <condición> entonces
       <acción S1>
           <acción S2>
       <acción Sn>
  fin_si

                            Elaborado por; Ing. Alberto Pérez
ALTERNATIVA SIMPLE
 Obsérvese que las palabras del pseudocódigo si y fin_si se
  alinean verticalmente identando la <acción> o bloque de
  acciones.


 Sintaxis en lenguaje de programación C/C++
  if (condición )
  {
       sentencias
   }
                                    Elaborado por; Ing. Alberto Pérez
ALTERNATIVA DOBLE

       La estructura anterior es muy
        limitada y normalmente se
        necesitara una estructura que
        permita elegir entre dos
        opciones     o     alternativas
        posibles, en función del
        cumplimiento o no de una
        determinada condición .




               Elaborado por; Ing. Alberto Pérez
ALTERNATIVA DOBLE
 Ejemplo:
  Resolución de una ecuación de primer grado.
 Si la ecuación es ax + b = 0 , a y b son los datos, y las
  posibles soluciones son:
 a != 0     x = -b/a
 a=0        b !=0 entonces ‘solución imposible’
 A=0b=0            entonces ‘solución indeterminada’


                                     Elaborado por; Ing. Alberto Pérez
EJEMPLO

 Pseudocódigo
     si <condición>entonces
       <acción S1>
     si_no
       <acción S2>
     fin_si



                              Elaborado por; Ing. Alberto Pérez
PRÁCTICA
 Se desea obtener la nómina semanal del salario neto de lo
  empleados de una empresa cuyo trabajo se paga por
  horas         y        del        modo          siguiente:
  -Las horas inferiores o iguales a 35 horas (normales) se
  pagan a una tarifa determinada que se debe introducir por
  teclado al igual que el numero de horas y nombre del
  trabajador.
    Las horas superiores a 35 se pagaran como extras a un
     precio de 1.5 horas normales.


                                    Elaborado por; Ing. Alberto Pérez
PRÁCTICA
 Los impuestos a deducir a los trabajadores varían en
  función a su sueldo mensual.
   Sueldo < = 20000, libre de impuestos.
   Los siguientes 15000 al 20% y el resto al 30% .




                                    Elaborado por; Ing. Alberto Pérez
ALTERNATIVA MÚLTIPLE
 Con frecuencia en la práctica es necesario que existan mas
  de dos elecciones.
 Este problema, como se vera mas adelante, se podría
  resolver por estructuras simples o dobles, anidadas o en
  cascada; sin embargo, si el numero de alternativas es
  grande puede plantear serios problemas de escritura del
  algoritmo y naturalmente de legibilidad.




                                    Elaborado por; Ing. Alberto Pérez
ALTERNATIVA MÚLTIPLE
 La estructura de decisión
  múltiple evaluara una
  expresión que podrá tomar
  n valores distintos.
 Según el valor elegido se
  realizara una de las n
  acciones, o lo que es
  igual, el flujo del algoritmo
  seguirá un determinado
  camino entre los n
  posibles.
                                  Elaborado por; Ing. Alberto Pérez
ALTERNATIVA MÚLTIPLE
según_sea expresión (E) hacer
     e1: acción S11
         acción S12
     e2: acción S1a
         acción S21
           acción S22
           acción S2b
       en: acción S31
           acción S32
      si_no
           acción Sx
fin_según
                                Elaborado por; Ing. Alberto Pérez
EJEMPLO
 Se desea diseñar un algoritmo que escriba los nombres de
  los días de la semana en función del valor de una variable
  DIA introducida por el teclado.
 Los días de la semana son 7; por consiguiente el rango de
  valores de DIA será 1. . 7 y en caso de que DIA tome un
  valor fuera de este rango se deberá producir un mensaje
  de error advirtiendo la situación anómala.




                                    Elaborado por; Ing. Alberto Pérez
PRÁCTICA

 Se desea convertir la calificaciones alfabéticas A, B, C, D y E
  a calificaciones numéricas 4, 5, 6, 7 y 8 respectivamente.


 Introducir un número del 1 al 10 y visualizar si el número
  es par o impar.




                                       Elaborado por; Ing. Alberto Pérez
ESTRUCTURA DE DECISION ANIDADAS
                Es posible utilizar la instrucción
                 si para enseñar estructuras de
                 selección que contengan mas de
                 3 alternativas.
                Una estructura si-entonces
                 puede contener otra estructura
                 si-entonces, y esta estructura
                 puede contener otra y así
                 sucesivamente        cualquier
                 número de veces.


                          Elaborado por; Ing. Alberto Pérez
ESTRUCTURA DE DECISION ANIDADAS
    si < condicion1> entonces
      si <condición> entonces
        <acciones>
      fin_si
    fin_si




                                Elaborado por; Ing. Alberto Pérez
ESTRUCTURA DE DECISION ANIDADAS
 Una estructura selectiva múltiple constara de una serie de
  estructuras si, unas interiores a otras.
 Como las estructuras si pueden volverse bastante
  complejas para que el algoritmo sea claro, será preciso
  utilizar identación.
 Deberá existir una correspondencia entre las palabras
  reservadas si y fin_si, por un lado, y entonces y si_no.




                                    Elaborado por; Ing. Alberto Pérez
PRÁCTICAS
 Calcular la hora dentro de un segundo, el usuario
  introducirá HH, MM, SS.


 Leer dos números y determinar si están en orden creciente
  o decreciente.




                                   Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS

FLUJO DE CONTROL
    Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 Un tipo muy importante de
  estructura es el algoritmo
  necesario para repetir una
  o varias acciones un
  numero determinado de
  veces.
 Las estructuras que repiten
  una       secuencia      de
  instrucciones un numero
  determinado de veces se
  denominan ciclos.
                                Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 Se denomina iteración al
  hecho de repetir la
  ejecución de una secuencia
  de acciones.
 Las     dos      principales
  preguntas a realizarse en el
  diseño de un bucle son:
    ¿Qué contiene el ciclo?
    ¿Cuántas veces se tiene que
     repetir?


                                   Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 Para detener la ejecución
  de los ciclos se utiliza una
  condición de parada.


 El pseudocódigo de una
  estructura       repetitiva
  tendrá este formato:




                                 Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
    inicio
    //iniciación de variables
    repetir
      acciones S1, S2 …
      salir según condición
      acciones Sn, Sn + 1, …
    fin_repetir


                                Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 Los enunciados a utilizar
  serán:
   Iterar    (loop)
   mientras (while)
   hacer-mientras (do-while)
   repetir   (repeat)
   desde     (for)


                               Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
algoritmo SUMA 1
  inicio
       K=0
       S=0
    leer (n)
    mientras K < n hacer
    K = K+ 1
    S = S +K
    fin_mientras
    escribir (S)
  fin
                           Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 MIENTRAS
 La estructura repetitiva mientras
  es aquella en que el cuerpo del
  ciclo se repite mientras se
  cumple determinada condición.
 Cuando se ejecuta la instrucción
  mientras, la primera cosa que
  sucede es que se evalúa la
  condición.

                                      Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS

 Si se evalúa falsa no se toma ninguna acción y el programa
  prosigue en la siguiente instrucción después del ciclo.


 Si la expresión booleana es verdadera, entonces se ejecuta
  el cuerpo del ciclo, después de lo cual se evalúa de nuevo
  la expresión booleana.



                                    Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
    mientras condición hacer
     acción S1
     acción S2
     acción Sn
    fin_mientras




                               Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 Hacer-mientras (do-while)
 Este ciclo se denomina ciclo
  post-test       o      ciclos
  controlados por la salida.
 Las sentencias de este ciclo
  se ejecutan al menos una
  vez, incluso aunque la
  expresión booleana sea
  falsa

                                  Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 La elección entre un ciclo
  mientras y un ciclo hacer-
  mientras depende del
  problema     computo     a
  resolver.
 En la mayoría de los casos
  el ciclo mientras será el
  indicado



                               Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS

hacer
   <acciones>
mientras (<expresión>)




                         Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 Estructura desde/para (for)
 En muchas ocasiones se conoce de antemano el número
  de veces que se desean ejecutar las acciones de un ciclo.
 En estos casos se debe usar la estructura desde.
 Ejecuta las acciones del cuerpo un número especificado de
  veces y de modo automático controla el número de
  iteraciones.



                                     Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
desde v = vi hasta vf [incremento incr] hacer
  <acciones>


 fin_desde
 Si se omite el incremento el default es que aumente en 1




                                    Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
desde i = 20 hasta 10 hacer
  <acciones>
fin_desde


 desde i = 20 hasta 10 decremento 1 hacer
    <acciones>
  fin_desde


                                  Elaborado por; Ing. Alberto Pérez
ESTRUCTURAS REPETITIVAS
 ESTRUCTURAS ANIDADAS


 De igual forma que se pueden anidar estructuras de
  selección, es posible insertar un ciclo dentro de otro.


 Las variables índices o de control toman valores de modo
  tal que por cada valor de la variable índice del ciclo
  externo se debe ejecutar totalmente el ciclo interno.


                                      Elaborado por; Ing. Alberto Pérez
PRÁCTICAS - CICLOS
 PRÁCTICA 18
 Algoritmo para obtener la tabla de multiplicar completa de
  un número dado (ciclo anidado)
 PRÁCTICA 19
 Buscar y escribir la primera vocal leída del teclado
 PRÁCTICA 20
 Escribir un algoritmo que permita escribir en una pantalla
  la frase ¿Desea continuar? S / N hasta que la respuesta
  sea S o N

                                      Elaborado por; Ing. Alberto Pérez

4. estructuras selectivas

  • 1.
    ESTRUCTURAS SELECTIVAS Elaborado por; Ing. Alberto Pérez
  • 2.
    FLUJO DE CONTROL En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se realiza una instrucción u otra.  Las estructuras selectivas o alternativas pueden ser: -Simples -Dobles -Múltiples Elaborado por; Ing. Alberto Pérez
  • 3.
    ALTERNATIVA SIMPLE  Laestructura alternativa simple si- entonces ejecuta una determinada acción cuando se cumple determinada condición .  Si la condición es verdadera entonces ejecuta la acción S1 (o acciones en caso de ser S1 una acción compuesta y constar de varias acciones).  Si la condición es falsa entonces no hace nada. Elaborado por; Ing. Alberto Pérez
  • 4.
    EJEMPLO:  Si <condición>entonces <acción S1> fin_si  // S1 acción compuesta si <condición> entonces <acción S1> <acción S2> <acción Sn> fin_si Elaborado por; Ing. Alberto Pérez
  • 5.
    ALTERNATIVA SIMPLE  Obsérveseque las palabras del pseudocódigo si y fin_si se alinean verticalmente identando la <acción> o bloque de acciones.  Sintaxis en lenguaje de programación C/C++ if (condición ) { sentencias } Elaborado por; Ing. Alberto Pérez
  • 6.
    ALTERNATIVA DOBLE  La estructura anterior es muy limitada y normalmente se necesitara una estructura que permita elegir entre dos opciones o alternativas posibles, en función del cumplimiento o no de una determinada condición . Elaborado por; Ing. Alberto Pérez
  • 7.
    ALTERNATIVA DOBLE  Ejemplo: Resolución de una ecuación de primer grado.  Si la ecuación es ax + b = 0 , a y b son los datos, y las posibles soluciones son:  a != 0 x = -b/a  a=0 b !=0 entonces ‘solución imposible’  A=0b=0 entonces ‘solución indeterminada’ Elaborado por; Ing. Alberto Pérez
  • 8.
    EJEMPLO  Pseudocódigo si <condición>entonces <acción S1> si_no <acción S2> fin_si Elaborado por; Ing. Alberto Pérez
  • 9.
    PRÁCTICA  Se deseaobtener la nómina semanal del salario neto de lo empleados de una empresa cuyo trabajo se paga por horas y del modo siguiente: -Las horas inferiores o iguales a 35 horas (normales) se pagan a una tarifa determinada que se debe introducir por teclado al igual que el numero de horas y nombre del trabajador.  Las horas superiores a 35 se pagaran como extras a un precio de 1.5 horas normales. Elaborado por; Ing. Alberto Pérez
  • 10.
    PRÁCTICA  Los impuestosa deducir a los trabajadores varían en función a su sueldo mensual.  Sueldo < = 20000, libre de impuestos.  Los siguientes 15000 al 20% y el resto al 30% . Elaborado por; Ing. Alberto Pérez
  • 11.
    ALTERNATIVA MÚLTIPLE  Confrecuencia en la práctica es necesario que existan mas de dos elecciones.  Este problema, como se vera mas adelante, se podría resolver por estructuras simples o dobles, anidadas o en cascada; sin embargo, si el numero de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad. Elaborado por; Ing. Alberto Pérez
  • 12.
    ALTERNATIVA MÚLTIPLE  Laestructura de decisión múltiple evaluara una expresión que podrá tomar n valores distintos.  Según el valor elegido se realizara una de las n acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles. Elaborado por; Ing. Alberto Pérez
  • 13.
    ALTERNATIVA MÚLTIPLE según_sea expresión(E) hacer e1: acción S11 acción S12 e2: acción S1a acción S21 acción S22 acción S2b en: acción S31 acción S32 si_no acción Sx fin_según Elaborado por; Ing. Alberto Pérez
  • 14.
    EJEMPLO  Se deseadiseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por el teclado.  Los días de la semana son 7; por consiguiente el rango de valores de DIA será 1. . 7 y en caso de que DIA tome un valor fuera de este rango se deberá producir un mensaje de error advirtiendo la situación anómala. Elaborado por; Ing. Alberto Pérez
  • 15.
    PRÁCTICA  Se deseaconvertir la calificaciones alfabéticas A, B, C, D y E a calificaciones numéricas 4, 5, 6, 7 y 8 respectivamente.  Introducir un número del 1 al 10 y visualizar si el número es par o impar. Elaborado por; Ing. Alberto Pérez
  • 16.
    ESTRUCTURA DE DECISIONANIDADAS  Es posible utilizar la instrucción si para enseñar estructuras de selección que contengan mas de 3 alternativas.  Una estructura si-entonces puede contener otra estructura si-entonces, y esta estructura puede contener otra y así sucesivamente cualquier número de veces. Elaborado por; Ing. Alberto Pérez
  • 17.
    ESTRUCTURA DE DECISIONANIDADAS si < condicion1> entonces si <condición> entonces <acciones> fin_si fin_si Elaborado por; Ing. Alberto Pérez
  • 18.
    ESTRUCTURA DE DECISIONANIDADAS  Una estructura selectiva múltiple constara de una serie de estructuras si, unas interiores a otras.  Como las estructuras si pueden volverse bastante complejas para que el algoritmo sea claro, será preciso utilizar identación.  Deberá existir una correspondencia entre las palabras reservadas si y fin_si, por un lado, y entonces y si_no. Elaborado por; Ing. Alberto Pérez
  • 19.
    PRÁCTICAS  Calcular lahora dentro de un segundo, el usuario introducirá HH, MM, SS.  Leer dos números y determinar si están en orden creciente o decreciente. Elaborado por; Ing. Alberto Pérez
  • 20.
    ESTRUCTURAS REPETITIVAS FLUJO DECONTROL Elaborado por; Ing. Alberto Pérez
  • 21.
    ESTRUCTURAS REPETITIVAS  Untipo muy importante de estructura es el algoritmo necesario para repetir una o varias acciones un numero determinado de veces.  Las estructuras que repiten una secuencia de instrucciones un numero determinado de veces se denominan ciclos. Elaborado por; Ing. Alberto Pérez
  • 22.
    ESTRUCTURAS REPETITIVAS  Sedenomina iteración al hecho de repetir la ejecución de una secuencia de acciones.  Las dos principales preguntas a realizarse en el diseño de un bucle son:  ¿Qué contiene el ciclo?  ¿Cuántas veces se tiene que repetir? Elaborado por; Ing. Alberto Pérez
  • 23.
    ESTRUCTURAS REPETITIVAS  Paradetener la ejecución de los ciclos se utiliza una condición de parada.  El pseudocódigo de una estructura repetitiva tendrá este formato: Elaborado por; Ing. Alberto Pérez
  • 24.
    ESTRUCTURAS REPETITIVAS inicio //iniciación de variables repetir acciones S1, S2 … salir según condición acciones Sn, Sn + 1, … fin_repetir Elaborado por; Ing. Alberto Pérez
  • 25.
    ESTRUCTURAS REPETITIVAS  Losenunciados a utilizar serán: Iterar (loop) mientras (while) hacer-mientras (do-while) repetir (repeat) desde (for) Elaborado por; Ing. Alberto Pérez
  • 26.
    ESTRUCTURAS REPETITIVAS algoritmo SUMA1 inicio K=0 S=0 leer (n) mientras K < n hacer K = K+ 1 S = S +K fin_mientras escribir (S) fin Elaborado por; Ing. Alberto Pérez
  • 27.
    ESTRUCTURAS REPETITIVAS  MIENTRAS La estructura repetitiva mientras es aquella en que el cuerpo del ciclo se repite mientras se cumple determinada condición.  Cuando se ejecuta la instrucción mientras, la primera cosa que sucede es que se evalúa la condición. Elaborado por; Ing. Alberto Pérez
  • 28.
    ESTRUCTURAS REPETITIVAS  Sise evalúa falsa no se toma ninguna acción y el programa prosigue en la siguiente instrucción después del ciclo.  Si la expresión booleana es verdadera, entonces se ejecuta el cuerpo del ciclo, después de lo cual se evalúa de nuevo la expresión booleana. Elaborado por; Ing. Alberto Pérez
  • 29.
    ESTRUCTURAS REPETITIVAS mientras condición hacer acción S1 acción S2 acción Sn fin_mientras Elaborado por; Ing. Alberto Pérez
  • 30.
    ESTRUCTURAS REPETITIVAS  Hacer-mientras(do-while)  Este ciclo se denomina ciclo post-test o ciclos controlados por la salida.  Las sentencias de este ciclo se ejecutan al menos una vez, incluso aunque la expresión booleana sea falsa Elaborado por; Ing. Alberto Pérez
  • 31.
    ESTRUCTURAS REPETITIVAS  Laelección entre un ciclo mientras y un ciclo hacer- mientras depende del problema computo a resolver.  En la mayoría de los casos el ciclo mientras será el indicado Elaborado por; Ing. Alberto Pérez
  • 32.
    ESTRUCTURAS REPETITIVAS hacer <acciones> mientras (<expresión>) Elaborado por; Ing. Alberto Pérez
  • 33.
    ESTRUCTURAS REPETITIVAS  Estructuradesde/para (for)  En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las acciones de un ciclo.  En estos casos se debe usar la estructura desde.  Ejecuta las acciones del cuerpo un número especificado de veces y de modo automático controla el número de iteraciones. Elaborado por; Ing. Alberto Pérez
  • 34.
    ESTRUCTURAS REPETITIVAS desde v= vi hasta vf [incremento incr] hacer <acciones> fin_desde  Si se omite el incremento el default es que aumente en 1 Elaborado por; Ing. Alberto Pérez
  • 35.
    ESTRUCTURAS REPETITIVAS desde i= 20 hasta 10 hacer <acciones> fin_desde  desde i = 20 hasta 10 decremento 1 hacer <acciones> fin_desde Elaborado por; Ing. Alberto Pérez
  • 36.
    ESTRUCTURAS REPETITIVAS  ESTRUCTURASANIDADAS  De igual forma que se pueden anidar estructuras de selección, es posible insertar un ciclo dentro de otro.  Las variables índices o de control toman valores de modo tal que por cada valor de la variable índice del ciclo externo se debe ejecutar totalmente el ciclo interno. Elaborado por; Ing. Alberto Pérez
  • 37.
    PRÁCTICAS - CICLOS PRÁCTICA 18  Algoritmo para obtener la tabla de multiplicar completa de un número dado (ciclo anidado)  PRÁCTICA 19  Buscar y escribir la primera vocal leída del teclado  PRÁCTICA 20  Escribir un algoritmo que permita escribir en una pantalla la frase ¿Desea continuar? S / N hasta que la respuesta sea S o N Elaborado por; Ing. Alberto Pérez