Problemas, algoritmos y lenguajes de Programación

Problemas, algoritmos y lenguajes de Programación

Mencionamos anteriormente que la programación consistía en instruir a una computadora para que resuelva un problema y que la comunicación de esas instrucciones debe ser realizada de forma clara. Es por eso que, ante un problema que debe ser resuelto computacionalmente, el primer paso es pensar detalladamente cuál puede ser una forma de resolverlo, es decir, crear un algoritmo. Un algoritmo es una estrategia consistente de un conjunto ordenado de pasos que nos lleva a la solución de un problema o alcance de un objetivo. Luego, hay que traducir el algoritmo elegido al idioma de la computadora.

Entonces, podemos decir que la resolución computacional de un problema consiste de dos etapas básicas:

  1. Diseño algorítmico: desarrollar un algoritmo, o elegir uno existente, que resuelva el problema.
  2. Codificación: expresar un algoritmo en un lenguaje de programación para que la computadora lo pueda interpretar y ejecutar.

Al aprender sobre programación, comenzamos enfrentándonos a problemas simples para los cuales la primera etapa parece sencilla, mientras que la codificación se torna dificultosa ya que hay que aprender las reglas del lenguaje de programación. Sin embargo, mientras que con práctica rápidamente podemos ganar facilidad para la escritura de código, el diseño algorítmico se torna cada vez más desafiante al encarar problemas más complejos. Es por eso que haremos hincapié en el planteo y desarrollo de algoritmos como una etapa fundamental en la programación.

El Diseño Algorítmico

Cotidianamente, hacemos uso de algoritmos para llevar adelante casi todas las actividades que realizamos: preparar el desayuno, sacar a pasear la mascota, poner en la tele un servicio de streaming para ver una película, etc. Cada una de estas tareas requiere llevar adelante algunas acciones de forma ordenada, aunque no hagamos un listado de las mismas y procedamos casi sin pensar.

Sin embargo, cuando estamos pensando la solución para un problema que va a resolver una computadora, debemos ser claros y concretos, para asegurarnos de que al seguir los pasos del algoritmo se llegue a la solución y para que quien tenga que codificarlo, nosotros mismos u otras personas, lo pueda entender sin problemas. Por eso, el primer paso es idear un algoritmo para su solución y expresarlo por escrito, por ejemplo, en español, pero adaptando el lenguaje humano a formas lógicas que se acerquen a las tareas que puede realizar una computadora. En programación, el lenguaje artificial e informal que usan los desarrolladores en la confección de algoritmos recibe el nombre de pseudocódigo. Es la herramienta que utilizamos para describir los algoritmos mezclando el lenguaje común con instrucciones de programación. No es en sí mismo un lenguaje de programación, es decir, la computadora no es capaz de entenderlo, sino que el objetivo del mismo es que el programador se centre en la solución lógica y luego lo utilice como guía al escribir el programa.

El pseudocódigo, como cualquier otro lenguaje, está compuesto por:

  • Un léxico: conjunto de palabras o frases válidas para escribir las instrucciones.
  • Una sintaxis: reglas que establecen cómo se pueden combinar las distintas partes.
  • Una semántica: significado que se les da a las palabras o frases.

El pseudocódigo sigue una estructura secuencial: define una acción o instrucción que sigue a otra en secuencia. Esta estructura puede representarse de la siguiente forma:

ALGORITMO: "Ejemplo"
COMENZAR
Acción 1
Acción 2
...
Acción N
FIN

Se comienza con un título que describa el problema que el algoritmo resuelve, seguido por la palabra COMENZAR. Luego se detallan las acciones o instrucciones a seguir y se concluye con la palabra FIN. Por ejemplo, si nuestro problema es poner en marcha un auto, el algoritmo para resolverlo puede ser expresado mediante el siguiente pseudocódigo:

ALGORITMO: "Arrancar el auto"
COMENZAR
INSERTAR la llave de contacto
UBICAR el cambio en punto muerto
GIRAR la llave hasta la posición de arranque
SI el motor arranca
ENTONCES
DEJAR la llave en posición "encendido"
SI NO
LLAMAR al mecánico
FINSI
FIN

Es importante destacar la presencia de sangrías (sangrado) en el ejemplo anterior, que facilitan la lectura.

Los algoritmos suelen ser representados también mediante diagramas de flujo, como el que se muestra en la siguiente figura.

Ejemplo del algoritmo "Arrancar el auto" representado gráficamente con un diagrama de flujo.

Figura 1.7: Ejemplo del algoritmo “Arrancar el auto” representado gráficamente con un diagrama de flujo.




Comentarios

Entradas populares de este blog

Breve Reseña Histórica sobre la Programación

Codificación

Introducción a la Programación