You are on page 1of 19

UNIDAD 1: Lenguaje Algortmico y Estructuras de Control

Algoritmos

Definicin formal de Algoritmo


En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo.
Muchos autores los sealan como listas de instrucciones para resolver un problema abstracto, es decir,
que un nmero finito de pasos convierten los datos de un problema (entrada) en una solucin (salida).
Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un
problema en particular.
Por ejemplo, una versin modificada de la criba de Eratstenes que nunca termine de calcular
nmeros primos no deja de ser un algoritmo.
A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando
modelos matemticos como mquinas de Turing entre otros Sin embargo, estos modelos estn sujetos a
un tipo particular de datos como son nmeros, smbolos o grficas mientras que, en general, los
algoritmos funcionan sobre una vasta cantidad de estructuras de datos. En general, la parte comn en
todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no
consideremos algoritmos paralelos:
Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso, definiendo
as una secuencia de estados "computacionales" por cada entrada vlida (la entrada son los
datos que se le suministran al algoritmo antes de comenzar).
Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una
Estructura de primer orden y cada algoritmo es independiente de su implementacin (los
algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer
orden son invariantes bajo isomorfismo.
Exploracin acotada. La transicin de un estado al siguiente queda completamente
determinada por una descripcin fija y finita; es decir, entre cada estado y el siguiente
solamente se puede tomar en cuenta una cantidad fija y limitada de trminos del estado actual.

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda
describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems tiene un
lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia
definicin abarca tanto a algoritmos prcticos como aquellos que solo funcionan en teora, por ejemplo
el Mtodos de Newton y la eliminacin Gauss - Jordan funcionan, al menos en principio, con nmeros
de precisin infinita; sin embargo no es posible programar la precisin infinita en una computadora, y
no por ello dejan de ser algoritmos.
En particular es posible considerar una cuarta propiedad que puede ser usada para validar la Tesis de
Curch- Turing de que toda funcin calculable se puede programar en una mquina de Turing (o
equivalentemente, en un lenguaje de programacin suficientemente general)
Aritmetizabilidad. Solamente operaciones innegablemente calculables estn disponibles en el
paso inicial.
Medios de expresin de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,
pseudocdigo,diagramas de flujo y lenguajes de programacin entre otros.
Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y
diagramas de flujo evita muchas ambigedades del lenguaje natural.
Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se
mantienen independientes de un lenguaje de programacin especfico.
La descripcin de un algoritmo usualmente se hace en tres niveles:
1.

Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se


explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.

2.

Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran
la solucin.
3.

Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin


especfico o algn objeto capaz de llevar a cabo instrucciones.

Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un anlisis de
complejidad o ambos.
Representacin de Algoritmos
Hay distintos mtodos de representar los algoritmos como:
o Texto: Se usa el lenguaje comn para describir el algoritmo
o Pseudocdigo: este tipo de representacin mezcla el lenguaje de programacin con un idioma, ya sea espaol, ingles o
cualquier otro, se puede definir como un lenguaje de especificacin de algoritmos. Es la representacin narrativa de los
pasosque debe de seguir un algoritmo. Este mtodo es mas compacto, mas fcil de escribir y mas fcil de transcribir a un
lenguaje de programacin que el diagrama de flujo.
o Diagrama de flujo: son herramientas graficas para representar algoritmos. esta compuesto por smbolos, como: rectngulos
rombos, cuadrados, etc., unidos por flechas, estos smbolos representan acciones y orden en como se realizan estas. Es decir,
los diagramas de flujo son diagramas que emplean smbolos grficos para representar algoritmos.
o Diagrama de Nassi-Schneiderman: Tambin conocido como diagrama de Chapn, es un mtodo se representacin de
algoritmos que combina la descripcin textual con la descripcin grafica, es como una combinacin del Pseudocdigo con el
diagrama de flujo. Por lo general todo lo que se puede representar en un diagrama de flujo se puede representar en este tipo
de diagrama. Este tipo de representacin cuenta con un conjunto limitado de smbolos para representar los pasos del
algoritmo
El diagrama Nassi-Shneiderman refleja la descomposicin del problema en una forma simple usando cajas anidadas para
representar cada uno de los sub-problemas. Ejemplos:
o Nivel de implementacin: consiste en expresar un algoritmo mediante una maquinaria, un programa de computadora o
algn objeto que realice las acciones planteadas por el algoritmo en cuestin. En general, la implementacin es el objetivo de
disear un algoritmo (pero no siempre).

1 Descripcin Narrada
Este algoritmo es caracterizado porque sigue un proceso de ejecucin comn y lgico, describiendo textualmente paso a
paso cada una de las actividades a realizar dentro de una actividad determinada.
Ejemplo 1 Algoritmo para asistir a clases:

1. Levantarse
2. Baarse
3. Vestirse
4. Desayunar
5. Cepillarse los dientes
6. Salir de casa
7. Tomar el autobs
8. Llegar a la ESPE
9. Buscar el aula
10. Ubicarse en un asiento

Pseudocdigo
El pseudocdigo (falso lenguaje, el prefijo pseudosignifica falso) es una descripcin de alto nivel de un
algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintcticas propias de
lenguajes de programacin, como asignaciones, ciclos y condicionales, aunque no est regido por
ningn estndar. Es utilizado para describir algoritmos en libros y publicaciones cientficas, y como
producto intermedio durante el desarrollo de un algoritmo, como los Diagramas de flujo, aunque
presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocdigo
requieren menos espacio para representar instrucciones complejas.
El pseudocdigo est pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo
tanto puede omitir detalles irrelevantes que son necesarios en una implementacin. Programadores
diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes
de programacin concretos. Sin embargo, el pseudocdigo, en general, es comprensible sin necesidad
de conocer o utilizar un entorno de programacin especfico, y es a la vez suficientemente estructurado
para que su implementacin se pueda hacer directamente a partir de l.
As el pseudodocdigo cumple con las funciones antes mencionadas para representar algo abstracto los
protocolos son los lenguajes para la programacin. Busque fuentes ms precisas para tener mayor
comprensin del tema.

Ejemplo 1
Disear un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media
aritmtica.
inicio
leer (a, b, c, d)
producto <-- (a * b * c * d)
suma <-- (a + b + c + d)

media <-- (a + b + c + d) / 4
escribir (producto, suma, media)
fin

Diagramas N-S
Son una herramienta que favorece la programacin estructurada y rene caractersticas grficas
propias de diagramas de flujo y lingsticas propias de pseudocdigos. Constan de una serie de cajas contiguas
que se leern siempre de arriba-abajo y sus estructuras lgicas son las siguientes:

Estructura Secuencial

Diagrama de flujo
Son la representacin grfica de la solucin algortmica de un problema. Para
disearlos se utilizan determinados smbolos o figuras que representan una accin dentro del

procedimiento. Utilizan unos smbolos normalizados, con los pasos del algoritmo escritos en
el smbolo adecuado y los smbolos unidos con flechas, denominadas lneas de flujo, que
indican el orden en que los pasos deben ser ejecutados.

La Figura de Diagramas de Flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero
Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas
para indicar la secuencia de instrucciones y estn regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho
espacio y su construccin es laboriosa. Por su facilidad de lectura son usados como introduccin a los
algoritmos, descripcin de un lenguaje y descripcin de procesos a personas ajenas a la computacin.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,
pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las descripciones en
lenguaje natural tienden a ser ambiguas y extensas.
El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas
expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen
independientes de un lenguaje de programacin especfico.

Diagramas de Flujo

Los diagramas de flujo sirven para representar algoritmos de manera grfica.


En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y
latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi ) es un conjunto preescrito de
instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante
pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y
una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los
algoritmos son el objeto de estudio de la algoritmia.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos
ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las
instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica
son el algoritmo de la divisin para calcular el cociente de dos nmeros, el Algoritmo de
Euclides para obtener el Mximo Comn Divisor de dos enteros positivos, o el Mtodo de
Gauss para resolver un Sistema Lineal de Ecuaciones.
Para su elaboracin se siguen ciertas reglas:

Se escribe de arriba hacia abajo y de izquierda a derecha

Siempre se usan flechas verticales u horizontales, jams curvas

Evitar cruce de flujos

En cada paso expresar una accin concreta

Secuencia de flujo normal en una solucin de problema

Tiene un inicio
Una lectura o entrada de datos

El proceso de datos

Una salida de informacin

Un final

Simbologa para disear flujogramas.

VENTAJAS DE USAR FLUJOGRAMAS

Rpida comprensin de las relaciones

Anlisis efectivo de las diferentes secciones del programa

Pueden usarse como modelos de trabajo en el diseo de nuevos programas o sistemas

Comunicacin con el usuario

Documentacin adecuada de los programas

Codificacin eficaz de los programas

Depuracin y pruebas ordenadas de programas

DESVENTAJAS DE LOS FLUJOGRAMAS

existen

Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseo

Acciones a seguir tras la salida de un smbolo de decisin, pueden ser difciles de seguir si

diferentes caminos

No existen normas fijas para la elaboracin de los diagramas de flujo que permitan incluir todos los

detalles que el usuario desee introducir.

Representando el ejemplo como flujograma tenemos:

Sistemas formales
La teora de autmatas y la teora de funciones recursivas proveen modelos matemticos que
formalizan el concepto de algoritmo.
Los modelos ms comunes son la mquina de Turing, mquina de registro y funciones u-recursivas.
Estos modelos son tan precisos como un lenguaje de mquina, careciendo de expresiones coloquiales o
ambigedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier
implementacin

Implementacin

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos
pueden ser implementados en otros medios, como una red neuronal, un circuito elctrico o un aparato
mecnico y elctrico. Algunos algoritmos inclusive se disean especialmente para implementarse
usando lpiz y papel. El algortitmo de multiplicacin tradicional, elalgoritmo de Euclides, la criba de
Erstones y muchas formas de resolver la raz cuadrada son slo algunos ejemplos.

Variables
Son elementos que toman valores especficos de un tipo de datos concreto. La declaracin de una
variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores
iniciales a variables:
1. Mediante una sentencia de asignacin.
2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read').
Ejemplo:
...
i:=1;
read(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...

Estructuras secuenciales
La estructura secuencial es aquella en la que una accin sigue a otra en secuencia. Las operaciones se
suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin
del proceso. La asignacin de esto consiste, en el paso de valores o resultados a una zona de la
memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se
puede clasificar de la siguiente forma:
1. Simples: Consiste en pasar un valor constante a una variable (a 15)
2. Contador: Consiste en usarla como un verificador del nmero de veces que se realiza un
proceso (a a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a a + b)
4. De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre
muchas variables (a c + b*2/4).
Un ejemplo de estructura secuencial, Codificado en C++, como obtener la rea de un tringulo:
Inicio
...
float b, h, a;
printf("Diga la base");
scanf("%f", &b);
printf("Diga la altura");
scanf("%f", &h);

a = (b*h)/2;
printf("El rea del tringulo es %f", a)
...
Fin

Estructuras Repetitivas
El computador est especialmente diseado para aplicaciones en las que una operacin o un conjunto
de ellas deben repetirse muchas veces. En este sentido, definiremos bucle o lazo (loop), como un
segmento de un programa cuyas instrucciones se repiten bien un nmero determinado de veces o
mientras se cumpla una determinada condicin.
Es imprescindible que se establezcan mecanismos para controlar esta tarea repetitiva, ya que si stos
no existen, el bucle puede convertirse en un proceso infinito. As, en el bucle representado por el
organigrama de la Figura , se observa que las instrucciones incluidas en l se repiten indefinidamente.
El mecanismo de control citado se establece mediante una condicin que se comprueba en cada paso o
iteracin del bucle.

En la Figura se coloca una condicin tras la lectura de la variable N (comprobar si su valor es cero),
de forma que tenemos la oportunidad de que el bucle deje de ser infinito, ya que podr interrumpirse
cuando la condicin sea verdadera.
Los procesos que se repiten varias veces en un programa necesitan en muchas ocasiones contar el
numero de repeticiones habidas. Una forma de hacerlo es utilizar una variable llamada contador, cuyo
valor se incrementa o decrementa en una cantidad constante en cada repeticin que se produzca.

La Figura siguiente presenta un diagrama de flujo para un algoritmo en el que se desea repetir 50 veces
un grupo de instrucciones, que llamaremos cuerpo del bucle, donde el contador se representa con la
variable CONT. La instruccin que actualiza al contador es la asignacin:
CONT CONT+1.
El contador puede ser positivo (incrementos de uno en uno) o negativo (decrementos de uno en uno).
En la Figura, el contador cuenta desde 1 a 50 y deja de repetirse cuando la variable CONT toma el
valor 51 y termina el bucle.

En la Figura siguiente se muestra un algoritmo que efecta la operacin de multiplicacin n x m,


sumando m un nmero n de veces. En l, el contador se decrementa: comienzaa contar en n y se va
decrementando hasta llegar a cero; en ese momento se termina el bucle y se realiza la accin escribir.

Otro tipo de variable, normalmente asociada al funcionamiento de un bucle es un acumulador o


totalizador, cuya misin es almacenar una cantidad variable, resultante de operaciones sucesivas y
repetidas. Un acumulador realiza una funcin parecida a la de un contador, con la diferencia de que el
incremento o decremento, de cada operacin es variable en lugar de constante.
Una estructura repetitiva es aquella que marca la reiteracin de una serie de acciones basndose en un
bucle. De acuerdo con lo anterior, esta estructura debe constar de tres partes bsicas:
- decisin (para finalizar la repeticin)
- cuerpo del bucle (conjunto de instrucciones que se repiten)
- salida del bucle (instruccin a la que se accede una vez se decide finalizar)
Tomando el caso anterior, donde para obtener la suma de una serie de nmeros, hemos utilizado la
estrategia siguiente: tras leer cada nmero lo aadimos a una variable SUMA que contenga las
sucesivas sumas parciales (SUMA se hace igual a cero al inicio).
Observemos que el algoritmo correspondiente deber utilizar sucesivamente instrucciones tales como:
leer nmero
si N < 0 entonces
escribir SUMA
si-no

SUMA SUMA+nmero
fin-si
que se pueden repetir muchas veces; stas constituyen el cuerpo del bucle.
Una vez se ha decidido el cuerpo del bucle, se plantea la cuestin de cuntas veces se debe repetir. De
hecho conocemos ya la necesidad de contar con una condicin para detener el bucle. En el Ejemplo 8,
se pide al usuario el nmero N de nmeros que desea sumar, esto es, el nmero de iteraciones del
bucle.
Usamos un contador de iteraciones, TOTAL, que se inicializa a N y a continuacin se decrementa en
uno cada vez que el bucle se repite; para ello introducimos una accin ms al cuerpo del bucle:
TOTAL TOTAL -1. Tambin podramos inicializar la variable TOTAL en 0 o en 1, e ir
incrementndolo en uno, en cada iteracin, hasta llegar al nmero deseado N.
Ejemplo :
Hallar la suma de N nmeros, a travs de una estructura repetitiva
algoritmo suma_nmeros
{leer nmero total de nmeros a sumar en variable N}
TOTAL N
SUMA 0 { la suma parcial es 0 al inicio}
{comienzo de bucle}
mientras que TOTAL > 0 hacer
leer nmero
SUMA SUMA+nmero
TOTAL TOTAL-1
fin_mientras
{fin del bucle}
escribir la suma de los , N , nmeros es , SUMA
Aunque la condicin de finalizacin puede evaluarse en distintos lugares del algoritmo, no es
recomendable que sta se pueda efectuar a mitad del cuerpo del bucle, por lo que es bueno que se
produzca al principio o al final del mismo. Segn donde se site la condicin de salida, dar lugar a
distintos tipos de estructuras repetitivas que analizaremos a continuacin: estructura desde-hasta,
estructura mientras y estructura repetir-hasta_que.

ESTRUCTURA DESDE-HASTA
Esta estructura consiste en que la condicin de salida se basa en un contador que cuenta el nmero de
iteraciones. Por ejemplo, el ejemplo 8 podra hacerse de la siguiente manera:
desde i = 1 hasta N con_incremento 1 hacer
leer nmero
SUMA SUMA + nmero
fin_desde

donde i es un contador que cuenta desde un valor inicial (1) hasta el valor final (N) con los incrementos
que se consideren (de uno en uno en este caso). Esta es la llamada estructura Desde (for), que es la
ms simple desde el punto de vista de la condicin de salida, ya que viene predeterminada por el
cdigo. Su utilidad reside en el hecho de que, en muchas ocasiones, se conoce de antemano el nmero
de iteraciones. Esta estructura ejecuta las acciones del cuerpo del bucle, un nmero especificado de
veces y de modo automtico controla el nmero de iteraciones. Su formato en pseudocdigo es:
desde v=vi hasta vf hacer
<acciones>
.
.
fin_desde
v: variable ndice
vi, vf: valores inicial y final de la variable
La variable ndice o de control normalmente ser de tipo entero y es normal emplear como
identificador, las letras I,J,K como herencia de los ndices y subndices utilizados en clculo cientfico.
El incremento de la variable ndice es 1 en cada iteracin si no se indica expresamente lo contrario. Si
debemos expresar incrementos distintos de +1 el formato de la estructura es:
desde v = vi hasta vf inc incremento hacer
<acciones> si vi > vf entonces usar
. en lugar de inc incremento
. la expresin dec decremento
fin_desde
Obviamente, si el valor inicial de la variable ndice es menor que el valor final, los incrementos deben
ser positivos, ya que en caso contrario la secuencia de acciones no se ejecutara. De igual modo si el
valor inicial es mayor que el valor final, el incremento debe ser en este caso negativo. As:
desde I=20 hasta 10 hacer
<acciones>
fin_desde
for(v=vi; v<=vf; vt+=step)
<accion o bloque de acciones >
(ms genricamente)
for(inicio;condicin;actualizacin)
<accion o bloque de acciones >

ESTRUCTURA MIENTRAS
verdadera, entonces se ejecuta el cuerpo del bucle. No todos los lenguajes incluyen
la estructura mientras.
En lenguaje C:

Cuando la condicin de salida del bucle se realiza al principio del mismo, ste se ejecuta mientras se
verifica una cierta condicin. Es la llamada estructura repetitiva mientras (while); en ella el cuerpo
del bucle se repite mientras se cumple una determinada condicin. Su pseudocdigo es:
mientras condicin hacer
<acciones>
fin_mientras
Cuando se ejecuta la instruccin mientras, la primera cosa que sucede es la evaluacin de la condicin.
Si es falsa, no se ejecuta ninguna accin y el programa prosigue en la siguiente instruccin a la
finalizacin del bucle; si la condicin es
while (condicion)
<accion>
Obsrvese que en una estructura mientras si la primera evaluacin de la condicin es falsa, el cuerpo
del bucle nunca se ejecuta. Puede parecer intil ejecutar el cuerpo del bucle cero veces, ya que no
tendr efecto en ningn valor o salida; sin embargo, puede ser una accin deseada. Por ejemplo el
siguiente bucle para procesar las notas de unos examenes contando el nmero de alumnos presentados
dejar de ejecutarse cuando el numero ledo sea negativo. Si la primera nota introducida fuera negativa,
la accin deseada es, efectivamente, que no se ejecute el bucle ninguna vez.
C 0
leer nota
mientras nota = 0 hacer
{procesar nota}
C C+1
leer nota
fin_mientras

ESTRUCTURA REPETIR-HASTA_QUE
En esta estructura la condicin de salida se sita al final del bucle; el bucle se ejecuta hasta que se
verifique una cierta condicin. Es la llamada estructura Repetir-hasta (repeat-until). Existen
muchas situaciones en las que se desea que un bucle se ejecute al menos una vez, antes de comprobar
la condicin de repeticin. Para ello la estructura repetir-hasta_que se ejecuta hasta que se cumpla una
condicin determinada que se comprueba al final del bucle. En pseudocdigo se escribe:
repetir
<acciones>
hasta_que <condicin>
do
<accion o bloque>
while (condicion);
(en C se dice mientras se cumpla la condicin, no hasta que se cumpla)

El bucle repetir-hasta_que se repite mientras la condicin sea falsa, justo lo opuesto a la estructura
mientras. Sea el siguiente algoritmo:
inicio

contador 1
repetir
leer nmero
ontador contador+1
hasta_que contador > 30
escribir nmeros ledos: 30

fin
Este bucle se repite hasta que el valor de variable contador exceda a 30, lo que suceder despus de 30
ejecuciones del mismo. Ntese que si en vez de 30 pusiramos 0, el cuerpo del bucle se ejecutar
siempre al menos una vez.
Ejemplo :
Calcular el factorial de un nmero N, usando la estructura repetir.
inicio
leer N
Factorial 1
I 1
repetir
Factorial Factorial * I
I I+1
hasta_que I > N
escribir el factorial del nmero, N, es, Factorial
fin
Las tres estructuras repetitivas son susceptibles de intercambio entre ellas, as por ejemplo es posible,
sustituir una estructura desde, por una mientras; con incrementos positivos o negativos de la variable
ndice. En efecto, la estructura desde con incremento positivo es equivalente a la estructura mientras
marcada con la A), y la estructura desde con incremento negativo es equivalente a la
estructura mientras marcada con la B).

A)
v vi
mientras v < = vf hacer
<acciones>
v v + incremento
fin_mientras

B)
v vi
mientras v > = vf hacer
<acciones>
v v - decremento
fin_mientras

Ejemplo 10:
Calcular los factoriales de n nmeros ledos por el teclado.
El problema consiste en realizar una primera estructura repetitiva de n iteraciones del algoritmo de
clculo del factorial, que a su vez se efecta con una segunda estructura repetitiva.
inicio
leer n {lectura de la cantidad de nmeros}
desde i = 1 hasta n hacer
leer NUMERO
FACTORIAL 1
desde j = 1 hasta NUMERO hacer
FACTORIAL FACTORIAL *j
fin_desde
escribir el factorial del nmero, NUMERO, es, FACTORIAL
fin_desde
fin