Nuevo

1.2 Algoritmo.

1.2 Algoritmo.



Definición

La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados, que describe el proceso que se debe seguir, para dar solución a un problema específico. (Fadul, 2004).
Como tal pensar en un algoritmo, es pensar la forma en la que podemos resolver un problema paso a paso, si no se resuelve un paso del problema no se puede pasar al siguiente.

Características

Los algoritmos se caracterizan principalmente porque son:
  • Precisos: La palabra preciso indica que se distingue con claridad, de igual manera un algoritmo es claro en cada uno de sus pasos.
  • Definido: El algoritmo está delimitado, solo procesa la información y las operaciones que tiene, no realiza operaciones “fantasma”, si se realiza el algoritmo dos o más veces con los mismo datos siempre dará el mismo resultado.
  • Finito: Refiriéndose esta característica a que un algoritmo siempre va a tener un fin, .
  • mediante esta característica el algoritmo se culmina la estructura de un algoritmo.

Estructura



Los algoritmos son pilares en la informática así como del desarrollo de sistemas, por lo cual la siguiente estructura no es solo de los algoritmos, es como tal la estructura del tratamiento automático de la información también conocido como procesamiento de datos.
  • 1. Entrada: En los procesos informáticos, la entrada representa todos los datos que necesita el algoritmo para ser procesados, es la alimentación necesaria para que se puedan procesar los datos, pueden ser datos que introduzca el usuario del algoritmo o bien que se obtengan de alguna otra fuente.
  • 2. Proceso: Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados". (Stallings), es decir, un proceso es la ejecución paso a paso de las instrucciones, cabe mencionar que un proceso consiste en un conjunto de pasos y nunca un paso puede saltarse otro.
  • 3. Salida: Son los resultados que se desean obtener en la ejecución del algoritmo, cabe mencionar que aquí debe obtenerse la o las respuestas que resuelvan la problemática planteada para resolver mediante el algoritmo.

Metodología para la descomposición de un algoritmo

Una metodología es un conjunto de métodos utilizados para la investigación científica, en este paradigma, la metodología es la que permite diseñar los algoritmos que servirán para resolver los problemas específicos.
  • 1. Definición del problema: Citando a Einstein, “si tuviera una hora para salvar el mundo, se iba a gastar cincuenta y cinco minutos definiendo el problema, y sólo cinco minutos para encontrar la solución”, invertir tiempo en la definición del problema nos ayuda a no gastar tiempo replanteando el algoritmo. Este paso de la metodología debemos plantearnos la pregunta ¿Cuál es el problema en concreto?, visualizar la delimitación del problema, ¿Hasta dónde abarcará la solución del problema? y si es posible resolver el algoritmo o no, se sugiere documentar todo en un formato similar al siguiente
Tabla 1 Definición del Problema
Nombre del Problema
Delimitación
Resultado deseado

  • 2. Análisis: Una vez identificado y delimitado el problema, esta fase tiene el objetivo de dividir el problema en sus componentes y examinar de qué manera pueden unirse, en esta fase se deben contestar las siguientes preguntas:
    • a. ¿Qué se necesita para resolver el problema?
    • b. ¿Qué pasos son necesarios para resolver el problema?
    • c. ¿Qué se debe obtener para resolver el problema?
Una vez resueltas estas preguntas, es muy útil escribirlas en papel o en un medio electrónico con la finalidad de consultarlas cuando en las siguientes fases de la metodología, se sugiere la siguiente tabla:
Tabla 2 Análisis del Problema


Datos de entrada
(¿Qué necesito para resolver el problema)
Proceso
(¿Qué pasos son necesarios para resolver el problema?)
Salida
(¿Qué se obtiene al resolver el problema)

  • 3. Diseño: El eminente matemático Donald E. Knuth, expresa en su famosa obra: El arte de programar computadoras, lo siguiente: "El proceso de preparar programas para una computadora digital tiene un atractivo especial, no sólo porque puede ser recompensado económica y científicamente, sino también porque puede ser una experiencia estética como la poesía y la música." Haciendo uso de alternativas de solución como lo son diagramas de flujo y pseudocódigo se indican los pasos que deberá seguir el algoritmo para obtener la solución del problema.
  • 4. Verificación: Definido como la acción de comprobar o examinar la verdad de algo, aplicado al tema actual, es la fase que nos permite saber si el algoritmo cumplió o no su objetivo, para realizar la comprobación se le dan variables de entrada al algoritmo y se observan los resultados que arroja, por otra parte y haciendo uso de papel y lápiz se realiza una prueba de escritorio que consiste en realizar las operaciones que el algoritmo debe realizar y se comprueban los resultados obtenidos del algoritmo contra los resultados obtenidos en la prueba de escritorio, en caso de que ambos coincidan, se concluye que el algoritmo funciona para resolver el problema planteado, en caso contrario se debe volver a la fase de definición del problema para buscar el error. Para esta fase se sugiere el siguiente formato:
Tabla 3 Verificación
Variables de entradaOperaciones RealizadasResultado Obtenido

Y responder la pregunta: ¿El resultado de la prueba de escritorio es el mismo que el arrojado por el algoritmo?, en caso de que la respuesta sea positiva, tendremos un algoritmo funcional.

Análisis del Problema

Como se mencionó anteriormente, esta fase tiene la finalidad de dividir el problema en sus componentes y examinar de qué manera pueden unirse, los componentes principales son:
  • a. Identificadores: Al igual que en algebra, los algoritmos funcionan mediante valores que pueden ser introducidos por los usuarios o valores que pueden contener los procesos, esos valores deben ser nombrados de alguna manera con la finalidad de poder identificados y usarlos, en pocas palabras es el nombre que se la da a las variables y constantes que se usan en el algoritmo.
  • b. Tipos de datos: Dicho mexicano dice, ”Hasta en los perros hay razas” de igual manera en la informática hasta en los valores (variables y constantes) hay tipos, a diferencia de la rama canina, la raza en este caso son tipos y los tipos de datos más comunes son:
    • a. Numéricos: Son aquellos valores que solo pueden contener números, ya sean enteros, fraccionarios, positivos, negativos, reales o imaginarios con la finalidad de realizar operaciones aritméticas comunes.
    • b. Alfanumericos: Es una secuencia de caracteres que pueden ser números, letras o signos, estos pueden ser nombres, direcciones y en comparación con los numéricos, no se pueden realizar operaciones aritméticas con estos.
    • c. Lógicos: Son aquellos que solo pueden tener un valor, cierto o falso, ya que representan el resultado de una comparación de valores.
  • c. Variables: Son valores que van cambiando durante la ejecución de los procesos del algoritmo, en estas variables se van a guardar las operaciones que el algoritmo realice para resolver el problema. Cada variable tiene un identificador, pues es el nombre con el que se encuentra y un tipo de dato, que indica que datos podrá guardar que pueden ser números, letras o valores cierto o falso.
  • d. Constantes: Son datos que su valor no va a cambiar durante todo el desarrollo del algoritmo, las constantes pueden tener o no un identificador, pues estos valores pueden escribirse directamente al usar las operaciones o bien asignarle un identificador, las constantes también tienen un tipo de dato.
  • e. Operadores y expresiones: Son símbolos que tienen una función predefinida (suma, resta, multiplicación etc.) y que recibe sus argumentos de manera infija (luzumisu, s.f.), los operadores más utilizados son:
    • a. Aritméticos: Son los operadores que permiten realizar operaciones aritméticas y se enlistan en la siguiente tabla:
      OperadorAcciónEjemplo
      +SumaX = 5 + 4 | x= 9
      -RestaX = 10 – 3 | x=7
      *MultiplicaciónX = 3 * 2 | x = 6
      /DivisiónX = 10 / 2 | x = 5
      %División ModularX =  1 / 3 | x = .66
      ++IncrementoX = 1; X++ | x = 2
      --DecrementoX = 1; X-- | x = 0
      ^PotenciaX = 2  ^ 3 | x = 8
      Ilustración 1 Tabla de Operadores Aritméticos

    • b. Relacionales: Estos operadores permiten evaluar la relación entre un par de operando (constantes o variables) y permiten devolver valores de cierto o falso. 
      OperadorAcción
      Mayor que
      >=Mayor o igual que
      Menor que
      <=Menor o igual que
      ==Igual / idéntico
      ¡=Diferente / distinto
      Ilustración 2 Tabla de Operadores relacionales

    • c. Lógicos: Son operadores que permiten conectar un par de propiedades, es decir, nos permiten obtener una respuesta lógica de la comparación de dos operaciones. 
      OperadorAcción
      &&Conjunción, and, Y
      ||Disyunción, or, O
      !Negación, no
      Ilustración 3 Tabla de Operadores Lógicos


      • i. Los operadores lógicos tienen un conjunto de reglas llamadas tablas de verdad, las cuales permiten obtener el valor lógico a partir de dos operaciones a continuación se muestran las tablas de verdad de AND, OR Y NOT 

        OperadorOperador 2Resultado
        TTT
        TFF
        FTF
        FFF
        Ilustración 4 Tabla de verdad de AND

        OperadorOperador 2Resultado
        TTT
        TFT
        FTT
        FFF
        Ilustración 5 Tabla de verdad de OR

        OperadorResultado
        TF
        FT
        Ilustración 6 Tabla de verdad de NOT

        • Las T significan “True” por su significado en ingles de Verdadero y F por “False” tomando el valor de falso. Para poner más en contexto las operaciones lógicas, se muestra un ejemplo
        (10 + 20) > (5 * 3) AND (10 -1) = 9
        30 > 15 AND 9 = 9
        T AND T
        True
        Ilustración 7 Ejemplo del uso de tablas de verdad

    • d. Jerarquía de Operadores: Para realizar operaciones como la anterior, se debe seguir un orden para la realización de operaciones:

      1. Operadores Matemáticos
        1. Paréntesis
        2. Potencias y Raíces
        3. Multiplicaciones y Divisiones
        4. Sumas y restas
      2. Operadores Relacionales
        1. <,>,<=,>=,==,!=
      3. Operadores  Lógicos
        1. Not
        2. AND , OR
      Ilustración 8 Jerarquía de Operadores

      Primero se realizan las operaciones que se encuentran ente paréntesis, si hay más de una operación dentro de un paréntesis de aplica el mismo criterio para realizar las operaciones en el orden indicado, posteriormente las potencias y raíces, multiplicaciones y divisiones, sumas y restas en ese orden, si un operador se encuentra dos veces, se realiza la operación que se encuentre primero de izquierda a derecha, posteriormente y también de izquierda a derecha se aplican los operadores relacionales y por último los operadores lógicos.

Diseño de Algoritmo (alternativas de solución)

Mediante las herramientas de diseño de algoritmos se pueden desarrollar los mismos, las alternativas de diseño de algoritmos son principalmente dos:
  • Diagrama de flujo
    • Representan de forma visual el flujo de los datos a través del tratamiento de información. Los diagramas de flujo describen que operaciones y en que secuencia se requieren para solucionar un problema dado
    • Los diagramas de flujo se dibujan generalmente usando algunos símbolos estándares. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestras a continuación 


      Ilustración 9 Elementos de un diagrama de flujo

    • Reglas para la creación de Diagramas 

      • Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.
      • Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales).
      • Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario.
      • No deben quedar líneas de flujo sin conectar
      • Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.
      • Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.
      • Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida (unam.mx, s.f.).
  • Pseudocódigo

    • Es una técnica que sirve para escribir programas de computadora en lenguaje natural de tal manera que se facilite la comprensión, prueba y posterior codificación en un lenguaje de programación específico
    • Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo
      • Ocupa menos espacio en una hoja de papel.
      • Permite representar en forma fácil operaciones repetitivas complejas.
      • Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de programación.
      • Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.
  • Prueba de escritorio: Todo algoritmo debe ser probado antes de ser ejecutado para tener la certeza de que lograremos el objetivo. La forma de probarlo es siguiente cada uno de los pasos que indica el algoritmo. A esto le llamaremos prueba de escritorio. En la prueba de escritorio, un algoritmo bien hecho siempre debe funcionar
    • Al poner en marcha los pasos del algoritmo para determinar si logrará o no el objetivo, tal vez se tengan que hacer algunas modificaciones hasta logar el objetivo esperado. El algoritmo debe ser lo suficientemente detallado para que no exista duda alguna al ejecutarse. (Chehaibar, 2007).

Algoritmos secuenciales

En este tipo de estructura las instrucciones se realizan o se ejecutan una después de la otra y, por lo general, se espera que se proporcione uno o varios datos, los cuales son asignados a variables para que con ellos se produzcan los resultados que representen la solución del problema que se planteó.
Los algoritmos tienen como fin actuar sobre los datos proporcionados por el usuario, a los que se les aplican procesos con el fin de generar la información o un resultado (Delgado).

Actividad de retroalimentación

Se requiere de un algoritmo que calcule el sueldo semanal o mensual de un trabajador de construcción, al empleado le pagan $50 pesos la hora y cada día trabaja durante 8 horas.

Fase 1 Definición del Problema

Tabla 1 Definición del Problema
Nombre del ProblemaSueldo de un trabajador
DelimitaciónObtener el sueldo semanal o mensual a partir del pago por horas y el número de horas trabajadas
Resultado deseadoSueldo semanal del trabajador

Fase 2 Análisis del Problema

Datos de entrada
(¿Qué necesito para resolver el problema)
Proceso
(¿Qué pasos son necesarios para resolver el problema?)
Salida
(¿Qué se  obtiene al resolver el problema)
  • Pago por hora
  • Número de horas trabajadas en un día
  • Número de días trabajados
Sueldo = (Pago por hora*Número de horas trabajadas en un día)*Número de días trabajadosSueldo Semanal

Fase 3 Diseño del Algoritmo


Fase 4 Verificación

Variables de entradaOperaciones RealizadasResultado Obtenido
NumDiasTrab=7Sueldo = (50*8)*72800

No comments