INTRODUCCIÓN A LA ALGORITMIA

Page 1

ALGORITMIA HISTORIA DE LOS ALGORITMOS La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, AlKhawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX. Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo. Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador algorítmico. Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó. La idea de resolver un problema o de disponer de un algoritmo es bastante antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. Hoy en dia gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba), Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una pequeña parte es computabl e, luego que el objetivo que perseguia David Hilbert no era computable, es lo que se ha denominado como la computabilidad de los algoritmos. Definicion: Algoritmo Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares:          

Conjunto ordenado y finito de pasos que permite hallar la solución de un problema. Una secuencia de pasos que conducen a la realización de una tarea. Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento. Conjunto de sentencias / instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa. Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y preciso. Toda receta, proceso, rutina, método, procedimiento, técnica, formula que resuelven un determinado problema. Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada. Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas. Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos. Un conjunto de símbolos y procedimientos usados en la realización de un cálculo.

Las definiciones más completas o formales:  

Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo mas finito. [Donald E. Knuth, 1968] Descripción de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomina lexico [Pierre Scholl, 1988]

1


ALGORITMIA 

Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004]

Características: Las características fundamentales que debe cumplir todo algoritmo son: 

Ser definido: es decir, si se sigue la ejecución dos veces del mismo se debe obtener la misma secuencia lógica. El algoritmo debe definirse de forma precisa para cada paso, es decir, hay que evitar toda ambigüedad al definir cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemático o de programación para un computador.

Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos.  Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.  Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo.  Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución.  Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.  Diseño del Algoritmo  Prueba de escritorio o Depuración Se denomina prueba de escritorio a la comprobación que se hace de un algoritmo para saber si está bien hecho. Esta prueba consiste en tomar datos específicos como entrada y seguir la secuencia indicada en el algoritmo hasta obtener un resultado, el análisis de estos resultados indicará si el algoritmo está correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes. La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina citado anteriormente se tendrá: Entrada: ingrediente y utensilios empleados. Proceso: elaboración de la receta en la cocina. Salida: terminación del plato (por ejemplo, cordero). Ejemplo de Algoritmo: Un cliente ejecuta un pedido a una fábrica. Esta examina en su banco de datos la ficha del cliente; si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario rechazara el pedido. Redactar el algoritmo correspondiente. Los pasos del algoritmo son: 1. 2. 3. 4. 5.

inicio leer el pedido examinar la ficha del cliente si el cliente es solvente aceptar pedido; en caso contrario, rechazar pedido fin

2


ALGORITMIA CLASIFICACIÓN DE LOS ALGORITMOS: 

Directos: Son aquellos que permiten encontrar la solución al problema de manera instántanea o directa, en un número determinado de pasos.

Ejemplo: 23 = 2*2*2 = 8 Indirecto:  

Se ignora el número de pasos. Son aquellos donde se desconocen el número de pasos para lograr la solución de un problema.

Estos a su vez, se clasifican en: Finito: El número de pasos a realizar son conocidos así como la factibilidad de solución al problema planteado, o sea, que va a ver una respuesta al proceso. Ejemplo: Medir distancia AB Es factible que algún día pueda saber la distancia entre la Sede antigua del IUTEPAL (Av. Constitución) y la Sede Nueva del IUTEPAL (Urb. Caña de Azúcar). Infinito: Se desconoce el número de pasos a realizar, así como la imposibilidad de encontrar la solución al problema planteado. Cuando realmente es imposible lograr la solución, por más vueltas que le demos al problema. Ejemplo: 20 ; +" ; -2 3 -" DIAGRAMAS DE FLUJO: Los diagramas de flujo son esquemas que representan gráficamente un algoritmo por medio de los pasos de un proceso, que se realizan para entender mejor al mismo y son utilizados en programación, economía y procesos industriales. Utilizan una serie de símbolos con significados especiales. Un diagrama de flujo u organigrama es una representación diagramático que ilustra la secuencia de las operaciones que se realizan para conseguir la solución de un problema y son usados normalmente para seguir la secuencia lógicas de las acciones en el diseño de problemas de computadoras y se dibujan generalmente antes de comenzar a programar el código frente a la computadora y una que se dibuja el diagrama de flujo, llega hacer fácil escribir el programa en cualquier idioma de alto nivel. 1.- Lógica dibujada. 2.- Es la representación gráfica de la solución a un problema utilizando símbolos predefinidos para su interpretación. 3.- Es la representación gráfica del algoritmo. 4.- A nivel de programación es la representación gráfica de lo que se desea que la computadora realice. 5.- Son representaciones graficas de un algoritmo el cual muestra los pasos o procesos a seguir para alcanzar la solución de un problema. Es llamado diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas 3


ALGORITMIA para indicar la secuencia de una operación y son también llamados flujogramas. Utilizan diversos símbolos para representar operaciones específicas. Importancia de los Diagramas de Flujo Es importante ya que ayuda a designar cualquier representación gráfica de un procedimiento o parte de ese, como su nombre lo indica representa el flujo de información de un proceso. Tipos de Diagramas: Diagrama de Programa: Representa gráficamente un método propuesto para la solución de un problema determinado. Diagrama de Sistema: Representa la integración; interacción lógicas de los elementos dentro de un sistema propuesto. Diagrama de Procedimiento: Representa gráficamente una operación o flujo de datos dentro de un sistema. Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona. Un diagrama de flujo es la forma más tradicional de especificar los detalles algorítmicos de un proceso. Se utiliza principalmente en programación, economía y procesos industriales; estos diagramas utilizan una serie de símbolos con significados especiales. Son la representación gráfica de los pasos de un proceso, que se realiza para entenderlo mejor. Son modelos tecnológicos utilizados para comprender los rudimentos de la programación lineal. Definición Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación. Símbolos utilizados Para poder hacer comprensibles los diagramas a todas las personas, los símbolos se someten a una normalización; es decir, se hicieron símbolos casi universales, ya que, en un principio cada usuario podría tener sus propios símbolos para representar sus procesos en forma de Diagrama de flujo. Esto trajo como consecuencia que sólo aquel que conocía sus símbolos, los podía interpretar. La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente. En teoría, no es necesario usar un tipo especial de símbolos para crear un diagrama de flujo, pero existen algunos ampliamente utilizados por lo que es adecuado conocerlos y utilizarlos, ampliando así las posibilidades de crear un diagrama más claro y comprensible para crear un proceso lógico y con opciones múltiples adecuadas. Se utilizan los símbolos indicados a continuación, estandarizados según la norma ISO 5807: 

Flecha. Indica el sentido y trayectoria del proceso de información o tarea.

Rectángulo. Se usa para representar un evento o proceso determinado. Éste es controlado dentro del diagrama de flujo en que se encuentra. Es el símbolo más comúnmente utilizado. Se usa para representar un evento que ocurre de forma automática y del cual generalmente se sigue una secuencia determinada.

Rectángulo redondeado: Se usa para representar un evento que ocurre de forma automática del cuál generalmente se sigue una secuencia determinada.

4


ALGORITMIA 

Rombo. Se utiliza para representar una condición. Normalmente el flujo de información entra por arriba y sale por un lado si la condición se cumple o sale por el lado opuesto si la condición no se cumple. El rombo además especifica que hay una bifurcación.

Círculo. Representa un punto de conexión entre procesos. Se utiliza cuando es necesario dividir un diagrama de flujo en varias partes, por ejemplo por razones de espacio o simplicidad. Una referencia debe darse dentro para distinguirlo de otros. La mayoría de las veces se utilizan números en los mismos.

Características 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 solución (finalización 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 comparación con dos caminos posibles).

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 generación espontánea, que tienen salidas sin tener entradas, porque son sumamente sospechosas y generalmente incorrectas. Tener cuidado con los flujos y procesos no etiquetados. Esto suele ser un indicio de falta de esmero, pero puede esconder un error aún más grave: a veces el analista no etiqueta un flujo o un proceso porque simplemente no se le ocurre algún nombre razonable.

Qué son las constantes, las variables y las expresiones en la programación así como su clasificación. CONSTANTES Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. Ejemplo: pi = 3.1416 VARIABLE Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. 5


ALGORITMIA Ejemplo: area = pi * radio ^ 2 Las variables son: el radio, el área y la constate es pi Clasificación de las Variables Por su contenido 

 

Variables Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo: iva = 0.15 pi = 3.1416 costo = 2500 Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos. Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo: letra = ’a’ apellido = ’lopez’ direccion = ’Av. Libertad #190’

Por su uso  Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa. Ejemplo: Suma = a + b /c  

Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno. Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente.

EXPRESIONES Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: a + (b + 3) / c Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las expresiones en:   

Aritméticas Relacionales Lógicas

ACUMULADOR: Es un campo de memoria, un valor que se incrementa en forma no definida esto por la suma de otro valor a dicho campo.

6


ALGORITMIA Es un campo en memoria, pero que su incremento no es de 1, sino que viene alterándose por la suma de un valor a dicho campo. Ejemplo= TSDO= 0 TSDO= TSDO + SDO 0 + 14000 14000 + 20000 34000 + 2000 36000 Todos los totales implica Acumulador, posiblemente se puede utilizar sumatoria ". DECISIÓN: Es una evaluación o determinación que va arrojar un valor verdadero o falso. Ejemplo: Determinar cuál de dos números es el mayor en forma de Algoritmo. 1.- Inicio 2.- Declarar: N1= 0; N2= 0 3.- Primer número: N1 4.-Segundo número: N2 5.-Preguntar: SI N1 > N2 *Decisión* 5.1.- Entonces El Nº mayor es: N1 5.2.- De lo contrario mostrar 5.3.- EL Nº mayor es:N2 6.- Fin OPERADORES RELACIONALES: > = Mayor que (Q´) < = Menor que (Q´) " = Mayor o igual (Q´) " = Menor o igual (Q´) < > = Diferente ó desigual = Igual OPERADORES LÓGICOS: AND= NOT= OR= OPERADORES ARITMETICOS: + = Suma - = Resta * = Multiplicación / = División ^ = Exponente o potencia Variables Lógicas: Existe una clase de variables que solamente pueden tomar dos valores. Para estas variables sólo existen dos estados posibles; a cada uno de estos estados se le asigna un valor. Se acostumbra representar a estas variables con letras mayúsculas: U, V, W, X, Y, Z. Uno De los estados se representa con la letra mayúscula, y el otro con la misma letra con una barra encima: U, V, W, X, Y, Z. 7


ALGORITMIA Si bien se usan los valores cierto y falso para los dos estados de este tipo de variables, lo más común es el uso de los dígitos del sistema binario, 1 y 0, para distinguir los dos estados posibles.

Abierto Abierta X0X Abierto Abierta X1X OPERACIONES LÓGICAS: Las operaciones que se encuentran definidas sobre las variables lógicas son las que siguen. SUMA LÓGICA (Or) La suma lógica de las variables X, Y, Z se indica X+Y+Z Usándose el operador + para indicar la operación. También se usa con mucha frecuencia el operador ó (la letra o con acento), y con mayor frecuencia aún se emplea el término inglés (or). El resultado de la suma lógica es 1 cuando al menos uno de los sumandos es 1; en caso contrario el resultado es cero. Ejemplo: Sean las variables lógicas X, Y, Z, que en determinado momento tienen los valores siguientes: X = 1; Y = 0; Z = 1. La suma lógica será: 1 + 0 +1 = 1 o1ó0ó1=1 o 1 or 0 or 1 =1 Ejemplo: En algunos recintos se puede encender una luz usando interruptores localizados en diferentes sitios. Por ejemplo, en la figura 3.2., se presenta una sala que tiene dos puertas de entrada. Al lado de cada puerta existe un interruptor, que permite apagar o encender la luz. Si las variables X, e Y indican el estado de esos interruptores, adoptándose 1 cuando están en On y 0 cuando en Off, la condición para que se encuentre la luz encendida es que, al menos uno de ellos, se encuentre en On. Es decir, que X+Y Dé como resultado 1. Y X PRODUCTO LÓGICO (And) El producto lógico de varias variables X, Y, Z se indica así X*Y*Z 8


ALGORITMIA Usándose el operador * para indicar la operación. También se usa con mucha frecuencia el operador y, o su versión inglesa (And). El resultado de un producto lógico vale 1 sólo cuando todas las variables valen 1. Si alguna de las variables tiene como valor 0, el problema valdrá o. Ejemplo: Considérense las variables U, V, W cuyos valores son: U = 0, V = 1 , W = 0. El producto lógico U * V * W es igual a U*V*W =0*1*0=0 El producto lógico U * V es igual a U*V=0*1=0 Ejemplo: Para asegurarse que todas las puertas de un Jumbo se encuentren convenientemente aseguradas y que no ocurrirá ninguna descomprensión cuando se encuentre volando, se colocan microinterruptores en cada una de dichas puertas. Si alguna puerta no cierra, el respectivo interruptor queda abierto. Cuando se cierra, el interruptor queda cerrado. Si se asigna el valor 1 a un interruptor cerrado, y 0 a uno que esté abierto, sólo cuando todos se encuentren cerrados (todos en 1) recibirá el piloto el permiso para despegar. Es decir, si hay 5 puertas, con cinco interruptores denominados U, V, W, X, Z, es necesario que U * V * W * X * Z sea 1 para que se dé la condición de vuelo. COMPLEMENTO LÓGICO (Not) El complemento lógico de una variable X se indica como X. Representa el otro estado de la variable. El complemento de 1 es o; el de o es 1. Además de la superbarra ( ) colocada sobre la variable, también se acostumbra anteponer la negación no, como NO X, aunque con más frecuencia se antepone la negación inglesa NOT; así: NOT X. Para facilidad de la escritura, en algunos textos se coloca un apóstrofe en lugar de la barra. Por ejemplo, H`. Las anteriores son las operaciones lógicas básicas, a partir de las cuales se pueden definir otras más complejas. una manera gráfica de visualizar rápidamente el modo de ejecutarse las operaciones descritas es mediante el uso de contactos eléctricos. FUNCIONES LÓGICAS: La combinación de variables lógicas, mediante el uso de los operadores lógicos, da lugar a expresiones más complejas, que pueden llamarse Funciones Lógicas. Estas, como las variables que la forman, pueden alcanzar dos valores: cierto o falso, 1 ó 0. Las funciones lógicas también se representan mediante letras mayúsculas: A, B, C, D, etc., procurando que no exista confusión entre las letras asignadas a las variables y a las funciones. Ejemplo Como ejemplos de funciones lógicas se pueden dar los siguientes: A = X * Y + Z * ( U + W) B = Z + Z * ( W * Y + U) 9


ALGORITMIA Ejemplo: Sea la función A= X * Y + Z * ( U + W ) En la que los valores de las variables son los siguientes: X= 1; Y = 0; Z= 1; U= 1; W= 0 La evaluación de la función es muy simple, se reemplazan las variables por sus valores, se aplican las reglas de las operaciones lógicas y se obtiene el resultado. Efectuando esto se obtiene, A= 1 * 0 + 1 * (1 + 0) A= 0 + 1 * ( 1 + 1) A= 0 + 1 = 1 El resultado de la función A es 1. TABLAS DE VERDAD: Si se tabulan todas las posibles combinaciones de los valores de las variables de una expresión, junto con el valor resultante de la misma, se obtiene lo que se conoce como tabla de verdad de la función. Las tablas de verdad son muy útiles para describir el comportamiento de los sistemas, que pueden ser descritos mediante funciones lógicas. Para aclarar bien la forma de obtenerlas se van a resolver algunos ejemplos. Ejemplo: Sea la función F= X + Y * X La tabla de verdad para esta función se encuentra en la figura 3.5. Las dos primeras columnas corresponden a las 4 posibles combinaciones de las variables X e Y. En la tercera columna aparece el valor de F.

10


ALGORITMIA Para cada combinaciรณn de X, Y se reemplazan sus valores en la funciรณn y se obtiene el valor, tal como se hizo en el ejemplo anterior.

11


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.