Bienvenidos a este nuevo capítulo de este Curso Gratis de Programación #2 Algoritmos. Para poder enunciar un algoritmo que se pueda codificar en un lenguaje de programación, debemos asumir que quién interpretará el algoritmo (la CPU) podrá realizar solamente acciones muy básicas.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Características de un Algoritmo computacional
Si bien en los lenguajes de programación nos encontramos en que podemos utilizar multitud de acciones predefinidas, la mayoría están asociadas al contexto de ejecución o dicho de otro modo, la mayoría de acciones que se pueden realizar mediante un lenguaje de programación son de “forma” y no de “fondo” en cuanto a la resolución esencial de un problema. Digamos que nos concentraremos solamente en aquellas acciones que son comunes a cualquier lenguaje de programación y no contemplaremos ninguna acción que sea exclusiva de un lenguaje. Así podemos determinar que las acciones que serán permitidas en un algoritmo son las siguientes:
- Introducir un valor en una variable desde un dispositivo de entrada (el teclado por ejemplo)
- Mostrar en un dispositivo de salida un valor ya sea de una variable o un valor literal ( en la pantalla, por ejemplo)
- Almacenar un valor en una variable como resultado de una expresión (como se denomina una cálculo en el lenguaje de la programación)
- Bifurcar el flujo de ejecución entre dos alternativas, mediante una condición evaluada.
- Repetir parte del flujo normal de proceso de una manera condicional.
- Iterar, o sea repetir parte del flujo un número determinado de veces.
- Seleccionar un único flujo de proceso a ejecutar de un conjunto de flujos posibles.
Fases en la resolución de problemas – Metodología para crear un algoritmo:
Se debe plantear el método de resolución elegido mediante una construcción matemática denominada algoritmo. Un aspecto importante a tener en cuenta en el enunciado de un algoritmo es como se administrarán los datos definidos en el problema. Siempre que un evento (un acontecimiento, una verifcación, una medición, etc.) se pueda registrar de alguna forma, este evento se considerará como computable.
Al registro de un evento en un sistema informático se lo denomina dato. Podemos diferenciar en un algoritmo dos tipos de datos, las constantes y los datos variables. Analicemos un ejemplo: Si queremos hacer un simple algoritmo para calcular el perímetro de una circunferencia lo podríamos definir en los siguientes pasos:
1. Establecer como dato de entrada el radio de la circunferencia.
2. Establecer como fórmula de resolución: circunferencia = 2 x PI x radio
3. Establecer como dato de salida la circunferencia calculada.
En este caso tenemos dos datos perfectamente defnidos: radio y circunferencia, ambos son datos variables ya que no podemos saber de ninguna forma el valor exacto del radio, pues este valor va a depender de un evento que el usuario determinó, luego la circunferencia (que depende del valor del radio) tampoco puede ser conocida de antemano. Por eso en el cálculo a los datos se los incorpora en forma referencial a través de un nombre simbólico.
Por otra parte en la fórmula observamos dos datos que se requieren para el cálculo, el valor 2 y el valor PI (3,1415926…) ambos valores están perfectamente defnidos y no es posible que cambien ya que entonces el resultado obtenido sería incorrecto. Ambos valores son entonces constantes y se incorporan literalmente en el cálculo.
Además para enunciar este algoritmo se utilizará una herramienta de representación llamada diagrama o bien mediante un pseudocódigo. Veamos esto por partes:
Definición del Problema
Definir el problema: definir el qué, qué debo hacer, a qué debo ir enfocando mi algoritmo, a qué debo llevar mi solución. Sobre el qué definiremos el punto de parte del desarrollo a realizar. Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
El diseño de programas es una tarea difícil y es un proceso creativo. No existe un conjunto completo de reglas para indicar como escribir un programa, se darán a conocer las fases de resolución de un problema. Ejemplo: calcular la hipotenusa de un triángulo rectángulo. El problema está definido en el enunciado; corresponde a encontrar la forma de calcular la hipotenusa de un triángulo rectángulo.
Análisis del Problema
Analizar el problema: tomaremos cada uno de los detalles que componen el qué del problema, y analizamos cuál sería la solución más óptima. En este punto definimos cómo vamos a resolver el problema. Debe definirse cuál es el resultado o la solución esperada, los datos de entrada y qué debe hacer el programa para llegar a la solución. Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
- Los datos de entrada.
- Cuál es la información que se desea producir (salida)
- Los métodos y fórmulas que se necesitan para procesar los datos.
Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.
En este fase vamos a saber en qué consiste un triángulo rectángulo, qué partes lo componen y qué necesito encontrar. En la gráfica, puedo ver que un triángulo rectángulo está formado por un cateto a y un cateto b; además, vemos que la hipotenusa es el lado que cruza y une a los catetos. Entonces para encontrar la hipotenusa debemos conocer el valor de los catetos a y b.
Conociendo la teoría de triángulo, sabemos que a través del teorema de Pitágoras encontramos el valor de la hipotenusa a través de los catetos, así:
Diseño del Algoritmo
Diseñar el algoritmo: describimos todos los pasos del algoritmo a ejecutar. se diseña el algoritmo que permitirá resolver el problema. Las características de un buen algoritmo son:
- Debe tener un punto particular de inicio.
- Debe ser definido, 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.
Pasos para resolver el problema:
- Necesito el valor de los catetos.
- Elevar al cuadrado el valor de los catetos.
- Sumo los dos valores.
- Saco raíz cuadrada del resultado.
- Imprimo el valor de la hipotenusa.
Codificación
Codificación: se escribe el programa a partir del algoritmo diseñado previamente, utilizando un lenguaje de programación. El diseño del algoritmo es independiente del lenguaje de programación que se utilice para implementar el programa. La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel. Luego el programa fuente debe ser traducido a lenguaje máquina para la posterior ejecución de cada una de las instrucciones por parte del procesador de la computadora.
Prueba y Depuración (Verificación del programa)
Verificación y depuración: se comprueba que el programa obtenga los resultados esperados con una amplia variedad de datos de entrada. La depuración consiste en identificar y corregir los posibles errores que puedan encontrarse. Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.
La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuración, ya que de este trabajo depende el éxito de nuestra solución. Entonces probamos con entradas y salidas el funcionamiento adecuado de nuestro algoritmo. Esto se realiza antes de la implementación del algoritmo, para garantizar que se obtengan los resultados esperados. Prueba de escritorio:
Documentación
Documentación: deben describirse los pasos del proceso de resolución del problema e incluir diagramas de flujo, manuales de usuario, definición de requerimientos, etcétera. Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentación se divide en tres partes:
Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer más claro el entendimiento de un proceso.
- Documentación Externa: Se define en un documento escrito los siguientes puntos:
- Descripción del Problema
- Nombre del Autor
- Algoritmo (diagrama de flujo o pseudocódigo)
- Diccionario de Datos
- Código Fuente (programa)
Manual del Usuario: Describe paso a paso la manera cómo funciona el programa, con el fin de que el usuario obtenga el resultado deseado.
Mantenimiento
Mantenimiento: el programa debe actualizarse y modificarse siempre que sea necesario, para cumplir con las necesidades de cambios de los usuarios. Para facilitar el proceso de mantenimiento, es muy importante contar con documentación clara y precisa. Se lleva a cabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.
Diseño de algoritmos:
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. Consiste en efectuar una relación entre las etapas de la estructuración de forma que una etapa jerárquica y su inmediato inferior se relacionen mediante entradas y salidas de información. Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa. La utilización de la técnica de diseño Top-Down tiene los siguientes objetivos básicos:
– Simplificación del problema y de los subprogramas de cada descomposición.
– Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas.
– El programa final queda estructurado en forma de bloque o módulos lo que hace más sencilla su lectura y mantenimiento.
- Técnica divide y vencerás. implica dividir el problema en partes más pequeñas tantas veces como sea necesario hasta obtener la solución. Luego se combinan.
- Diseño descendente: consiste en refinar el algoritmo por cada división que se realiza de las partes para agregar mayores detalles en los pasos del algoritmo.
- Ej.: cálculo del promedio de tres notas y la definición de la condición final de un alumno de acuerdo con el promedio. Este problema se puede dividir en los subproblemas que indica la figura.
Ventajas:
- Comprensión más fácil del problema.
- Mayor facilidad para resolver problemas complejos.
- Mayor facilidad para analizar y mejorar la eficiencia del algoritmo.
- Realizar modificaciones en algunas de las partes del algoritmo es más fácil.
- Mayor facilidad para verificar el problema por medio de sus partes o módulos.
Pseudocódigo:
Falso código. define una estructura intermedia entre la descripción en lenguaje natural y la descripción en lenguajes de programación. Utiliza palabras que facilitan la lectura humana y aplica un orden y reglas parecidas a las de un lenguaje de programación.
Esta técnica esencial para el diseño de algoritmos estructurados. En el enfoque descendente se formula una representación del algoritmo en un alto nivel de abstracción (sin especificar detalles) de lo que el algoritmo debe realizar. Posteriormente, la representación del algoritmo se especifica en un nivel de abstracción inferior al dividirse en tareas más detalladas. Cada tarea del algoritmo se describe con más detalle hasta que la especificación del algoritmo es lo suficientemente concreta.
Considera el siguiente problema: Desarrolla un programa que calcule el promedio de horas de programación que dedican al día un número arbitrario de estudiantes. Como se mencionó anteriormente, comenzamos con una representación en seudocódigo en un alto nivel de abstracción: Determinar el promedio de las horas de programación. La descripción anterior es una instrucción individual que contiene la función general del programa. Sin embargo, contiene muy pocos detalles para escribir un programa.
Nivel de abstracción 1
A partir de una descripción general, usualmente muchos algoritmos se pueden dividir de manera lógica en tres fases:
- Fase de inicialización que inicializa las variables del algoritmo.
- Fase de procesamiento que introduce los valores de los datos y ajusta las variables del algoritmo de manera adecuada.
- Fase de terminación que calcula y despliega los resultado finales.
El resultado del primer refinamiento es el siguiente:
1: Inicializar las variables
2: Introducir las horas de programación, sumarlas y contarlas ´
3: Calcular y desplegar el promedio de horas
El proceso de refinamiento continua dividiendo las instrucciones en tareas más pequeñas. Para continuar con el siguiente nivel de abstracción se identifican las variables específicas.
Nivel de abstracción 2
En este ejemplo, necesitamos una variable para recibir el valor de cantidad de horas conforme el usuario la introduce que denominamos horas, una variable para almacenar la suma de las horas denominada total, una variable que cuenta el número de horas denominada n y una variable para almacenar el promedio calculado denominada promedio. Las instrucciones en un nivel de abstracción inferior para la primera instrucción Inicializar las variables son las siguientes:
1: total = 0;
2: n = 0;
Observa que solo las variables total y n deben inicializarse antes de utilizarse.
Las variables horas y promedio no necesitan inicializarse.
Las instrucciones en un nivel de abstracción inferior para la instrucción Introducir las horas de programación, sumarlas y contarlas requiere una estructura de repetición que introduzca cada hora. No sabemos por adelantado cuantas horas se van a procesar, por esta razón, utilizamos una estructura de control del tipo repetir mientras. Las instrucciones en un nivel de abstracción inferior para dicha instrucción son las siguientes:
1: introducir(horas)
2: mientras horas 6= −1 hacer
3: total = total + horas //Acumulador
4: introducir(horas)
5: n = n + 1 //Contador
6: fin mientras
El usuario ingresa las horas una por una y después de introducir la ultima hora, el usuario introduce un valor no valido (−1). El algoritmo evalúa el valor de horas después introducir cada valor y termina el ciclo cuando el usuario introduce el valor −1 desde el teclado. Las instrucciones en un nivel de abstracción inferior para la instrucción Calcular y desplegar el promedio de horas son las siguientes:
1: si n 6= 0 entonces
2: promedio = total/n;
3: si no
4: No hay horas;
5: fin si
Observa que en una división el valor del denominador podría ser cero y en consecuencia ocurría un error. Por esta razón, debemos hacernos cargo de este problema de manera apropiada dentro del algoritmo (por ejemplo, se puede desplegar un mensaje de error), en lugar de permitir que ocurra un error. El algoritmo está terminado cuando esté especificado con suficientes detalles para codificarlo en un lenguaje de programación. El algoritmo 1 resuelve un problema general de promedios. Este algoritmo se desarrolló después de sólo dos niveles de refinamiento. Para algoritmos más complejos se requerirán más niveles de refinamiento y subdividirlos en más tareas.
Bottom Up
El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse con forme vayan apareciendo, su análisis como sistema y su codificación, o bien, la adquisición de paquetes de software para satisfacer el problema inmediato. Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es difícil llegar a integrar los subsistemas al grado tal de que el desempeño global, sea fluido. Los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha límite para la integración total del sistema.
En esta fecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como una entidad global, adolece de ciertas limitaciones por haber tomado un enfoque ascendente. Uno de ellos es la duplicación de esfuerzos para accesar el software y más aún al introducir los datos. Otro es, que se introducen al sistema muchos datos carentes de valor. Un tercero y tal vez el más serio inconveniente del enfoque ascendente, es que los objetivos globales de la organización no fueron considerados y en consecuencia no se satisfacen.
Las dos herramientas utilizadas comúnmente para diseñar algoritmos son:
- Diagrama de Flujo
- Pseudocódigo
Diagramas de flujo:
Es una forma de representar gráficamente un algoritmo. utilizan símbolos y son la representación gráfica de los pasos de un proceso. Estos símbolos están conectados con flechas que indican la secuencia de los pasos del algoritmo. ANSI lo estandarizo para evitar ambigüedades. can National Standards Institute). facilita la comprensión de los algoritmos que tienen mayor complejidad o extensión.
Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos.
Recomendaciones para el diseño de Diagramas de Flujo
- Se deben se usar solamente líneas de flujo horizontal y/o vertical.
- Se debe evitar el cruce de líneas utilizando los conectores.
- Se deben usar conectores solo cuando sea necesario.
- No deben quedar líneas de flujo son conectar.
- Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha.
- Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.
Ejemplo de diagrama de flujo.
Se desea realizar el algoritmo que resuelva el siguiente problema: Cálculos de los Salarios semanales de los empleados de una empresa, sabiendo que estos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por cada hora. Si se pasa de 40 horas semanales, las horas extraordinarias se pagan 1,5 veces la hora ordinaria.
Los cálculos serán muy sencillos:
1. Leer datos del archivo de la empresa hasta que se encuentre la ficha final del archivo. (HORAS, PRECIO_HORA, NOMBRE)
2. Si HORAS <= 40 entonces SALARIO es producto de HORAS por PRECIO_HORA.
3. Si HORAS > 40 entonces SALARIO es la suma de 40 veces PRECIO_HORA mas 1,5 veces PRECIO_HORA por (HORAS-40).
Características principales
A continuación se comentan una serie de características que ayudan a comprender la naturaleza de la herramienta. Capacidad de Comunicación Permite la puesta en común de conocimientos individuales sobre un proceso, y facilita la mejor comprensión global del mismo.
- Claridad: Proporciona información sobre los procesos de forma clara, ordenada y concisa.
- SÍMBOLO: Imagen o figura con la que se representa un concepto.
- Simbología: Para la construcción de los Diagramas de Flujo se utilizarán los siguientes
- símbolos: Símbolos para la construcción de un diagrama de flujo
Preparación de la construcción del diagrama
Paso 1: Establecer quiénes deben participar en su construcción.
El grupo de trabajo, o la persona responsable del estudio identificará los organismos implicados en el proceso, o parte del mismo, que debe ser analizado. Se invitará a un representante de dichos organismos a participar en la construcción del Diagrama de Flujo. El número de participantes en la sesión de construcción del Diagrama no será superior a 10 para que el grupo sea operativo y eficaz.
Paso 2: Preparar la logística de la sesión de trabajo.
Con objeto de que el ritmo de la sesión de trabajo sea el adecuado se debe prever:
- Dar la información necesaria a los participantes en la reunión sobre el objeto de la misma y sobre este procedimiento.
- Preparar superficies y material de escritura que permitan tener a la vista continuamente el trabajo desarrollado.
Paso 3: Definir claramente la utilización del Diagrama de Flujo y el resultado que se espera obtener de la sesión de trabajo.
- En primer lugar, es necesario clarificar el objetivo de la construcción del Diagrama de Flujo y escribirlo de forma que sea visible para los participantes durante toda la sesión.
- Esta clarificación permitirá definir el grado de detalle y la estructura que se requieren en el diagrama para poder alcanzar dicho objetivo.
Paso 4: Definir los límites del proceso en estudio.
La mejor forma de definir y clarificar dicha definición de los límites del proceso es decidir cuáles son el primer y último pasos del Diagrama de Flujo.
- El primer paso es la respuesta a la pregunta: ¿Qué nos indica que empieza el proceso?
- El último paso debe contestar a la pregunta: ¿Cómo sabemos que el proceso ha terminado?
- Escribir estos pasos expresándolos de forma clara y concisa e incluirlos en la superficie de escritura. (El primer paso en el borde izquierdo o superior de la misma y el último paso en el borde derecho o inferior).
QUEREMOS REPRESENTAR EN UN DIAGRAMA DE FLUJO EL PROCESO DE FACTURACION RELATIVO A UN DETERMINADO PRODUCTO.
- NUESTRO PRIMER PASO ES DEFINIR LOS LIMITES DEL PROCESO EN ESTUDIO, DE LA SIGUIENTE MANERA:
- ÉL PROCESO EMPIEZA CUANDO SE ANUNCIA EL LANZAMIENTO DEL PRODUCTO AL MERCADO.
- EL PROCESO TERMINA CUANDO SE SUSPENDE LA PRODUCCION Y VENTA DEL PRODUCTO EN CUESTION.
Esquematizar el proceso en grandes bloques o áreas de actividades.
Identificar los grupos de acciones más relevantes del proceso y establecer su secuencia temporal. Esta esquematización global del proceso a analizar servirá de ayuda para guiar el proceso de construcción del diagrama.
Bloques de actividades:
- Lanzamiento
- Gestión de pedidos
- Emisión factura
- Servicio a cliente
- Servicio Post-venta
- Suspensión venta
Identificar y documentar los pasos del proceso.
Esta actividad puede comenzar, tanto por el primer paso del proceso, como por el último, no existiendo ningún criterio que indique mayor eficacia en alguno de los dos enfoques. Sea cual sea la dirección en que se realice, si se considera útil, realizar una revisión en la dirección contraria.
Las preguntas a realizar para la identificación y documentación de los pasos del proceso son las siguientes:
¿Existen entradas significativas asociadas con este paso, tales como materias primas, información, etc?. Señalar estas entradas, por medio de los símbolos apropiados, en el diagrama.
¿Existen resultados significativos como consecuencia de este paso, tales como información, etc?. Señalar estos resultados, por medio de los símbolos apropiados, en el diagrama.
Una vez realizado este paso, ¿cuál son las actividades inmediatamente siguientes que debemos realizar?. Señalar estas actividades, mediante el símbolo apropiado, en el diagrama. Partiendo del primer paso, realizar este proceso hasta alcanzar el último o viceversa. Dibujar el proceso con exactitud disponiendo el flujo principal siempre de arriba abajo o de izquierda a derecha.
Realizar el trabajo adecuado para los puntos de decisión o bifurcación.
Cuando se llega a un paso en el que existe un punto de decisión o de bifurcación:
- Escribir la decisión o alternativa de acuerdo con la simbología utilizada e identificar los posibles caminos a seguir mediante la notación adecuada. En general, cuando se trata de una toma de decisión, se incluye dentro del símbolo una pregunta y la notación de las dos ramas posibles correspondientes se identifican con la notación SI/NO.
- Escoger la rama más natural o frecuente de la bifurcación y desarrollarla hasta completarla.
- Retroceder hasta la bifurcación y desarrollar el resto de las ramas de igual modo.
Revisar el diagrama completo.
Comprobar que no se han omitido pasos, pequeños bucles, etc. y que el proceso tiene una secuencia lógica. En caso de que existan dudas sobre parte del proceso representado, realizar una observación directa del proceso o contactar con expertos de ese área para su aclaración. El resultado final de este paso es el Diagrama de Flujo del proceso en estudio.
Programar es un arte más complejo que solo seguir instrucciones
Muchas personas piensan que aprender programación es tan simple como seguir una receta para preparar platillos de cocina, pero no se trata de seguir instrucciones y listo. ¡Es mucho más! ¡Creaste una nueva aplicación! En la programación es muy raro que uno haga esto, luego aquello y ya está todo funcionando. En esta carrera es necesario inspirarnos, ser muy creativos y desarrollar ideas para encontrar una solución funcional.
Al trabajar en la resolución de un algoritmo desconocido será muy complicado encontrar una solución a la primera sin antes analizar el problema, lo que te llevará a inventar ese código que dará la solución al algoritmo que antes era desconocido… pero ya no lo es más. En este punto tal vez piensas que eso va a ser imposible. Respira profundo, eso no pasa de la noche a la mañana. La lógica de programación es una habilidad que puedes desarrollar y entrenar.
¿Cómo se desarrolla la lógica de programación?
Puedes realizar juegos mentales, acertijos, resolver puzzles y hasta aprender matemáticas, sí, las matemáticas que no te gustaron en la secundaria (o el tan odiado -por algunos- libro de Álgebra de Baldor) son herramientas que te ayudarán con esta tarea.
Creo que apenas mencioné matemáticas te dejo de gustar la idea. Pero siempre hay formas más amigables como lo es resolver puzzles ¿No sabes cuáles o dónde encontrarlas? Si tienes un celular en la tienda de aplicación de tu teléfono, te aseguro que encontrarás muchísimas opciones. En lo personal yo te sugeriría que buscarás algún Sudoku, pero si los números no son lo tuyo, te sugiero que pruebes Nonogram.
Esta aplicación tiene varios tableros de rompecabezas y en ellos lo que tienes que hacer es colorear las celdas correctas de una cuadrícula, de acuerdo con los números a los lados de la misma, todo esto con el fin de revelar una imagen oculta. ¿Conoces más aplicaciones? ¿Cuál es tu favorita? Compártela en los comentarios de esta clase para que podamos conocer más y quizás descubrir nuestro siguiente juego de lógica favorito. Si tienes algún otro método con el que disfrutes de desarrollar esta habilidad, también compártelo en los comentarios, nos encantaría saber cómo lo haces.
INTERPRETACIÓN – Análisis del proceso
Otra de las aplicaciones del Diagrama de Flujo es como herramienta de análisis del proceso, facilitando información sobre posibilidades de mejora del mismo. Para el análisis de procesos mediante esta herramienta se seguirá la siguiente secuencia:
Examinar cada símbolo de toma de decisión o de actividad de control.
Cuando una decisión implica algún tipo de comprobación, existe un bucle que hace retroceder el proceso hasta un paso anterior en un determinado porcentaje de las ocasiones en que este se realiza. Deberán plantearse preguntas tales como:
- ¿Es la comprobación necesaria?
- ¿Es la comprobación completa?
- ¿Es la comprobación redundante?
- Examinar los bucles de reproceso.
Las comprobaciones dan lugar a bucles de reproceso y éstos siempre están asociados a deficiencias, por tanto el objetivo debe ser su eliminación u optimización. Se examinarán las actividades del bucle como tales y la “longitud” del mismo (número de operaciones que deben repetirse) planteándose cuestiones tales como:
- ¿Son necesarias todas las actividades dentro del bucle?.
- ¿Se podrían detectar antes las deficiencias?.
- ¿Evita el bucle que se repita el error?.
- ¿Cuál es el coste del reproceso?.
- ¿Cuál es la frecuencia de las distintas deficiencias detectadas?.
Examinar cada símbolo de actividad.
Este examen puede poner de manifiesto las deficiencias que arrastra el diseño del proceso mediante cuestiones tales como:
- ¿Es necesaria esta operación?.
- ¿Cuál es la relación coste-valor añadido que aporta?.
- ¿Es una operación redundante?.
- ¿Es fuente de errores frecuente?.
Examinar los símbolos de documentos o bases de datos.
En general, en las empresas, la documentación y las bases de datos son fuentes de errores, duplicación de tareas y realización de trabajo inútil, por ello deberá comprobarse para cada uno de estos elementos si:
- ¿Es útil la información que contiene?.
- ¿Es redundante dicha información?.
- ¿Se mantiene al día?.
- ¿Es la única fuente para esta información?.
- ¿Cómo se puede utilizar para el seguimiento y mejora del proceso?
Cuanto más sistematizado sea el análisis del Diagrama de Flujo, más sencilla y eficaz puede resultar la mejora del proceso en estudio.
Posibles problemas y deficiencias de interpretación
La principal causa de deficiencias en la interpretación de los Diagramas de Flujos es que éste no refleje la realidad. Esto puede ser debido a:
- Se representa el proceso ideal tal y como debería ser realizado, y no la práctica habitual de aquellos que lo ejecutan.
- Alguno de los participantes no aporta información sobre partes del mismo, evidentemente ilógicas, por sentirse de alguna forma responsable de las mismas.
- Se consideran irrelevantes pequeños bucles existentes.
- Los miembros del grupo de trabajo desconocen realmente como opera parte del proceso.
- Se utilizan Diagramas de Flujo desfasados que no han sido revisados después de producirse cambios en el proceso.
Para evitar la aparición de estas situaciones se aconseja, siempre que sea posible, la confrontación del diagrama con la realidad, siguiendo en la práctica la ejecución del proceso. Cuando esto no sea posible, será útil la revisión del diagrama por personal operativo del proceso.
UTILIZACIÓN
- Debido a sus características principales, la utilización del Diagrama de Flujo será muy útil cuando:
- Se quiere conocer o mostrar de forma global un proceso.
- Es necesario tener un conocimiento básico, común a un grupo de personas, sobre el mismo.
- Se deben comparar dos procesos o alternativas de uno dado.
- Se necesita una guía que permita un análisis sistemático de un proceso.
Utilización en las fases de un proceso de solución de problemas.
- El Diagrama de Flujo es una herramienta de gran aplicación en la solución de problemas:
- En la fase de definición de proyectos para identificar oportunidades de mejora, guiar la estimación de costes asociados al problema, identificar los organismos implicados en el mismo y establecer las fronteras de la misión del grupo de trabajo que debe abordarlo.
- En el inicio de cualquier proyecto, para unificar el conocimiento básico de los participantes en el mismo.
- En la fase de diagnóstico, para la planificación de las recogidas de datos y para la elaboración de teorías sobre las causas.
- En la fase de diseño de soluciones, para guiar en el diseño de sistemas de control y para la identificación de posibles focos de resistencia al cambio.
- En la fase de implantación de soluciones, para mostrar el proceso y los cambios realizados y para identificar las necesidades de formación existentes.
ANEXOS
Ejemplo 1 La falta de herramientas
En una empresa de transportes, el taller de mantenimiento tenía fama de causar muchos retrasos. Un equipo de mejora empezó a investigar y comprobó en primer lugar que el taller entregaba los vehículos, en general, con unos días de retraso respecto a las estimación del tiempo necesario para realizar la reparación. El segundo paso del equipo fue construir un Diagrama de Flujo para obtener conocimientos sobre lo que realmente ocurría en el taller de mantenimiento. El Diagrama de Flujo centró la atención del equipo en la búsqueda y obtención de herramientas. Posteriores investigaciones confirmaron que el problema principal del taller era la falta y la mala gestión de las herramientas de trabajo.
Proceso de venta de billetes y facturación de equipajes
En una línea aérea un equipo de mejora tenía como misión el análisis del proceso que se seguía para emitir los billetes y las tarjetas de embarque para los pasajeros que llegaban al aeropuerto sin billete. Construyó a este fin un Diagrama de Flujo del proceso. El Diagrama muestra que el pasajero debe hacer dos colas: una en el mostrador de billetes para su obtención y/o facturar el equipaje, y otra en la puerta de embarque para obtener la tarjeta de embarque. El equipo rediseñó el proceso y consiguió eliminar una de las dos colas, dando acceso a los agentes del mostrador de billetes a la base de datos del sistema de asignación de plazas.
Pseudocódigo
Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocódigo se puede definir como un lenguaje de especificaciones de
algoritmos. 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.
Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo
- Ocupa menos espacio en una hoja de papel
- Permite representar en forma fácil operaciones repetitivas complejas
- Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de Programación.
- Si se siguen las reglas se puede observar claramente los niveles que tiene cada Operación.
- Uso de algunas palabras claves utilizadas de modo general en lenguaje de programación:
Español Ingles
Inicio | begin |
Fin leer escribir Si-entonces desde mientras repetir parada,fin hasta-que | end read/input write/print if-then for while repeat stop,end until |
Es importante en los seudocódigos el uso de la indentación o sangría
Ya estás listo para interpretar diagramas de flujo y llevarlos a código. Te recomiendo que primero lo leas, lo interpretes e identifiques qué elementos necesitas para hacer que funcione como una aplicación. Recuerda que todos los procesos de nuestra vida diaria los podemos llevar a cabo en código y esta será tu oportunidad para demostrarlo. Usa tu creatividad y traduce a tu lenguaje de programación favorito los siguientes diagramas, puedes imprimir en consola las entradas y salidas hasta crear una interfaz para cada situación. ¡Todo es posible! Compárteme tus resultados en los comentarios.
No te detengas, sigue avanzando
Aquí tienes un propósito para este 2024 que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera!
Python Practicando. Desde 0 hasta Desarrollador en Python
Aprende Python, donde iniciamos desde 0, sin conocimientos previos hasta desarrollar aplicaciones con mucha practica!
Calificación: 4,6 de 5 (20.833 calificaciones) 249.493 estudiantes Creado por Alvaro Chirou • 1.800.000+ Enrollments Worldwide, Walter Coto || +450,000 Estudiantes Español.
Lo que aprenderás
- Ejercitar la lógica de programación
- Comprender cómo la vida cotidiana puede ser fácilitada o simulada con código
- Aprender programación desde cero
- Usar Visual Studio Code como Editor de Código
- Conocer y aprender el lenguaje de programación Python
- Ser un programador desde cero, sin conocimiento en otro lenguaje o con algo previo
- Mejorar las habilidades de programación, mejorar procesos y fácilitar la comprensión de código
- Preparar un entorno dónde programar en Python
- Operaciones aritméticas y jerarquía de Python
- Manejo de cadenas en Python
- Digitar datos por teclado con Python
- Mostrar Datos por Pantalla al usuario en Python
- Operadores Relacionales de Python
- Operadores Lógicos de Python
- Condicionales en Python
- Estructuras de Datos: Listas, Tuplas y Diccionarios
- Iteraciones y bucles repetitivos de Python
- Segmentar Código y hacerlo más eficaz con las Funciones en Python
- Gestionar posibles errores que puedan dar tus programas
- Programación Orientada a Objetos
- HTML y CSS
- Selenium Web Driver con Python
- Ejercitar todo lo Aprendido con Ejercicios
Este curso incluye:
- 25,5 horas de vídeo bajo demanda
- 21 artículos
- 148 recursos descargables
- Acceso en dispositivos móviles y TV
- Certificado de finalización
Python es Hoy uno de los lenguajes más utilizados por Excelencia.
Esto se debe por su simpleza al momento de Desarrollar aplicaciones.
Por su capacidad de procesamiento a altas velocidades con grandes volúmenes de información.
Es un increíble lenguaje con el cual si no sabes programar, podrás aprender.
Y si ya sabes desarrollar, te aconsejo aprenderlo ya que en el mercado cada vez se solicitan más desarrolladores en Python.
Aspirar al trabajo que desean, o mejorar sus ingresos con un aumento de salario.
Python se utiliza para muchisimas cosas como:
- Machine Learning
- Data Science
- Inteligencia Artificial.
- Y mucho más!
En este curso te acompañare en el proceso por el cual aprenderás las bases del lenguaje, para luego determinar qué camino quieres seguir.
Te invito que me acompañes a conocer este Gran Lenguaje!
Aprende con nuestros más de 100 cursos que tenemos disponibles para vos
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Sobre los autores
Álvaro Chirou
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes serguirme en mis redes:
Laprovittera Carlos
Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:
¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/como-iniciarse-en-ciberseguridad-y-hacking-en-2024/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.