miércoles, 31 de agosto de 2011

ORGANIZADORES GRÁFICOS DIAGRAMAS DE FLUJO

Se conocen con este nombre las técnicas utilizadas para representar esquemáticamente bien sea la secuencia de instrucciones de un algoritmo o los pasos de un proceso. Esta última se refiere a la posibilidad de facilitar la representación de cantidades considerables de información en un formato gráfico sencillo. Un algoritmo esta compuesto por operaciones, decisiones lógicas y ciclos repetitivos que se representan gráficamente por medio de símbolos estandarizados por la ISO [1]: óvalos para iniciar o finalizar el algoritmo; rombos para comparar datos y tomar decisiones; rectángulos para indicar una acción o instrucción general; etc. Son Diagramas de Flujo porque los símbolos utilizados se conectan en una secuencia de instrucciones o pasos indicada por medio de flechas.
Utilizar algoritmos en el aula de clase, para representar soluciones de problemas, implica que los estudiantes: se esfuercen para identificar todos los pasos de una solución de forma clara y lógica (ordenada); se formen una visión amplia y objetiva de esa solución; verifiquen si han tenido en cuenta todas las posibilidades de solución del problema ; comprueben si hay procedimientos duplicados; lleguen a acuerdos con base en la discusión de una solución planteada; piensen en posibles modificaciones o mejoras (cuando se implementa el algoritmo en un lenguaje de programación, resulta más fácil depurar un programa con el diagrama que con el listado del código).

Adicionalmente, los diagramas de flujo facilitan a otras personas la comprensión de la secuencia lógica de la solución planteada y sirven como elemento de documentación en la solución de problemas o en la representación de los pasos de un proceso.

Diagrama de Flujo que representa un algoritmo que lee tres notas para cada uno de los 22
estudiantes de un curso, las promedia y determina si el estudiante aprobó la asignatura


Diagrama de Flujo que representa el proceso que se sigue
 al presentar una Acción de Tutela en Colombia
NOTAS DEL EDITOR:
[1] La estandarización de los símbolos para la elaboración de Diagramas de Flujo tardó varios años. Con el fin de evitar la utilización de símbolos diferentes para representar procesos iguales, la Organización Internacional para la Estandarización (ISO, por su sigla en inglés) y el Instituto Nacional Americano de Estandarización (ANSI, por su sigla en inglés), estandarizaron los símbolos que mayor aceptación tenían en 1985. Los siguientes son los principales símbolos para elaborar Diagramas de Flujo:
Inicio/Final
Se utiliza para indicar el inicio y el final de un diagrama; del Inicio sólo puede salir una línea de flujo y al Final sólo debe llegar una línea.
Decisión
Indica la comparación de dos datos y dependiendo del resultado lógico (falso o verdadero) se toma la decisión de seguir un camino del diagrama u otro.
Entrada General
Entrada/Salida de datos en General (en esta guía, solo la usaremos para la Entrada).
Iteración
Indica que una instrucción o grupo de instrucciones deben ejecutarse varias veces.
Entrada por teclado
Instrucción de entrada de datos por teclado. Indica que el computador debe esperar a que el usuario teclee un dato que se guardará en una variable o constante.
Salida Impresa
Indica la presentación de uno o varios resultados en forma impresa.
Llamada a subrutina
Indica la llamada a una subrutina o procedimiento determinado.
Salida en Pantalla
Instrucción de presentación de mensajes o resultados en pantalla.
Acción/Proceso General
Indica una acción o instrucción general que debe realizar el computador (cambios de valores de variables, asignaciones, operaciones aritméticas, etc).
Conector
Indica el enlace de dos partes de un diagrama dentro de la misma página.
Flujo
Indica el seguimiento lógico del diagrama. También indica el sentido de ejecución de las operaciones.
Conector
Indica el enlace de dos partes de un diagrama en páginas diferentes.

El 85% de los anunciantes se decanta por los banners en sus campañas a través del móvil

A pesar de ser el formato más veterano de la publicidad online, el banner vuelve a cobrar protagonismo gracias al boom de los dispositivos de última generación.
Tanto es así que el 85% de los anunciantes los utiliza para el lanzamiento de sus campañas a través del móvil, según un estudio elaborado por madvertise, compañía especializada en formatos de publicidad para dispositivos móviles.
De hecho, según el informe, los teléfonos móviles se han revelado como uno de los canales publicitarios más efectivos, convirtiendo al banner, que concentra la mayor parte de las inversiones, en su formato publicitario por excelencia. Según la Interactive Advertising Bureau (IAB Spain) y la Asociación de Marketing Móvil de España (MMA), las inversiones en publicidad gráfica en Internet móvil ascendieron a un total de 9,3 millones de euros durante el pasado año.
Y es que, según madvertise, hacer click en un banner a través del móvil es mucho más eficaz que pinchar en uno de una web tradicional. El tamaño de la pantalla, junto con su interactividad son algunos de los factores que explican su mayor efectividad frente a los tradicionales anuncios de la red.
Según el director general de madvertise España, Andreas Akesson, “la publicidad en internet móvil consigue llegar de una manera más directa y certera al consumidor. De ahí que en los próximos años veremos cómo los banners en aplicaciones para móvil seguirán ganando terreno frente a los utilizados en páginas web”.
Ubicación y creatividad, la clave de todo
Por otro lado, según el estudio de madvertise, la irrupción de teléfonos inteligentes como smartphones o de las últimas tabletas ha permitido la aparición de banners de muy diversos tipos, desde estáticos a interactivos, pasando por aquéllos más innovadores que reaccionan con el toque táctil de los usuarios.
En este sentido, son la creatividad de su diseño y ubicación los factores determinantes a la hora de que los consumidores ignoren o presten atención a la publicidad mobile. Y es que teniendo en cuenta que una simple animación puede incrementar el nivel de respuesta en un 25%, cuantos más colores llamativos se utilicen y más se incite a la participación de los usuarios, mucho mejor.
Respecto a la ubicación, el estudio afirma que los lugares más adecuados para la colocación de los banners siguen siendo la parte superior e inferior ya que aquellos anuncios que aparecen a los lados de la pantalla tienen más posibilidades de ser ignorados por los usuarios y considerados un “incordio”.
Además, el informe insiste en que los nuevos dispositivos móviles se están abriendo paso gradualmente como uno de los medios preferidos por las marcas para interactuar con sus consumidores. En España la penetración de Internet móvil supera ya el 25% sobre el total de usuarios con teléfono.

miércoles, 17 de agosto de 2011

Diagramas de flujo

Un diagrama de flujo es una representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como la programación, la economía, los procesos industriales y la psicología cognitiva. Estos diagramas utilizan símbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de término.

Características

Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término. Además, todo camino de ejecución debe permitir llegar desde el inicio hasta el término.
Las siguientes son acciones previas a la realización del diagrama de flujo:
  • Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el dueño o responsable del proceso, los dueños o responsables del proceso anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.
  • Definir qué se espera obtener del diagrama de flujo.
  • Identificar quién lo empleará y cómo.
  • Establecer el nivel de detalle requerido.
  • Determinar los límites del proceso a describir.
Los pasos a seguir para construir el diagrama de flujo son:
  • Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.
  • Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
  • Si el nivel de detalle definido incluye actividades menores, listarlas también.
  • Identificar y listar los puntos de decisión.
  • Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
  • Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.

Ventajas de los diagramas de flujo

  • Favorecen la comprensión del proceso a través de mostrarlo como un dibujo. El cerebro humano reconoce fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.
  • Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos redundantes, los flujos de los re-procesos , los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.
  • Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.
  • Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.

Tipos de diagramas de flujo

  • Formato vertical: En él el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
  • Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
  • Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.
  • Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

Simbología y significado

  • Óvalo: Inicio y término (Abre y/o cierra el diagrama).
  • Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimentos).
  • Rombo: Decisión (Formula una pregunta o cuestión).
  • Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).
  • Triangulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).
  • Triangulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

Cursograma

Se trata de la más común y práctica entre todas las clases de flujogramas. Describe el flujo de información en un ente u organización, sus procesos, sistemas administrativos y de control. Permite la impresión visual de los procedimientos y una clara y lógica interpretación.

Simbología y Normas del Cursograma

  • Círculo: Procedimiento estandarizado.
  • Cuadrado: Proceso de control.
  • Línea Ininterrumpida: Flujo de información vía formulario o documentación en soporte de papel escrito.
  • Línea Interrumpida: Flujo de información vía formulario digital.
  • Rectángulo: Formulario o documentación. Se grafica con un doble de ancho que su altura.
  • Rectángulo Pequeño: Valor o medio de pago (cheque, pagaré, etcétera).Se grafica con un cuádruple de ancho que su altura, siendo su ancho igual al de los formularios.
  • Triángulo (base inferior): Archivo definitivo.
  • Triángulo Invertido (base superior): Archivo Transitorio.
  • Semi-óvalo: Demora.
  • Rombo: División entre opciones.
  • Trapezoide: Carga de datos al sistema.
  • Elipsoide: Acceso por pantalla.
  • Hexágono: Proceso no representado.
  • Pentágono: Conector.
  • Cruz de Diagonales: Destrucción de Formularios.

Algoritmos

¿Qué es un algoritmo?
Una definición informal (no se considera aquí una definición formal, aunque existe): conjunto finito de reglas que dan una secuencia de operaciones para resolver todos los problemas de un tipo dado. De forma más sencilla, podemos decir que un algoritmo es un conjunto de pasos que nos permite obtener un dato. Además debe cumplir estas condiciones:
  · Finitud: el algoritmo debe acabar tras un número finito de pasos. Es más, es casi fundamental que sea en un número razonable de pasos.
  · Definibilidad: el algoritmo debe definirse de forma precisa para cada paso, es decir, hay que evitar toda ambigüedad al definir cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemático o de programación para un computador.
  · Entrada: el algoritmo tendrá cero o más entradas, es decir, cantidades dadas antes de empezar el algoritmo. Estas cantidades pertenecen además a conjuntos especificados de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros, naturales, fraccionarios, etc. Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su interpretación por el computador.
 · Salida: el algoritmo tiene una o más salidas, en relación con las entradas.
 · Efectividad: se entiende por esto que una persona sea capaz de realizar el algoritmo de modo exacto y sin ayuda de una máquina en un lapso de tiempo finito.

A menudo los algoritmos requieren una organización bastante compleja de los datos, y es por tanto necesario un estudio previo de las estructuras de datos fundamentales. Dichas estructuras pueden implementarse de diferentes maneras, y es más, existen algoritmos para implementar dichas estructuras. El uso de estructuras de datos adecuadas pueden hacer trivial el diseño de un algoritmo, o un algoritmo muy complejo puede usar estructuras de datos muy simples.
Uno de los algoritmos más antiguos conocidos es el algoritmo de Euclides. El término algoritmo proviene del matemático Muhammad ibn Musa al-Khwarizmi, que vivió aproximadamente entre los años 780 y 850 d.C. en la actual nación Iraní. El describió la realización de operaciones elementales en el sistema de numeración decimal. De al-Khwarizmi se obtuvo la derivación algoritmo.

- Clasificación de algoritmos
  * Algoritmo determinista: en cada paso del algoritmo se determina de forma única el siguiente paso.
  * Algoritmo no determinista: deben decidir en cada paso de la ejecución entre varias alternativas y agotarlas todas antes de encontrar la solución.
Todo algoritmo tiene una serie de características, entre otras que requiere una serie de recursos, algo que es fundamental considerar a la hora de implementarlos en una máquina. Estos recursos son principalmente:
 · El tiempo: período transcurrido entre el inicio y la finalización del algoritmo.
 · La memoria: la cantidad (la medida varía según la máquina) que necesita el algoritmo para su ejecución.

Obviamente, la capacidad y el diseño de la máquina pueden afectar al diseño del algoritmo.
En general, la mayoría de los problemas tienen un parámetro de entrada que es el número de datos que hay que tratar, esto es, N. La cantidad de recursos del algoritmo es tratada como una función de N. De esta manera puede establecerse un tiempo de ejecución del algoritmo que suele ser proporcional a una de las siguientes funciones:
  • 1 : Tiempo de ejecución constante. Significa que la mayoría de las instrucciones se ejecutan una vez o muy pocas.
  • logN : Tiempo de ejecución logarítmico. Se puede considerar como una gran constante. La base del logaritmo (en informática la más común es la base 2) cambia la constante, pero no demasiado. El programa es más lento cuanto más crezca N, pero es inapreciable, pues logN no se duplica hasta que N llegue a N2.
  • N : Tiempo de ejecución lineal. Un caso en el que N valga 40, tardará el doble que otro en que N valga 20. Un ejemplo sería un algoritmo que lee N números enteros y devuelve la media aritmética.
  • N·logN : El tiempo de ejecución es N·logN. Es común encontrarlo en algoritmos como Quick Sort y otros del estilo divide y vencerás. Si N se duplica, el tiempo de ejecución es ligeramente mayor del doble.
  • N2 : Tiempo de ejecución cuadrático. Suele ser habitual cuando se tratan pares de elementos de datos, como por ejemplo un bucle anidado doble. Si N se duplica, el tiempo de ejecución aumenta cuatro veces. El peor caso de entrada del algoritmo Quick Sort se ejecuta en este tiempo.
  • N3 : Tiempo de ejecución cúbico. Como ejemplo se puede dar el de un bucle anidado triple. Si N se duplica, el tiempo de ejecución se multiplica por ocho.
  • 2N : Tiempo de ejecución exponencial. No suelen ser muy útiles en la práctica por el elevadísimo tiempo de ejecución. El problema de la mochila resuelto por un algoritmo de fuerza bruta -simple vuelta atrás- es un ejemplo. Si N se duplica, el tiempo de ejecución se eleva al cuadrado.
  * Algoritmos polinomiales: aquellos que son proporcionales a Nk. Son en general factibles.
  * Algoritmos exponenciales: aquellos que son proporcionales a kN. En general son infactibles salvo un tamaño de entrada muy reducido.
- Notación O-grande
En general, el tiempo de ejecución es proporcional, esto es, multiplica por una constante a alguno de los tiempos de ejecución anteriormente propuestos, además de la suma de algunos términos más pequeños. Así, un algoritmo cuyo tiempo de ejecución sea T = 3N2 + 6N se puede considerar proporcional a N2. En este caso se diría que el algoritmo es del orden de N2, y se escribe O(N2)
Los grafos definidos por matriz de adyacencia ocupan un espacio O(N2), siendo N el número de vértices de éste.
La notación O-grande ignora los factores constantes, es decir, ignora si se hace una mejor o peor implementación del algoritmo, además de ser independiente de los datos de entrada del algoritmo. Es decir, la utilidad de aplicar esta notación a un algoritmo es encontrar un límite superior del tiempo de ejecución, es decir, el peor caso.
A veces ocurre que no hay que prestar demasiada atención a esto. Conviene diferenciar entre el peor caso y el esperado. Por ejemplo, el tiempo de ejecución del algoritmo Quick Sort es de O(N2). Sin embargo, en la práctica este caso no se da casi nunca y la mayoría de los casos son proporcionales a N·logN. Es por ello que se utiliza esta última expresión para este método de ordenación.
Una definición rigurosa de esta notación es la siguiente:
Una función g(N) pertenece a O(f(N)) si y sólo si existen las constantes c0 y N0 tales que:
|g(N)| <= |c0·f(N)| , para todo N >= N0.

- Clasificación de problemas
Los problemas matemáticos se pueden dividir en primera instancia en dos grupos:
  * Problemas indecidibles: aquellos que no se pueden resolver mediante un algoritmo.
  * Problemas decidibles: aquellos que cuentan al menos con un algoritmo para su cómputo.

Sin embargo, que un problema sea decidible no implica que se pueda encontrar su solución, pues muchos problemas que disponen de algoritmos para su resolución son inabordables para un computador por el elevado número de operaciones que hay que realizar para resolverlos. Esto permite separar los problemas decidibles en dos:

  * intratables: aquellos para los que no es factible obtener su solución.
  * tratables: aquellos para los que existe al menos un algoritmo capaz de resolverlo en un tiempo razonable.
Los problemas pueden clasificarse también atendiendo a su complejidad. Aquellos problemas para los que se conoce un algoritmo polinómico que los resuelve se denominan clase P. Los algoritmos que los resuelven son deterministas. Para otros problemas, sus mejores algoritmos conocidos son no deterministas. Esta clase de problemas se denomina clase NP. Por tanto, los problemas de la clase P son un subconjunto de los de la clase NP, pues sólo cuentan con una alternativa en cada paso.