Algoritmos (1)

Page 1

Datos Personales ALUMNOS: Fátima Aguirre Bances Héctor Alonso Dávila Guevara Oscar llacsahuanga Uchofen Olenka Ramos Zapata GRADO Y SECCION:

4to “A” TEMA: Algoritmos


INDICE 1) Algoritmos 2) pseudoc贸digos 3) Free DFD 4) Diagrama de flujo de datos


DEDICATORIA

Queremos dedicarle este trabajo a dios que nos ha dado la vida y fortaleza para terminar este proyecto de investigación, a nuestros padres por estar ahí cuando más los más los necesitamos en especial a nuestras madres por su ayuda y constante cooperación.


ALGORITMOS Concepto: En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algoritmos y este a su vez del matemático persa Al-Juarismi1 ) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia. En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el producto, el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema de ecuaciones lineales.


DEFINICION FORMAL En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un cálculo o un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida). Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo. A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos. Esto fue realizado por Alonzo Church en 1936 con el concepto de "calculabilidad efectiva" basada en su cálculo lambda y por Alan Turing basándose en la máquina de Turing. Los dos enfoques son equivalentes, en el sentido en que se pueden resolver exactamente los mismos problemas con ambos enfoques. Sin embargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos.


En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos: Tiempo secuencial. Un algoritmo funciona en tiempo discreteado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual. En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como


aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la eliminación de Gauss-Jordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos. En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente, en un lenguaje de programación suficientemente general): Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial.


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. La descripción de un algoritmo usualmente se hace en tres niveles:  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.  Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.  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. 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.


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. 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.


Así el pseudocódigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema. Sistemas formales: La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones μ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación. Implementación: Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.


Variables: Son elementos que toman valores específicos de un tipo de datos concreto. La declaración de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables:  Mediante una sentencia de asignación.  Mediante un procedimiento de entrada de datos (por ejemplo: 'star') Estructuras secuenciales: La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constante a una variable (a ← 15) Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a ← a + 1) Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)


De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a ← c + b*2/4).


ALGORITMO CON FUNCIONES Un algoritmo se puede concebir como una función que transforma los datos de un problema (entrada) en los datos de una solución (salida). Más aun, los datos se pueden representar a su vez como secuencias de bits, y en general, de símbolos cualesquiera. Como cada secuencia de bits representa a un número natural (véase Sistema binario), entonces los algoritmos son en esencia funciones de los números naturales en los números naturales que sí se pueden calcular. Es decir que todo algoritmo calcula una función donde cada número natural es la codificación de un problema o de una solución. En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningún valor de salida, y podemos decir que la función queda indefinida para ese valor de entrada. Por esta razón se considera que los algoritmos son funciones parciales, es decir, no necesariamente definidas en todo su dominio de definición. Cuando una función puede ser calculada por medios algorítmicos, sin importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha función es computable. No todas las funciones entre secuencias datos son computables.


ANÁLISIS DE ALGORITMO Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada. El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Léxico, cuyos códigos pueden estar en el idioma del programador. Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. En este último caso, la finalización con


éxito del algoritmo no se podría definir como la terminación de este con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. De esta forma, mientras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el número de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia y, en cualquier otro caso, devolverá una mezcla de señales positivas y negativas. PASOS PARA DESARROLAR ALGORITMOS Pasos

Etapa

Descripción

1

Análisis del problema

Conducen al diseño detallado por medio un código escrito en forma de un algoritmo


2

Diseño de algoritmo

3

Codificación

Se implementa el algoritmo en un código escrito en un lenguaje de programación. Refleja las ideas desarrolladas en las etapas de análisis y diseño

4

Compilación y ejecución

Traduce el programa fuente a programa en código de máquina y lo ejecuta.

5

Verificación

Busca errores en las etapas anteriores y los elimina.

6

Depuración


7

Documentaciรณn

Son comentarios, etiquetas de texto, que facilitan la comprensiรณn del programa

EJEMPLOS DE ALGORITMOS 1erPROBLEMA: Cambiar la rueda pinchada de un automรณvil teniendo un gato mecรกnico en buen estado, una rueda de reemplazo y una llave inglesa. Inicio PASO 1. Aflojar los tornillos de la rueda pinchada con la llave inglesa. PASO 2.

Ubicar el gato mecรกnico en su sitio.

PASO 3. Levantar el gato hasta que la rueda pinchada pueda girar libremente. PASO 4.

Quitar los tornillos y la rueda pinchada.

PASO 5.

Poner rueda de repuesto y los tornillos.

PASO 6.

Bajar el gato hasta que se pueda liberar.

PASO 7.

Sacar el gato de su sitio.

PASO 8.

Apretar los tornillos con la llave inglesa.

Fin


2do PROBLEMA: Realizar la suma de los números 2448 y 5746.

Inicio PASO 1. Colocar los números el primero encima del segundo, de tal manera que las unidades, decenas, centenas, etc., de los números quede alineado. Trazar una línea debajo del segundo número. PASO 2. Empezar por la columna más a la derecha. PASO 3. Sumar los dígitos de dicha columna. PASO 4. Si la suma es mayor a 9 anotar un 1 encima de la siguiente columna a la izquierda y anotar debajo de la línea las unidades de la suma. Si no es mayor anotar la suma debajo de la línea.

PASO 5. Si hay más columnas a la izquierda, pasar a la siguiente columna a la izquierda y volver a 3. PASO 6. El número debajo de la línea es la solución. Fin


LOS SEUDOCÓDIGOS INTRODUCCIÓN La importancia de sistematizar procesos y crear programas de cómputo radica esencialmente en que estos se puedan utilizar como resolución de problemas similares en muchos casos, dicho de otra forma: la resolución del problema por medio de un programa informático debe funcionar para el uso de distintas variables y en diferentes lenguajes de cómputo. Esa es principalmente la función de un pseudocódigo. La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados. .


¿QUÉ ES UN PSEUDOCÓDIGO? El pseudocódigo (falso lenguaje) 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. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo. 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.


CARACTERÍSTICAS

Las principales características de este lenguaje son: 1. Se puede ejecutar en un ordenador (con un IDE como por ejemplo SLE, LPP, PilatoX, Maruga Script, Seudocódigo o PSeInt. Otros Ideas de consideración son Inter-P y Algoritmo) 2. Es una forma de representación sencilla de utilizar y de manipular. 3. Facilita el paso del programa al lenguaje de programación. 4. Es independiente del lenguaje de programación que se vaya a utilizar. 5. 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: 1. Instrucciones primitivas. 2. Instrucciones de proceso.... 3. Instrucciones de control. 4. Instrucciones compuestas. 5. Instrucciones de descripción.


Estructura a seguir en su realizaci贸n: 1. Cabecera. 1. Programa. 2. M贸dulo. 3. Tipos de datos. 4. Constantes. 5. Variables. 2. Cuerpo. 1. Inicio. 2. Instrucciones. 3. Fin.


OBJETIVO DEL SEUDOCODIGO: 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 utilizará para la codificación del mismo.


APLICACIONES Generalmente se utiliza pseudocódigo en los libros de texto y publicaciones científicas relacionadas con la informática y la computación numérica, para la descripción de algoritmos, de manera que todos los programadores puedan entenderlo, aunque no todos conozcan el mismo lenguaje de programación. Generalmente, en los libros de texto se adjunta una explicación que acompaña a la introducción y que explica las convenciones particulares en uso. El nivel de detalle del pseudocódigo puede, en algunos casos, acercarse a la de formalizar los idiomas de propósito general. Un programador que tiene que aplicar un algoritmo específico, sobre todo uno desfamiliarizado, generalmente comienza con una descripción en pseudocódigo, y luego "traduce" esa descripción en el lenguaje de programación meta y lo modifica para que interactúe correctamente con el resto del programa. Los programadores también pueden iniciar un proyecto describiendo la forma del código en pseudocódigo en el papel antes de escribirlo en su lenguaje de programación.


ESTRUCTURA: Cabecera: Cuerpo: Programa Inicio Modulo Instrucciones Tipos de datos Fin Constantes Variables


EL SEUDOCÓDIGO DEBE PERMITIR LA DESCRIPCIÓN: 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


EJEMPLO: Ejemplo1) Ingresar dos números por teclado y mostrar su suma: Análisis: N1

número uno

N2

número dos

S=N1+N2 Solución (seudocódigos) Inicio *N1, N2, S es entero *Ingresar “número dos”:N2 S=N1+N2 *Mostrar “El resultado “es: s *FIN


FUNCIONES Y PROCEDIMIENTOS Muchas personas prefieren distinguir entre funciones y procedimientos. Una función, al igual que una función matemática, recibe uno o varios valores de entrada y regresa una salida mientras que un procedimiento recibe una entrada y no genera ninguna salida aunque en algún caso podría devolver resultados a través de sus parámetros de entrada si estos se han declarado por referencia (ver formas de pasar argumentos a una función o procedimiento). En ambos casos es necesario dejar en claro cuáles son las entradas para el algoritmo, esto se hace comúnmente colocando estos valores entre paréntesis al principio o bien declarándolo explícitamente con un enunciado. En el caso de las funciones, es necesario colocar una palabra como regresar o devolver para indicar cuál es la salida generada por el algoritmo. Por ejemplo, el pseudocódigo de una función que permite calcular (un número elevado a potencia ).


VENTAJAS DE LOS PSEUDOCÓDIGOS Los pseudocódigos presentan los siguientes beneficios: 1. Ocupan mucho menos espacio en el desarrollo del problema. 2. Permite representar de forma fácil operaciones repetitivas complejas. 3. Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de programación formal. 4. Si se siguen las reglas de aventación se puede observar claramente los niveles en la estructura del programa. 5. En los procesos de aprendizaje de los alumnos de programación, éstos están más cerca del paso siguiente (codificación en un lenguaje determinado, que los que se inician en esto con la modalidad Diagramas de Flujo). 6. Mejora la claridad de la solución de un problema.


DE PROBLEMAS CON PSEUDOCÓDIGOS Ejemplos 1) Algoritmo que lea dos números, calculando y escribiendo el valor de su suma, resta, producto y división. Solución: Var numero1, numero2, resultado: numérica Inicio Escribir "Introduce el primer número" Leer numero1 Escribir "Introduce el segundo número" Leer numero2 Resultado<-numero1+numero2 Escribir resultado Resultado<-numero1-numero2 Escribir resultado Resultado<-numero1*numero2 Escribir resultado Resultado<-numero1/numero2 Escribir resultado Fin


2) Algoritmo que lea dos números y nos diga cuál de ellos es mayor o bien si son iguales (recuerda usar la estructura condicional SI) Solución: Var numero1, numero2: numérica Inicio Escribir "Introduce el primer número" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 Si (numero1>=numero2) Entonces Si (numero1=numero2) Entonces Escribir "los números " numero1 " " numero2 " son iguales" Sino Escribir numero1 " es el mayor de los dos" Fin Si Sino Escribir numero2 " es el mayor de los dos" Fin Si Fin


DI


DIAAGRAMA DE FLUJOS DE DATOS ¿Qué es un diagrama de flujos de datos? Es una representación gráfica del flujo de datos a través de un sistema. Un diagrama de flujo de datos también se puede utilizar para la visualización de procesamiento de datos (diseño estructurado). Es una práctica común para un diseñador dibujar un contexto a nivel de DFD que primero muestra la interacción entre el sistema y las entidades externas. Los diagramas de flujo de datos fueron inventados por Larry Constantina, el desarrollador original del diseño estructurado, basado en el modelo de computación de Martin y Estrin: "flujo gráfico de datos" . Los diagramas de flujo de datos (DFD) son una de las tres perspectivas esenciales de Análisis de Sistemas Estructurados y Diseño por Método SSADM. El patrocinador de un proyecto y los usuarios finales tendrán que ser informados y consultados en todas las etapas de una evolución del sistema. Con un diagrama de flujo de datos, los usuarios van a poder visualizar la forma en que el sistema funcione, lo que el sistema va a lograr, y cómo el sistema se pondrá en práctica. Los diagramas de flujo de datos pueden ser usados para proporcionar al usuario final una idea física de cómo resultarán los datos a última instancia, y cómo


tienen un efecto sobre la estructura de todo el sistema. La manera en que cualquier sistema es desarrollado, puede determinarse a través de un diagrama de flujo de datos. CONEXIONES ENTRE LOS ELEMENTOS DE DFD Conexiones permitidas   

ENTIDAD - PROCESO PROCESO - PROCESO PROCESO – ALMACÉN

Conexiones prohibidas   

ENTIDAD - ENTIDAD ALMACÉN - ALMACÉN ENTIDAD - ALMACÉN


OBJETIVOS FLUJO

DE

UN

DIAGRAMA

_Estructura la solución del independiente del lenguaje a utilizar.

DE

problema

_Separar la solución lógica de programación de la parte de reglas y sintaxis de codificación con esta división del trabajo se obtiene mayor eficiencia. _Dar una visión completa del problema al programador ya que pierde en un programa ya codificado. _Permitir una compresión más programa a otros programadores.

rápida

del


CARACTERÍSTICAS DE LOS NIVELES

Diagrama de contexto: nivel 0 En el diagrama de contexto se caracterizan todas las interacciones que realiza un sistema con su entorno (entidades externas), estas pueden ser otros sistemas, sectores internos a la organización, o factores externos a la misma. Se dibuja un sólo proceso que representa al sistema en cuestión y se escribe su nombre en dicha burbuja como un sustantivo común más adjetivos. De él solamente parten los flujos de datos que denotan las interrelaciones entre el sistema y sus agentes externos, no admitiéndose otros procesos ni almacenamientos en el dibujo. Resulta de gran utilidad para los niveles posteriores de análisis como herramienta de balanceo. Y es conocido como el Diagrama de Flujo de Datos DFD de Nivel "0".


Diagrama de nivel superior: nivel 1 En el diagrama de nivel superior se plasman todos los procesos que describen al proceso principal. En este nivel los procesos no suelen interrelacionarse directamente, sino que entre ellos debe existir algún almacenamiento o entidad externa que los una. Esta regla de construcción sirve como ayuda al analista para contemplar que en un nivel tan elevado de abstracción (DFD Nivel 1) es altamente probable que la información que se maneja requiera ser almacenada en el sistema aunque no esté especificado por un Requisito funcional, siendo en realidad un requisito no-funcional.

En un diagrama de nivel 2 o mayor, comienzan a explotarse las excepciones a los caminos principales de la información dado que aumenta progresivamente el nivel de detalle. De aquí en adelante se permiten los flujos entre procesos. El DFD (Diagrama De Flujo De Datos) nivel 2 puede considerarse el máximo para ser validado en forma conjunta con el usuario dado que en los niveles posteriores el alto grado de complejidad del diagrama puede resultar de muy difícil lectura para personas ajenas al equipo de sistemas.



SIMBOLOGÍA FLUJO

DE

LOS DIAGRAMAS DE

(También conocido como formas de diagrama de flujo, símbolos Mapa de Procesos de Negocio)


REGLAS PARA ESTRUCTURAR ACION DIAGRAMA DE FLUJO

El sentido de un diagrama de flujo generalmente es de arriba hacia abajo. Es un símbolo solo puede entrar una flecha de flujo si varias líneas se dirigen al mismo símbolo, se deben unir en una sola flecha.

Las líneas de flujo no deben cruzarse, para evitar los cruces se utilizan los conectores. De un símbolo excepto el de decisión, solo puede salir una línea de flujo. Los símbolos Terminal, Conector dentro de página y conector fuera de página solo pueden estar conectados al diagrama por una sola flecha, ya que por su naturaleza es imposible que tenga una entrada y una de salida. Los émbolos de decisión tendrán siempre una sola flecha de entrada y dos o tres flechas de salida según la cantidad de alternativas que se presentan.


CONSIDERACIONES SOBRE DIAGRAMA DE FLUJO

Un diagrama de flujo, puede tener tipos de errores diferentes: De forma: Se genera por no seguir las reglas establecidas, puede hacer el diagrama difícil interpretación, confundir el diagrama y hasta convertirlo en errado en cuanto ser lógica. De lógica: Son errores de estructura del diagrama en cuanto al arden puede ser de distinta gravedad, desde dejar de mostrar el resultado. O falta un cálculo hasta un error que determine que un programa nunca llegue a su fin. De objetivo: Es cuando un diagrama de flujo esta correcto en cuanto a su estructura y forma pero no soluciona el problema propuesto sino otro. Una vez terminado el diagrama de flujo, es necesario asegurarse de que funcione correctamente cumpliendo el objetivo fundamental, las condiciones específicas y las excepciones del problema propuesto a esto se le llama generalmente "corrida en frió" prueba de escritorio. Para ellos e selecciona algunos datos (creadas por el programador para fines de la prueba) que cubran todos los casos posibles en todas las condiciones. Tomando estos datos se recorre el diagrama de flujo símbolo a símbolo siguiendo la orden de cada uno


de ellos, todo esto se harรก a un lado del diagrama o en una hoja aparte dรกndole valores a variables y ejecutando operaciรณn que se indique.


COMPONENTES DE UN DIAGRAMA DE FLUJO

   

Proceso Flujo Almacén Terminador

PROCESO: El primer componente de diagrama de flujo de datos se conoce como Proceso. El proceso nuestra una parte del sistema que transforman Entradas y Salidas. Algunas analistas prefieren usar un ovalo o un rectángulo con esquinas redondeadas, otros prefieren usar un rectángulo. Las diferencias entre estas tres formas son puramente cosméticas, aunque obviamente es importante usar la misma forma de la manera consistente para representar todas las funciones de un sistema.


FLUJO: Un flujo se representa gráficamente por medio de una flecha que entra y sale de proceso; el flujo se usa para describir el movimiento, de bloques o paquetes de información de una parte del sistema a otra. Los flujos realmente representan Datos, es decir, Bits caracteres, mensajes, números, de puntos, flotante y los diversos tipos de información con los que las computadoras pueden tratar. Los flujos también muestran la dirección: Una cabeza de flecha en cualquier extremo(o posiblemente ambos) del flujo indica si los datos (o el material) se está moviendo hacia adentro a hacia fuera por ejemplo indica claramente que el número se está mandando hacia el proceso denominado validar número telefónicos, y el flujo denominado honorarios de entrega de chóferes. Los datos que se mueven a dicho flujo viajaran ya sea de un proceso a otro.


ALMACÉN: Se utiliza para modelar una colección de paquetes de datos en reposo. Se denota por dos líneas paralelas, de modo característico el nombre que se utiliza para identificar para los paquetes que entran y salen del almacén por medios de flujo. PEDIDOS: Para el analista con conocimiento de proceso de datos es tentador referirse a los almacenes como archivos o bases de datos; pro un almacén también pudiera consistir en datos almacenados también pudiera consistir en datos almacenados en tarjetas perforadas, microfilm, microfichas, discos ópticos, etc. y un almacén también puede ser en conjunto de fichas de papel en


una caja de cartón , nombres de fichas de papel en un directorio, diversos archivos en un archivero, o varias formas no computarizadas. Los almacenes se conectan por flujos a los procesos. Así el contexto en el que se muestra en un DFD (Diagrama de Flujo de Datos) es uno de los siguientes:  

Un flujo desde un almacén. UN flujo hacia un almacén.

TERMINADOR: Se representa como un rectángulo como los terminadores ser representa en entidades externas con las cuales el sistema se comunica, continuamente, puede ser una persona, o un grupo. Por ejemplo: una organización externa n o una agencia gubernamental, o un grupo o departamento que este dentro de la misma compañía u organización, pero fuera del control del sistema que se está modelando. En algunos casos, un terminador puede ser otro sistema, como algún otro sistema computacional con el cual se comunica este.


Existen tres cosas importantes que recordar acerca de los terminadores.

debemos

Son externos al sistema que se está modelando. _Es evidente que ni el analista ni el diseñador del sistema están en posibilidades de cambiar los contenidos de un terminador o la manera en que esta trabaja. _Las relaciones que existen entre lo terminadores no se muestran en el modelo DFD (Diagrama de Flujo de Datos).

REGLAS PARA DIAGRAMAS

LA

CREACIÓN

DE

1) Los diagramas de flujo deben escribirse de arriba hacia abajo y/o de Izquierda a derecha.

2) Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica su dirección que fluye la información procesos, se deben utilizar solamente líneas de flujo horizontal o vertical (nunca diagonales).

3) Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio


distinto, se pudiera realizar utilizando los conectores, se debe tener en cuenta que solo se van a utilizar conectores cuando sean estrictamente necesario.

4) No deben quedar líneas de flujo sin conectar.

5) Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.

6) Todos los símbolos pueden tener más de una línea de entrada, a excepto del símbolo final.

7) Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida.


Ejemplo de Diagrama de Flujo: Diagrama de flujo que encuentra la suma de los primeros 50 nĂşmeros naturales.


El quinto bloque es un símbolo de suma de decisiones y ramificaciones lo q hay dentro del bloque es una pregunta que se le hace a las valores que actualmente incluyen en el proceso.

¿Es N=50?, obviamente la respuesta es No, ya que N todavía es 1.Por lo que el flujo de nuestro programa se dirigirá hacia la parte en donde se observa la palabra No. Tercer bloque, este le sumara1 (N=N+1) y vuelve a llegar a este bloque, donde preguntará ¿es N=50? No todavía es 2 ha pues regresa al tercer bloque y vuelve hacer lo mismo así la suma los primeros 50 números naturales. Por ultimo indicaciones que le resultado será mostrado en la impresora.


EXPLICACIÓN DEL DIAGRAMA DE FLUJO 

El primer bloque indica el inicio del diagrama de flujo.

El

En este bloque se asume que las variables suman y N ha sido declarada previamente y las inicializa en o para comenzar al conteo y la suma de valores. Tercer bloque, es también un símbolo de procesos.

segundo bloque, es un símbolo de procesos.

En este paso se incrementa en 1 la variable N(N=N+1), por lo que en la primera pasada esta valdrá 1, ya que estaba inicializada en 0. Cuarto bloque, es exactamente lo mismo que el anterior.


Pero en este, ya se agrega el valor de N a la variable que contendrá la suma (en el primer caso contendrá 1, ya que N=1).

VENTAJAS DEL ENFOQUE DE FLUJOS DE DATOS 1) El enfoque de flujo de datos tiene cuatro ventajas principales sobre la explicación narrativa de la forma en que se mueven los datos a través del sistema .Las ventajas son. 2) Libertad para realizar en forma muy temprana la implementación de técnicas de sistema. 3) Una mayor comprensión de las interrelaciones de los sistemas y subsistemas. 4) Comunicación del conocimiento del sistema actual a los usuarios por medio de diagramas de flujo de datos. 4) Análisis de un sistema propuesto para determinar si han sido definidas los datos y procesos necesarios.


SÍMBOLOS USADOS EN EL DIAGRAMA DE FLUJO DE DATOS


SIGNIFICADO DE LOS SÍMBOLOS DE FLUJO El cuadrado doble es representado y usado para una actividad externa (otro departamento, un negocio, una persona, o una maquina) que puedan enviar datos y recibirlas del sistema. La entidad externa es llamada una fuente de destino de datos y es considerada externa al estudio, cada entidad externa es etiquetada con un nombre adecuado. La flecha muestra el movimiento de datos de un punto a otro , está señalada hacia suceden simultáneamente pueden ser representadas simplemente mediante el uso de flechas paralelas, debido a que una flecha representada datos acerca de una persona lugar o casa, también :Debe ser descrita con un nombre. Un rectángulo con esquinas redondeadas es usado para mostrar la aparición de un proceso de transformación. Los procesos siempre denotan un cambio o transformación de los datos.


USO DE DIAGRAMAS DE FLUJO DE DATOS Los diagramas de flujo de datos son útiles a lo largo del proceso de análisis y diseños, .Existen compromisos para decidir que tanto deben ser explotados de los flujos de datos. Se desperdiciara tiempo y se sacrificara compresibilidad si los diagramas de flujo de datos son exclusivamente complejos. Por otro lado, si los diagramas de flujo de datos están muy poco explotados, pueden ocurrir errores u omisiones que pueden eventualmente afectar el sistema que está en desarrollo. Por último, recuerde que los diagramas del sistema de flujo pueden ser usados para documentar niveles altos o bajos del análisis y para ayudar a sustentar la lógica subyacente en los flujos de datos de la organización. CARACTERÍSTICAS DE LOS DIAGRAMAS DE FLUJO DE DATOS   

Muestran que debe hacer el sistema sin referencias. Son diagramas explícitos y comprensibles. Dan la posibilidad de representan el sistema a diferentes niveles de complejidad, desde lo más global a lo más detallado solo requieren de 4 símbolos. Son fácil de mantenimiento, pues los cambios afectan solo algunos de sus elementos y no al todo.


¿CUÁLES SON LAS VENTAJAS DE LOS DIAGRAMAS DE FLUJO DE DATOS? Fácil lectura, con esto se constituye en un instrumento de mucha versatilidad. 

Facilitan la interacción Usuario-Analista.

¿CUÁLES SON LAS LIMITACIONES DE LOS DIAGRAMAS DE FLUJO DE DATOS? 

No permite recoger el comportamiento de sistema que deben responder a eventos en tiempos acotados. Para ello se usa el diagrama de transición de Estados. No permite dar cuenta de la de las relaciones entre los datos que se precisan almacenar .Para ello se usan el diagrama Entidad-Relación. No permite reflejar situaciones en las cuales es preciso dejar de manifiesto la necesaria concurrencia de dos o más flujo de datos para un subproceso pueda iniciar efectivamente su tarea. Para ello se utiliza la especificación de procesos. No permite recoger el contenido de los flujos de datos ni el contenido de los archivos .Para ello se utiliza el diccionario de datos.


CONCLUSIÓN: Muchas personas consideran a un algoritmo y a un diagrama de flujo de datos como herramienta de gran importancia para la programación de computadora y están en lo cierto para la resolución de problemas mediante algoritmos y diagramas de flujo se ha convertido hoy en día en un instrumento efectivo para el desarrollo de habilidades y destrezas lógicas de y creativas del pensamiento humano. Hoy diferentes formas de resolver un problema, esto es debido a la forma de razonar del ser humano, al igual que cada algoritmo, o diagrama de flujo de datos elaborado. El término lógica define la exposición de leyes, modos y formas aplicadas al razonamiento. El ser humano aplica la lógica para la resolución de problemas de diferentes tipos. Algunos instructores del área de computación no hacen mucho hincapié sobre el desarrollo de algoritmo y diagramas de flujo de datos.



FREE DFD ¿QUE ES FREE DFD? Free DFD es un editor e intérprete de diagramas de flujo. Permite editar, ejecutar y depurar algoritmos representados como diagramas de flujo. Este programa esta liberado bajo la licencia GPL, por lo tanto es software libre y no tiene restricciones para su uso bajo ninguna circunstancia, aunque se creó específicamente para el uso educativo. ESTRUCTURAS: Ciclo Mientras: El ciclo mientras, es una de las dos estructuras repetitivas con las que cuenta Free DFD, está representada por este símbolo dentro del programa:


Bot贸n Ciclo Mientras Para hacer uso de esta herramienta, basta con hacer clic en el bot贸n de la imagen anterior, y luego hacer clic en la parte del diagrama en donde queremos poner nuestro ciclo, una vez hecho esto, aparecer谩 algo similar a la siguiente imagen en la zona de edici贸n del programa:


Su funcionamiento es similar al de la decisión. Al insertar un nuevo ciclo mientras al DFD, aparecerán dos figuras. En la primera aparecen las letras MQ, que son las siglas de “Mientras que“, se colocará una condición de tipo booleana (ver operadores lógicos y relacionales y tipos de datos booleanos) que de considerarse verdadera, ejecutara las instrucciones que se encuentren entre la primera figura y la segunda figura en la que aparece “Fin (MQ)”. Al hacer doble clic sobre la primera figura, aparecerá un cuadro de dialogo como este


En la imagen anterior, se observa el cuadro de dialogo que aparece al hacer doble clic sobre la figura que contiene la palabra MQ, allí podemos observar que se nos pide una condición, que como se escribió anteriormente, se validará y en caso de que sea verdadera, repetirá las instrucciones que se encuentren dentro de las dos figuras que representan el ciclo mientras.


Tipos de Datos y Variables: Free DFD, es capaz de manejar básicamente tres tipos de datos, los cuales son números, cadenas y booleanos, asimismo en Free DFD se puede trabajar tanto con variables como con constantes, algunos ejemplos de constantes son: Numérica: 1234.6 Cadena: „Palabra‟ Booleana: .F. Si observamos la definición de estos valores, nos damos cuenta que las cadenas van entre comillas simples y que para los valores booleanos, se pone la letra mayúscula correspondiente y un punto antes y después de ponerla, de este modo: Verdadero ->

.V.

Falso ->

.F.


Los valores numéricos pueden ir entre -1*10²⁰⁰⁰ y 1*10²⁰⁰⁰ y los números más cercanos a 0, son 1*10⁻²⁰⁰⁰ y -1*10⁻²⁰⁰⁰. Los nombres de las variables, deben empezar siempre con una letra y puede ir seguida de letras, números y guiones bajos (_), los nombres de las variables no son sensibles a mayúsculas o minúsculas, por tanto VARIABLE es igual que variable o Variable. Cuando una variable recibe un valor por primera vez, el tipo de dato de esta será igual al tipo de dato del valor. La variables matriciales se distinguen porque sus índices se indican entre paréntesis: R(5), Matriz(2,K), vector(1,3,5).

Operadores de Free DFD: En el programa FreeDFD, se usan diferentes tipos de Operadores, entre los que encontramos


Matemáticos, Relacionales, Lógicos y con operaciones sobre Cadenas. A continuación, encontrarás una lista de los operadores, el tipo al que pertenecen y su sintaxis: OPERADORES MATEMÁTICOS: Operación

Símbolo

Sintaxis

Suma

+

valor1 + valor2

Resta

valor1 – valor2

Multiplicación

*

valor1 * valor2

División

/

valor1 / valor2

Residuo

mod

valor1 mod valor2

Potencia

^

valor1 ^ valor2

Raíz Cuadrada

sqrt

sqrt(valor)

Valor Absoluto

abs

abs(valor)

Seno

sin

sin(valor)

Coseno

cos

cos(valor)


Operación

Símbolo

Sintaxis

Tangente

tan

tan(valor)

Arco Seno

asin

asin(valor)

Arco Coseno

acos

acos(valor)

Arco Tangente

atan

atan(valor)

Seno Hiperbólico

sinh

sinh(valor)

Coseno Hiperbólico

cosh

cosh(valor)

Tangente Hiperbólico

tanh

tanh(valor)

Logaritmo Decimal

log

log(valor)

Logaritmo Neperiano

ln

ln(valor)

Exponencial de e

exp

exp(valor)

Número Aleatorio

random

random(valor)

Entero más cercano

round

round(valor)

Parte entera

trunc

trunc(valor)


OPERADORES RELACIONALES:

Operaci贸n

S铆mbolo

Sintaxis

Mayor que

>

valor1 > valor2

Menor que

<

valor1 < valor2

Mayor igual que

>=

valor1 >= valor2

Menor igual que

<=

valor1 <= valor2

Igual que

=

valor1 = valor2

Diferente de

!=

valor1 != valor2


Operadores Lógicos (Véase Tablas de Verdad y Puertas Lógicas):

Operación

Símbolo

Sintaxis

No

not

not valor

Y

and

valor1 and valor2

O

or

valor1 or valor2

O exclusivo

xor

valor1 xor valor2

No Y

nand

valor1 nand valor2

No O

nor

valor1 nor valor2

No O exclusivo

xnor

valor1 xnor valor2


Tanto los operadores relacionales como los operadores lógicos, retornan valores de tipo lógico o booleano, en el caso de FreeDFD, retornan “.V.” (Verdadero o 1) o “.F.” (Falso o 0). OPERADORES CON CADENAS Para este caso tenemos dos operadores que podemos usar en FreeDFD, que son: Obtener la longitud de una cadena: len. Por ejemplo: („hola‟) es igual a 4, que es la cantidad de caracteres en la cadena. Obtener parte del contenido de una cadena: substring. Por ejemplo: substring(„pingüino‟,5,4) es igual a „üino‟, ya que “ü”, es el carácter número 5 de la palabra “pingüino” y el operador devolverá los cuatro caracteres siguientes al quinto incluido el mismo. DECISIÓN: Una decisión es una estructura de control, como su nombre lo indica sirve para tomar decisiones simples en un lenguaje de programación o en este caso en un DFD, se representa por este símbolo

Botón de Decisión


Una vez pulsas el botón y decides donde quieres poner tu decisión, debes obtener algo como esto:

Al interior del rombo, se pondrá una condición, si la condición se evalúa como verdadera (ver operadores que retornen valores de tipo booleano como los relacionales y los lógicos), se ejecutara el código que se encuentre en la línea que diga “Si” a uno de los lados del rombo, en caso contrario se ejecutará lo de la línea que dice “No”. El lado al que se ubica cada respuesta se puede cambiar fácilmente. Damos doble clic sobre la figura y obtendremos una ventana similar a esta:


En el campo condición se pondrá la condición a evaluar, que en caso de ser verdadera, ejecutara el código que se encuentre por la línea en la que está la palabra “si”. En la parte de la ventana en la que dice “Condición verdadera”, se puede cambiar a qué lado queda la palabra “si” y la palabra “no”. Locura Entrada Lectura, es la herramienta que tenemos para hacer el ingreso de forma dinámica de valores en el programa y definir variables, para hacer uso de esta herramienta, pulsamos sobre el botón con este símbolo:


Bot贸n para Lectura Una vez lo pulsamos, seleccionamos la posici贸n en donde lo queremos poner en nuestro diagrama de flujo:

Lectura en el Diagrama Luego daremos sobre el s铆mbolo doble clic y nos aparecer谩 una ventana, en la cual debemos poner el nombre de la variable en la cual vamos a almacenar el valor que ingresemos:


Y cuando ejecutemos el programa, nos aparecerá una ventana como la que aparece a continuación donde ingresaremos el valor que será almacenado en la variable, las variables numéricas se ingresan normalmente y las cadenas deben llevar las comillas simples:

Si se ingresa incorrectamente una cadena, se tomará como una variable, y en caso de no existir previamente aparecerá un mensaje de error, por tanto es importante tener en cuenta que cuando se va a ingresar un valor de tipo cadena, se requiere que sea entre comillas simples. Salida:


La salida por pantalla es el único medio que tenemos para obtener respuestas sobre los procesos realizados con Free DFD, se representan por este símbolo en el programa:

Para usar esta herramienta, basta con activar el botón y hacer clic en la zona del DFD en la que queremos poner una salida, para que nos quede de este modo:

Una vez realizado esto, damos doble clic sobre el símbolo y nos aparecerá una ventana como la de la imagen a continuación, en la cual podemos poner


variables, cadenas o cadenas concatenadas con variables:

Una vez ejecutado el programa, nos debe aparecer una ventana con nuestro mensaje, tal y como la siguiente (para saber mรกs sobre el hola mundo):


Asignación:

Esta herramienta se usa, para crear variables de forma estática en la aplicación, es decir en nuestro DFD, así también para asignar valores de resultados a las variables de operaciones realizadas previamente. Para usar esta herramienta se debe seleccionar el botón correspondiente y hacer clic en la línea dentro del DFD donde queremos ubicarla, para que nos quede de este modo:


Una vez realizado esto, para realizar alguna asignación, debemos dar sobre clic sobre el rectángulo y nos aparecerá una ventana como esta:

En la ventana podemos apreciar 6 cuadros en los que podemos ingresar texto, en los cuadros de la izquierda ponemos los nombres de las variables a las cuales les vamos a asignar los valores, y en los cuadros de la derecha, ponemos los valores en sí. Recordemos que podemos poner también operaciones, que pueden ser de diversos tipos, tanto numéricas como con cadenas de caracteres


Observemos un ejemplo:


En este ejemplo estamos definiendo la variable “a”, a la cual le asignamos un valor de 10. Posteriormente creamos la variable “b”, la cual tiene por valor el resultado de sumar a 12 el valor de “a”, por tanto el valor de “b” es 22. Y finalmente le asignamos a “b” el valor de “a” por el valor que actualmente tiene sí misma, es decir 10 por 22, por tanto el valor final de “b” es 220. En el espacio de trabajo el resultado sería este:


Los objetos de Free DFD, son los que aparecen en dicha sección de la barra de herramientas.

El primer botón, se denomina Cursor, cuando este botón se encuentra activado, se pueden hacer selecciones en el área de edición del programa. El segundo botón, se denomina Asignación, y sirve para hacer definición de variables en el programa de manera estática. El tercer botón, se denomina Ciclo Mientras, sirve para crear una estructura repetitiva dentro del programa y ejecutar una serie de instrucciones muchas veces seguidas, mientras se considere una condición como verdadera. El cuarto botón, se denomina Ciclo Para, sirve para crear del mismo modo que el ciclo mientras una estructura repetitiva dentro del programa, para que se repitan una serie de instrucciones, solo que la condición es diferente. El quinto botón, se denomina Decisión, sirve para tomar decisiones simples dentro del programa, se ingresa dentro de la “decisión”, una condición


y dependiendo de si esa condición es falsa o verdadera, el programa ejecutara una serie de instrucciones diferentes en cada caso. El sexto botón, se denomina Lectura o Entrada, sirve para realizar definiciones de variables de manera dinámica, en el momento en que el programa está en ejecución. El séptimo botón, se denomina Salida, sirve para mostrar salidas por pantalla de los diferentes procesos que se realizan con el programa, es el único medio que tenemos para obtener resultados. El octavo botón, se denomina Llamada, sirve para hacer llamadas a otros subprogramas.




FREE DFD


BIBLIOGRAFIA https://es.wikipedia.org/wiki/Algoritmo http://www.monografias.com/trabajos15/algoritm os/algoritmos.shtml http://www.virtual.unal.edu.co/cursos/ingenieria/2 001839/modulo1/cap_02/leccion103.htm https://es.wikipedia.org/wiki/Diagrama_de_flujo http://www.aiteco.com/que-es-un-diagrama-deflujo/ https://es.wikipedia.org/wiki/Pseudoc%C3%B3dig o

http://arantxa.ii.uam.es/~jmmartinez/Pseudocodig o.htm


http://www.taringa.net/posts/info/4734279/Compil ador-de-Diagramas-de-Flujo-Free-DFD.html


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.