Ir al contenido principal

11.1 Definición de Algoritmos y lenguaje

 El participante definirá el concepto de algoritmos y lenguaje e identificar sus aplicaciones.

En su libro Fundamentos de programación, Luis Joyanes Aguilar, define al algoritmo como un método para resolver un problema. Aunque la popularización del término ha llegado con el advenimiento de la era informática, algoritmo proviene de Mohammed al-KhoWârizmi, matemático persa que vivió durante el siglo IX y alcanzó gran reputación por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir números decimales; la traducción al latín del apellido en la palabra algorismus derivó posteriormente en algoritmo. Señala, Joyanes Aguilar, que Euclides, matemático griego (del siglo IV a.C.) quien inventó un método para encontrar el máximo común divisor de dos números, se considera con Al-KhoWârizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos).

Joyanes Aguilar, hace un señalamiento histórico con respecto a Niklaus Wirth, inventor de Pascal, Modula-2 y Oberon, profesor quien tituló uno de sus más famosos libros, Algoritmos+Estructuras de datos=Programas, señalandonos que sólo se puede llegar a realizar un buen programa con el diseño de un algoritmo y una correcta estructura de datos.

La resolución de un problema exige el diseño de un algoritmo que resuelva el mismo. La propuesta para la resolución de un problema es la siguiente:


PROBLEMA > DISEÑO DEL ALGORITMO > PROGRAMA DE COMPUTADORA

Los pasos para la resolución de un problema son: 

1.- Diseño del algoritmo, describe la secuencia ordenada de pasos, sin ambigüedades, que conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo). 

2.- Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase de codificación). 

3.- Ejecución y validación del programa por computadora.


Para llegar a la resolución de un problema es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa. 

Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, la receta de un platillo de cocina se puede expresar en español, inglés o francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración, del mismo se realizarán sin importar el idioma del cocinero. 

En la ciencia de la computación y en la programación, los algoritmos son más importantes que los lenguajes de programación o las computadoras. Un lenguaje de programación es tan sólo un medio para expresar un algoritmo y una computadora es sólo un procesador para ejecutarlo. Tanto el lenguaje de programación como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efectúe el proceso correspondiente.

Dada la importancia del algoritmo en la ciencia de la computación, un aspecto importante será el diseño de algoritmos. Joyanes Aguilar, enfatiza que el diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de programación. En esencia, la solución de un problema se puede expresar mediante un algoritmo.

Características de los algoritmos 

Las características fundamentales que debe cumplir todo algoritmo son: 

 Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. 

 Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. 

 Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos.

La definición de un algoritmo debe describir tres partes: 

Entrada, Proceso y Salida. 

Por ejemplo, en el cálculo de la edad de una persona, conociendo su año de nacimiento, la definición del algoritmo, quedaría de la siguiente manera: 

Entrada: la edad de la persona, información del año de nacimiento y el actual. 

Proceso: realizar la diferencia del año actual menos el año de nacimiento. 

Salida: visualización del resultado generado. Es decir, el resultado es la edad.

Se emplea un lenguaje natural describiendo paso a paso el algoritmo en cuestión. 

En la realización del algoritmo aplicar sus tres características: preciso, definido y finito. 

Por ejemplo algoritmo para conocer si el promedio de un alumno es aprobatorio o no teniendo como referencia que alumno cursa 5 materias y además que el promedio mínimo aprobatorio es 7.0.

-------------------------------------------------------------

1.- inicio 

2.- solicitar las cinco calificaciones del alumno 

3.-sumar las cinco calificaciones del alumno 

4.- El resultado del paso 3 dividirlo entre cinco 

5.- si el resultado del paso 4 es mayor o igual a 7.0 entonces 

5.1Visualizar Alumno aprobado 

    si_no 

    5.2 Visualizar Alumno reprobado 

    fin_si 

6.- fin 

-----------------------------------------------------------

En el algoritmo anterior se dio solución al planteamiento básico del cálculo del promedio de un alumno. Se observa que los pasos del algoritmo tienen un número que conforme se va describiendo la secuencia, ese número se va incrementando. Es importante destacar que todo algoritmo es finito, es decir, así como tiene un inicio debe tener un fin, lo que se observa en los pasos 1 y 6. 

El lenguaje que se emplea es de lo más natural. En el ejemplo se ilustra la precisión de cada una de las actividades, no se prestan a confusión. Así mismo podrá notarse que en el ejemplo, por su naturaleza existió la necesidad de tomar decisiones, es por ello el empleo de las palabras reservadas (sientonces-sino if-then-else) las cuales se emplean para la selección o toma de decisiones. 

En el paso 5.1 y 5.2 se implementa lo que se conoce como (sangrado o justificación) en la escritura de algoritmos, que no es más que una tabulación, estrategia recomendada tanto en la escritura de éstos, como en la captura de programas de computadora, ya que faciliten la lectura y permite un análisis más fluido de lo escrito.




(Juan Velázquez)

Comentarios

Post más visitados por la comunidad.

1. Introducción

. Print ("Hola mundo"); Quiero darte la bienvenida a este curso no sin antes agradeciéndote por entrar aquí y atreverte a conocer más de la informática y la programación de software conmigo en este curso. A lo largo de este recorrido encontrarás mucha información que te será muy útil a la hora de escoger el código de programación con el cual te sentirás a gusto programando, aprenderás desde cero y de una manera muy didáctica. Utilizaremos el pseudocódigo como herramienta para aprender a programar en este curso, en el módulo de herramientas TOOLS encontrarás los enlaces de descarga de los aplicativos para computador con sistema operativo Windows y sistema operativo Linux. Igual veremos algo de Python, C++, C#, JavaScript, Java, HTML y entre otros, pero estos solo nivel inicial, como para conocer las bases de estos lenguajes de programación.  No te detengas, es hora de aprender.!!!

15. INTRODUCCIÓN AL LENGUAJE C++

 Joyanes Aguilar hace referencia que C++ es heredero directo del lenguaje C que a su vez se deriva del lenguaje B.  El lenguaje de programación C fue desarrollado por Denis Ritchie de AT&T Bell Laboratories que se utilizó para escribir y mantener el sistema operativo UNIX (hasta que apareció C, el sistema operativo UNIX fue desarrollado por Ken Thompson en AT&T Bell Laboratories mediante un lenguaje ensamblador o en B). C es un lenguaje de propósito general que se puede utilizar para escribir cualquier tipo de programa, pero su éxito y popularidad está especialmente relacionado con el sistema operativo UNIX (fue desarrollado como lenguaje de programación de sistemas, es decir, un lenguaje de programación para escribir sistemas operativos y utilidades, programas, del sistema). Los sistemas operativos son los programas que gestionan (administran) los recursos de la computadora. Ejemplos bien conocidos de sistemas operativos además de UNIX son MS/DOS, OS/2, MVS, Linux, Wi...

10. Instrucciones y comandos SMART DFD 1.0

Smart DFD es un software desarrollado por el grupo Smart, de la Universidad del Magdalena (Santa Marta, Colombia) para apoyar la enseñanza de la lógica de programación a través de la utilización de los diagramas de flujo. Este manual esta elaborado como apoyo a los laboratorios de los estudiantes de la Asignatura Introducción y programación de los computadores. Es sólo una pequeña recopilación y explicación de algunos comandos utilizados en Clase. - Ventana principal de SAMRT DFD 1.0 La ventana principal de trabajo del Smart DFD 1.0 esta compuesta de los siguientes elementos:  Barra de menús   Botones de Archivo   Botones de Edición   Botones de Ejecución   Botones de Depuración   Botones de Zoom   Botones de Objetos   Botones de Subprogramas BARRA DE MENU Aquí encontramos las siguientes opciones:  A. Archivo:  Este menú se encarga del manejo del archivo que estemos trabajando.  Presenta los siguientes comandos:   Nuevo: Pa...