Algoritmos y Pseudocódigo

 

Algoritmos

Un algoritmo es un procedimiento a seguir, para resolver un problema en términos de:

1. Las acciones por ejecutar y el
2. El orden en que dichas acciones deben ejecutarse

Un algoritmo nace en respuesta a la aparición de un determinado problema. Una algoritmo esta compuesto de una serie finita de pasos que convergen en la solución de un problema, pero además estos pasos tienen un orden específico.

Entenderemos como problema a cualquier acción o evento que necesite cierto grado de análisis, desde la simpleza de cepillarse los dientes hasta la complejidad del ensamblado de un automóvil. En general, cualquier problema puede ser solucionado utilizando un algoritmo, en este sentido podemos utilizar los algoritmos para resolver problemas de computo.

Un algoritmo para un programador es una herramienta que le permite resaltar los aspectos más importantes de una situación y descartar los menos relevantes. Todo problema de cómputo se puede resolver ejecutando una serie de acciones en un orden específico.

Por ejemplo considere el algoritmo que se elaboraría para el problema o situación de levantarse todas las mañanas para ir al trabajo:

  1. Salir de la cama
  2. quitarse el pijama
  3. ducharse
  4. vestirse
  5. desayunar
  6. arrancar el automóvil para ir al trabajo o tomar transporte.

Nótese que en el algoritmo anterior se ha llegado a la solución del problema en 6 pasos, y no se resaltan aspectos como: colocarse los zapatos después de salir de la cama, o abrir la llave de la regadera antes de ducharse. Estos aspectos han sido descartados, pues no tienen mayor trascendencia, en otras palabras los estamos suponiendo, en cambio existen aspectos que no podemos obviarlos o suponerlos, de lo contrario nuestro algoritmo perdería lógica, un buen programador deberá reconocer esos aspectos importantes y tratar de simplificar al mínimo su problema.

Es importante recalcar que los pasos de un algoritmo no son conmutativos pues, no daría solución al mismo problema a tratar.

Robustez de un Algoritmo

Quiere decir que un algoritmo debe contemplar todas las posibles facetas del problema que queremos resolver, al elaborar un algoritmo no se nos debe escapar ningún detalle que provoque un funcionamiento malo nuestro algoritmo. Si logramos construir un algoritmo robusto, cualquier giro inesperado del problema será controlado por el algoritmo, es decir, debe ser flexible a cambios.

Correctitud de un Algoritmo

Es correcto cuando da una solución al problema a tratar y cumple con todos lo requerimientos especificados tal que cumplamos con los objetivos planteados.

Completitud de un Algoritmo

Cuando un algoritmo cuenta con todos los recursos para poder llegar a una solución satisfactoria

Eficiencia y Eficacia de un Algoritmo

Un algoritmo es eficiente cuando logra llegar a sus objetivos planteados utilizando la menor cantidad de recursos posibles, es decir, minimizando el uso memoria, de pasos y de esfuerzo humano.

Un algoritmo es eficaz cuando alcanza el objetivo primordial, el análisis de resolución del problema se lo realiza prioritariamente.

Puede darse el caso de que exista un algoritmo eficaz pero no eficiente, en lo posible debemos de manejar estos dos conceptos conjuntamente.

Resolución de Problemas

Para lograr resolver cualquier problema se deben seguir básicamente los siguientes pasos:

Análisis del Problema. en este paso se define el problema, se lo comprende y se lo analiza con todo detalle.

Diseño del Algoritmo. se debe elaborar una algoritmo que refleje paso a paso la resolución del problema.

Resolución del Algoritmo en la computadora. se debe codificar el algoritmo.

Resolución de problemas utilizando algoritmos

Ejemplo 2.1
Una universidad ofrece un curso que prepara a los estudiantes para el examen de obtención de licencia de corredor de bienes raíces. El año anterior, varios de los estudiantes que completaron el curso presentaron el examen para obtener la licencia. Naturalmente la Universidad desea saber que resultados obtuvieron sus estudiantes en el examen. Se nos ha pedido escribir un programa que resuma los resultados recibidos de una lista de 10 estudiantes. Junto a cada nombre se anoto un 1 si el estudiante aprobó el examen y un 2 si reprobó. Exhiba un resumen de los resultados de la prueba indicando el número de estudiantes que aprobaron y el número de estudiantes que reprobaron . Si más de Ocho estudiantes aprueban el examen la Universidad será capaz de aumentar la colegiatura.
Exhibir el mensaje "Teclee resultado" en la pantalla cada vez que el programa solicite otro resultado de examen.

Solución

Algoritmo
A grandes rasgos:
Analizar los resultados del examen y decidir si se debe aumentar o no la colegiatura.

Se puede refinar como sigue:
Inicializar variables
Introducir las primeras 10 calificaciones y contar los aprobados y los reprobados.
Imprimir un resumen de los resultados de exámenes y decidir si se debe aumentar o no la colegiatura.

Pseudocódigo

Pseudocódigo Es un lenguaje artificial e informal que ayuda a los programadores a desarrollar algoritmos. El Pseudocódigo es similar al lenguaje cotidiano; es cómodo y amable con el usuario, aunque no es realmente in verdadero lenguaje de computadora. No se ejecutan en las computadoras mas bien sirven para ayudar al programadora razonar un programa antes de intentar escribirlo en algún lenguaje. Un programa ejecutado en Pseudocódigo puede ser fácilmente convertido en un programa en C++, si es que esta bien elaborado. Por ejemplo supongamos que la nota para aprobar un examen es de 60. El enunciado en Pseudocódigo sería:

Si calificación >= 60 entonces
Mostrar "Aprobado"
FinSi

El mismo enunciado se puede escribir en C++ como:

if ( calif >= 60 )
cout << "Aprobado";

Nótese que la operación de trasladar el Pseudocódigo a código fuente, se lo realiza con el mínimo esfuerzo, no se necesita de un mayor análisis.

Llevando el Ejemplo2.1 a Pseudocódigo.

Se puede refinar más aun el algoritmo:

Inicializar variables.
Inicializar los aprobados (aprobados) en 0
Inicializar los reprobados (reprobados) en 0
Inicializar el número de estudiantes (estudiantes) en 0
Introducir las primeras 10 calificaciones y contar los aprobados y los reprobados.
Mientras (while) el contador estuantes es menor o igual que 10 entonces

   

Introducir el siguiente resultado de examen
Si el estudiante aprobó

 
 

Sumar 1 a aprobados

   

Si no

 

Sumar 1 a reprobados

   

FinSi
Sumar 1 al contador estudiantes

FinMientras
Imprimir un resumen de los resultados de exámenes y decidir si se debe aumentar o no la colegiatura.
Imprimir el número de aprobados
Imprimir el número de reprobados
Si estudiantes es más 8 entonces

     

Imprimir "Aumentar la colegiatura".

     

FinSi

Diagramas de flujo 

Un diagrama de flujo es una representación gráfica de un algoritmo o de una parte del mismo. Los diagramas de flujo ayudan en la comprensión de la operación de las estructuras de control (Si, Mientras).

La ventaja de utilizar un algoritmo es que se lo puede construir independiente mente de un lenguaje de programación, pues al momento de llevarlo a código se lo puede hacer en cualquier lenguaje.
Dichos diagramas se construyen utilizando ciertos símbolos de uso especial como son rectángulos, diamantes, óvalos, y pequeños círculos, estos símbolos están conectados entre sí por flechas, conocidas como líneas de flujo. A continuación se detallarán estos símbolos.


a Terminal. Representa el inicio y fin de un programa.

a Proceso. Son acciones que el programa tiene que realizar

a Decisión. Indica operaciones lógicas o de comparación, así como expresiones

a Entrada / Salida. Nos permite ingresar datos, de un periférico, así como mostrarlos

a Salida. Es usado para mostrar datos o resultados

a Conector. Se coloca al principio y fin de un pedazo de programa, enlaza dos partes cualquiera de un programa

a Línea de flujo o indicador de dirección.

Representaremos el correspondiente diagrama de flujo del ejemplo 2.1

a