Contenido principal
Principios de ciencias de la computación avanzados (AP Computer Science Principles)
Curso: Principios de ciencias de la computación avanzados (AP Computer Science Principles) > Unidad 4
Lección 1: Construir algoritmosExpresar un algoritmo
Podemos expresar un algoritmo de muchas maneras, incluyendo lenguaje natural, diagramas de flujo, pseudocódigo y, por supuesto, en lenguajes de programación reales.
El lenguaje natural es popular, pues se nos da naturalmente y puede comunicar los pasos de un algoritmo a una audiencia general. Cuando desarrollamos algoritmos, a menudo trabajamos con personas que saben programación y con algunos que no; pero todos conocen el lenguaje natural.
Sin embargo, el lenguaje natural tiene inconvenientes. Tiende a ser ambiguo y a estar definido vagamente, pues carece de estructura precisa. Esto dificulta que otros sigan un algoritmo y se sientan seguros de que es correcto. Los diagramas de flujo y el pseudocódigo son formatos más estructurados que pueden expresar un algoritmo de manera más precisa, y son populares con científicos de computación y programadores.
Intentemos los formatos más estructurados para expresar el algoritmo del idioma ficticio en el artículo anterior.
Diagramas de flujo
Una manera más formal de expresar un algoritmo es con un diagrama de flujo, un diagrama con cajas conectadas por flechas.
Para empezar con algo sencillo, aquí hay un diagrama de flujo para la versión básica del algoritmo del idioma ficticio:
Cada rectángulo representa un paso en la secuencia, y las flechas fluyen de un paso al siguiente.
Este siguiente diagrama de flujo es para el algoritmo mejorado, y utiliza un diamante para representar la fase de selección:
Finalmente, este diagrama de flujo visualiza el algoritmo completo con iteración:
Expresar un algoritmo como un diagrama de flujo nos permite visualizar el algoritmo a nivel alto, además de que nos obliga a pensar muy cuidadosamente en la secuenciación y selección. ¿Cuál flecha va a cuál nodo? ¿Faltan flechas? Estos son los tipos de preguntas valiosas que pueden surgir al traducir un algoritmo a un diagrama de flujo.
Pseudocódigo
Finalmente la mayoría de los algoritmos se transforman en código para ejecutar en una computadora. Antes de eso, los programadores a menudo prefieren expresar un algoritmo en pseudocódigo: un código que utiliza construcciones de un lenguaje de programación, pero que en realidad, no se ejecuta.
Aquí está el algoritmo del idioma ficticio escrito al estilo de pseudocódigo AP CSP:
FOR EACH word IN words
{
APPEND(word, "-")
letter ← FIRST_LETTER(word)
IF (IS_VOWEL(letter)) {
APPEND(word, "ante")
} ELSE {
APPEND(word, letter)
APPEND(word, "ente")
REMOVE_FIRST(word)
}
}
Cada programador escribe pseudocódigo de manera diferente, pues no hay un estándar oficial, así que puedes toparte con pseudo-código que se vea muy diferente.
Expresar un algoritmo en pseudocódigo ayuda a un programador a pensar en términos familiares, sin preocuparse por la sintaxis y detalles específicos. También le provee a los científicos de computación una forma independiente del lenguaje para expresar un algoritmo, de manera que los programadores de cualquier lenguaje puedan tomarla, leer el pseudo-código y traducirlo a su lenguaje favorito.
Lenguajes de programación
Después de planear nuestro algoritmo, ya sea en lenguaje natural, diagramas de flujo, pseudocódigo, o una combinación de esos, es momento de convertirlo en código ejecutable.
Traduciremos el algoritmo del idioma ficticio a JavaScript, que ese es el lenguaje elegido para Khan Academy. Podemos usar un bucle
for
para la repetición, un if
/else
para la selección, y luego una mezcla de operaciones de cadenas y arreglos para los pasos.Un algoritmo puede traducirse a cualquier lenguaje de programación de propósito general. Como muestra, simplemente revisa RosettaCode.org, un wiki que lista cientos de algoritmos traducidos a más de 700 lenguajes.
El software se escribe en una gran variedad de lenguajes de programación, dependiendo de lo que haga y quién lo escriba. Khan Academy utiliza actualmente cuatro lenguajes diferentes para diferentes partes de los bases de código. Afortunadamente, ¡podemos usar los mismos algoritmos en todas partes!
🙋🏽🙋🏻♀️🙋🏿♂️¿Tienes alguna pregunta sobre este tópico? Nos encantaría contestarte; ¡simplemente pregunta en el área de preguntas abajo!
¿Quieres unirte a la conversación?
Sin publicaciones aún.