68 Fundamentos de programación
2.6. ESCRITURA DE ALGORITMOS
Como ya se ha comentado anteriormente, el sistema para describir (“escribir”) un algoritmo consiste en realizar una
descripción paso a paso con un lenguaje natural del citado algoritmo. Recordemos que un algoritmo es un método o
conjunto de reglas para solucionar un problema. En cálculos elementales estas reglas tienen las siguientes propie-
dades:
• deben ir seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado coherente,
• sólo puede ejecutarse una operación a la vez.
El flujo de control usual de un algoritmo es secuencial; consideremos el algoritmo que responde a la pregunta:
¿Qué hacer para ver la película de Harry Potter?
La respuesta es muy sencilla y puede ser descrita en forma de algoritmo general de modo similar a:
ir al cine
comprar una entrada (billete o ticket)
ver la película
regresar a casa
El algoritmo consta de cuatro acciones básicas, cada una de las cuales debe ser ejecutada antes de realizar la si-
guiente. En términos de computadora, cada acción se codificará en una o varias sentencias que ejecutan una tarea
particular.
El algoritmo descrito es muy sencillo; sin embargo, como ya se ha indicado en párrafos anteriores, el algoritmo
general se descompondrá en pasos más simples en un procedimiento denominado refinamiento sucesivo, ya que cada
acción puede descomponerse a su vez en otras acciones simples. Así, por ejemplo, un primer refinamiento del algo-
ritmo ir al cine se puede describir de la forma siguiente:
1. inicio
2. ver la cartelera de cines en el periódico
3. si no proyectan "Harry Potter" entonces
3.1. decidir otra actividad
3.2. bifurcar al paso 7
si_no
3.3. ir al cine
fin_si
4. si hay cola entonces
4.1. ponerse en ella
4.2. mientras haya personas delante hacer
4.2.1. avanzar en la cola
fin_mientras
fin_si
5. si hay localidades entonces
5.1. comprar una entrada
5.2. pasar a la sala
5.3. localizar la(s) butaca(s)
5.4. mientras proyectan la película hacer
5.4.1. ver la película
fin_mientras
5.5. abandonar el cine
si_no
5.6. refunfuñar
fin_si
6. volver a casa
7. fin
Metodología de la programación y desarrollo de software 69
En el algoritmo anterior existen diferentes aspectos a considerar. En primer lugar, ciertas palabras reservadas se
han escrito deliberadamente en negrita (mientras, si_no; etc.). Estas palabras describen las estructuras de control
fundamentales y procesos de toma de decisión en el algoritmo. Éstas incluyen los conceptos importantes de selección
(expresadas por si-entonces-si_no, if-then-else) y de repetición (expresadas con mientras-hacer o a veces
repetir-hasta e iterar-fin_iterar, en inglés, while-do y repeat-until) que se encuentran en casi todos los
algoritmos, especialmente en los de proceso de datos. La capacidad de decisión permite seleccionar alternativas de
acciones a seguir o bien la repetición una y otra vez de operaciones básicas.
si proyectan la película seleccionada ir al cine
si_no ver la televisión, ir al fútbol o leer el periódico
mientras haya personas en la cola, ir avanzando repetidamente
hasta llegar a la taquilla
Otro aspecto a considerar es el método elegido para describir los algoritmos: empleo de indentación (sangrado o
justificación) en escritura de algoritmos. En la actualidad es tan importante la escritura de programa como su poste-
rior lectura. Ello se facilita con la indentación de las acciones interiores a las estructuras fundamentales citadas: se-
lectivas y repetitivas. A lo largo de todo el libro la indentación o sangrado de los algoritmos será norma constante.
Para terminar estas consideraciones iniciales sobre algoritmos, describiremos las acciones necesarias para refinar
el algoritmo objeto de nuestro estudio; para ello analicemos la acción:
Localizar la(s) butaca(s).
Si los números de los asientos están impresos en la entrada, la acción compuesta se resuelve con el siguiente
algoritmo:
1. inicio //algoritmo para encontrar la butaca del espectador
2. caminar hasta llegar a la primera fila de butacas
3. repetir
compara número de fila con número impreso en billete
si son iguales entonces pasar a la siguiente fila fin_si
hasta_que se localice la fila correcta
4. mientras número de butaca no coincida con número de billete
hacer avanzar a través de la fila a la siguiente butaca
fin_mientras
5. sentarse en la butaca
6. fin
En este algoritmo la repetición se ha mostrado de dos modos, utilizando ambas notaciones, repetir... has-
ta_que y mientras... fin_mientras. Se ha considerado también, como ocurre normalmente, que el número del
asiento y fila coincide con el número y fila rotulado en el billete.
2.7. REPRESENTACIÓN GRÁFICA DE LOS ALGORITMOS
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje
de programación elegido. Ello permitirá que un algoritmo pueda ser codificado indistintamente en cualquier lengua-
je. Para conseguir este objetivo se precisa que el algoritmo sea representado gráfica o numéricamente, de modo que
las sucesivas acciones no dependan de la sintaxis de ningún lenguaje de programación, sino que la descripción pue-
da servir fácilmente para su transformación en un programa, es decir, su codificación.
Los métodos usuales para representar un algoritmo son:
1. diagrama de flujo,
2. diagrama N-S (Nassi-Schneiderman),
3. lenguaje de especificación de algoritmos: pseudocódigo,
4. lenguaje español, inglés…
5. fórmulas.
70 Fundamentos de programación
Los métodos 4 y 5 no suelen ser fáciles de transformar en programas. Una descripción en español narrativo no
es satisfactoria, ya que es demasiado prolija y generalmente ambigua. Una fórmula, sin embargo, es un buen siste-
ma de representación. Por ejemplo, las fórmulas para la solución de una ecuación cuadrática (de segundo grado)
son un medio sucinto de expresar el procedimiento algorítmico que se debe ejecutar para obtener las raíces de dicha
ecuación.
xl = (–b + √––
b2 – 4ac)/2a x2 = (–b – √––
b2 – 4ac)/2a
y significa lo siguiente:
1. Elevar al cuadrado b.
2. Tomar a; multiplicar por c; multiplicar por 4.
3. Restar el resultado obtenido de 2 del resultado de 1, etc.
Sin embargo, no es frecuente que un algoritmo pueda ser expresado por medio de una simple fórmula.
2.7.1. Pseudocódigo
El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el paso
de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil. Los lenguajes APL
Pascal y Ada se utilizan a veces como lenguajes de especificación de algoritmos.
El pseudocódigo nació como un lenguaje similar al inglés y era un medio de representar básicamente las estruc-
turas de control de programación estructurada que se verán en capítulos posteriores. Se considera un primer borrador,
dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. El pseudocódigo no
puede ser ejecutado por una computadora. La ventaja del pseudocódigo es que en su uso, en la planificación de un
programa, el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las
reglas de un lenguaje específico. Es también fácil modificar el pseudocódigo si se descubren errores o anomalías en
la lógica del programa, mientras que en muchas ocasiones suele ser difícil el cambio en la lógica, una vez que está
codificado en un lenguaje de programación. Otra ventaja del pseudocódigo es que puede ser traducido fácilmente a
lenguajes estructurados como Pascal, C, FORTRAN 77/90, C++, Java, C#, etc.
El pseudocódigo original utiliza para representar las acciones sucesivas palabras reservadas en inglés —similares
a sus homónimas en los lenguajes de programación—, tales como start, end, stop, if-then-else, while-end,
repeat-until, etc. La escritura de pseudocódigo exige normalmente la indentación (sangría en el margen izquier-
do) de diferentes líneas.
Una representación en pseudocódigo —en inglés— de un problema de cálculo del salario neto de un trabajador
es la siguiente:
start
//cálculo de impuesto y salarios
read nombre, horas, precio
salario ← horas * precio
tasas ← 0,25 * salario
salario_neto ← salario – tasas
write nombre, salario, tasas, salario
end
El algoritmo comienza con la palabra start y finaliza con la palabra end, en inglés (en español,
inicio, fin). Entre estas palabras, sólo se escribe una instrucción o acción por línea.
La línea precedida por // se denomina comentario. Es una información al lector del programa y no realiza nin-
guna instrucción ejecutable, sólo tiene efecto de documentación interna del programa. Algunos autores suelen utilizar
corchetes o llaves.
No es recomendable el uso de apóstrofos o simples comillas como representan en algunos lenguajes primitivos
los comentarios, ya que este carácter es representativo de apertura o cierre de cadenas de caracteres en lenguajes
como Pascal o FORTRAN, y daría lugar a confusión.