miércoles, 1 de abril de 2020

Estructura de Control Secuencial y de Desición

Estructura de Control Secuencial

Las estructuras de control permiten cambiar el flujo del programa, para ejecutar las diferentes partes del programa en función de determinados criterios y de repetición del bloque de códigos. Al hablar de las estructuras secuenciales, nos referimos a la estructura que se encuentra compuesta por instrucciones (acciones) que deben ejecutarse una tras otra sin excepciones. 

Es una estructura en la cuál una instrucción no empieza a ejecutarse mientras la instrucción inmediatamente anterior no se haya resuelto completamente; estan compuestas por operaciones y expresiones.


Componentes de la Estructura Secuencial

1) Asignación: consiste en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
  • Simples: consiste en pasar un valor constante a una variable (a=10).
  • Contador: consiste en usarla como un verificador del número de veces que se realiza un proceso (a=a+1).
  • Acumulador: consiste en usarla como un sumador en un proceso (a=a+b).
  • De Trabajo: donde puede recibir el resultado de una operación matemática que involucre muchas variables (a=b+c*3/5).
2) Lectura: consiste en recibir desde un dispositivo de entrada un valor. Esta operación se representa en un pseudocodigo como sigue:

Leer a, b donde "a" y "b" son las variables que recibirán los valores.

3) Escritura: consiste en mandar por un dispositivo de salida un resultado o mensaje. Este proceso se representa en un peudocodigo como sigue:

Escribe "el resultado es:", R donde "el resultado es:" es un mensaje que se desea aparezca y R es una variable que contiene un valor.

 

Estructura de Control de Desición

Una estructura de decisión permite que la ejecución de un algoritmo tome distintos caminos, que llevan a distintos resultados, dependiendo de la condición o condiciones presentes en la estructura de decisión.

Una condición corresponde a una expresión lógica que puede contener operadores relacionados (<, >, <=, >=, =) o conectores lógicos:"
✓"Y" (^, &)
✓"NO" (~)
✓"O" (v, |)

Al evaluar una condición, esta puede arrojar un resultado booleano; verdadero o falso.

Tipos de Estructuras

1) Estructura de Desición Simple: se utiliza cuando solo se ejecutan acciones por la alternativa de verdadero o falso.



2) Estructura de Desición Compuesta: se ejecutan instrucciones tanto por la alternativa del verdadero como del falso.



3) Estructura de Desición Anidada (condicionales anidados): permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas.




4) Estructura de Desición Múltiple (según\casos): es una estructura de comparación múltiple para toma de desición especializada que permite evaluar una variable con distintos posibles resultados. Por cada valor posible, existe un caso. 



Sintaxis de las Estructuras de Control

1) Sentencia if: permite controlar que sentencias de una política se ejecutan mediante la evaluación del valor de una expresión para comprobar si es verdadera.

  • Sintaxis Simple
si (condición) entonces
          Sentencia 1
fin_si

  • Sintaxis Compuesta
si (condición) entonces 
          Sentencia 1 
si_no
          Sentencia 2
fin_si

2) Sentencia if-else: viene a ser una estructura que se ejecuta en respuesta a la idea "si esto no se cumple haz otro".

if (expresión)
       {
       sentenciaN
       ..
       }
else
       {sentenciaM;
       ..
       }
sentenciaX;

3) Sentencia IF-THEN-ELSE: permite, mediante una condición, que se ejecute o no una determinada tarea o línea de código.

if condición Then
     Sentencia o grupo de sentencias
Else
      Sentencia o grupo de sentencias
End if

4) Sentencia Select-Case: es una instrucción que sirve para realizar diferentes cosas dependiendo del valor que tiene una variable. Es un tipo de bifurcación muy potente que nos permite abrir la línea del programa en muchos caminos. Es parecido a un if, pero mas potente.

Select Case variable_control
Case Valor_1
Sentencia o grupo de sentencias
Case Valor_2
Sentencia o grupo de sentencias 
Case Valor_3
Sentencia o grupo de sentencias
End Select

5) Sentencia Switch: esta sentencia transfiere el control a un conjunto de una o mas sentencias de asignación o reglas, dependiendo del valor de una expresión. 

switch (expresión)
            {
            case caso1:
                    {bloque_sentencias1;
                    }
            case caso2:
                    {bloque_sentencias2;
                    }

            case casoN:
                     {bloque_sentenciasN;
                     }
            [default:
                     {bloqueXdefecto;
                     }]
            }

6) Sentencia While: se utiliza para repetir un bloque de sentencias mientras se cumpla una determinada condición.

          while (expresión)
                    {
                     ..
                     bloque_sentenciasN;
                     ..
                     }

7) Sentencia For-Next: es utilizada para generar una repetición de instrucciones o bucle entre un número inicial y un número final que se le debe indicar al mismo.

          For variable_contador =
          valor_inicial To
          valor_final
          Sentencia o grupo de sentencias

          Next variable_contador


Aplicaciones y Ejemplos de las Estructuras

Las estructuras de control en general son aplicadas para ejecutar las diferentes partes del programa y para cambiar los flujos de éste, dicha ejecución lleva a distintos caminos con diferentes resultados, dependiendo de las condiciones de los casos. Sus usos son muy variados y gracias a estos podemos ir desde las actividades más simples a las mas complejas, convirtiéndose así en una de las bases de la programación.

Ejemplo 1
Hacer un algoritmo que dada la edad de la persona, muestre si esta es mayor de edad.

Algoritmo Hallar Edad
Var
     Entero: Edad
Inicio
     Escribir "Digite su edad"
     Leer Edad
     Si (Edad >= 18) entonces
          Escribir "La persona de edad", Edad, "es mayor de Edad"
     Fin si 
     Escribir "Gracias por usar este programa"
Fin

Ejemplo 2
Hacer un algoritmo que ingrese 3 notas de un alumno, promediarlas y decir si aprueba o no aprueba el curso sabiendo que la nota aprobatoria es 3 o más, no existen redondeos a favor del alumno.

Algoritmo Calificaciones
Var
     Real: N1, N2, N3, P
Inicio
     Escribir "Ingrese las tres calificaciones"
     Leer N1, N2, N3
     P   (N1 + N2 + N3)\3
     Si (P >= 3) entonces
          Escribir "Aprueba el Curso"
     Sino
          Escribir "Desaprueba el Curso"
     Fin si
Fin

Ejemplo 3
Crear un algoritmo que permita entrar el valor de una compra y si el valor es mayor o igual a $500, se hace un descuento del 30%.
Por un monto menor de $500 pero mayor o igual a 200, se hace un descuento del 20%.
Por un monto menor de $200 pero mayor o igual a 100, se hace un descuento del 10%.

Algoritmo Hallar Descuento
Var
     Real: vr_compra, descuento, totalpagar
Inicio
     Escribir "Ingrese el valor de la compra"
     Leer vr_compra
     Si (vr_compra >=500) entonces
          descuento   vr_compra*30\100
     Sino
          Si (vr_compra >=200) entonces
               descuento    vr_compra*20\100
          Sino
               Si (vr_compra >=100) entonces
                    descuento vr_compra*10\100
              Sino
                    descuento   0
              Fin si
          Fin si
      Fin si
     totalpagar   vr_compra - descuento
     Escribir "El total a pagar es: $", totalpagar
Fin

Ejemplo 4
Hacer un algoritmo que dado un número entre 1 y 7 escriba su correspondiente dia de la semana así:
1-Lunes, 2-Martes, 3-Miércoles, 4-Jueves, 5-Viernes, 6-Sábado, 7-Domingo

Algoritmo Días
Var
     Entero: día
Inicio
     Escribir "Digite un número para escribir su día"
     Leer día
     En caso de (día) haga
          Caso 1:
                       Escribir "Lunes"
                       salto
          Caso 2:
                       Escribir "Martes"
                       salto
          Caso 3:
                        Escribir "Miércoles"
                        salto
          Caso 4:
                        Escribir "Jueves"
                        salto
          Caso 5:
                       Escribir "Viernes
                       salto
          Caso 6:
                       Escribir "Sábado"
                       salto
           Caso 7:
                        Escribir: "Domingo"
                        salto
           En otro caso: Escribir "Digito un número fuera del rango 1-7"
                        salto
     Fin casos
Fin

Observaciones:
Suponga que el usuario digita el 3 y que además en el caso 3 se omite la instrucción salto. Bajo estas condiciones ocurrirá lo siguiente:

Aparecería por pantalla el texto "Miércoles" y luego el texto "Jueves".