ALGORITMO

Cuestión de logica.

  • Bienvenidos

    Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. Por tanto, un problema no deberá considerarse inmediatamente en términos de instrucciones de un lenguaje, sino de elementos naturales del problema mismo, abstraídos de alguna manera.

    [Niklaus Wirth, Creador del Lenguaje Pascal]

ALGORITMO

Posted by Yefferson On 6:26 p. m. 0 comentarios



¿Que es un algoritmo?

Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra "algoritmo" deriva del nombre latinizado del gran matemático árabe Mohamed Ibn Moussa Al Kow Rizmi.

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 incluso en las instrucciones que recibe un trabajador por parte de su patrón.

Cuatro propiedades definen los algoritmos tales son:

  • Precisión. “Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso”.
  • Entrada. “Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinamicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos”.
  • Salida. “Un algoritmo tiene una o más salidas: cantidades las cuales tienen una relación específica con las entradas”.
  • Eficacia. “También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel”.
Entendiendo esto ya estamos un paso mas cerca de ser parte de este proceso.


Diferencia entre el lenguaje algoritmico y el informatico

El lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denomina algoritmo.

El lenguaje informático es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por el ordenador o computadora. Este tipo de lenguaje es más cercano a la máquina que al ser humano y podemos distinguir distintos tipos dependiendo de la proximidad a la maquina. Se denomina lenguaje de alto nivel aquel que es más cercano a la comprensión humana y lenguaje de bajo nivel a aquellos que son más comprensibles por la máquina. En concreto, nosotros vamos a estudiar un lenguaje en la frontera de uno de bajo nivel. Es por ello que el 'C' es tan potente y rápido, pues las funciones principales representan las funciones más básicas del ordenador.


ALGORITMOS Y PSEUDOCODIGOS

Posted by Yefferson On 12:15 p. m. 0 comentarios





ALGORITMOS COMPLEJOS

Posted by Yefferson On 7:06 p. m. 0 comentarios

Algoritmos Complejos


Cuando solucionamos un problema mediante la construcción de un algoritmo, normalmente podemos atacar el problema desde distintos puntos de vista, aplicando distintas estrategias, y por tanto, llegando a soluciones algorítmicas distintas.

Desde el punto de vista computacional, es necesario disponer de alguna forma de comparar una solución algorítmica con otra, para conocer cómo se comportarán cuando las implementemos, especialmente al atacar problemas "grandes".

La complejidad algorítmica es una métrica teórica que se aplica a los algoritmos en este sentido. Es un concepto que fundamental para todos los programadores, pero sin embargo, a menudo se desconoce por completo. En muchos cursos y libros se elude el tema porque a menudo se considera farragoso.

Pero eso no es necesariamente cierto. La complejidad de un algoritmo es un concepto complicado pero sólo desde un punto de vista estrictamente formal. La obtención y el estudio de la complejidad de un algoritmo requiere ciertamente de unas cuantas destrezas matemáticas que no todos tenemos y la aplicación de una serie de técnicas bastante particulares. Sin embargo, no es un concepto difícil de entender.

Por hacer una similitud acerca de lo complicado que es este concepto, la dificultad de la complejidad es -salvando las distancias- como la de la predicción meteorológica: todos intuimos lo complicado que es hacer una predicción meteorológica, miles de datos, fórmulas, modelos y cálculos... sin embargo, cuando un meteorólogo nos explica con algo de gracia la predicción del tiempo, la podemos entender bastante bien. Ya estamos muy acostumbrados a cosas como borrasca, anticiclón, marejadilla, cota de nieve... Lo mismo pasa en cierto modo con la complejidad: enfrentarnos a un algoritmo para hacer un estudio de su complejidad requiere de un gran esfuerzo. Sin embargo, cuando alguien estudia un algoritmo y nos habla de su complejidad, entender el concepto no es tan complicado.

Entender la complejidad es importante porque a la hora de resolver muchos problemas, utilizamos algoritmos ya diseñados. Saber valorar su valor de complejidad puede ayudarnos mucho a conocer cómo se va a comportar el algoritmo e incluso a escoger uno u otro.

Así que en este artículo, nos vamos a dedicar a intentar exponer qué es la complejidad de un algoritmo desde un punto de vista sencillo y sin pretensiones, intentado distinguir qué impacto tiene el que un algoritmo tenga una u otra complejidad. Y, como de costumbre, adoptamos grandes simplificaciones, con el único ánimo de obtener una visión general de los conceptos. En cuanto a cómo obtener la complejidad de un algoritmo, no nos vamos a meter mucho: los formalismos necesarios quedan totalmente fuera del alcance de éste breve artículo divulgativo.

SUBALGORITMOS (SUBPROGRAMAS)

Posted by Yefferson On 12:41 p. m. 0 comentarios

Subalgoritmos (Subprogramas)


La resolucion de los problemas complejos se facilita considerablemente si se dividen en problemas mas pequeños (subproblemas). La solucion de estos subproblemas se realiza con sub algoritmos. El uso de subalgoritmos permite al programador desarrollar programas de problemas complejos utilizando un metodo descente introducido en los capitulos anteriores. Los subalgoritmos pueden ser de dos tipos:


  • Funciones


  • Procedimientos o Subrutinas



Los subalgortimos son unidades de proramas o modulos que estan diseñados para ejecutar alguna tarea especifica.


Estas funciones y procedimientos se escriben solamente de una vez, pero pueden ser referenciados en diferentes puntos de un programa, de modo que se pueda evitar la duplicacion innecesaria del còdigo

Las unidades de programa en estilo de programacion modular son independientes; El programador puede escribir cada modulo y verificarlo sin preocuparse de los detalles de otros mòdulos. Esto facilita considerablemente la localizacion de un error cuando se produce. Los programadores mas desarrollados de este modo son normalmente tàmbien mas faciles de comprender, ya que la estructura de cada unidad de programa puede ser estudiade independientemente.



  • Procedimiento



Teniendo en cuenta lo anterior, se definiría como un módulo. Concretamente, como un módulo que no retorna ningún valor, ejecuta lo que tenga que ejecutar y devuelve el control al programa que lo llamó.Supongamos que queremos ordenar tres valores numéricos.En ese caso, el algoritmo sería:

Algoritmo ordenar
Var a,b,c,
aux : enteroComienzoLeer a, b,
csi a > baux= aa=bb= aux Tres veces se repite el intercambio, con diferentes variables.

Obsérvese que las líneas de código son similares, por lo que se podría escribir un fragmento de código aparte, y utilizarlo con los PARAMETROS adecuados en cada casofinsisi b>caux= cc=bb= auxsi a > baux= aa=bb= auxfinsifinsimostrar a,b,cfinAmerita, entonces, utilizar un procedimiento «intercambio » que me permita intercambiar dos variables cada vez que lo necesite y sin necesidad de reescribir el código cada vez.



Search

Sponsors