miércoles, 24 de septiembre de 2014

Estructura Selectiva

La estructura lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas. Las utilizamos cuando en  el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.
Esta toma de decisión (expresada con un rombo) se basa en la evaluación de una o  más condiciones que nos señalarán como alternativa o consecuencia, la rama a seguir.
Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir se toma una decisión, se marca la rama correspondiente a seguir, se vuelve a tomar una decisión y así sucesivamente. Por lo que para alcanzar la solución de este problema o subproblema debemos aplicar prácticamente un árbol de decisión.
Las podemos clasificar en:
1. SI ENTONCES (Esctructura selectiva simple)
2.SI ENTONCES / SINO (Estructura selectiva doble)
3.SI MULTIPE (Estructura selectiva múltiple)
ESCTRUCTURA SELECTIVA SI- ENTONCES
si-entonces
El diagrama de flujo o diagrama de actividades es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas comoprogramación, economía, procesos industriales y psicología cognitiva.
En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de actividades muestra el flujo de control general.
En SysML el diagrama de actividades ha sido extendido para indicar flujos entre pasos que mueven elementos físicos (p.ej., gasolina) o energía (p.ej., presión). Los cambios adicionales permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.
Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin de proceso.

ESTRUCTURA SELECTIVA SI ENTONCES /SINO
2
ESTRUCTURA SELECTIVAS ANIDADAS.
SELECCION COMPUESTA
ESTRUCTURA SI  MÚLTIPLE
5
Explicamos las estructuras secuenciales, cómo se representan 
en pseudocódigo y algunos ejemplos prácticos de las mismas.

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. 

En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma: 



Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocódigo y en diagramas de flujos: 

• Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo. 


El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial. Ahora veremos los componentes que pertenecen a ella: 

Asignación 

La 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 15)
  • Contador: Consiste en usarla como un verificador del numero 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 c + b*2/4).
En general el formato a utilizar es el siguiente: 

< Variable >      <valor o expresión >

El símbolo      debe leerse “asigne”. 

Escritura o salida de datos 

Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instrucción presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa así como sigue: 


Lectura o entrada de datos 

La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a continuación de la instrucción. Esta operación se representa así: 


DECLARACION DE VARIABLES Y CONSTANTES 

La declaración de variables es un proceso que consiste en listar al principio del algoritmo todas las variables que se usarán, además de colocar el nombre de la variable se debe decir qué tipo de variable es. 

Contador:   ENTERO 
Edad, I:   ENTERO 
Direccion :    CADENA_DE_CARACTERES 
Salario_Basico :    REAL 
Opcion :    CARACTER 

En la anterior declaración de variables Contador, Edad e I son declaradas de tipo entero; Salario_Basico es una variable de tipo real, Opcion es de tipo carácter y la variable Direccion está declarada como una variable alfanumérica de cadena de caracteres. 

En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor. 

CONSTANTE Pi 3.14159 
CONSTANTE Msg “Presione una tecla y continue” 
CONSTANTE ALTURA 40 

Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza declarar las variables. Sin embargo en este curso lo haremos para todos los algoritmos que realicemos, con esto logramos hacerlos más entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre ellos el C++) requieren que necesariamente se declaren las variables que se van a usar en los programas. 

Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento sobre algoritmos: 

Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujos. 


Ejemplo 2: Escriba un algoritmo que permita conocer el área de un triángulo a partir de la base y la altura. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.


conceptos básicos de programación
Introducción
  • Lenguaje Máquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria más pequeña el bit (dígito binario 0 ó 1).
  • Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.
  • Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascalcobol, fortran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa.
  1. Salir de la cama
  1. Quitarse la pijamas
  1. Darse un baño
  1. Vestirse
  1. Desayunar
  • Secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones de acuerdo con los datos que se estén procesando.
  • Es un algoritmo desarrollado para ser utilizado por la computadora
  • Expresión de un algoritmo en un lenguaje preciso que puede llegar a entender una máquina de cómputo.
  1. Utilizar el transporte ( autobús, carro , bicicleta, etc)

2. Fases para la creación de un programa.
  • Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso.
  • Documentación Externa: Se define en un documento escrito los siguientes puntos:
  • Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado.


Se pueden utilizar muchos lenguajes para programar una computadora. El más básico es el lenguaje de maquina, una colección de instrucciones muy detallada que controla la circuiteria interna de la maquina. Este es el dialecto natural de la maquina. Muy pocos programas se escriben actualmente en lenguaje de maquina por dos razones importantes: primero, porque el lenguaje de maquina es muy incomodo para trabajar y segundo por que la mayoría de las maquinas se pide programar en diversos tipos de lenguajes, que son lenguajes de alto nivel, cuyas instrucciones son más compatibles con los lenguajes y la forma de pensar humanos como lo es el lenguaje c que además es de propósito general.
Debido a que los programas diseñados en este lenguaje se pueden ejecutar en cualquier maquina , casi sin modificaciones. Por tanto el uso del lenguaje de alto nivel ofrece tres ventajas importantes, sencillez, uniformidad y portabilidad.

1.1. Lenguaje de programación: Sistema de símbolos y reglas que permite la construcción de programas con los que la computadora puede operar así como resolver problemas de manera eficaz.
Estos contienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada / salida, calculo, manipulación de textos, lógica / comparación y almacenamiento / recuperación.
Los lenguajes de programación se clasifican en:

1.2. Algoritmo. La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
La solución a cualquier problema de cómputo involucra la ejecución de una serie de acciones en orden especifico. Un procedimiento para resolver un problema en términos de: a) Las acciones a ejecutarse y b) el orden en el cual estas acciones deben ejecutarse se llama algoritmo.
Un ejemplo de un algoritmo para llegar a la escuela
  • Salir de la cama
  • Quitarse la pijamas
  • Darse un baño
  • Vestirse
  • Desayunar

  • 1.3 Programa.
    • Secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones de acuerdo con los datos que se estén procesando.
    • Es un algoritmo desarrollado para ser utilizado por la computadora
    • Expresión de un algoritmo en un lenguaje preciso que puede llegar a entender una máquina de cómputo.
  • Utilizar el transporte ( autobús, carro , bicicleta, etc)

  • 2.1 Definición del Problema

    Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.

    2.2 Análisis del Problema
    Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
    Los datos de entrada.
    Cual es la información que se desea producir (salida)
    Los métodos y fórmulas que se necesitan para procesar los datos.
    Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.

    2.3 Diseño del Algoritmo
    Las características de un buen algoritmo son:
    Debe tener un punto particular de inicio.
    Debe ser definido, no debe permitir dobles interpretaciones.
    Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.
    Debe ser finito en tamaño y tiempo de ejecución.

    Codificación
    La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.

    2.5 Prueba y Depuración
    Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.
    La prueba consiste en la captura de datos hasta que el programa no presente errores (los más comunes son los sintácticos y lógicos).

    2.6 Documentación
    Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientosdibujos o diagramas.
    A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).
    La documentación se divide en tres partes:
    Documentación Interna
    Documentación Externa
    Manual del Usuario
    Descripción del Problema
    Nombre del Autor
    Algoritmo (diagrama de flujo o pseudocódigo)
    Diccionario de Datos
    Código Fuente (programa)

    2.7 Mantenimiento
    Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.


    Estructuras de programación

    Selección o decisión: acciones en las que la ejecución de alguna dependerá de que se cumplan una o varias condiciones. Repetición, Iteración: cuando un proceso se repite en tanto cierta condición sea establecida para finalizar ese proceso.
    ESTRUCTURAS BÁSICAS.
    Tipos de estructuras de programación. Estructuras básicas y secuencial.
    Estructura Secuencial.
    Se caracteriza porque una acción se ejecuta detrás de otra. El flujo del programa coincide con el orden físico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización de variables, operaciones de asignación, cálculo, sumarización, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:
    Definición de variables (Declaración)
    Inicialización de variables.
    Lectura de datos
    Cálculo
    Salida
    Ejemplo 1.
    Se desea encontrar la longitud y el área de un círculo de radio 5.
    Solución.
    El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio conocido y de valor 5. Las salidas serán entonces la longitud y el área. (Fase 5 del algoritmo) Sabemos que la longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por pi * radio al cuadrado. (Fase 4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo)
    L = Longitud A = área R = radio pi = 3.1416 hagamos el algoritmo:
    Inicio
    Pi ¬ 3.1416 (definición de un valor constante)
    R ¬ 5 (radio constante ya que es conocido su valor)
    A ¬ pi * R ^ ² (asignación del valor del área)
    L ¬ 2 * pi * R (asignación del valor de la longitud)
    Escribir (A, L) (salida del algoritmo)
    Fin
    Representación en Diagrama de Flujo para el ejemplo:
    Tipos de estructuras de programación. Estructuras básicas y secuencial.
    Representación en Diagrama Nassi Schneiderman:
    Los problemas secuenciales en diagramas N-S se representan solamente por cajas con líneas horizontales
    Tipos de estructuras de programación. Estructuras básicas y secuencial.
    En este ejercicio no existen datos de entrada ya que para calcular el área y la longitud necesitamos únicamente el radio y el valor de Pi los cuales ya son dados en el problema Modificar el problema anterior para que sea capaz de calcular el área y la longitud de un círculo de cualquier radio requerido.
    Solución.
    El problema es el mismo con la variante de que ahora ya existe un dato de entrada, puesto que el radio puede ser cualquiera y será necesario que el usuario sea quien lo introduzca de teclado. Usando las misma definición de variables tenemos:
    Algoritmo:
    Inicio
    Pi ¬ 3.1416 (fase de inicialización)
    Leer (R) (fase de lectura)
    Area ¬ pi * R ^ ² (fase de cálculos)
    L ¬ 2 * pi * R
    Escribir ( A, L ) (fase de salida)
    Fin
    Note que la instrucción de asignación fue cambiada por la instrucción leer. En el flujograma deberán cambiarse también los símbolos que los representan:
    Tipos de estructuras de programación. Estructuras básicas y secuencial.
    Ejemplo 3.
    Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15% respectivamente. Desplegar el resultado.
    Salidas: Sueldos finales
    Entradas: Salarios de los empleados
    Datos adicionales: aumentos del 10, 12 y 15%
      Cálculos:
    Sueldo final = sueldo inicial + aumento
    Aumento = sueldo inicial * porcentaje/100
      Definición de variables:
    Sf1, Sf2, Sf3 = los sueldos finales
    S1, S2, S3 = salarios de los empleados
    Aum1, aum2, aum3 = aumentos
    ALGORITMO
    Inicio
    Leer (S1,S2,S3)
    Aum1 ¬ S1 * 0.10
    Aum2 ¬ S2 * 0.12
    Aum3 ¬ S3 * 0.15
    Sf1 ¬ S1 + Aum1
    Sf2 ¬ S2 + Aum2
    Sf3 ¬ S3 + Aum3
    Escribir (SF1,SF2,SF3)
    Fin
    FLUJOGRAMA
    Tipos de estructuras de programación. Estructuras básicas y secuencial.