Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Módulo 2. Cómo Nos Ayudan Los Algoritmos
Módulo 2. Cómo Nos Ayudan Los Algoritmos
¿Cuáles son las leyes básicas de los algoritmos? ¿Qué elementos los componen?
Habiéndonos introducido en el módulo anterior en las bases de la programación, a
continuación conoceremos sobre la entrada, el proceso y la salida de un algoritmo, como así
también todas las otras nociones que nos permitirán resolver problemas en su ejecución.
Video de inmersión
Cierre
Referencias
QUESTION B AN KS
Lección 1 de 4
Video de inmersión
Verify to continue
We detected a high number of errors from your
connection. To continue, please confirm that
you’re a human (and not a spambot).
En el módulo anterior llevamos a cabo una introducción a la programación: qué es programar, qué es el
lenguaje de programación –los lenguajes, mejor dicho– y cómo y para qué usarlos. Vimos también que la
base de la programación es la creación de algoritmos, a partir de los cuales brindamos instrucciones a
las computadoras y, de ese modo, programamos.
Figura 1: Algoritmo
Fuente: [Imagen sin título sobre algoritmo]. (s. f.). Recuperado de https://goo.gl/TiyQvC
Noción de algoritmos
Un algoritmo es un conjunto finito de reglas precisas que resuelven un problema
en una cantidad finita de tiempo.
Los algoritmos, según su definición, son una serie de pasos que permiten obtener la solución a un
problema. En programación, mediante el lenguaje algorítmico se resuelven problemas y se alcanzan
objetivos. Se trata de soluciones planteadas en forma de pasos por seguir ordenados de forma teórica,
como un manual de instrucciones.
Por ejemplo, en el caso de que nos encontremos en casa con un foquito de luz fundido en una lámpara,
un posible algoritmo sería:
3. Si no hay foquitos de repuesto, salir a comprar uno nuevo a la tienda, volver y sustituir el viejo por
el nuevo.
Los algoritmos son la base de la programación de computadoras u ordenadores, ya que los programas de
ordenador se basan, justamente, en algoritmos escritos en un código especial que es entendible por
este.
Una dificultad que se les presenta a los programadores al diseñar algoritmos es que no se puede escribir
cualquier cosa ni se puede dejar lugar a la ambigüedad: el lenguaje utilizado no debe dejar lugar a la
duda, debe contemplar todas las posibilidades.
En realidad, si queremos diseñar algoritmos para el proceso de reemplazar un foquito quemado por uno
nuevo, los pasos deben ser mucho más detallados que en el ejemplo anterior:
Como se observa en el ejemplo anterior, en un algoritmo las instrucciones pueden ser más largas de lo
que parecen, por lo que hay que determinar cuáles se pueden utilizar y cuáles no. En el caso de los
algoritmos preparados para la computadora, se pueden utilizar solo instrucciones muy concretas.
Un algoritmo debe resolver el problema para el que fue formulado. Un error frecuente es una
deficiente interpretación del problema por resolver, lo que hace que a veces se creen algoritmos que
resuelven problemas diferentes al planteado.
Los algoritmos deben de ser precisos. Esto significa que los resultados de los cálculos deben de
ser exactos, no son válidas las aproximaciones.
Los algoritmos deben de ser finitos; es decir, deben finalizar en algún momento. No es un algoritmo
válido aquel que produce situaciones en las que este no termina. Cada paso o acción debe concluir.
Los algoritmos deben poder repetirse. Esto significa que tienen que permitir que su ejecución se
reitere todas las veces que haga falta.
Los algoritmos son independientes del ordenador. Esto quiere decir que los algoritmos se
escriben para poder ser utilizados en cualquier máquina.
Óptimo: que no tiene errores y que entrega los resultados de forma rápida,
según el tiempo preestablecido.
Además, podemos afirmar que un algoritmo debe tener los siguientes elementos:
Entrada: se denomina de esta forma al conjunto de datos previos que se utilizarán para desarrollar
el algoritmo. Puede pensarse como el planteo del problema o la información disponible con la que
se comienza a crear determinado algoritmo.
Proceso: se llama de este modo a la serie de pasos organizados que ejecutan los algoritmos para
solucionar un problema o alcanzar un objetivo, es decir, a las acciones que estos desencadenan.
Salida: se denomina de esta forma al conjunto final de datos que se obtienen luego del proceso
desarrollado por los algoritmos, es decir, los datos con los que se valida la solución al problema
planteado.
En la imagen anterior se observa la relación lineal entre los tres elementos constitutivos de los
algoritmos.
Simplicidad
¡Ojo! Que un algoritmo sea corto o sea “fácil” no significa que sea simple. La simplicidad viene dada por
la facilidad para entenderlo al momento de manejarlo y trabajar con él. Se llama simple a un algoritmo
que es óptimo para cumplir los objetivos propuestos: no consume tantos recursos de un sistema y es
fácil de entender y de usar.
Cuando hablamos de simplicidad, hacemos referencia al diseño de un algoritmo que permite que el
programador tenga control sobre dicho código. De acuerdo con Rosa Guerequeta y Antonio Vallecillo, en
su libro Técnicas de diseños de algoritmos (1998), a medida que un programador va creando una
estructura algorítmica, va conociendo detalladamente cómo está formada: al ser el creador del código,
puede ubicar los posibles fallos y, a su vez, optimizar los problemas que puedan surgir, desde un
consumo de memoria excesivo hasta un error (este aspecto lo veremos en el tercer tema de este
módulo).
Como se puede ver en la imagen anterior, se creó un algoritmo para que un programa salude. Se trata de
una estructura sencilla, con tres líneas de código.
En la imagen anterior se puede observar cómo creció y se complejizó la estructura del código planteado
en la Figura 3. Este algoritmo se basa en el anterior, que solo saludaba, pero, además, hace una suma y
pregunta si se desea ver el resultado de dicha operación.
Para analizar la eficiencia temporal de un algoritmo debe realizarse, primero, un análisis a priori: a
través de la elaboración teórica de una función se obtienen valores estimados del tiempo de ejecución de
determinados algoritmos. Luego se realiza un análisis a posteriori, es decir, se pone en funcionamiento
el programa y se mide el tiempo real de ejecución en una computadora.
Por lo tanto, cuando vamos escribir un algoritmo para desarrollar un programa debemos elegir aquel que
utilice la menor cantidad de recursos posible, que sea óptimo en los tiempos de ejecución y, a la vez,
que use la cantidad de memoria mínima en el sistema operativo para el que se diseña. Como ningún
algoritmo es igual a otro, el programador tiene que saber claramente qué quiere lograr y planificar
minuciosamente el modo de hacerlo, porque, si no lo plantea en modo adecuado a sus necesidades
particulares, puede llegar a ser muy costoso.
¡Practiquemos! ¿Te quedó claro qué características debe tener un algoritmo para
que su funcionamiento sea óptimo? Ahora vas a ponerte a prueba.
Para que un programador genere un algoritmo que para él sea simple, más allá de cuán larga sea la
estructura del código y de cuántas funciones tenga, ¿qué elementos debe tener en cuenta?
A continuación, te presentamos una serie de enunciados que responden a la pregunta anterior. Tenés que
indicar si cada uno de ellos es verdadero o falso.
Debe escribir el código de manera ordenada.
Verdadero.
Falso.
SUBMIT
Verdadero.
Falso.
SUBMIT
Debe crear un código que implique un alto consumo de memoria.
Verdadero.
Falso.
SUBMIT
Verdadero.
Falso.
SUBMIT
Falso.
SUBMIT
1. En primer lugar, necesitamos datos de entrada: los números que vamos a multiplicar.
2. Estos datos deben ser procesados: en este caso, el proceso consiste en multiplicarlos.
Leer a
Leer b
c=a*b
FinProceso
Con este ejemplo, en el que podés ver un algoritmo simple, se puede observar que, si trabajamos con los
datos correctos y planificamos bien el proceso para la resolución de un problema, podremos siempre
obtener resultados favorables.
Programación C
Programación C es un lenguaje de programación usado para desarrollo de sistemas operativos, de
considerado el comienzo de muchos lenguajes de programación, como por ejemplo, PHP (Hypertext
Preprocessor) o Python, así como también el pilar de varios sistemas operativos.
Entonces, adquirir este lenguaje significa que estás aprendiendo la base de desarrollo para sistemas
operativos o para algún otro software. Además, se trata de un tipo de código que te permite comprender
muchos otros lenguajes de programación. El lenguaje de programación C es un lenguaje de nivel medio:
cuando empezás a programar con programación en C aprendés qué significan términos como registro,
pila, mapeado de memoria, entre otros. Además, este lenguaje es la base de los compiladores,
editores y también de los sistemas embebidos (circuitos electrónicos programables para realizar
funciones específicas).
El lenguaje C requiere una capacitación continua y muchas veces es necesario pensar más, es decir,
analizar en forma más consciente lo que estás haciendo, que con otros lenguajes. Sin embargo, existen
algunas ventajas de aprenderlo, a pesar de que existen otros muchos más fáciles de usar o aprender
(como C++ o Java).
Pseudocódigo
El pseudocódigo es un lenguaje que se encuentra entre el lenguaje natural y otros lenguajes de
programación, como lo son PHP, C, HTML (HyperText Markup Language). Debido a que no existe una
notación formal o estándar de pseudocódigo, cada programador puede utilizar la suya; es decir, no hay
un estándar prefijado o una serie preestablecida de pasos por seguir (Pes, s. f. a).
#include<stdio.h>
int main()
{
printf( "HOLA MUNDO TECLAB" );
}
A continuación, te presentamos una serie de algoritmos para que practiques la carga en PSeInt, tal como
lo hiciste en el módulo anterior.
Calculá tu edad: en este algoritmo vamos a realizar, de acuerdo con el día de nacimiento de la
persona, el cálculo aproximado de la edad, según el año en curso.
Proceso EdadPorFecha
FinProceso
Antes de pasar al tema siguiente, tendrás que asegurarte que entendiste correctamente los puntos
desarrollados hasta el momento. ¡Tenés que ponerte a prueba! A continuación, te presentamos una
pregunta y cinco respuestas, pero solo tres de ellas son correctas; tendrás que seleccionarlas.
Incorrecto.
SUBMIT
Correcto.
Incorrecto.
SUBMIT
Correcto.
Incorrecto.
SUBMIT
Correcto.
Incorrecto.
SUBMIT
Correcto.
Incorrecto.
SUBMIT
Tipos de errores
Tal como hemos visto en los temas desarrollados anteriormente, si un algoritmo no es planificado y
ejecutado en forma minuciosa y precisa, pueden producirse diferentes tipos de errores. Estos son:
Errores de sintaxis: son aquellos que hacen referencia a la forma de escribir el código.
Errores de ejecución: son aquellos que aparecen cuando el programa se pone en funcionamiento,
es decir, cuando se lo usa.
Errores lógicos: son aquellos que surgen a causa de códigos mal planificados, cuando hay
funciones implementadas de formas incorrectas.
En los siguientes ejemplos vamos a observar errores comunes con los que suele encontrarse un
programador.
Errores de sintaxis
Este error es uno de los más frecuentes; suele pasar cuando un programador se equivoca al escribir un
código, ya sea al usar en forma inapropiada una etiqueta de algún lenguaje de programación o por escribir
mal algún parámetro.
Cuando en alguna instrucción del código fuente de un programa existe un error de
sintaxis, dicho error impedirá, tanto al compilador como al intérprete, traducir dicha
instrucción, ya que, ninguno de los dos entenderá qué le está diciendo el programador.
(Pes, s. f. b, https://goo.gl/J3HHEC).
Por ejemplo, al generar un saludo “Hola mundo” en C, puede producirse el siguiente error de sintaxis:
Instrucción correcta:
Printf ( " HOLA MUNDO " );
En este caso, podemos ver que, al escribir el código, el programador uso la etiqueta Printf (que se usa
para imprimir en pantalla) de forma no adecuada, ya que la escribió mal: prrinntf. Este error de tipeo va
causar un error en la lectura y la ejecución del código; tanto el compilador como el intérprete tendrán
dificultades al intentar compilar y ejecutar el código, ya que no se va reconocer la etiqueta porque está
mal escrita.
En la imagen anterior podemos observar que por redactar mal la palabra escribir se produce un error
porque hubo un parámetro malo.
Errores de ejecución
Suele pasar cuando un programa no se puede ejecutar o iniciar porque, más allá de que la estructura del
código esté bien escrita, se pretende una operación que no es posible. Es decir, no están pensadas
adecuadamente las órdenes que se le dan a la computadora.
A modo de ejemplo, a continuación, te presentamos las siguientes instrucciones para realizar la siguiente
operación: A= 2+2.
El error de ejecución podría surgir si el programador comete un error al escribir la estructura y coloca
directamente 2+2.
De esta forma, al omitir el resto de los signos necesarios, estamos asignando el resultado a una
condición: vamos a tener un error al ejecutar, ya que nos hacen falta valores que no están expresados.
Otro error de ejecución puede producirse, por ejemplo, cuando se pide a la computadora que realice una
operación imposible, como por ejemplo, dividir algún número por cero.
Errores de lógica
Este tipo de error suele generarse cuando un programador, por equivocación, coloca parámetros
erróneos. Por ejemplo, si al escribir un programa para realizar adiciones confunde los símbolos + (más) y
– (menos), y coloca + para realizar una resta. De esa forma, obtendrá un resultado no deseado: al querer
restar, va a sumar. Si este error se comete en operaciones complejas, es difícil de detectar y puede
llegar a tener consecuencias nefastas.
En la imagen precedente podemos observar que se corrigió el error expuesto en la Figura 8: se cambió el
símbolo de suma por el de resta; de esta forma, el algoritmo cumple su función.
También existe un problema recurrente, que es el error del usuario. Se trata de errores que se producen
cuando el usuario realiza algo inesperado, que no estaba previsto por el programa, por lo que este no
reacciona apropiadamente. Es por esto, justamente, que hoy en día se hacen tantas pruebas de
aplicaciones beta, para detectar cómo funciona un software en manos del usuario final.
Figura 10: Error de usuario
En la imagen anterior podemos ver que se escribió un código para multiplicar un número por dos, pero el
usuario ingresa una palabra en vez de un número, y esto causa un error, debido a que el programa no fue
diseñado para ingresar texto.
Tenés que arrastrar las cartas con algoritmos de la primera columna y soltar
sobre el número que está en la segunda columna, según el orden en el que
deben ubicarse en el proceso de programación.
SUBMIT
Lección 3 de 4
Cierre
La importancia de la simplicidad
–
Cuando hablamos de simplicidad, hacemos referencia al diseño de un algoritmo que permite que el
programador tenga control sobre dicho código.
Cuando el programador va desarrollando un código y creando nuevas funciones, este va creciendo e
inevitablemente se va complejizando: no existe un algoritmo fácil o totalmente simple, ya que siempre
que crezca va aumentar su dificultad o su complejidad. Pero si el programador toma las pautas
adecuadas para que sea lo más simple posible mientras lo desarrolla, lo crea en forma ordenada y es
clara su conformación, le será más sencillo solucionar los posibles inconvenientes, así como
implementar mejoras de forma más adecuada.
Tipos de errores
–
Errores de sintaxis: son aquellos que hacen referencia a la forma de escribir el código.
Errores de ejecución: son aquellos que aparecen cuando el programa se pone en funcionamiento,
es decir, cuando se lo usa.
Errores lógicos: son aquellos que surgen a causa de códigos mal planificados, cuando hay
funciones implementadas de formas incorrectas.
Lección 4 de 4
Referencias
[Imagen sin título sobre elementos de los algoritmos]. (s. f.). Recuperado de
https://algoritmica.webcindario.com/imagenes/eps.png
PSeInt, Software Libre bajo Licencia CPL, Pablo Novara (2013 - 2018)