algoritmo

23
Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa Al Juarismi 1 ) es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. 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 cuestión o inclusive en las instrucciones que recibe un trabajador por parte de su patrón. También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones. Saltar a navegación, búsqueda Los diagramas de flujo sirven para representar algoritmos de manera gráfica. Medios de expresión de un algoritmo Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en

Upload: alejandro-huarachi-tito

Post on 27-Sep-2015

216 views

Category:

Documents


0 download

DESCRIPTION

INFORMATICA

TRANSCRIPT

Algoritmo

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 Juarismi[1] ) 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 algoritmoLos 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 xArtculo principal: Diagrama de flujoLos 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.

PseudocdigoArtculo principal: PseudocdigoPseudocdigo 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 TuringArtculo principal: Mquina de TuringLa 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.

ImplementacinMuchos 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 funcionesArtculo principal: Teora de la computabilidadFormalmente, 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 algoritmosArtculo principal: Anlisis de algoritmosComo 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 algoritmoEl problema consiste en encontrar el mximo de un conjunto de nmeros. Para un ejemplo ms complejo vase Algoritmo de Euclides.

Descripcin de alto nivelDado 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 se pide encontrar m tal que para todo elemento x que pertenece al conjunto C.

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 formalEl 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 hasta hacer

si 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)

ImplementacinEn 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;iresult){ 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 FunctionEn 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 Pythondef max(c):

n=len(c) m=c[0] for i in range(1,n):

if c[i]>m: m=c[i] return m

AnlisisEl 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.

DefinicinEs 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 utilizadosLos 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 flujoEn 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 FlujoLas 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.

RecomendacionesA 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 PseudocdigoLa 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 operacionesComo 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 controlSe consideran tres estructuras de control para desarrollar los procedimientos:

SecuencialLas 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.

SelectivaLa 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 mltipleTambin 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 InstruccionesiSelectiva mltiple-CasosUna 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.

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

Bucle mientrasEl 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 repetirExisten 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 paraUna 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 anidamientoCualquier 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 procedimientosMuchas 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. Ocupan mucho menos espacio en el desarrollo del problema.

2. Permite representar de forma fcil operaciones repetitivas complejas.

3. Es ms sencilla la tarea de pasar de pseudocdigo a un lenguaje de programacin formal.

4. 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.