120
ALGORITMICA Por : VADILLO SANDOVAL ALEXANDER MIGUEL V Ciclo – Computación e Informática - UNFV

Algoritmica terminado

Embed Size (px)

Citation preview

Page 1: Algoritmica terminado

ALGORITMICA

Por : VADILLO SANDOVAL ALEXANDER MIGUELV Ciclo – Computación e Informática - UNFV

Page 2: Algoritmica terminado

ALGORITMO

Es un conjunto finito de instrucciones que especifican una secuencia de operaciones a realizar en orden para resolver un problema específico. En otras palabras, un algoritmo es un método para la solución de problemas.

Page 3: Algoritmica terminado

La palabra algoritmo se deriva de la traduccion al latin de la palabra arabe alkhowarismi , nombre de un matematico y astronomo arabe que escribio un tratado sobre la manipulacion de numeros y ecuaciones en el siglo ix

Se define como una serie de pasos organizados que describen el proceso que se debe seguir, para dar solucion a un problema especifico

Page 4: Algoritmica terminado

Un algoritmo es una serie de pasos secuenciados para la solucion de algun problema. un ejemplo seria:

Hacer un algoritmo que muestre del 1 al 100 y quue los vaya sumando e imprima la suma de los numeros.

Page 5: Algoritmica terminado

Un algoritmo es un conjunto de reglas que determinan la secuencia de las operaciones a seguir para resolver un problema especifico .

Page 6: Algoritmica terminado

CARACTERISTICAS

Todo algoritmo debe tener las siguientes características:Debe ser preciso, es decir, cada instrucción debe indicar de forma inequívoca que se tiene que hacer.Debe ser finito, es decir, debe producir los mismos resultados para las mismas condiciones de entrada.Todo algoritmo puede ser descompuesto en tres partes: Entrada de datos, Proceso y Salida de resultados

Page 7: Algoritmica terminado

Preciso.- Definirse de manera rigurosa, sin dar lugar a ambigüedades.

Definido.- Si se sigue un algoritmo 2 veces, se obtendrá el mismo resultado.

Finito.- Debe terminar en algún momento.Puede tener cero o mas elementos de

entrada.Debe producir un resultado. Los datos de

salida serán los resultados de efectuar las instrucciones

Page 8: Algoritmica terminado

Debe tener un punto particular de inicio.Debe ser completamente definido y no debe

permitir dobles interpretaciones.Debe ser general, es decir, soportar la

mayoría de las variantes que se puedan presentar en la definición del problema.

Debe ser finito en tamaño y tiempo de ejecución.

Debe ser legible, claro y fácil de interpretar y entender.

Page 9: Algoritmica terminado

1) Finitud: Un algoritmo debe terminar después de ejecutar un número finito de pasos.

2) Definición: Cada paso en un algoritmo debe estar definido con precisión, esto es, la acción a seguir no debe ser ambigua, sino rigurosamente especificada. UN algoritmo descrito en un lenguaje como inglés o español, en el cual una misma palabra puede significar varias cosas, puede no cumplir con este punto. Es por eso que se han definido los lenguajes de programación o lenguajes de computación para especificar algoritmos, ya que en ellos el significado de cada palabra es uno y sólo uno.

Page 10: Algoritmica terminado

3) Entrada: Se considera como entrada el conjunto de datos o información requerida para resolver un problema dado. No cualquier grupo de datos se puede considerar como entrada en el procedimiento señalado.

4) Salida: La salida es un conjunto de resultados que se obtienen al aplicar el algoritmo al conjunto de datos de entrada.

Page 11: Algoritmica terminado

5) Efectividad: Un algoritmo debe llevar a la solución del problema planteado, en otras palabras, se puede decir que todas las operaciones que efectúa el algoritmo, deben ser lo suficientemente simples para que en principio, se puedan ejecutar con papel y lápiz y al final obtener el resultado deseado.

Page 12: Algoritmica terminado

Se concluye que un algoritmo debe ser suficiente para resolver el problema.

Entre 2 algoritmos que lleven a un mismo objetivo, siempre será preferible el mas corto ( se deberá analizar la optimización de tiempos y/o recursos).

Page 13: Algoritmica terminado

TIPOS DE ALGORITMO

CUALITATIVOS :Son aquellos en los que se describen los pasos

utilizando palabras.Son todos aquellos pasos o instrucciones

descritos por medio de palabras que sirven para llegar a la obtención de una respuesta o solución de un problema cualquiera.

Page 14: Algoritmica terminado

CUANTITATIVOS :Son aquellos en los que se utilizan cálculos

numéricos para definir los pasos del proceso. Son aquellos pasos o instrucciones que

involucran cálculos numéricos para llegar a un resultado satisfactorio.

Page 15: Algoritmica terminado

Tipos de algoritmos de razonamiento:

Algoritmos Estáticos: Son los que funcionan siempre igual, independientemente del tipo de problema tratado.

Algoritmos Adaptativos: Algoritmos con cierta capacidad de aprendizaje.

Page 16: Algoritmica terminado

Algoritmos Probabilísticos: Son algoritmos que no utilizan valores de verdad booleanos sino continuos. Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento, pudiéndose distinguir:

§ Algoritmos numéricos: Que proporcionan una solución aproximada del problema.

Page 17: Algoritmica terminado

§ Algoritmos de Montecarlo: Que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja).

§ Algoritmos de Las Vegas: Que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo.

Page 18: Algoritmica terminado

Algoritmo Cotidiano: Es la serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas y actividades comunes, desde los pasos al levantarnos, así como ir de compras, etc.

Algoritmo Voraz: Un algoritmo voraz es aquel que, para resolver un determinado problema, sigue una meta heurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima.

Page 19: Algoritmica terminado

Algoritmo Determinista: Es un algoritmo que, en términos informales, es completamente predictivo si se conocen sus entradas.

Algoritmo Heurístico: Es un algoritmo que abandona uno o ambos objetivos; por ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no pueda ser arbitrariamente errónea en algunos casos; o se ejecuta razonablemente rápido, aunque no existe tampoco prueba de que siempre será así.

Page 20: Algoritmica terminado

Algoritmo de escalada: la idea básica consiste en comenzar con una mala solución a un determinado problema y, repetidamente, aplicar optimizaciones a la misma hasta que esta sea óptima o satisfaga algún otro requisito.

Page 21: Algoritmica terminado

Ciencias en que se apoya la algoritmia para producir soluciones ingeniosas!

· Ciencias de la Computación.· Matemáticas.· Ciencias Sociales.· Ciencias Políticas.

Page 22: Algoritmica terminado

¿Cómo podemos determinar la complejidad de un algoritmo?

No existe receta que siempre funcione para calcular la complejidad de un algoritmo, si es posible tratar sistemáticamente una gran cantidad de ellos, basándonos en que suelen estar bien estructurados y siguen pautas uniformes.

Loa algoritmos bien estructurados combinan las sentencias de alguna de las siguientes formas:

· Sentencias sencillas · Secuencia (;) · Decisión (if) · BuclesLlamadas a procedimiento.

Page 23: Algoritmica terminado

PROPIEDADES DE UN ALGORITMO

SecuencialidadAusencia de AmbigüedadesGeneralidadLimitaciones

Page 24: Algoritmica terminado

SECUENCIALIDAD

Se debe especificar sin lugar a dudas la secuencia a utilizar.

Un algoritmo debe tener una instrucción inicial única y un sucesor único en cada secuencia.

Las instrucciones son llevadas a cabo de arriba hacia abajo a menos que las mismas especifiquen lo contrario.

Las entradas son las partidas de datos presentadas al algoritmo.

Las salidas son partidas de datos procesados que son el resultado de la ejecución un programa basado en el algoritmo.

Page 25: Algoritmica terminado

AUSENCIA DE AMBIGÜEDAD

En algoritmo debe ser defino, claro, preciso y no ambiguo. La representación de cada paso de un algoritmo debe dar lugar a una sola interpretación posible.

Esta condición significa que cada vez que se presente para su ejecución u algoritmo con los mismos datos de entrada, se obtendrán los mismos resultados.

Las instrucciones de un algoritmo debe ordenar a la computadora que solo lleve a cabo tareas que sea capaz de hacer. Una computadora no puede efectuar una instrucción si tiene información insuficiente o si el comando no está definido.

Page 26: Algoritmica terminado

GENERALIDAD

Un algoritmo se puede realizar para varios problemas que se relacionan entre sí.

Un algoritmo se aplica a un problema o clase de problemas específicos; el rango de las entradas o dominios se tiene que definir previamente, ya que está determinado el alcance o la generalidad del algoritmo.

Page 27: Algoritmica terminado

LIMITACIÓN

Un algoritmo es finito en tamaño y tiempo.La ejecución de un algoritmo programado

debe finalizar después de que se haya llevado a cabo una cantidad finita de operaciones.

Page 28: Algoritmica terminado

LEXICO DE UN PROGRAMADOR

Page 29: Algoritmica terminado

El Lenguaje de Programación es el medio de comunicación entre un programador y una computadora; es mediante el lenguaje de programación que el programador "le dice" a la computadora qué acciones debe ejecutar, para resolver un problema computacional.

El Lenguaje de Programación es unidireccional; las órdenes son emitidas por el programador y recepcionadas por la computadora, la cual se limita a ejecutar dichas órdenes. En realidad, en un Lenguaje de Programación intervienen dos Lenguajes: el Lenguaje Fuente que es el lenguaje que el programador entiende y el Lenguaje - Objeto que es el lenguaje de la máquina que puede ser ejecutada por una computadora.

Page 30: Algoritmica terminado

El Lenguaje -Fuente tiene tres niveles:Los Lenguajes -Fuente de Alto Nivel están más

próximos al programador; es decir, que con órdenes expresadas "casi" de forma natural, el programador puede resolver problemas computacionales.

Los Lenguajes-Fuente de Nivel Intermedio son más concisos y rígidos en su sintaxis; eso los hace menos amigables para programar.

Los Lenguajes -Fuente de Bajo Nivel son tan cercanos al lenguaje de máquina que se requiere de una mayor especialización por parte del programador.

Page 31: Algoritmica terminado

EL TRADUCTOR

Page 32: Algoritmica terminado

Tomando en consideración lo que se ha dicho, surge la pregunta:

¿Cómo es posible la comunicación entre el programador y la computadora, si entienden distintos lenguajes?

La respuesta es: "Mediante un Traductor". Un Traductor es un programa que traduce el Lenguaje -Fuente al Lenguaje - Objeto. Para realizar el análisis y diseño del Traductor, se acude a la computabilidad y los lenguajes formales que proponen la Teoría de los Lenguajes Formales.

La Teoría de Lenguajes está dedicada al estudio formal de las partes de un lenguaje; para el efecto, propone mecanismos formales encargadas del estudio del Léxico, Sintaxis y Semántica.

Page 33: Algoritmica terminado

GLOSARIO DE TERMINOS

Page 34: Algoritmica terminado
Page 35: Algoritmica terminado
Page 36: Algoritmica terminado
Page 37: Algoritmica terminado
Page 38: Algoritmica terminado

TECNICAS PARA DESARROLLAR UN ALGORITMO

Técnicas de diseño

Top down También conocida como de arriba-abajo y

consiste en establecer una serie de niveles de mayor a menor complejidad (arriba-abajo) que den solución al

problema.

Page 39: Algoritmica terminado

Bottom Up El diseño ascendente se refiere a la

identificación de aquellos procesos que necesitan procesarse en el momento en el que vayan apareciendo para

satisfacer el problema inmediato.

Page 40: Algoritmica terminado

Técnicas para la formulación de algoritmos

Las dos herramientas utilizadas comúnmente para diseñar algoritmos son:

• Diagrama de Flujo • Pseudocódigo

Page 41: Algoritmica terminado

DIAGRAMA DE FLUJO

Un diagrama de flujo es otra técnica de diseño de algoritmos. Consiste en una serie de símbolos que denotan acciones, decisiones o procedimientos que se unen mediante flechas y conectores.

Esta representación nos ayudará a conocer la información que tenemos, donde la tenemos, que debemos hacer con ella y como presentarla.

Debe tener las cualidades de sencillez, claridad y normalización en su diseño.

Page 42: Algoritmica terminado

DIAGRAMA DE FLUJO

Es la representación detallada en forma gráfica de cómo deben realizarse los pasos en la computadora para obtener resultados.

Page 43: Algoritmica terminado

PSEUDOCÓDIGO

Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar

Page 44: Algoritmica terminado

DOMINIO DE UN ALGORITMO

La clase o el conjunto de datos y condiciones para las cuales un algoritmo trabaja concretamente se llama dominio.

Cuando se trata de resolver cualquier problema es necesario definir el dominio del algoritmo y después verificar que trabaja para todos los casos que se encuentran dentro del dominio.

Es necesario incluir en el dominio todas las situaciones similares, pero los casos remotos o poco probables se permiten omitir.

Page 45: Algoritmica terminado

ERRORES EN LA CONTRUCCIÓN DEL DOMINIO.

Errores del dominio: se presentan cuando se no han

especificado todas las situaciones que se pueden presentar en la práctica o se han descuidado la apreciación de su importancia.

A medida que se presenta el problema, se tiene que clasificar y hay tres opciones:

1. Ignorarlo porque es improbable y quizás nunca ocurra.

2. Restringir el dominio del algoritmo para excluirlo.3. Corregir el algoritmo.

Page 46: Algoritmica terminado

ERRORES DE LÓGICA:

Son aquellos errores que se detectan, después que se ha definido en forma adecuada el dominio de un algoritmo, en la etapa de prueba o verificación.

se deben principalmente a las siguientes causas:1. Etapas incorrectas.2. Secuencia incorrecta de etapas3. El criterio de elección de un algoritmo debe

hacerse en base a criterios tales como:a) Que el algoritmo sea simple, es decir, fácil de

entender y de escribir.b) Que el algoritmo sea eficiente.

Page 47: Algoritmica terminado

MÉTODO HEURÍSTICO

La heurística proporciona un esquema o plan para abordar los problemas poco conocidos, mejora la capacidad de crear soluciones y asegura que el método que se va a usar sea eficiente.

En la etapa de planificación es donde se tiene la oportunidad de comparar métodos y seleccionar el más adecuado.

Page 48: Algoritmica terminado

Surge la pregunta:

¿ Cómo se pueden resolver los problemas para los que no hay un método establecido o para los cuales conocemos un algoritmo?.

Page 49: Algoritmica terminado

DISEÑO DE UN ALGORITMO

Un método heurística para diseñar algoritmo es el denominado DIVIDE AND CONQUER, el cual es una técnica TOP-DOWN.

Este método permite implementar la segmentación, descomposición de un problema largo y complejo en problemas independientes más pequeños y fáciles de resolver que el problema de partida.

La técnica consiste en varias etapas.

Page 50: Algoritmica terminado

DESCOMPOSICIÓN DEL PROBLEMA DE PARTIDA EN SUBPROBLEMAS INDEPENDIENTES Y DETERMINACIÓN DE

LAS RELACIONES ENTRE ELLOS.

P

P1 P2 P3

Page 51: Algoritmica terminado

RESOLUCIÓN DE CADA SUBPROBLEMA

Si un sub-problema es grande, por descomposición y continuando hasta que resulten de la descomposición sub -problemas fácilmente resolubles.

P1

P1.1 P1.2 P1.3

Page 52: Algoritmica terminado

Composición de las soluciones de los sub- problemas para lograr la solución final

El diseño del algoritmo que resuelve un problema, realizado con esta técnica recibe el nombre de DISEÑO DESCENDENTE y resulta en algoritmo muy legibles, claros, fáciles de entender, seguir y corregir.

El diseño de un algoritmo no se hace de una sola vez, sino que se va resolviendo en una secuencia de pasos ( llamados PASOS DE REFINAMIENTO).

En cada paso el problema es refinado agregando detalles significativos, por lo que el método se conoce como:

MÉTODO DE LOS REFINAMIENTOS SUCESIVOS.

Page 53: Algoritmica terminado

UN INGENIERO ES CONVOCADO PARA CONSTRUIR UN EDIFICIO

CONSTRUCCIÓN DEL

EDIFICIO

CONFECCICÓNDE LOSPLANOS

CONTRATACIÓNDEL

PERSONAL

COMPRA DEMATERIALES

DIRECCIÓNDE LA OBRA

Page 54: Algoritmica terminado

UN SUB- PROBLEMA

CONFECCIÓNDE LOSPLANOS

DISEÑO DELANTEPROYECTO

APROBACIÓNDEL

ANTEPROYECTO

ELABORACIÓN DE LOS PLANOS

APROBACIÓNDE LOSPLANOS

Page 55: Algoritmica terminado

OTRO SUB- PROBLEMA

CONTRATACIÓNDEL

PERSONAL

PEDIDO DECURRICULUM

VITAE

ANÁLISISDE LOS

CURRÍCULUMVITAE

ENTREVISTAS PERSONALES

REDACCIÓN DE LOS

CONTRATOS

Page 56: Algoritmica terminado

OTRO SUB- PROBLEMA

COMPRA DE

MATERIALES

CÁLCULODE

MATERIALES

PEDIDO DE

PRECIOS

SELECCIÓNDE

PROVEEDORES

Page 57: Algoritmica terminado

Al utilizar el refinamiento por pasos el diseñador de un algoritmo debe saber donde detenerse, es decir, debe saber cuando un paso específico del algoritmo es lo suficientemente claro para no necesitar más refinamiento.

Se necesita CONOCER LAS CAPACIDADES DE UN PROCESADOR no sólo para terminar los refinamientos, sino para dirigir la forma en que el refinamiento avanza.

Page 58: Algoritmica terminado

Una computadora puede interpretar cualquier cosa expresadas de manera adecuada en un lenguaje de programación. Así el diseñador de un algoritmo de computadora puede orientar los pasos y la terminación del refinamiento hacia el tipo de lenguaje que se trate.

Page 59: Algoritmica terminado

PROGRAMACION ESTRUCTURA

Los principios metodológicos básicos de la programación estructurada son los de subdividir el problema inicial o de partida en partes manejables para su análisis y hacer de esta manera que se agilice el proceso de entender el problema y la solución.

Page 60: Algoritmica terminado

Básicamente, estas subdivisiones deseadas( llamadas módulos) deben satisfacer los siguientes requisitos:

1. Los módulos deben estas jerarquizados.2. Deben ser pequeños y sencillos.3. Se deberán utilizar tantos módulos de menor

jerarquía como sea necesario para cumplir con la restricción de ser pequeños y sencillos.

4. Se deberán usar las estructuras de control y datos adecuadas para cumplir con el requisito de pequeños y sencillos.

5. Los módulos deben ser legibles para cualquier persona aunque tenga solamente conocimientos elementales de progrmación.

Page 61: Algoritmica terminado

LENGUAJE DE DISEÑO DE PROGRAMAS

Como la meta es escribir algoritmos que sean procesados en una computadora, se va a producir un lenguaje de diseño adecuado.

Se llamará LENGUAJE DE DESCRIPCIÓN DE PROGRAMAS a la herramienta que permitirá diseñar programas de codificación.

Page 62: Algoritmica terminado

Este pseudo- lenguaje tiene las siguientes características:1. Permite expresar de manera informal las estructuras de 2. Permite expresar las ideas en frases del lenguaje propio o

natural.3. Es similar al lenguaje de programación pero no está ligado

a ninguna regla formal de sintaxis como aquellos.4. No es un lenguaje compilable5. Por convención se hace un sangrado en el texto que ayuda

a la percepción visual de la lógica del diseño.6. Permite expresar diseños de fácil comprensión que podrá

convertirse sin dificultad a código en el lenguaje de implementación.

7. El pseudo- código generado es más fácil de cambiar y corregir que el código del programa.

Page 63: Algoritmica terminado

SOLUCION DE UN PROBLEMA

ANALISIS El Lenguaje Regular es el encargado del análisis del léxico de todo

lenguaje; se proponen tres mecanismos formales para su estudio: las Expresiones Regulares, el Autómata de Estados Finitos y la Gramática Regular. Se demuestra que existe una contradicción dialéctica entre estos tres mecanismos formales, pues a pesar de ser diferentes en su estructura generan el mismo lenguaje; esta equivalencia permite la flexibilidad en el uso de cualquiera de estos mecanismos en el análisis del léxico del Lenguaje -Fuente .

El Lenguaje Libre de Contexto es el encargado de realizar el análisis de la sintaxis de todo lenguaje; propone dos mecanismos formales: el Autómata de Pila y la Gramática Libre de Contexto. Existe también una contradicción dialéctica entre estos dos mecanismos; esto permite una relación de equivalencia que no discrimina a ninguno de ellos para realizar el análisis de la sintaxis del Lenguaje-Fuente.

Page 64: Algoritmica terminado

El Lenguaje Sensible al Contexto es el encargado de realizar el análisis de la Semántica de todo lenguaje; sin embargo, no es posible utilizar la Gramática Sensible al Contexto para este propósito, pues no existe una gramática determinística que permita llevar este análisis a su diseño e implementación; éste es el motivo por el que se ha adoptado una Gramática Atribuida como mecanismo formal de análisis de la Semántica del Lenguaje-Fuente.

El Lenguaje Atribuido es propuesto por Knuth, quien dice que -sin abandonar el determinismo que ofrece una gramática libre de contexto- se puede simular el comportamiento de una Gramática Sensible al Contexto; simplemente, se añade atributos a una Gramática Libre de Contexto y se creará una gramática atribuida capaz de analizar la Semántica del Lenguaje-Fuente[2].

El Lenguaje Atribuido no sólo se encargara del análisis de la Semántica del Lenguaje-Fuente sino que también se encargará de la fase de generación del Lenguaje-Objeto, cumpliendo la función de síntesis del Traductor.

Page 65: Algoritmica terminado

DISEÑO Para el diseño del analizador lexicográfico, se utilizará una

función sistemática traductora ' T ' [3]. Esta función recibe como entrada una expresión regular que representa a un Token del léxico del Lenguaje -Fuente; es a través de esta función sistemática traductora que se puede generar el pseudocódigo del analizador lexicográfico, el cual podrá ser implementado en cualquier Lenguaje de Programación.

Para el diseño de analizador sintáctico, se utilizará el Método Descendente Predictivo Recursivo, que permitirá transformar la Gramática Libre de Contexto en un pseudocódigo del analizador sintáctico, el cual podrá ser implementado en cualquier Lenguaje de Programación.

Page 66: Algoritmica terminado

Para el diseño del analizador semántico, se incorpora parámetros por valor o por referencia al pseudocódigo del analizador sintáctico, llevando al diseño a una Gramática Atribuida.

El diseño del generador de código requiere de un atributo sintetizado que tomará la contribución de cada esquema de producción y generará el Código-Objeto equivalente al Código-Fuente.

Page 67: Algoritmica terminado

MEDIOS DE EXPRESION 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 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.

Page 68: Algoritmica terminado

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.

Page 69: Algoritmica terminado

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

Page 70: Algoritmica terminado

DIAGRAMA DE FLUJO

Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número xArtículo principal: Diagrama de flujo

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

Page 71: Algoritmica terminado

PSEUDOCÒDIGO

El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.

Page 72: Algoritmica terminado

El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo en general es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.

Page 73: Algoritmica terminado

PROCESO DE LA PROGRAMACION

La programación es más que solamente escribir código. El software tiene su ciclo de vida. Nace, crece, madura y finalmente muere, solamente para ser reemplazado por un producto nuevo. El entendimiento del ciclo de vida de un programa es importante, ya que, como programador, se pasará solamente poco tiempo en escribir código. La mayoría de las veces la mayor parte del tiempo se invierte al modificar y revisar código existente. Un código debe ser documentado, se le debe dar mantenimiento, debe ser mejorado y vendido.

Page 74: Algoritmica terminado

Los principales pasos que se deben seguir al elaborar un programa son:

Requerimientos: Los programas empiezan cuando alguien tiene la idea de hacer algo y comienza a implementarlo. El documento con los requerimientos del sistema describen, en términos generales, qué es lo que se quiere hacer.

Especificación del programa: La especificación es una breve descripción de qué es lo que el programa hace. En un principio, una especificación preliminar describe qué es lo que va a hacer el programa. Después, mientras el programa se va refinando, de la misma manera se va refinando la especificación del mismo.

Page 75: Algoritmica terminado

Diseño del código: El programador tiene que llevar a cabo un diseño del código a implementar. En él se deben incluir los algoritmos utilizados, las definiciones de los módulos a utilizar, archivos utilizados y estructuras de datos usadas en el programa. Es aquí en donde se desarrolla el pseudocódigo del programa. El uso de diagramas de flujo también nos permitirá obtener una abstracción sobre el problema, tanto en entradas, salidas, flujo y procesamiento de la información.

Codificación: El siguiente paso es empezar a escribir el programa. Este primer paso involucra primero escribir un prototipo y después irlo puliendo para crear el programa final.

Page 76: Algoritmica terminado

Pruebas: El programador debe diseñar un plan de pruebas para posteriormente utilizarlo para probar su programa. Cuando es posible, debe existir un equipo de pruebas, diferente del equipo de programadores.

Debugging: Desafortunadamente, pocos son los programas que funcionan a la primera. Los programas deben ser corregidos y probados nuevamente.

Release: El programa es empaquetado, documentado y mandado al mundo a ser usado.

Page 77: Algoritmica terminado

Mantenimiento: Los programas rara vez, o nunca son perfectos. Los errores o bugs se encontrarán y necesitarán ser corregidos. Esta etapa es la etapa de mantenimiento de la programación.

Revisión y mejora: Después de que un programa ha sido usado, los usuarios querrán realizarle algún cambio al funcionamiento del programa, tal como alguna nueva funcionalidad o un cambio en algún algoritmo. En este punto se crea una nueva especificación y el proceso comienza de nuevo.

Page 78: Algoritmica terminado

Especificación Generalmente las especificaciones de un proyecto de

programación son vagas e incompletas. El programador tiene que redefinirlas en algo que define exactamente el programa que se va a desarrollar. Por lo tanto, el primer paso es escribir una especificación preliminar que describa qué es lo que el programa va a hacer y cómo se debe utilizar. El documento no describe la estructura interna del programa o el algoritmo que se planea utilizar.

La especificación preliminar tiene dos propósitos. Primero, enseñársela al jefe o líder de proyecto para asegurarse de que la especificación contiene todo lo que se necesita que haga el programa. Segundo, se puede enseñar a los demás compañeros para ver si existen sugerencias con respecto al programa.

Page 79: Algoritmica terminado

Diseño del código Después de que la especificación preliminar ha sido

aprobada, se puede empezar a diseñar el código. En la fase de diseño de código, el programador planea su trabajo. En proyectos de programación muy grandes que involucran a mucha gente, el código puede ser dividido en varios módulos, asignando un módulo a cada programador. En esta etapa se deben planear las estructuras de datos, los archivos y los algoritmos a utilizar. En esta etapa podemos ayudarnos de pseudocódigo y diagramas de flujo.

Page 80: Algoritmica terminado

Prototipo Después de que la etapa de diseño del código ha sido

completada, podemos empezar a escribir el programa. Sin embargo, en lugar de empezar a escribir el programa completo para después empezar a probarlo, podemos utilizar un método llamado prototipo rápido (fast prototyping). Consiste en implementar una pequeña porción de la especificación que haga alguna de las funciones requeridas. Una vez que dicha parte del programa funciona, podemos implementar el resto de las funciones sobre la porción estable de código construida anteriormente. El prototipo también puede servir para darnos una idea de cuál es la dirección que lleva el proyecto.

Page 81: Algoritmica terminado

MakefileDespués de que el código fuente ha sido

terminado, necesitará ser compilado y encadenado. Si bien es cierto, podemos correr el compilador de manera manual, el proceso puede ser tedioso y complicado cuando estamos desarrollando proyectos muy grandes. Para esto podemos utilizar un makefile.

Page 82: Algoritmica terminado

Pruebas Después de que el programa ha sido compilado sin errores,

podemos pasar a la etapa de pruebas. Ahora es tiempo de escribir un plan de pruebas. Dicho documento no es más que una simple lista de los pasos que debemos seguir para estar seguros de que el programa funciona correctamente. Se debe escribir básicamente por dos razones:

Si un error es encontrado, queremos poder reproducirlo. Si realizamos algún cambio en el programa, queremos

volverlo a probar para estar seguros que el cambio no afectó nada que haya estado funcionando previamente.

Page 83: Algoritmica terminado

DebuggingPrimero debemos inspeccionar el programa

para ver si podemos detectar algún error. En programas sencillos será muy fácil encontrar el error, sin embargo no lo será en proyectos que involucran código de más de 5,000 líneas. La mayoría de los sistemas tiene debuggers de C, en nuestro caso podemos utilizargdb.

Page 84: Algoritmica terminado

MantenimientoLos buenos programadores someten a sus

programas a largos y rigurosos procesos de mantenimiento antes de liberar su código. Cuando el usuario del programa empieza a utilizarlo y encuentra algún error, entramos a la etapa de mantenimiento, en donde cualquier error que pudiera tener el programa es corregido y el programa se vuelve a probar para asegurarse de que el error no vuelva a aparecer, para finalmente volver a liberar el programa.

Page 85: Algoritmica terminado

TIPOS DE DATOS

Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable.

Numéricos

Simples Lógicos

Alfanuméricos (string)

Tipos de datos Arreglos (Vectores, Matrices)

Estructurados Registros (Def. por el Archivos usuario) Apuntadores 

Page 86: Algoritmica terminado

Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.

Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).

 Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.

Page 87: Algoritmica terminado

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 ü Relaciónales ü Lógicas

Page 88: Algoritmica terminado

OPERADORES Y OPERANDOS

Operadores: Son elementos que relacionan de forma diferente, los valores

de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores. Los Tipos de Operadores que existen son tres: los relaciónales, los Aritméticos y por último los lógicos.

ü Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

Page 89: Algoritmica terminado

Operadores Aritméticos+ Suma - Resta

* Multiplicación / División

mod Modulo (residuo de la división entera)

Ejemplos:Expresión Resultado

7 / 2 3.5 12 mod 7 5

4 + 2 * 5 14

Page 90: Algoritmica terminado

Prioridad de los Operadores Aritméticos Todas las expresiones entre paréntesis se evalúan primero.

Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden.

1. ^ à Exponenciación 2. *, /, mod à Multiplicación, división, modulo 3. - +, - à Suma y resta.

ü Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha.

Page 91: Algoritmica terminado

 Operadores Relaciónales: 

Se utilizan para establecer una relación entre dos valores.

Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso).

Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas)

Tienen el mismo nivel de prioridad en su evaluación.

Los operadores relaciónales tiene menor prioridad que los aritméticos.

Page 92: Algoritmica terminado

> Mayor que

< Menor que

> = Mayor o igual que

< = Menor o igual que

< > Diferente

= Igual

Page 93: Algoritmica terminado

Ejemplos:

Si a = 10 b = 20 c = 30

a + b > c Falso

a - b < c Verdadero

a - b = c Falso

a * b < > c Verdadero

Page 94: Algoritmica terminado

Ejemplos no lógicos:

a < b < c

10 < 20 < 30

T < 30 (no es lógico porque tiene diferentes operandos)

Page 95: Algoritmica terminado

 Operadores Lógicos: 

Estos operadores se utilizan para establecer relaciones entre valores lógicos.

Estos valores pueden ser resultado de una expresión relacional.

Page 96: Algoritmica terminado

Operadores Lógicos

And            Y

Or           O

Not        Negación

Page 97: Algoritmica terminado

Operador And

Operando1   Operador  Operando2  Resultado

T                  AND               T                 T

T                                         F                  F 

F                                        T                   F

F                                         F                  F

Page 98: Algoritmica terminado

Operador Or

Operando1  Operador  Operando2  Resultado 

T                      OR               T               T

T                                           F              T

F                                          T               T

F                                           F               F

Page 99: Algoritmica terminado

Operador Not

Operando  Resultado

T                     F               F                     T

Ejemplos: 

(a < b) and (b < c)

(10<20) and (20<30)

Page 100: Algoritmica terminado

IDENTIFICADORES

Un identificador es un nombre que se le da a una constante, una variable y a cualquier elemento de programa que necesite nombrarse.

Existen reglas para construir identificadores, las cuales son las siguientes:

Debe comenzar con un caracter alfabético (A - Z, mayúscula o minúscula)

Los demás caracteres pueden ser letras, dígitos o el caracter especial de subrayado (_)

Las letras no deben ser tildadas. No se admiten espacios en blanco. No deberá coincidir con palabras reservadas del lenguaje

algorítmico. (Ejemplo: Var, Const, Entero, Real, etc.)

Page 101: Algoritmica terminado

La longitud de los identificadores puede ser de hasta 8 caracteres.  Este valor dependerá del lenguaje de programación que esté estudiando

Deben ser nombres significativos al programa que se este realizando.

Indicar su tipo (Entero, Real, cadena, caracter o booleano)

Page 102: Algoritmica terminado

Ejemplos de Identificadores válidos:CostoArticuloNuevo_sueldo

DireccionNombre

Horas_Trab

Page 103: Algoritmica terminado

Ejemplo de identificadores no válidos:Nombre1        

#alumnos  profesión        

2categoríaSueldo Neto

Nombre-ApellidoÁrea2

Page 104: Algoritmica terminado

En el mundo de la programación se usan valores que no deben variar durante la ejecución de un programa. A estos valores se les conoce como constantes. También existen valores que deben cambiar a lo largo de la ejecución del programa; estos valores son conocidos como variables.

Page 105: Algoritmica terminado

ConstantesUna constante es una partida de datos que permanecen sin

cambios en el programa (durante el desarrollo y ejecución). Ejemplos:                     3.1416 (valor de pi, este valor no debe variar)2000 (año en que según Nostradamus se acabaría el

mundo XD)‘a’ (primera letra del alfabeto)“ESPOL” (nombre de mi querida universidad)

Page 106: Algoritmica terminado

Variables Una variable es una partida de datos cuyo valor puede

cambiar en el programa (durante el desarrollo y ejecución). Los diferentes tipos de variables dependen del lenguaje de

programación, por lo general estas suelen ser enteras, reales, carácter, lógicas y de cadena.

Tanto las variables como las constantes tienen un nombre o identificador generalmente conformado por caracteres alfanuméricos (ciertos lenguajes de programación admiten el carácter de subrayado ‘_’ como válido en los identificadores), y el primero de éstos debe ser una letra.

Page 107: Algoritmica terminado

Ejemplos: variable1 numerador primer_jugador Por estética y comodidad durante el desarrollo del algoritmo

se suele usar palabras en MAYUSCULAS para las constantes y en minúsculas para las variables. Si se desea usar varias palabras como nombre para una variable, éstas deben estar unidas, la primera palabra en minúsculas y el primer carácter de la segunda en mayúscula

Page 108: Algoritmica terminado

ESTRUCTURAS ALGORITMICAS

Son un grupo de formas de trabajo que permiten mediante la manipulación de variables,realizar ciertos procesos específicos que nos lleven a la solución de problemas. 

Se clasifican en :SECUENCIALESCONDICIONALESCICLICAS

Page 109: Algoritmica terminado

SECUENCIALESSon aquellos en que una acción sigue a otra en secuencia.sus componentes son:

Asignación: Es el paso de valores o resultados a una zona de la memoria, esta zona sera reconocida con el nombre de la variable que recibe el valor.

Entrada: Consiste en recibir un valor o un dato, por medio de algun dispositivo de entrada.

Salida: Se manda el resultado o mensaje, por medio de algun dispositivo de salida del computador.

Page 110: Algoritmica terminado
Page 111: Algoritmica terminado

CONDICIONALESSon  aquellos que permiten comparar una variable  contra otro

valor, se utilizan para tomar decisiones lógicas, existen tres tipos :

Simples: Se ejecuta una determinada acción cuando se cumple  determinada  condición.Ejemplo :

si (condición ) entonces (acción ) fin si

   

Page 112: Algoritmica terminado

Dobles: Son aquellos que permiten elegir entre dos opciones o alternativas posibles.

Ejemplo:

Si < condición > entonces < acción uno > si_no <acción dos> fin_si

Page 113: Algoritmica terminado

Múltiples: son aquellos que permiten elegir cuando hay mas de dos elecciones o alternativas posibles.

Ejemplo: si < condición > entonces

< instrucción >  sino si < condición 2>entonces  < instrucción > sino  . . fin si

Page 114: Algoritmica terminado

CICLICASSon aquellos tipos de estructura que repiten

una secuencia de instrucciones un número determinado de veces, para encontrar la solución a un problema, estas son denominados como bucles, entre los cuales encontramos:

Para: En esta se conoce el numero de iteraciones o veces que se repite la acción, antes de iniciar la ejecución del ciclo.

Page 115: Algoritmica terminado
Page 116: Algoritmica terminado

Mientras Que: Este se repite un numero determinado de veces, para esto la instrucción se acompaña de una condición, la cual debe cumplirse para seguir la ejecución del ciclo, de lo contrario este se termina.

Page 117: Algoritmica terminado
Page 118: Algoritmica terminado

Repita- Hasta: Este repite un proceso una cantidad de veces, determinada por un condicional, que lo ejecuta hasta que la condicional se cumpla.una característica importante de esta estructura es que permite realizar el proceso cuando menos una vez, ya que la condición se evalúa al final del proceso.

Page 119: Algoritmica terminado
Page 120: Algoritmica terminado

BIBLIOGRAFIA

HTTP://www.exa.unicen.edu.ar/catedras/prog1/introprog2/sites/default/files/ApuntesDiagramaEstructura.pdf

  HTTP://blog.espol.edu.ec/programando/variables-y-constantes/  HTTP://claseinfo.blogia.com/temas/identificadores.php  HTTP://sistemasadsi.blogspot.com/2010/09/tipos-de-datos-en-un-algoritmo.html  HTTP://algoritmosextremos.blogspot.com/2012/02/estructuras-

algoritmicas.html  HTTP://www.ie.uia.mx/acad/atortole/temas/proceso.html  HTTP://www.mhe.es/universidad/informatica/8448136640/archivos/

apendice_general_4.pdf