¿QUÉ ES UN 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.

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.

Existen dos tipos de algoritmos y son llamados así por su naturaleza:
  • Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
  • Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. 
Tipos de Lenguajes Algorítmicos

Un Lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso, los que a su vez son de dos tipos:

Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (Diagrama de flujo).
                             

No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (Pseudocódigo).

INICIO
   Edad: Entero
   ESCRIBA “¿Cuál es tu edad?”
   Lea Edad
   SI Edad >=18 entonces
      ESCRIBA “Eres mayor de Edad”
   FINSI
   ESCRIBA “fin del algoritmo”
 FIN

El computador es una máquina que por sí sola no puede hacer nada, necesita ser programada, es decir, introducirle instrucciones u órdenes que le digan lo que tiene que hacer. Un programa es la solución a un problema inicial, así que todo comienza allí, en el problema.

El proceso de programación es el siguiente: Dado un determinado problema el programador debe idear una solución y expresarla usando un algoritmo (aquí es donde entra a jugar); luego de esto, debe codificarlo en un determinado lenguaje de programación y por último ejecutar el programa en el computador el cual refleja una solución al problema inicial. Esto es, a grandes rasgos, lo que hace el programador de computadoras, es decir, dado un determinado problema debemos idear una solución y expresarla usando un 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.

Se denomina prueba de escritorio a la comprobación que se hace de un algoritmo para saber si está bien hecho. Esta prueba consiste en tomar datos específicos como entrada y seguir la secuencia indicada en el algoritmo hasta obtener un resultado, el análisis de estos resultados indicará si el algoritmo está correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.

Para el proceso de Algoritmos es necesario aprender a desarrollar un conjunto de elementos. Todos estos elementos con los cuales se construyen dichos algoritmos se basan en una disciplina llamada: Programación Estructurada.

Empecemos por conocer las reglas para cambiar fórmulas matemáticas a expresiones válidas para la computadora, además de diferenciar constantes e identificadores y tipos de datos simples. 

Tipos de datos
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un valor entero tal como 35.  El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable.
Datos Numéricos:Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.

Datos lógicos:
Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).

Datos alfanuméricos (Texto):Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.

Identificadores
Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que permite acceder a su contenido.
Ejemplo:
» Nombre
» Num_hrs
» Calif2

Reglas para formar un identificador:
  • Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco.
  • Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter.
  • La longitud de identificadores puede ser de varios caracteres. Pero es recomendable una longitud promedio de 8 caracteres.
  • El nombre del identificador debe dar una idea del valor que contiene.

¿Qué son las constantes, las variables y las expresiones en la programación?
a)  Constantes
Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.
Ejemplo:   PI = 3.1416

b)  Variable
Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo.
Ejemplo:    area =PI * radio ^ 2
Las variables son: radio y area. Y las constates son: PI y 2

Clasificación de las variables
    • Por su contenido

    Variables Numéricas
    : Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.
         Ejemplo: IVA = 0.15                   PI = 3.1416                   costo = 2500

    Variables Lógicas:
    Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos.
         Ejemplo: Activado = FALSE       Autorizado = TRUE

    Variables Alfanuméricas:
    Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales).
         Ejemplo: letra = ’a’         apellido = ’lopez’           direccion = ’Av. Libertad #190’

    • Por su uso

    Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa.
        Ejemplo: Suma = a + b /c

    Contadores: Se utilizan para llevar el control del número de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno.
         Ejemplo: Suma = Suma + 1

    Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente.
         Ejemplo: Total = Total + Subtotal

    c)  Expresiones
    Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.
    Por ejemplo: a + (b + 3) / c

    Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas.

    Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las expresiones en:
    • Aritméticas
    • Relacionales
    • Lógicas

    ¿Qué son los operadores y los operandos, sus tipos y las prioridades de ejecución de los mismos?.
    Son operadores elementos que relacionan de forma diferente, los valores de una o más variables y/o constantes. Es decir, los operadores nos permiten manipular valores.

    a)    Operadores Aritméticos
    Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). Pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

    Tipos de operadores aritméticos:
    + Suma
    - Resta
    * Multiplicación
    / División
    mod Modulo (residuo de la división entera)

    Ejemplos:
    Expresión
       
    Resultado
    7 / 2
       
    3.5
    12 mod 7
       
    5
    4 + 2 * 5
       
    14

    b)    Operadores Relacionales
    Se utilizan para establecer una relación entre dos valores. Luego compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas). 

    Los operadores relacionales tiene menor prioridad que los aritméticos.

    Tipos de operadores Relacionales:
    > Mayor que
    < Menor que
    >= Mayor o igual que
    <= Menor o igual que
    <> Diferente
    = Igual

    Ejemplos: Si a = 10, b = 20, c = 30
    a + b > c
       
    Falso
    a - b < c
       
    Verdadero
    a - b = c
       
    Falso
    a * b <> c
       
    Verdadero

    Ejemplos no lógicos:
    a < b < c
    10 < 20 < 30
    T > 5 < 30 (no es lógico porque tiene diferentes operandos)


    c)    Operadores Lógicos
    Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores pueden ser resultado de una expresión relacional.

    Tipos de operadores Lógicos:
    And - Y
    Or - O
    Not - Negación

    Ejemplo: Para los siguientes ejemplos T significa verdadero y F falso.


    Tablas de Verdad (valores de verdad):
    Operando_1
    Operador
    Resultado
    T
    Not
    F
    F
    T

    Operando_1
    Operador
    Operando_2
    Resultado
    T
    And
    T
    T
    T
    F
    F
    F
    T
    F
    F
    F
    F

    Operando_1
    Operador
    Operando_2
    Resultado
    T
    Or
    T
    T
    T
    F
    T
    F
    T
    T
    F
    F
    F

    Resumen:

    Operando 1
    Operando 2
    AND
    OR
    Operando
    NOT
    V
    F
    F
    V

    V
    V
    V
    V
    V
    F
    F
    V
    F
    V
    F
    V
    F
    F
    F
    F

     Ejemplos: Sea: a = 10 b = 12 c = 13 d =10


    Prioridad de los Operadores Aritméticos
    Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores que son llamados operandos.

    Tipos de Operadores:
    a)  Aritméticos (su resultado es un número): ^(potencia), *, /, mod, div, +, -
    b)  Relacionales (su resultado es un valor de verdad): =, >, <, >=, <= y <>.
    c)  Lógicos o Booleanos (su resultado es un valor de verdad): not, and, or 
    d)  Concatenación: & (amperson)
    e) Agrupamiento o Asociativos. Entre los operadores asociativos más empleados esta el paréntesis (), y los menos empleados están los corchetes [ ] y las llaves { }.
    Los paréntesis nos permite indicar en qué orden deben realizarse las operaciones. Cuando una expresión se encuentra entre paréntesis, indica que las operaciones que están dentro de ellos debe realizarse primero. 

    Orden de la jerarquía de operadores:               
    1)  Las operaciones entre paréntesis ( ) o [ ] o { }.
    2)  Signos: positivo (+) y negativo (-)
    3)  El exponenciación o potencia (^).
    4)  La multiplicación o producto (*) y división (/, Div y Mod), de izquierda a derecha.
    5)  La suma (+) y resta o diferencia (-), de izquierda a derecha.
    6)  La concatenación (&)
    7)  Los operadores relacionales (<,>, <=, >=, <> y =)
    8)  Los operadores lógicos: Conjunción (AND), Disyunción (OR) y Negación (NOT)

    Para resolver una expresión aritmética se deben seguir las siguientes reglas:
    a. Primero se resuelven las expresiones que se encuentran entre paréntesis, de dentro hacia afuera
    b. Se procede aplicando la jerarquía de operadores.
    c. Al evaluar una expresión, si hay dos operadores con la misma jerarquía, se procede a evaluar de izquierda a derecha.
    d. Si hay expresiones relacionales, se resuelven primero paréntesis, luego se encuentran los valores de verdad de las expresiones relacionales y por último se aplica jerarquía de operadores lógicos. En caso de haber iguales, proceder de izquierda a derecha.

    Ejemplos:

    4 + 2 * 5 = 14

    23 * 2 / 5 = 9.2

    3 + 5 * (10 - (2 + 4)) = 23

    2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98

    METODOLOGÍA DE SOLUCIÓN DE PROBLEMAS

    Antes de hablar de metodologías de solución de problemas debes tener muy claro el concepto de método, que a lo largo de la historia ha llamado la atención de gran cantidad de filósofos y científicos. El Diccionario Larousse define el término método como "el conjunto de operaciones ordenadas con que se pretende obtener un resultado". La metodología es la ciencia que aplica este método. Existen muchos tipos de metodologías, como la metodología de investigación, metodología de enseñanza-aprendizaje, etc., así como la metodología de solución de problemas, que aplicamos constantemente en la vida diaria. Pero en este caso hablaremos específicamente de la solución de problemas que podemos resolver mediante el uso de la computadora. 

    La resolución de los problemas consta de cinco etapas que garantizan la llegada correcta a la solución: identificación del problema, planteamiento de alternativas de solución, elección de una alternativa, desarrollo de la solución y evaluación de ésta. 

    1. Identificación del problema
    La identificación del problema es una fase muy importante en la metodología, pues de ella depende el desarrollo anterior en busca de la solución. Un problema bien delimitado es una gran ayuda para que el proceso general avance bien; un problema mal definido provocará desvíos conceptuales que serán difíciles de remediar posteriormente. En esta etapa es fundamental el análisis de la información inicial (entrada) con el fin de distinguir los datos pertinentes de los que no lo son, de manera que se pueda elegir la configuración más conveniente respecto a las soluciones posibles. También deben definirse los datos de salida que garanticen la continuidad del proceso para que sea más fácil eliminar las expectativas negativas.

    2. Planteamiento de alternativas de solución 
    Después de la definición del problema y del análisis de los datos de entrada, el proceso continúa con el análisis de las alternativas de solución. Por lo general, la solución de un problema puede alcanzarse por distintas vías. Es útil tratar de plantear la mayor cantidad de alternativas posibles de solución, pues de esta forma las probabilidades aumentan a favor de encontrar la vía correcta. Se debe destacar que no es conveniente extender demasiado el número de alternativas, pues si el número de éstas es demasiado alto, se presentará una mayor dificultad para elegir la mejor de todas, que es en definitiva el objetivo del proceso. 

    3. Elección de una alternativa 
    Después de tener todo el repertorio de alternativas, es necesario pasar a otra etapa: la elección de la mejor entre todas las posibilidades. Esta fase es muy importante porque de la elección realizada depende el avance final hasta la solución. La orientación hacia delante supone la irreversibilidad si la decisión es acertada o una "reversibilidad onerosa", pues si la decisión no es acertada, es necesario retroceder, lo que afecta la "optimidad" del proceso. 

    Por lo tanto, es necesario que cada alternativa sea bien analizada para que la toma de decisiones sea bien justificada. Deberás elegir la alternativa que sea la más adecuada para la solución del problema, tomando en cuenta las características del problema y las características que deberá tener la solución, así como los elementos, datos o información con la que cuentas. 

    4. Desarrollo de la solución 
    Después de decidir cuál es la mejor alternativa de todas, se llega a la etapa de la solución. En esta fase, a partir de los datos relacionados con la alternativa seleccionada, se aplican las operaciones necesarias para solucionar el problema. La selección de los procesos también debe ser determinada en función de la optimidad, es decir, las operaciones deben llegar a la solución por el camino más corto para garantizar la mayor eficiencia en el funcionamiento. Si la alternativa es la óptima, llevará a la solución deseada que fue prevista en la identificación del problema. 

    5. Evaluación de la solución 
    Luego de haber desarrollado la solución queda aún una etapa, que es la evaluación. En los procesos industriales a este procedimiento se le llama control de la calidad y consiste en determinar que la solución obtenida es lo que se esperaba conseguir comprobando que el resultado sea correcto. En esta fase se deben "pulir" los procesos ya realizados y tratar de llevarlos a un grado mayor de optimalidad, pues el algoritmo más eficiente en la solución de un problema es el que llega a su objetivo final con la mayor economía de procedimientos que sea posible. A continuación, puedes observar un ejemplo de la aplicación de la metodología a la solución de un problema simple. Es importante saber que los problemas complejos también se resuelven con esta estructura. 

    Ejemplo:


    Planteamiento:
    Si 2 refrescos cuestan $19.50, ¿cuántos podemos comprar con $78.00?
    Identificación del problema:
    Entrada:
    Costo de 2 refrescos = $19.50
    Cantidad de dinero con la que se cuenta = $78.00.
    Salida:
    Total de refrescos que se pueden comprar con $78.00.
    Planteamiento de alternativas de solución:
    Alternativa 1
    78/19.5 = 4
    4*2 = 8
    Alternativa 2
    19.50/2 = 9.75
    78/9.75 = 8
    Alternativa 3
    19.5 = 2
    19.5 = 2
    19.5 = 2
    +19.5 = 2
    78.0 = 8
    Elección de una alternativa:
    Alternativa 1
    78/19.5 = 4
    4*2 = 8
    Selecciona la alternativa que se considere más completa, sencilla o mejor, según las necesidades o el criterio de elección.

    Desarrollo de la solución: (Algoritmo)

    Evaluación de la solución:
    19.5/2 = 9.75
    78/19.5 = 4
    Se comprueba que el resultado es correcto.