Expresar un algoritmo (artículo) | Khan Academy (2024)

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:

Diagrama de flujo para el algoritmo del idioma ficticio, con 6 nodos que fluyen en secuencia:

  • "Inicio"
  • "Añade "-""
  • "Añade primera letra"
  • "Añade "ante"
  • "Elimina la primera letra"
  • "Fin"

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:

Diagrama de flujo para el algoritmo mejorado del idioma ficticio. Inicia con 3 nodos que fluyen en secuencia:

  • "Inicio"
  • "Añade "-""
  • "Guarda la primera letra"

Luego un nodo de diamante con la condición "¿primera letra = vocal?".

Una flecha etiquetada "cierto" conduce a:

  • "Añade "ante""
  • "Fin"

Una flecha etiquetada "falso" conduce a:

  • "Añade primera letra"
  • "Añade "ente"
  • "Elimina la primera letra"
  • "Fin"

Finalmente, este diagrama de flujo visualiza el algoritmo completo con iteración:

Diagrama de flujo para el algoritmo final del idioma ficticio. Inicia con 3 nodos que fluyen en secuencia:

  • "Inicio"
  • "Guarda palabras"
  • "Para palabra en palabras"

Una flecha etiquetada "palabra" fluye de ahí a un diagrama de flujo anidado que inicia con:

See Also
PSeInt
  • "Inicio"
  • "Añade "-""
  • "Guarda la primera letra"

Luego un nodo de diamante con la condición "¿primera letra = vocal?".

Una flecha etiquetada "cierto" conduce a:

  • "Añade "ante""
  • "Fin"

Una flecha etiquetada "falso" conduce a:

  • "Añade primera letra"
  • "Añade "ente"
  • "Elimina la primera letra"
  • "Fin"

Una flecha fluye de "Fin" en el diagrama de flujo anidado de vuelta a "Para palabra en palabras".

Una flecha etiquetada "fin de palabras" fluye de "Para palabra en palabras" y conduce a un nodo "Fin".

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.

📝 Mira código similar en: App Lab | Snap | Python

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!

Si no ves un área de "Preguntas" abajo, estás usando la aplicación móvil o leyendo este artículo en una ventana temporal. Si estás en la aplicación móvil, visita este artículo desde un navegador. Si estás en una ventana temporal, haz clic en el título del artículo en la parte superior.

Expresar un algoritmo (artículo) | Khan Academy (2024)
Top Articles
Latest Posts
Article information

Author: Kerri Lueilwitz

Last Updated:

Views: 5815

Rating: 4.7 / 5 (47 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Kerri Lueilwitz

Birthday: 1992-10-31

Address: Suite 878 3699 Chantelle Roads, Colebury, NC 68599

Phone: +6111989609516

Job: Chief Farming Manager

Hobby: Mycology, Stone skipping, Dowsing, Whittling, Taxidermy, Sand art, Roller skating

Introduction: My name is Kerri Lueilwitz, I am a courageous, gentle, quaint, thankful, outstanding, brave, vast person who loves writing and wants to share my knowledge and understanding with you.