Вы находитесь на странице: 1из 18

Algoritmo

En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del latn,


dixit algorithmus y ste a su vez del matemtico persa Al Juarismi1 ) es una lista bien definida,
ordenada y finita de operaciones que permite hallar la solucin a un problema. Dado un estado
inicial y una entrada, a travs de pasos sucesivos y bien definidos se llega a un estado final,
obteniendo una solucin. Los algoritmos son objeto de estudio de la algoritmia.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos
problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales
muestran algoritmos para usar el aparato en cuestin o inclusive en las instrucciones que recibe un
trabajador por parte de su patrn. Tambin existen ejemplos de ndole matemtica, como el
algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para
calcular el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un
Sistema lineal de ecuaciones.
Saltar a navegacin, bsqueda

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

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.

Diagrama de flujo

Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero x
Artculo principal: Diagrama de flujo
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.

Pseudocdigo
Artculo principal: Pseudocdigo

Pseudocdigo es la descripcin de un algoritmo que asemeja a un lenguaje de programacin pero


con algunas convenciones del lenguaje natural. Tiene varias ventajas con respecto a los diagramas
de flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones
complejas. El pseudocdigo no est regido por ningn estndar. pseudo viene de falso y por ende
es un cdigo al que aunque es entendible no se aplica al proceso que debe realizar la mquina.

Mquina de Turing
Artculo principal: Mquina de Turing

La mquina de Turing es un modelo matemtico, diseado por Alan Turing, que formaliza el
concepto de algoritmo. A este modelo se le refiere comnmente como la "descripcin de ms bajo
nivel" por el hecho de que no utiliza ninguna expresin coloquial.

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 electrico. Algunos algoritmos inclusive se disean especialmente para
implementarse usando lpiz y papel. El algoritmo de multiplicacin tradicional, el algoritmo de
Euclides, la criba de Eratstenes y muchas formas de resolver la raz cuadrada son slo algunos
ejemplos.

Algoritmos y funciones
Artculo principal: Teora de la computabilidad

Formalmente, un algoritmo calcula a una funcin. Como cualquier conjunto finito es numerable, y
cualquier conjunto no numerable se puede expresar en trminos del conjunto de los nmeros
naturales (infinito, pero numerable, de hecho no existe otro conjunto ms grande que sea tambin
numerable), en esencia, todo algoritmo calcula a funciones definidas en los numeros naturales. En
este punto, una funcin est parcial o totalmente definida. Una funcin es parcial cuando hay
nmeros naturales que no pertenecen a su dominio (es decir, hay nmeros naturales sobre los que
no est definida la funcin), y una funcin es total en caso contrario.
Si una funcin es parcial, el algoritmo que lo calcula solo devolver un resultado (es decir gasta
un tiempo de clculo finito) para los valores en los que la funcin est definida, no devolviendo
resultado (el tiempo de clculo es infinito) para el resto de valores. Si un algoritmo que calcula a
una funcin parcial devolviera un resultado para los valores no definidos de la funcin, entonces
no calculara a esa funcin sino a otra. Del mismo modo, un algoritmo que calcula a una funcin
total siempre devuelve un resultado para todo valor, y que al igual que las funciones parciales,
ste debe coincidir exactamente con el valor que devuelve la funcin a la que calcula; y
reiterativamente, en caso contrario, no calculara a esa funcin sino a otra. As, todo algoritmo
(secuencia de pasos finita, ordenada y definida) calcula a una funcin definida sobre los nmeros
naturales, sea cul sea sta su naturaleza.
Toda funcin para la cual exista un algoritmo que lo calcule se denomina funcin computable
(parcialmente computable o totalmente computable depende del grado de definicin de la funcin
en cuestin), pero existen funciones que no pueden ser calculadas que son denominadas funciones
no computables.

Anlisis de algoritmos
Artculo principal: Anlisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo)
que consume el algoritmo. El anlisis de algoritmos se ha desarrollado para obtener valores que
de alguna forma indiquen (o especifiquen) la evolucin del gasto de tiempo y memoria en funcin
del tamao de los valores de entrada.
El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la
mayora de los casos, su estudio es completamente abstracto sin usar ningn tipo de lenguaje de
programacin ni cualquier otra implementacin; por eso, en ese sentido, comparte las
caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se centra en los
principios bsicos del algoritmo, no en los de la implementacin particular. Una forma de plasmar

(o algunas veces "codificar") un algoritmo es escribirlo en pseudocdigo o utilizar un lenguaje


muy simple tal como Lxico, cuyos cdigos pueden estar en el idioma del programador.
Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en
algn momento, mientras que otros consideran procedimientos que podran ejecutarse
eternamente sin pararse, suponiendo el caso en el que existiera algn dispositivo fsico que fuera
capaz de funcionar eternamente. En este ltimo caso, la finalizacin con xito del algoritmo no se
podra definir como la terminacin de ste con una salida satisfactoria, sino que el xito estara
definido en funcin de las secuencias de salidas dadas durante un periodo de vida de la ejecucin
del algoritmo. Por ejemplo, un algoritmo que verifica que hay ms ceros que unos en una
secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor til. Si se
implementa correctamente, el valor devuelto por el algoritmo ser vlido, hasta que evale el
siguiente dgito binario. De esta forma, mientras evala la siguiente secuencia podrn leerse dos
tipos de seales: una seal positiva (en el caso de que el nmero de ceros sea mayor que el de
unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la
devolucin de valores exclusivamente positivos si hay ms ceros que unos en la secuencia y, en
cualquier otro caso, devolver una mezcla de seales positivas y negativas.

Ejemplo de algoritmo
El problema consiste en encontrar el mximo de un conjunto de nmeros. Para un ejemplo ms
complejo vase Algoritmo de Euclides.

Descripcin de alto nivel


Dado un conjunto finito C de nmeros, se tiene el problema de encontrar el nmero ms grande.
Sin prdida de generalidad se puede asumir que dicho conjunto no es vaco y que sus elementos
estn numerados como
.
Es decir, dado un conjunto
elemento x que pertenece al conjunto C.

se pide encontrar m tal que

para todo

Para encontrar el elemento mximo, se asume que el primer elemento (c0) es el mximo; luego, se
recorre el conjunto y se compara cada valor con el valor del mximo nmero encontrado hasta ese
momento. En el caso que un elemento sea mayor que el mximo, se asigna su valor al mximo.
Cuando se termina de recorrer la lista, el mximo nmero que se ha encontrado es el mximo de
todo el conjunto.

Descripcin formal
El algoritmo escrito de una manera ms formal, esto es, en pseudocdigo tendra el siguiente
aspecto:
Algoritmo Encontrar el mximo de un conjunto
funcin
//C es un conjunto no vaco de nmeros//
// | C | es el nmero de elementos de C//

para
si

hasta hacer
entonces

devolver

Sobre la notacin:

" " representa la asignacin entre dos objetos. Por ejemplo,


significa que el
objeto m cambia su valor por el de x
"devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el mximo
de C)

Implementacin
En lenguaje C++:
int max(int c[], int n){
int i, m = c[0];
for (i = 1; i < n; i++)
if (c[i] > m) m = c[i];
return m;
}

En lenguaje C#:
static int max(int[] c){
int result=c[0];
for(int i=1;i<c.Length;i++){
if(c[i]>result){
result=c[i];
}
}
return result;
}

En lenguaje Java:
public int max( int c[] ) {
int n = c.length, m = c[0];
for( int i = 1 ; i < n ; i++ )
if( c[i] > m ) m = c[i];
return m;
}

En lenguaje Visual Basic 8 (2005):


Public Function max(C As Integer()) As Integer
Dim n As Integer = C.GetLength(0)
Dim m As Integer = C(0)
For i As Integer = 1 To n
If C(i) > m Then
m = C(i)
End If
Next
Return m
End Function

En lenguaje Delphi:
function Max(const ListaNumeros: array of Integer): Integer;
var
vTemp, i: Integer;
begin
vTemp:= 0;
for i:= 1 to High(ListaNumeros) do
if ListaNumeros[i] > vTemp then
vTemp:= ListaNumeros[i];
Result:= vTemp;
end;

En lenguaje Ada
type T_Conjunto is array <> of Integer;
function Maximo
(Conjunto : T_Conjunto) return Integer
is
Temporal : Integer := Conjunto (1);
begin
for I in 2 .. Conjunto'Last loop
if Conjunto (I) > Temporal then
Temporal := Conjunto (I);
end if;
end loop;
return Temporal;
end Maximo;

En lenguaje Python
def max(c):
n=len(c)
m=c[0]
for i in range(1,n):
if c[i]>m: m=c[i]
return m

Anlisis
El algoritmo anterior tiene un orden de eficiencia en tiempo de O(n), en la notacin O mayscula,
siendo n el tamao de la entrada, ms concretamente, en este caso, el nmero de elementos de C.
Adems, como el algoritmo necesita recordar un nico valor (el mximo) requiere un espacio
adicional de O(1) (hay que tener en cuenta que el tamao de las entradas no se considera como
memoria usada por el algoritmo).

Tipos de algoritmos segn su funcin

Algoritmo de ordenamiento
Algoritmo de bsqueda

Tcnicas de diseo de algoritmos

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto


de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es
ptima.
Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que
se puedan ejecutar de forma simultnea en varios procesadores.
Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en
funcin de valores pseudoaleatorios
Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del
algoritmo tiene nicamente un paso sucesor y otro ancesor.
Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a
cada paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente
posteriores, adems todas las ramas se ejecutan simultneamente.
Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin
de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo.
Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose
en un conocimiento anterior (a veces llamado experiencia) de los mismos.
Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional
aumentando el coste espacial.
Ramificacin y acotacin: se basa en la construccin de las soluciones al problema
mediante un rbol implcito que se recorre de forma controlada encontrando las mejores
soluciones.
Vuelta Atrs (Backtracking): se construye el espacio de soluciones del problema en un
rbol que se examina completamente, almacenando las soluciones menos costosas.

Diagrama de flujo
Saltar a navegacin, bsqueda

Diagrama de flujo sencillo con los pasos a seguir si una lmpara no funciona.
Un diagrama de flujo es una forma de representar grficamente los detalles algortmicos de un
proceso multifactorial. Se utiliza principalmente en programacin, economa y procesos
industriales, pasando tambin a partir de estas disciplinas a formar parte fundamental de otras,
como la psicologa cognitiva. Estos diagramas utilizan una serie de smbolos con significados
especiales y son la representacin grfica de los pasos de un proceso. En computacin, son
modelos tecnolgicos utilizados para comprender los rudimentos de la programacin lineal.

Definicin
Es la representacin grfica de flujo de un algoritmo o de secuencia rutinarias. Se basan en la
utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas
de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia
de la operacin.

Smbolos utilizados
Los smbolos que se utilizan para diseo se someten a una normalizacin, es decir, se hicieron
smbolos casi universales, ya que, en un principio cada usuario podra tener sus propios smbolos
para representar sus procesos en forma de Diagrama de flujo. Esto trajo como consecuencia que
slo aquel que conoca sus smbolos, los poda interpretar. La simbologa utilizada para la
elaboracin de diagramas de flujo es variable y debe ajustarse a las normas preestablecidas
universalmente para dichos smbolos o datos.

Caractersticas que debe cumplir un diagrama de flujo

En los diagramas de flujo se presuponen los siguientes aspectos:

Existe siempre un camino que permite llegar a una solucin (finalizacin del algoritmo).
Existe un nico inicio del proceso.
Existe un nico punto de fin para el proceso de flujo (salvo del rombo que indica una
comparacin con dos caminos posibles).

Desarrollo del Diagrama de Flujo


Las siguientes son acciones previas a la realizacin del diagrama de flujo:

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar
presentes el dueo o responsable del proceso, los dueos o responsables del proceso
anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.
Definir qu se espera obtener del diagrama de flujo.
Identificar quin lo emplear y cmo.
Establecer el nivel de detalle requerido.
Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son :

Establecer el alcance del proceso a describir. De esta manera quedar fijado el comienzo y
el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final
la entrada al proceso siguiente.
Identificar y listar las principales actividades/subprocesos que estn incluidos en el
proceso a describir y su orden cronolgico.
Si el nivel de detalle definido incluye actividades menores, listarlas tambin.
Identificar y listar los puntos de decisin.
Construir el diagrama respetando la secuencia cronolgica y asignando los
correspondientes smbolos.
Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el
proceso elegido.

Recomendaciones
A su vez, es importante que al construir diagramas de flujo, se observen las siguientes
recomendaciones:

Evitar sumideros infinitos, burbujas que tienen entradas pero no salidas.


Evitar las burbujas de generacin espontnea, que tienen salidas sin tener entradas, porque
son sumamente sospechosas y generalmente incorrectas.

Ventajas de los diagrama de flujo

Favorecen la comprensin del proceso a travs de mostrarlo como un dibujo. El cerebro


humano reconoce fcilmente los dibujos. Un buen diagrama de flujo reemplaza varias
pginas de texto.
Permiten identificar los problemas y las oportunidades de mejora del proceso. Se
identifican los pasos redundantes, los flujos de los re-procesos , los conflictos de
autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisin.

Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan,


facilitando a los empleados el anlisis de las mismas.
Son una excelente herramienta para capacitar a los nuevos empleados y tambin a los que
desarrollan la tarea, cuando se realizan mejoras en el proceso.

Tipos de diagramas de flujos

Formato vertical: En l el flujo o la secuencia de las operaciones, va de arriba hacia abajo.


Es una lista ordenada de las operaciones de un proceso con toda la informacin que se
considere necesaria, segn su propsito.

Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda a


derecha.

Formato panormico: El proceso entero est representado en una sola carta y puede
apreciarse de una sola mirada mucho ms rpido que leyendo el texto, lo que facilita su
comprensin, aun para personas no familiarizadas. Registra no solo en lnea vertical, sino
tambin horizontal, distintas acciones simultneas y la participacin de ms de un puesto o
departamento que el formato vertical no registra.

Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre el


plano arquitectnico del rea de trabajo. El primero de los flujogramas es eminentemente
descriptivo, mientras que los utilizados son fundamentalmente representativos.

Pseudocdigo
Un pseudocdigo (falso lenguaje), es una serie de palabras lxicas y gramaticales referidos a los
lenguajes de programacin, pero sin llegar a la rigidez de la sintaxis de estos ni a la fluidez del
lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier
lenguaje de programacin, con la misma validez semntica, normalmente se utiliza en las fases de
anlisis o diseo de Software, o en el estudio de un algoritmo. Forma parte de las distintas
herramientas de la ingeniera de software. Es, netamente, lenguaje de tipo informtico.
Para probar el algoritmo se utiliza un Pseudo intrprete el cual se encuentra disponible para las
plataformas GNU/Linux y Windows, es de cdigo libre y est escrito en C++. El mismo se ejecuta
en un Terminal.
El pseudocdigo describe un algoritmo utilizando una mezcla de frases en lenguaje comn,
instrucciones de programacin y palabras clave que definen las estructuras bsicas. Su objetivo es
permitir que el programador se centre en los aspectos lgicos de la solucin a un problema.
No siendo el pseudocdigo un lenguaje formal, varan de un programador a otro, es decir, no hay
una estructura semntica ni arquitectura estndar. Es una herramienta gil para el estudio y diseo
de aplicaciones, veamos un ejemplo, que podramos definir como: lenguaje imperativo, de tercera
generacin, segn el mtodo de programacin estructurada.
Pseudocdigo = Pseudo (Supuesto) + Cdigo (Instruccin)

Definicin de datos del Pseudocdigo


La definicin de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea
formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y
naturalmente cuando empleemos el pseudocdigo para definir estructuras de datos, esta parte la
desarrollaremos adecuadamente.

Funciones y operaciones
Como se haba mencionado antes, cada autor usa su propio pseudocdigo con sus respectivas
convenciones. Por ejemplo, considere la instruccin "Reemplace el valor de la variable x por el
valor de la variable y"; algunas de las posibles sintaxis para indicar lo anterior podran ser:

asigne a el valor de

Las operaciones aritmticas se representan de la forma usual en matemticas.

y las operaciones complejas se representan del mismo modo:

Definicin de estructuras de control


Se consideran tres estructuras de control para desarrollar los procedimientos:

Secuencial
Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el nmero de
rengln. Es decir que las instrucciones se ejecutan de arriba hacia abajo. Las instrucciones se
ejecutan dependiendo de la condicion dada dentro del algoritmo.

Selectiva
La instruccin selectiva determina si una determinada instruccin se ejecuta o no, segn el
cumplimiento de una condicin P.

Diagrama de flujo que muestra el funcionamiento de la instruccin condicional

La condicin P es una variable booleana o una funcin reducible a booleana (lgica,


Verdadero/Falso). Si esta condicin es cierta se ejecuta Instrucciones1, si no es as, sta no se
ejecuta.

Selectiva doble (alternativa)


La instruccin selectiva realiza una instruccin de dos posibles, segn el cumplimiento de una
condicin P.

Diagrama de flujo que muestra el funcionamiento de la instruccin condicional

La condicin P es una variable booleana o una funcin reducible a booleana (lgica,


Verdadero/Falso). Si esta condicin es cierta se ejecuta Instrucciones1, si no es as, entonces se
ejecuta Instrucciones2.

Selectiva mltiple
Tambin es comn el uso de una seleccin mltiple que equivaldra a anidar varias funciones de
seleccin.

En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de
ellas se cumple las dems tienen que ser falsas necesariamente, hay un caso si no que ser cierto
cuando las dems condiciones sean falsas.

En esta estructura si Condicin1 es cierta, entonces se ejecuta slo Instrucciones1. En general, si


Condicini es verdadera, entonces slo se ejecuta Instruccionesi

Selectiva mltiple-Casos
Una construccin similar a la anterior (equivalente en algunos casos) es la que se muestra a
continuacin.

En este caso hay un Indicador es una variable o una funcin cuyo valor es comparado en cada
caso con los valores "Valori", si en algn caso coinciden ambos valores, entonces se ejecutarn las
Instruccionesi correspondientes. La seccin en otro caso es anloga a la seccin si no del ejemplo
anterior.

Iterativa
Las instrucciones iterativas abren la posibilidad de realizar una secuencia de instrucciones ms de
una vez.

Bucle mientras
El bucle se repite mientras la condicin P sea cierta, si al llegar por primera vez al bucle mientras
la condicin es falsa, el cuerpo del bucle no se ejecuta ninguna vez.

Diagrama de flujo que muestra el funcionamiento de la instruccin mientras

Bucle repetir
Existen otras variantes que se derivan a partir de la anterior. La estructura de control repetir se
utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se
cumpla la condicin P:

La estructura anterior equivaldra a escribir:

Bucle para
Una estructura de control muy comn es el ciclo para, la cual se usa cuando se desea iterar un
numero conocido de veces, empleando como ndice una variable que se incrementa:

la cual se define como:

Bucle para cada


Por ltimo, tambin es comn usar la estructura de control para cada. Esta sentencia se usa
cuando se tiene una lista o un conjunto L y se quiere iterar por cada uno de sus elementos:

Si asumimos que los elementos de L son

, entonces esta sentencia equivaldra a:

Sin embargo, en la prctica existen mejores formas de implementar esta instruccin dependiendo
del problema.
Es importante recalcar que el pseudocdigo no es un lenguaje estandarizado. Eso significa que
diferentes autores podran dar otras estructuras de control o bien usar estas mismas estructuras,
pero con una notacin diferente. Sin embargo, las funciones matemticas y lgicas toman el
significado usual que tienen en matemtica y lgica, con las mismas expresiones.

El anidamiento
Cualquier instruccin puede ser sustituida por una estructura de control. El siguiente ejemplo
muestra un pseudocdigo de un mtodo de ordenamiento denominado Ordenamiento de burbuja
en el cual aparecen varias estructuras anidadas. Este algoritmo ordena una lista L.

Podemos ver los distintos niveles de anidamiento.

Desarrollo de algoritmos
Con este pseudocdigo se puede desarrollar cualquier algoritmo que:

Tenga un nico punto de inicio.


Tenga un nmero finito de posibles puntos de trmino.
Haya un nmero finito de caminos, entre el punto de inicio y los posibles puntos de
trmino.

Funciones y procedimientos
Muchas personas prefieren distinguir entre funciones y procedimientos. Una funcin, al igual que
una funcin matemtica, recibe uno o varios valores de entrada y regresa una salida mientras que
un procedimiento recibe una entrada y no genera ninguna salida aunque en algn caso podra
devolver resultados a travs de sus parmetros de entrada si estos se han declarado por referencia
(ver formas de pasar argumentos a una funcin o procedimiento).
En ambos casos es necesario dejar en claro cules son las entradas para el algoritmo, esto se hace
comnmente colocando estos valores entre parntesis al principio o bien declarndolo
explcitamente con un enunciado. En el caso de las funciones, es necesario colocar una palabra
como regresar o devolver para indicar cul es la salida generada por el algoritmo. Por ejemplo, el
pseudocdigo de una funcin que permite calcular an (un nmero a elevado a potencia n).

Ventajas de utilizar un Pseudocdigo a un diagrama de flujo


1.
2.
3.
4.

Ocupan mucho menos espacio en el desarrollo del problema.


Permite representar de forma fcil operaciones repetitivas complejas.
Es ms sencilla la tarea de pasar de pseudocdigo a un lenguaje de programacin formal.
Si se siguen las reglas de identacin se puede observar claramente los niveles en la
estructura del programa.
5. En los procesos de aprendizaje de los alumnos de programacin, estos estn ms cerca del
paso siguiente (codificacin en un lenguaje determinado, que los que se inician en esto con
la modalidad Diagramas de Flujo).
6. Mejora la claridad de la solucin de un problema.