Algoritmos
¿Qué es un algoritmo?
En esta unidad, vamos a explicarles qué es un algoritmo, sus características y componentes.
Comenzamos con el siguiente algoritmo de ejemplo. Te proponemos un desafío: leé detenidamente el siguiente algoritmo. ¿Podés darte cuenta qué es lo que hace? ¡Seguramente que sí! Ponete a prueba:
SEUDOCÓDIGO
VARIABLES
NOTA1, NOTA2, NOTA3: ENTERO
PROMEDIO: REAL
INICIO
Mostrar ("Ingrese nota 1")
Ingresar (NOTA1)
Mostrar ("Ingrese nota 2")
Ingresar (NOTA2)
Mostrar ("Ingrese nota 3")
Ingresar (NOTA3)
PROMEDIO <- (NOTA1+NOTA2+NOTA3)/3
Mostrar ("El promedio de las notas es:", PROMEDIO)
FIN¿Qué podés deducir de este algoritmo?
Seguramente te habrás dado cuenta de que el algoritmo solicita tres notas al usuario y luego informa el promedio de dichas notas.
¿Cómo pudiste darte cuenta?
Porque el algoritmo está escrito en castellano, es bien claro y preciso con las instrucciones que describe, las variables tienen nombres que representan su valor y, además, no presenta ambigüedades.
Pensá unos instantes en las características de este ejemplo…
Habrás notado que el algoritmo está formado por una lista de acciones (como una receta de cocina) que van describiendo una tarea a realizar y una lista de ingredientes, que en nuestro caso son las Variables. También habrás notado que el algoritmo comienza y termina y que, al finalizar, llegamos al resultado deseado.
Veamos entonces, cuáles son las características de un algoritmo.
Características de un algoritmo
Te presentamos ahora las características que tiene que tener todo algoritmo:
Es Finito
Todo algoritmo está compuesto por una lista finita de instrucciones. Es decir, que la cantidad de acciones del algoritmo siempre está limitada; todo algoritmo tiene un Inicio y un Final.
Es Preciso
La lista de acciones es bien clara y precisa, no debe haber ambigüedades ni dejar valores o instrucciones sobreentendidas o presupuestas. Para lograr esta precisión trabajaremos con un lenguaje especial para escribir nuestros algoritmos, definiendo las normas de sintaxis y semántica. Este lenguaje se llama seudocódigo, y comenzaremos a trabajar con él en esta misma unidad.
Tiene Comienzo y Fin
Todo algoritmo comienza en un tiempo determinado y en algún momento finaliza su ejecución. Es decir, que todo algoritmo siempre tiene que terminar, no puede haber algoritmos infinitos. Por ejemplo, pensemos en listar todos los números enteros: esto no sería un algoritmo, porque como hay infinitos números enteros, este listado no finalizaría nunca.
Es Efectivo
El algoritmo resuelve un problema que forma parte de un conjunto o familia de problemas. Todo algoritmo debe funcionar correctamente, generando las salidas esperables y dando solución al problema.
Definición de algoritmo
Ahora que ya vimos un algoritmo de ejemplo y conocemos sus características, podemos llegar a una definición formal de lo que es un algoritmo.
Aunque existen varias definiciones de algoritmos en la bibliografía y también en internet, nosotros te presentamos nuestra propia definición que consideramos que abarca las principales características.
Entonces… ¿Qué es un algoritmo?
Antes de continuar, te proponemos unos ejercicios de repaso:
Etapas de un algoritmo
Como explicamos antes, una de las características que tiene que cumplir un algoritmo es que se ejecute a lo largo de un tiempo finito. Es por eso que durante la ejecución podemos encontrarnos con distintas etapas, las cuales presentamos a continuación:
- Entrada: Representa la información que necesitan los pasos del algoritmo para ejecutarse.
- Proceso: Es el conjunto de acciones elementales, organizadas en el tiempo.
- Salida: Es el resultado que se obtiene ejecutando los pasos del algoritmo con los datos de entrada.
También podemos definir el estado del algoritmo: corresponde a la instantánea que describe el valor de los indicadores (que son las variables y las constantes) en un determinado momento de la ejecución.
Seudocódigo, el lenguaje algorítmico
Ahora te proponemos repasar las características que presentamos de un algoritmo y luego continuamos con la lectura. Volvamos a nuestro algoritmo de ejemplo:
SEUDOCÓDIGO
VARIABLES
NOTA1, NOTA2, NOTA3: ENTERO
PROMEDIO: REAL
INICIO
Mostrar ("Ingrese nota 1")
Ingresar (NOTA1)
Mostrar ("Ingrese nota 2")
Ingresar (NOTA2)
Mostrar ("Ingrese nota 3")
Ingresar (NOTA3)
PROMEDIO <- (NOTA1+NOTA2+NOTA3)/3
Mostrar ("El promedio de las notas es:", PROMEDIO)
FINYa pudimos determinar qué hace este algoritmo gracias a una de sus características fundamentales: ser preciso, sin ambigüedades.
¿Cómo podemos lograr esto?
Debemos tener un lenguaje en común. Al igual que las personas, que nos comunicamos por medio de un lenguaje compartido que tiene sus reglas de sintaxis y semántica, para expresar los algoritmos utilizaremos un lenguaje que también tendrá su vocabulario y sus reglas sintácticas y semánticas.
Este lenguaje algorítmico se llama seudocódigo. A lo largo de las siguientes unidades te vamos a ir presentando las distintas palabras y reglas que te permitirán especificar un algoritmo de forma correcta y precisa.
En el ejemplo, podemos ver que el lenguaje utiliza palabras del idioma castellano y además es muy simple y claro.
Instrucciones básicas del seudocódigo
Ahora vamos a comenzar a definir nuestro lenguaje algorítmico con las instrucciones básicas que utilizarás en la mayoría de tus programas. Repasando nuestro algoritmo de ejemplo, habrás notado que se solicitan datos al usuario por teclado, se modifican los valores de las variables y, finalmente, se muestran datos por pantalla. Es decir que trabajamos con instrucciones de entrada y de salida que ya hemos identificado.
SEUDOCÓDIGO
AsignaciónIngresarMostrar
Veamos de qué se trata cada una…
1. Asignación
La asignación de un valor a una variable es la operación básica que se encuentra en la mayoría de los algoritmos. Con esta instrucción se modifica el valor de una variable. La forma de indicar una asignación en seudocódigo es la siguiente:
Siendo EDAD una variable de tipo ENTERO:
EDAD <- 20
Esta asignación se lee como: “Edad toma el valor 20”.
La operación de asignación está representada por una flecha de derecha a izquierda <-. En la parte izquierda debes escribir una variable, mientras que a la derecha de la flecha deberás escribir una expresión que devuelva un valor del mismo tipo de dato de la variable.
1.1. Contadores y Acumuladores
Volvamos a nuestro primer algoritmo de ejemplo: para calcular el promedio tuvimos que sumar las tres notas y dividirlas por 3. De forma genérica, un promedio se obtiene dividiendo el total acumulado por la cantidad de elementos. De esta manera, surge la necesidad de contar la cantidad de notas y, por otro lado, la de acumular la suma de esas notas.
Los acumuladores y contadores son muy comunes en programación y seguramente los vas a utilizar en muchos de tus algoritmos.
2. Ingresar
La instrucción Ingresar realiza una lectura de lo que el usuario escribe por medio del teclado y guarda ese contenido en la variable que se encuentra entre paréntesis. Con una instrucción ingresar se pueden cargar datos para variables del tipo ENTERO, REAL, CARÁCTER y CADENA.
3. Mostrar
Cuando el algoritmo llega a esta sentencia, se resolverá la expresión que está entre los paréntesis y su valor se mostrará por la pantalla.
4. Primer algoritmo
Repasemos nuestro primer ejemplo y supongamos el siguiente problema: Ingresar por teclado las notas de 3 alumnos y luego calcular y mostrar el promedio de esas notas.
Y ahora veamos nuestro primer algoritmo:
SEUDOCÓDIGO
VARIABLES
NOTA1, NOTA2, NOTA3 : ENTERO
PROMEDIO : REAL
INICIO
Mostrar ("Ingrese nota 1")
Ingresar (NOTA1)
Mostrar ("Ingrese nota 2")
Ingresar (NOTA2)
Mostrar ("Ingrese nota 3")
Ingresar (NOTA3)
PROMEDIO <- (NOTA1+NOTA2+NOTA3)/3
Mostrar ("El promedio de las notas es:", PROMEDIO)
FINManos a la obra con PSeInt
Luego de haber elaborado nuestro primer algoritmo, ¡es el momento de probarlo!
Para eso te proponemos PSeInt, un programa que trabaja con un lenguaje seudocódigo muy similar al que te estamos explicando. Este software se distribuye bajo licencia GPL2, por lo tanto, podés descargarlo y usarlo de forma libre y gratuita.
Actividad
Analizá el siguiente problema y luego desarrollá el algoritmo.
Problema: A partir del importe de una venta efectuada en un comercio y, teniendo en cuenta que se le debe aplicar el 21% del IVA, informe cuál sería el valor neto de la venta, cuál el correspondiente al impuesto y cuál el importe total a pagar.
