If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Expresar 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:
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:
  • "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!

¿Quieres unirte a la conversación?

Sin publicaciones aún.
¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.