Algoritmos

50
HERRAMIENTAS DE DISEÑO DE ALGORITMOS

Transcript of Algoritmos

HERRAMIENTAS DE DISEÑO DE ALGORITMOS

Definimos como algoritmo a un conjunto de pasos necesarios para resolver un problema ya sea manualmente o por métodos mecanizados que, son los más usuales en la actualidad. El concepto de algoritmos fue definido inicialmente por el matemático Persa Alkhowarizmi en el siglo diecinueve.En el que se debe especificar:

- Los datos que se utilizaran.- El procedimiento que actuara sobre estos datos.

CONCEPTO ALGORITMO

Entradas Salidas

Procesador

Instrucciones

Algoritmo

Pasos para realizar un algoritmo

• Diseño del algoritmo que describe la secuencia ordenada de pasos que conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo)

• Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase de codificación)

• Ejecución y validación del programa por la computadora.

Un ejemplo de un algoritmo sería el siguiente

• Inicio del algoritmo

• Entrada de datos

• Salida de datos

• Fin del algoritmo

Características de un AlgoritmoComo lo definimos anteriormente debe estar bien definido y ser un conjunto finito de instrucciones que se deben seguir para resolver un problema por tanto debe cumplir lo siguiente:•Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.

•Un algoritmo debe estar definidos. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.

•Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o se, debe tener un número finito de pasos.

REPRESENTACION DE ALGORITMOS:DIAGRAMAS DE FLUJO.

REPRESENTACION DE ALGORITMOS:DIAGRAMAS DE FLUJO.

Es una notación gráfica Es una notación gráfica para implementar para implementar algoritmos. Se basa en la algoritmos. Se basa en la utilización de unos símbolos utilización de unos símbolos gráficas que denominamos gráficas que denominamos cajas, en las que escribimos cajas, en las que escribimos las acciones que tiene que las acciones que tiene que realizar el algoritmorealizar el algoritmo

Las cajas están Las cajas están conectadas entre sí por conectadas entre sí por líneas y eso nos indica el líneas y eso nos indica el orden el que tenemos que orden el que tenemos que ejecutar las acciones.ejecutar las acciones.

SIMBOLOS FUNCION

Terminal (representa el comienzo, << inicio >>, y el fin, << fin >>, de un programa).

Entrada/Salida (cualquier tipo de introducción de datos en la memoria desde los periféricos, << entrada >>, o registro de la información procesada en un periférico, << salida >>.

Proceso (cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada en memoria)

Decisión (indica operaciones lógicas o de comparación entre datos -normalmente dos- )

Conector (sirve para enlazar dos partes cualesquiera de un ordinograma a través de un conector en la salida y otro conector en la entrada).

Indicador de dirección o línea de flujo (indica el sentido de ejecución de las operaciones).

Línea conectora (sirve de unión entre dos símbolos).

Llamada a subrutina o a un proceso predeterminado

Impresora (se utiliza en ocasiones en lugar del símbolo de E/S).

DIAGRAMA DE FLUJOLa lámpara no

funciona

¿Está enchufada la lámpara?

¿Está enchufada la lámpara?

Enchufar La lámpara

¿Está quemada la lámpara?

¿Está quemada la lámpara?

Ajustar la lámpara

Comprar nueva lámpara

no

si

no

si

PseudocódigoEs un lenguaje de especificación de algoritmos, pero muy parecido a cualquier lenguaje de programación, por lo que luego su traducción al lenguaje es muy sencillo, pero con la ventaja de que no se rige por las normas de un lenguaje en particular. Nos centramos más en la lógica del problema.

Inicio

Acción 1Acción 2….Acción n

Fin

PseudocódigoInstrucción en Inglés Pseudocódigo en españolBegin InicioEnd FinRead/input Leer/ Entrada de DatosWrite/Print Escribir/Salida de Datos.If ____then Si _____entoncesElse Sino / Caso ContrarioFor DesdeWhile MientrasRepeat RepetirUntil Hasta________

SISTEMA INFORMATICOUn sistema en general se define como conjunto de componentes concentrados e interactivos, que tienen un propósito y una unidad total. Sistema de procesamiento de información es un sistema que transforma datos brutos en información organizada, significativa y útil

PROGRAMACIONSe llama programación a la implementación de un algoritmo en un determinado lenguaje de programación, para programar

PROGRAMAREs la acción de escribir instrucciones correctas para que sean interpretadas por una máquina.

CONCEPTOS PRINCIPALES

Lenguaje de Programación

• Es cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su procesamiento por un computador o computadora.

• Existen cientos de lenguajes de programación los cuales pueden dividirse en tres tipos generales:

– Lenguajes máquina. – Lenguajes de bajo nivel. – Lenguajes de alto nivel.

GENERACIONES DE LOS LENGUAJES DE PROGRAMACION

• Lenguaje de Maquina.- Instrucciones en binario 1001 1111 1011 1101

• Lenguaje de Bajo nivel .- Es el lenguaje básico con el que opera la computadora, ósea es el código de la máquina.

MOV AX, A ADD AX, B MOV C, AX

• Lenguaje de Alto Nivel .- Requiere traducción al lenguaje de maquina de la computadora. Se usan variables.

Instrucciones que ejecuta el Computador

16

TRADUCTORES DE LENGUAJE

Metaprograma que tiene como entrada un programa fuente y obtiene como salida un programa objeto.

Programaobjetivo

Programafuente

Errores

Tipos de Traductores

• Compilador: Traduce el programa fuente completo y genera un programa objeto equivalente, además informa de los errores detectados.

• Interprete: Traduce y ejecuta sentencia a sentencia

Programa fuente Compilar Programa Objeto

Lenguaje Alto Nivel Lenguaje Intermedio Lenguaje de Maquina

Programa EjecutableEnsamblar

MEBH

FASES DE PROGRAMACION

1. Definición del problema 2. Análisis del problema3. Diseño de la solución4. Codificación5. Prueba y depuración (Puesta a Punto)6. Documentación7. Implementación (Producción)8. Mantenimiento

MEBH

FASES DE PROGRAMACION Definición del problema¿Qué entradas se requieren, de qué tipo, en qué

orden y qué cantidad?

¿Qué salidas se desean, de qué tipo, en qué orden y qué cantidad?

¿Qué método(s) o fórmula(s) produce(n), o puede(n) producir las salidas deseadas?

MEBH

Análisis del problema

Es la comprensión a fondo del problema y sus detalles y es un requisito para lograr una solución eficaz. Es precisamente en esta fase donde se definen formal y correctamente la Entrada que recibirá el programa (datos o materia prima), la Salida que producirá (información o resultados) y el Proceso necesario para su solución (el método para convertir los datos de entrada en información de salida).

MEBH

Diseño de la solución

En esta fase se diseña la lógica de la solución a usar, o sea, cómo hará el programa la tarea que se desea automatizar usando los datos de entrada para generar los datos de salida, enfatizándose los diseños limpios, sencillos y claros.

MEBH

El proceso se realiza en dos pasos

Elaboración de un algoritmo Pruebas de escritorio

MEBH

Codificación

En este paso se traduce el algoritmo ya estructurado, verificado y comprobado a mano, al lenguaje de programación que vaya a utilizarse. Se requiere de conocimientos del lenguaje y de sumo cuidado en la colocación de las instrucciones, las que deben apegarse y seguir fielmente a la lógica del algoritmo y la semántica y sintaxis del lenguaje.

MEBH

Codificación

• Digitación.- el acto de teclear el algoritmo codificado

• Compilación.- o corrección de los errores sintácticos y semánticos del código, es la eliminación de los errores "gramaticales" según las reglas de construcción de instrucciones particulares del propio lenguaje (la sintaxis).

• Nota: Se necesita un compilador.

MEBH

Prueba y depuración

Las pruebas que se aplican al programa son de diversa índole y generalmente dependen del tipo de problema que se está resolviendo. Comúnmente se inicia la prueba de un programa introduciendo datos válidos, inválidos e incongruentes y observando como reacciona en cada ocasión.

MEBH

Documentación

La documentación es la guía o comunicación escrita en sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas y sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). Se divide en 3 partes: Documentación Interna Documentación Externa Manual del Usuario

MEBH

Documentación interna

• Son los comentarios que se añaden al código fuente para clarificarlo.

Documentación externa

Es todo el material creado y empleado en las diferentes fases del desarrollo del programa. Incluye:

Descripción del Problema Narrativo con la descripción de la solución Autor(s) Algoritmo (diagrama de flujo y/o pseudocódigo) Código Fuente (programa) Limitaciones del programa

Manual del usuario

escribe paso a paso la manera como funciona el programa, con el fin de que los usuarios pueda operarlo correctamente y obtener los resultados deseados.

MEBH

Implementación

El programa ya probado, revisado y mejorado se considera terminado y puede utilizarse con un alto grado de confianza para resolver los problemas que dieron origen a su creación. Si se está automatizando alguna tarea manual, ésta última se desecha para emplear solamente la programa.

MEBH

Mantenimiento

Es posible que el programa deba revisarse cada cierto tiempo para ajustes. Estos cambios pueden ser por la dinámica del problema, por la naturaleza del código, las exigencias del tiempo o las modernas necesidades que surgen frecuentemente, por lo que se considera que ningún programa es estático.

MEBH

Mantenimiento

Se enfatiza el hecho de que cualquier actualización o cambio en el programa deberá reflejarse en su documentación para que ésta mantenga su vigencia.-

METODOLOGÍA DE PROGRAMACIÓNUna metodología de programación es un conjunto o sistema de métodos, principios y reglas que permiten enfrentar de manera sistemática el desarrollo de un programa que resuelve un problema algorítmico.

Programación Convencional

Al inicio el desarrollo de software era artesanal en su totalidad, la fuerte necesidad de mejorar el proceso y llevar los proyectos a la meta deseada, tuvieron que importarse la concepción y fundamentos de metodologías existentes en otras áreas y adaptarlas al desarrollo de software. Esta nueva etapa de adaptación contenía el desarrollo dividido en etapas de manera secuencial que de algo mejoraba la necesidad latente en el campo del software.

PROGRAMACION MODULAR

La programación modular es uno de los métodos de diseño más flexibles y potentes para mejorar la productividad de un programa. En programación modular, el programa se divide en módulos (partes independientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos.

Programación estructurada

• Las tres estructuras básicas en este tipo de programación son:

– Secuenciación

– Selección

– Repetición

Estructura secuencial

• Es la ejecución de una secuencia de instrucciones en el orden que aparecen, de tal manera que se ejecutan una sola vez.– Ejemplo

En una página web para explicar el concepto de oración simple, la estructura de secuencia estará marcada en su inicio por la etiqueta <HTML> y en su término por </HTML>.

Estructura de selección

• Permite la selección de una o varias acciones alternativas, dependiendo de la decisión del usuario o de una decisión en el flujo del programa.– Ejemplo

En la página web de oración simple se puede dar al usuario la oportunidad de ir a una explicación más profunda sobre cierto término, por ejemplo: la composición del predicado.

Estructura de repetición

• Hace posible la ejecución repetida de una o más instrucciones – Ejemplo

• En la página web de oración simple se puede incluir un video o audio que se repita constantemente al momento de seleccionarlo o desde la primera vez que se carga la página.

Programación Orientado a Objetos (POO).

-El significado de Orientado a Objetos nace como un conjunto de practicas que definen un estilo de programación.- Los seres humanos perciben el mundo como si estuviera formado por objetos: mesas, sillas, computadoras, coches, cuentas bancarias, etc. Donde conciente o inconscientemente tienden a organizarlos, clasificarlos, relacionarlos entre si, y hasta extraen las características más importantes dependiendo de lo que quieren hacer con ellas.

Programación Orientada a Objetos

• Definición:La POO es un estilo de programación, donde todos los elementos que forman parte del problema se conciben como objetos, definiendo cuales son sus atributos y comportamiento, como se relacionan entre sí y como están organizadas.

Estructura Interna de un Objeto:

Atributos: Define el estado del objeto

Métodos: Define el comportamiento del objeto

Las clases y los objetos están en todas partes

Vehículo

Animal

Figura

• ConceptoGeneralmente, una clase se puede definir como una descripción abstracta de un grupo de objetos, cada uno de los cuales tiene una serie de atributos, un estado específico y es capaz de realizar una serie de operaciones.

Clases

Atributos Operaciones Comportamiento

Lavadoramarcamodelocapacidad...

ProgramarPonerRopaCerrarPuertaLavar

Objetos

• Concepto:Un objeto, no es más que una instancia de una clase. La instancia de una clase significa definir un objeto dándole valores a sus atributos y comportamiento, y realizando operaciones permitidas por la clase.

Valores de los atributos Estado Identidad

ID:Lavadora

marca=“Lapava”capacidad=5estado=enjuagando

MAESTRIA EN TELECOMUNICACIONESMAESTRIA EN TELECOMUNICACIONES

CARACTERISTICAS DE LA POO

Abstracción:La Abstracción Básicamente es la capacidad de separar los elementos para poder verlos de forma singular.

Encapsulación:

La encapsulación se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dándole al programador acceso sólo a lo que necesita.

Herencia:La herencia es la capacidad que tiene una clase de derivar las propiedades y métodos de otra.

Clase:La clase es solo el plano del que después podremos construir el objeto.

Objeto Es la consolidación de una clase.

44

HERRAMIENTAS PRINCIPALESDFDEs un programa de libre disposición para ayuda al diseño e implementación de algoritmos expresados en diagramas de flujo (DF).

PSEINTPSeInt, es la abreviatura de Pseudocode Interpreter, Intérprete de Pseudocódigo. El programa utiliza pseudocódigo, un lenguaje de programación ficticio cuya principal misión es que el programador pueda centrarse en los aspectos lógicos de la programación.

JAVANETBEANS Es un paquete de desarrollo de java que nos genera documentación sobre cada proyecto en una jerarquía de árbol.

45

APLICACIÓN

Los diagramas de flujo (también llamados DFD) sirve para representar algoritmos y procesos similares que resuelven problemas a través de un Computador. DFD nos permite enriquecer y completar esos diagramas DFD incluyendo multitud de elementos y guardándolos después en el disco o imprimiéndolos mediante una impresora.

46

GUIA DE LABORATORIOAplicaremos el programa DFD para hallar la suma de dos números naturales.

47

GUIA DE LABORATORIOAparecerá la ventana del programa, la cual se detalla a continuación

48

GUIA DE LABORATORIOElabore diagrama de flujo que lea desde el teclado dos números cualesquiera y realice la suma de estos, posteriormente visualice el resultado en pantalla.

INICIO

FIN

X , Y

R=X + Y

R

49

GUIA DE LABORATORIOLos resultados se verán en la siguiente ventana

Gracias por su atención

15/04/23 1 50