conceptos basicos de algoritmos

22
CONCEPTOS BASICOS PARA LA FORMULACION DE ALGORITMOS El desarrollo de algoritmos es un tema fundamental en el diseño de programas por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de manera fácil y rápida sus programas. El uso de algoritmos, facilitará desarrollar la capacidad analítica y creadora del alumno, para de esta manera mejorar su destreza en la elaboración de algoritmos que sirven como base para la codificación de los diferentes programas que tendrá que desarrollar a lo largo de la carrera. Es primordial empezar definiendo lo que es la palabra, algoritmo La palabra algoritmo se deriva de la traducción al latín de la palabra árabe Alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre la manipulación de números y ecuaciones en el siglo IX. Se define como una serie de pasos organizados que describen el proceso que se debe seguir, para dar solución a un problema específico. TIPOS DE ALGORITMOS Teniendo en cuenta la forma como describen el proceso, se pueden clasificar en: Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.

Transcript of conceptos basicos de algoritmos

Page 1: conceptos basicos de algoritmos

CONCEPTOS BASICOS PARA LA FORMULACION DE ALGORITMOS

El desarrollo de algoritmos es un tema fundamental en el diseño de programas por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de manera fácil y rápida sus programas.

El uso de algoritmos, facilitará desarrollar la capacidad analítica y creadora del alumno, para de esta manera mejorar su destreza en la elaboración de algoritmos que sirven como base para la codificación de los diferentes programas que tendrá que desarrollar a lo largo de la carrera.

Es primordial empezar definiendo lo que es la palabra, algoritmo

La palabra algoritmo se deriva de la traducción al latín de la palabra árabe Alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre la manipulación de números y ecuaciones en el siglo IX.

Se define como una serie de pasos organizados que describen el proceso que se debe seguir, para dar solución a un problema específico.

TIPOS DE ALGORITMOS

Teniendo en cuenta la forma como describen el proceso, se pueden clasificar en:

Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.

Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

Las principales características que debe tener un buen algoritmo son:

1. Ser preciso: esto significa que las operaciones o pasos del algoritmo deben desarrollarse en un orden estricto, ya que el desarrollo de cada paso debe obedecer a un orden lógico.

2. Ser definido. Ya que en el área de programación, el algoritmo es el paso previo fundamental para desarrollar un programa, es necesario tener en cuenta que el computador solo desarrollará las tareas programadas y con los datos suministrados; es decir, no puede improvisar y tampoco inventará o adivinará el dato que necesite para realizar un proceso. Por eso, el algoritmo debe estar

Page 2: conceptos basicos de algoritmos

plenamente definido; esto es, que cuantas veces se ejecute, el resultado depende estrictamente de los datos suministrados. Si se ejecuta con un mismo conjunto de datos de entrada, el resultado deberá ser siempre el mismo.

3. Ser finito: esta característica implica que el número de pasos de un algoritmo, por grande y complicado que sea el problema que soluciona, debe ser limitado. Todo algoritmo, sin importar el número de pasos que incluya, debe llegar a un final. Para hacer evidente esta característica, en la representación de un algoritmo siempre se incluyen los pasos inicio y fin.

4. Presentación formal: para que el algoritmo sea entendido por cualquier persona interesada es necesario que se exprese en alguna de las formas comúnmente aceptadas; pues, si se describe de cualquier forma puede no ser muy útil ya que solo lo entenderá quien lo diseñó. Las formas de presentación de algoritmos son: el pseudocódigo, diagrama de flujo y diagramas de Nassi/Schneiderman, entre otras. En esta publicación se propondrá una notación algorítmica y se darán las equivalencias entre la propuesta y las existentes y también con las sentencias de los lenguajes de programación, en particular Pascal y C.

5. Corrección: el algoritmo debe ser correcto, es decir debe satisfacer la necesidad o solucionar el problema para el cual fue diseñado. Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba; a esto se le llama verificación o prueba de escritorio.

6. Eficiencia: hablar de eficiencia o complejidad de un algoritmo es evaluar los recursos de cómputo que requiere para almacenar datos y para ejecutar operaciones frente al beneficio que ofrece. En cuanto menos recursos requieren será más eficiente el algoritmo. La vida cotidiana está llena de soluciones algorítmicas, algunas de ellas son tan comunes que no se requiere pensar en los pasos que incluye la solución.

La mayoría de las actividades que se realizan diariamente están compuestas por tareas más simples que se ejecutan en un orden determinado, lo cual genera un algoritmo. Muchos de los procedimientos utilizados para desarrollar tareas cotidianas son algorítmicos, sin embargo, esto no significa que todo lo que se hace está determinado por un algoritmo. El primer paso en el diseño de un algoritmo es conocer la temática a tratar, el segundo será pensar en las

Page 3: conceptos basicos de algoritmos

actividades a realizar y el orden en que deben ejecutarse para lograr el objetivo, el tercero y no menos importante es la presentación formal.

Propiedades de los algoritmos

1. Especificación precisa de la entrada: El algoritmo debe dejar claro el número y tipo de datos de entrada y las condiciones iniciales que deben cumplir esos valores de entrada para conseguir que las operaciones tengan éxito.

2. Especificación precisa de cada instrucción: cada etapa del algoritmo debe estar definida con precisión, no debe haber ambigüedades sobre las acciones que se deben ejecutar en cada momento.

3. Un algoritmo debe ser exacto y correcto: Un algoritmo se espera que resuelva un problema y se debe poder demostrar que eso ocurre. Si las condiciones de entrada se cumplen y se ejecutan todos los pasos el algoritmo entonces debe producir la salida deseada.

4. Un algoritmo debe tener etapas bien definidas y concretas, un número finito de pasos, debe terminar y debe estar claro la tarea que el algoritmo debe ejecutar.

5. Debe ser fácil de entender, codificar y depurar.

6. Debe hacer uso eficiente de los recursos de la computadora Finitud: en longitud y duración. Precisión: Determinar sin ambigüedad las operaciones que se deben ejecutar.

Efectividad: las reglas pueden ejecutarse sin el ordenador obteniéndose el mismo resultado. Generalidad: Resolver una clase de problema y no un problema particular.

Entradas y salidas: puede tener varias entradas pero una sola salida, el resultado que se debe obtener.

LENGUAJE ALGORÍTMICO (Léxico)

Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso, que servirán de apoyo para describir las soluciones que aquí se plantean.

Page 4: conceptos basicos de algoritmos

Teniendo en cuenta la forma en que describen el proceso, existen dos tipos de lenguajes algorítmicos:

Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).

No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocódigo).

Para escribir un algoritmo deben seguirse un conjunto de pasos básicos

1. Comprender el problema

2. Identificar los elementos a incluir en el léxico: constantes, tipos, variables y acciones.

3. Encontrar la forma de secuenciar las acciones para obtener el resultado, esto es, alcanzar las poscondiciones a partir de un estado inicial que cumple con la precondición. Para establecer el orden de las acciones los lenguajes de programación proporcionan mecanismos de composición: Secuenciación, análisis de casos, iteración y recursión.

4. Al organizar las acciones en el tercer paso puede ocurrir que se detecte que faltan elementos en el léxico o que algún aspecto del problema no ha sido bien comprendido lo cual requeriría volver a los pasos anteriores.

5. Nunca la solución aparece en el primer intento, en general aparece en un proceso cíclico, entonces se debe:

6. Escribir el léxico,

a. escribir la primera versión,

b. incluir en el léxico nuevos elementos que faltaban,

c. escribir la nueva versión del algoritmo y así sucesivamente

Estructura de un algoritmo

LEXICO {Léxico Global del algoritmo}

{Declaración de tipos, constantes, variables y acciones}

Acción 1

PRE {Precondición de la acción 1}

Page 5: conceptos basicos de algoritmos

POS {Poscondición de la acción 1}

LEXICO {Léxico local, propio de la acción 1}

Declaraciones locales

ALGORITMO {Implementación de la acción 1} {Secuencia de instrucciones de la acción 1}

FIN {Fin implementación algoritmo de la acción 1}

ALGORITMO

PRE {Precondición del algoritmo principal}

POS {Poscondición del algoritmo principal} {Secuencia de instrucciones del algoritmo principal}

FIN {Fin del algoritmo principal}

Page 6: conceptos basicos de algoritmos

VENTAJAS Y DESVENTAJAS PARA LA FORMULACION DE ALGORITMOS

Ventajas

Los algoritmos son la esencia de la informática, son uno de los centros de interés de muchas, si no todas, de las áreas del campo de la informática.

Mejora la claridad de la solución de un problema. Favorecen la compresión de un proceso Puedes trabajar en orden. Te redacta en orden paso a paso lo que hay que hacer. Ayuda a resolver más fácil y rápido los problemas. Disminuye sensiblemente el riesgo de errores. Favorece el obtener el máximo de información.

Page 7: conceptos basicos de algoritmos

Desventajas

Hay textos que desarrollan los algoritmos, mediante diversos tipos de programas, por ejemplo: el lenguaje de programación C++, pero para comprender las letras deben poseer al menos un año de experiencia en ese lenguaje de programación de alto y bajo nivel.

Muchos algoritmos interesantes llevan implícitos complicados métodos de organización de los datos utilizados en el calendo.

Con frecuencia sucede que muchos de los algoritmos que se van a utilizar son fáciles de implementan una vez que se ha descompuesto el programa, sin embargo, en la mayor parte de los casos, existen unos pocos algoritmos cuya elección es crítica porque su ejecución ocupara la mayoría de los recursos del sistema.

La elección del mayor algoritmo para una tarea particular puede ser un proceso muy complicado y con frecuencia conllevara un análisis matemático sofisticado.

Actualmente se está estudiando en la informática, como seleccionar el algoritmo que conduzca a la mejor implementación pues para la mayoría de los problemas existen varios algoritmos diferentes.

Seguirías siempre un mismo patrón. Se perdería la autenticidad de cada quien.

Page 8: conceptos basicos de algoritmos

DIFERENTES METODOS PARA REPRESENTAR UN ALGORITMO

Así como en nuestra vida cotidiana podemos expresar una misma idea de diversas maneras, de igual forma puedes construir los Algoritmos.

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 lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

La descripción de un algoritmo usualmente se hace en tres niveles:

1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.

2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.

3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.

También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.

Los algoritmos pueden ser creados de dos formas:

1) Seudocódigo.- Es un conjunto pequeño y claro de instrucciones; en secuencia, que permite llevar a cabo una tarea.

2) Diagrama de flujo.- Es la representación de la secuencia, a través de símbolos, de la tarea que se va a realizar.

Page 9: conceptos basicos de algoritmos

PSEUDOCODIGO

Definición

En pseudocódigo se describen los algoritmos utilizando una mezcla de lenguaje común, con instrucciones de programación, palabras claves, etc. El objetivo es que el programador se centre en la solución lógica del algoritmo y no en la implementación en un lenguaje de programación concreto (con las posibles complicaciones en las reglas sintácticas), o en otras palabras, sólo ayudan a "pensar" un programa antes de escribirlo en un lenguaje de programación formal.

Mucho se habla del pseudocódigo en las carreras de Analista de Sistemas y Programación. Pero no existe mucha bibliografía al respecto.

Comencemos aclarando que no es una forma de programación. Se trata de una herramienta que los analistas de sistemas utilizan para comunicar a los programadores la estructura del programa que van a realizar, de forma de tener una idea bien clara de lo que se necesita programar.Digamos que el pseudocódigo es una forma de diagramar un algoritmo para resolver un determinado problema, sin atenerse a ningún lenguaje de programación en especial.

Un algoritmo es un conjunto de procedimientos que permiten resolver un problema.

En vez de escribir el programa directamente en un lenguaje de programación determinado (C, Basic, etc.), crearemos un borrador entendible para todos, para luego de tener bien en claro lo que se debe hacer, pasar a la programación propiamente dicha.

Page 10: conceptos basicos de algoritmos

El pseudocódigo se refiere a crear un código para orientar a los programadores, pero sin la sintaxis ni la estructura propia de ningún lenguaje.

El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizara para la codificación del mismo.

Las principales características de este lenguaje son:

Se puede ejecutar en un ordenador

Es una forma de representación sencilla de utilizar y de manipular.

Facilita el paso del programa al lenguaje de programación.

Es independiente del lenguaje de programación que se vaya a utilizar.

Es un método que facilita la programación y solución al algoritmo del programa.

Todo documento en pseudocódigo debe permitir la descripción de:

Instrucciones primitivas

Instrucciones de proceso

Instrucciones de control

Instrucciones compuestas

Instrucciones de descripción

Estructura a seguir en su realización:

Cabecera:

Programa:

Modulo:

Page 11: conceptos basicos de algoritmos

Tipos de datos:

Constantes

Variables

Cuerpo: Inicio

Instrucciones

Fin

Para comentar en pseudocódigo se le antepone al comentario dos asteriscos (*)

EJEMPLO DE PSEUDOCODIGO

Page 12: conceptos basicos de algoritmos

DIAGRAMA DE FLUJO

DIAGRAMA DE FLUJO

Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operaciones específicas, es decir, es la representación gráfica de las distintas operaciones que se tienen que realizar para resolver un problema, con indicación expresa el orden lógico en que deben realizarse.

Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación. Para 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

Page 13: conceptos basicos de algoritmos

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.

El diagrama de flujo representa la forma más tradicional y duradera para especificar los detalles algorítmicos de un proceso. Se utiliza principalmente en programación, economía y procesos industriales.

Para realizar los diagramas de flujo utilizamos distintas figuras geométricas en forma de caja de texto, que sirven para distinguir el tipo de tareas que se ejecutan, las flechas indican el flujo del proceso y se valen de determinada simbología específica para facilitar su comprensión

Las siguientes son acciones previas a la realización del diagrama de flujo:

Identificar las ideas principales al ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelacionados, así como las terceras partes interesadas.

Definir qué se espera obtener del diagrama de flujo. Identificar quién lo empleará y cómo. Establecer el nivel de detalle requerido. Determinar los límites 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 están incluidos en el proceso a describir y su orden cronológico.

Si el nivel de detalle definido incluye actividades menores, listarlas también.

Identificar y listar los puntos de decisión. Construir el diagrama respetando la secuencia cronológica y asignando

los correspondientes símbolos. Asignar un título al diagrama y verificar que esté completo y describa

con exactitud el proceso elegido.

Page 14: conceptos basicos de algoritmos

Tipos de diagramas de flujo

Formato vertical: En él, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.

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

Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.

Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

Page 15: conceptos basicos de algoritmos

SIMBOLOGIA DEL DIAGRAMA DE FUJO

Page 16: conceptos basicos de algoritmos
Page 17: conceptos basicos de algoritmos

REFERENCIAS

http://algoritmos021415.blogspot.mx/2012/04/representacion-de- un-algoritmo.html

https://www.google.com.mx/search? q=simbologia+del+diagrama+de+flujo&newwindow=1&source=lnms&tbm=isch&sa=X&ei=p-H1VPGzI4zpoATek4CwDw&ved=0CAcQ_AUoAQ&biw=1366&bih=667#imgdii=_&imgrc=jTh3tDAI85w4GM%253A%3BiG54stlDYXBJ7M%3Bhttps%253A%252F%252Fjorge613.files.wordpress.com%252F2012%252F09%252Fsimbologia.png%3Bhttps%253A%252F%252Fjorge613.wordpress.com%252Ftag%252Fdiagrama-de-flujo-de-datos%252F%3B1040%3B976

http://es.wikipedia.org/wiki/Diagrama_de_flujo http://www.virtual.unal.edu.co/cursos/sedes/manizales/4060024/

Lecciones/Capitulo%20I/conceptos.htm http://es.slideshare.net/csandovalrivera/unidad-4-tcnicas-para-la-

formulacin-de-algoritmos https://quice85.wordpress.com/asignaturas-impartidas/algoritmos-

computacionales/ http://html.rincondelvago.com/diseno-estructurado-de-

algoritmos_1.html