# data[].attributes.attachment_link.title
Pseudocódigo - Wikipedia, la enciclopedia libre

# data[].attributes.attachment_link.description
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.

# data[].attributes.attachment_link.description
Con este diagrama se dan a conocer las partes (entrada, proceso, salida) que conforman un algoritmo así como también explicar que se trata de una secuencia de pasos lógicos y ordenados con las cuales le damos solución a un problema determinado, planteándose de la siguiente manera: En la vida diaria cada uno de nosotros diseña y realiza algoritmos para solucionar los problemas cotidianos.

# data[].attributes.attachment_link.readable_text
Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona.

Diagrama de actividades para un loop (bucle)

El diagrama de flujo o flujograma o diagrama de actividades es la representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva.

En Lenguaje Unificado de Modelado (UML), es un diagrama de actividades que representa los flujos de trabajo paso a paso. Un diagrama de actividades muestra el flujo de control general.

En SysML el diagrama ha sido extendido para indicar flujos entre pasos que mueven elementos físicos (p. ej., gasolina) o energía (p. ej., presión). Los cambios adicionales permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.

Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin del proceso.

Las siguientes son acciones previas a la realización del diagrama de flujo:

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.

Prueba para ver errores

En UML 1.x, un diagrama de actividades es una variación del diagrama de estado UNL donde los "estados" representan operaciones, y las transiciones representan las actividades que ocurren cuando la operación se termina.

El diagrama de mensajes de UML 2.0, mientras que es similar en aspecto al diagrama de actividades UML 1.x, ahora tiene semánticas basadas en redes de Petri. En UML 2.0, el diagrama general de interacción está basado en el diagrama de actividades. El diagrama de actividad es una forma especial de diagrama de estado usado para modelar una secuencia de acciones y condiciones tomadas dentro de un proceso.

La especificación del Lenguaje de Notificación Unificado (UNL) define un diagrama de actividad como:

"... una variación de los estados de una máquina, los cuales representan el rendimiento de las acciones o subactividades y las transiciones se provocan por la realización de las acciones o subactividades."

El propósito del diagrama de actividad es modelar un proceso de flujo de trabajo (workflow) y/o modelar operaciones.

Una operación es un servicio proporcionado por un objeto, que está disponible a través de una interfaz.

Una interfaz es un grupo de operaciones relacionadas con la semántica.

1.- Según Gómez Cejas, Guillermo. Año 1997:

1. Sintética: La representación que se haga de un sistema o un proceso deberá quedar resumido en pocas hojas, de preferencia en una sola. Los diagramas extensivos dificultan su comprensión y asimilación, por tanto dejan de ser prácticos.

2. Simbolizada: La aplicación de la simbología adecuada a los diagramas de sistemas y procedimientos evita a los analistas anotaciones excesivas, repetitivas y confusas en su interpretación.

3. De forma visible a un sistema o un proceso: Los diagramas nos permiten observar todos los pasos de un sistema o proceso sin necesidad de leer notas extensas. Un diagrama es comparable, en cierta forma, con una fotografía aérea que contiene los rasgos principales de una región, y que a su vez permite observar estos rasgos o detalles principales.

2.- Según Chiavenato, Idalberto. Año 1993:

1. Permitir al analista asegurarse que ha desarrollado todos los aspectos del procedimiento.

2. Dar las bases para escribir un informe claro y lógico.

3. Es un medio para establecer un enlace con el personal que eventualmente operará el nuevo procedimiento.

3.- Según Gómez Rondón, Francisco. Año 1995:

1. De uso, permite facilitar su empleo.

2. De destino, permite la correcta identificación de actividades.

3. De comprensión e interpretación, permite simplificar su comprensión.

4. De interacción, permite el acercamiento y coordinación.

5. De simbología, disminuye la complejidad y accesibilidad.

6. De diagramación, se elabora con rapidez y no requiere de recursos sofisticados.​

Formato vertical: en él, el flujo y 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.

Diagrama de bloques de modelo matemático: es utilizado para representar sistemas físicos (reales). Cada uno de los bloques que componen el sistema físico es generalmente una simplificación de la realidad, lo que permite un tratamiento matemático razonable.

Diagrama de bloques de procesos de producción: es un diagrama utilizado para indicar la manera en la que se elabora un producto, especificando la materia prima, la cantidad de procesos que se llevan a cabo y la forma en la que se representa el producto terminado.

Diagrama de flujo de carriles de nado: también llamado swimlane, representa de forma visual un proceso que no tiene principio o fin.

Diagrama de flujo de un sitio web: se utiliza para diseñar la navegación de una página web. También se puede utilizar para aplicaciones.

Formas comunes

El Instituto Nacional Estadounidense de Estándares (ANSI, por su siglas en inglés) estableció estándares para los diagramas de flujo y sus símbolos en los años 1960s.​ La Organización Internacional de Normalización (ISO, por sus siglas en inglés) adoptó los símbolos ANSI en 1970.​ El estándar actual, ISO 5807, fue revisado en 1985.​

Salida

Hoja de papel impresa

Indica el proceso de hacer salir datos, en la forma de mostrar resultados.

Anotación​ (Comentario)​

Indica información adicional acerca de un paso en el programa.

Muestra, por su nombre, un proceso que ha sido definido en otro lugar.

Pequeño círculo con una letra dentro.​​

Pares de conectores etiquetados reemplazan líneas largas o confusas en la página del diagrama.

Plato de "Home" (béisbol) pentágono.​​

Un conector etiqueta para usar cuando el objetivo es otra página.

Otras formas

o : Inicio y Final (Abre y cierra el diagrama).

Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimientos).

Rombo: Decisión (Formula una pregunta o cuestión).

Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).

Triángulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).

Triángulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

Se trata de la más común y práctica entre todas las clases de diagramas de flujo. 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 diagrama

Elipse: Inicio del Diagrama y Final del Diagrama

Cuadrado: Proceso de control.

Línea continua: 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 el doble de largo que su altura.

Rectángulo Pequeño: Valor o medio de pago (cheque, pagaré, etc.). Se grafica con el cuádruple de largo 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.

Hexágono: Proceso no representado.

Pentágono: Conector.

Cruz de Diagonales: Destrucción de Formularios, y recreación de nuevas acciones.

Según la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha.​

La paternidad del diagrama de flujo es en principio algo difusa. El método estructurado para documentar gráficamente un proceso como un flujo de pasos sucesivos y alternativos, el "proceso de diagrama de flujo", fue expuesto por Frank Gilbreth, en la Sociedad Americana de Ingenieros Mecánicos (ASME), en 1921, bajo el enunciado de "Proceso de Gráficas-Primeros pasos para encontrar el mejor modo". Estas herramientas de Gilbreth rápidamente encontraron sitio en los programas de ingeniería industrial.

Al principio de los 30, un ingeniero industrial, Allan H. Mogensen comenzó la formación de personas de negocios en Lake Placid, Nueva York, incluyendo el uso del diagrama de flujo. Art Spinanger, asistente a las clases de Mogesen, utilizó las herramientas en su trabajo en Procter & Gamble, donde desarrolló su "Programa Metódico de Cambios por Etapas". Otro asistente al grupo de graduados en 1944, Ben S. Graham, director de ingeniería de Formcraft Standard Register Corporation, adaptó la gráfica de flujo de procesos al tratamiento de la información en su empresa. Y desarrolló la gráfica del proceso de múltiples flujos en múltiples pantallas, documentos, y sus relaciones. En 1947, ASME adoptó un conjunto de símbolos derivados de la obra original de Gilbreth como Norma ASME para los gráficos de procesos (preparada Mishad, Ramsan y Raiaan).

Sin embargo, según explica Douglas Hartree fueron originalmente Herman Goldstine y John von Neumann quienes desarrollaron el diagrama de flujo (inicialmente llamado "diagrama") para planificar los programas de ordenador. Las tablas de programación original de flujo de Goldstine y von Neumann, aparecen en un informe no publicado, "Planificación y codificación de los problemas de un instrumento de computación electrónica, la Parte II, Volumen 1 "(1947), reproducido en las obras completas de von Neumann.

Inicialmente los diagramas de flujo resultaron un medio popular para describir algoritmos de computadora, y aún se utilizan con este fin. Herramientas como los diagramas de actividad UML, pueden ser considerados como evoluciones del diagrama de flujo.

En la década de 1970 la popularidad de los diagramas de flujo como método propio de la informática disminuyó, con el nuevo hardware y los nuevos lenguajes de programación de tercera generación. Y por otra parte se convirtieron en instrumentos comunes en el mundo empresarial. Son una expresión concisa, legible y práctica de algoritmos. Actualmente se aplican en muchos campos del conocimiento, especialmente como simplificación y expresión lógica de procesos, etc.

Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy 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, los flujos de los reprocesos, 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.

Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis de algoritmos de programación puede ser ejecutado en un ordenador, con un IDE como Free DFD.

Actualmente existe una gran cantidad de software para la elaboración de diagramas de flujo. A continuación se listan los programas más comunes para elaborar diagramas de flujo.

La suite Microsoft Office ofrece la herramienta "Formas" (bloque Diagrama de flujo), presente en sus programas Word, Excel y Power Point, la cual permite insertar figuras para crear diagramas de flujo básicos. Otra herramienta un poco más sofisticada es Microsoft Visio, la cual además de la simbología básica de los diagramas de flujo, cuenta con herramientas para elaborar una variedad de diagramas, como diagramas UML, entre otros.

LibreOffice Draw permite crear diagramas de flujo además de otro tipo de diagramas usados en el ambiente informático. Es considerado la versión no comercial de Microsoft Visio.

Algunos software de gráficos profesionales, como GitMind y SmartDraw, también son buenos creadores de diagramas de flujo, ya que todos tienen plantillas ricas para descargar. XMind es también otra aplicación de mapas mentales para hacer diagramas de flujo, así como Miro o Lucidchart.

También existen aplicaciones que permiten que, una vez que un creador haya diseñado el diagrama de flujo, un usuario final lo utilice y, sobre la base de las opciones que vaya escogiendo, se le vayan mostrando las siguientes etapas hasta llegar a un resultado final. Un ejemplo de este tipo de aplicaciones es iBoske.

# data[].attributes.attachment_link.title
Diagrama de flujo - Wikipedia, la enciclopedia libre

# data[].attributes.attachment_link.description
El diagrama de flujo o flujograma o diagrama de actividades es la representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva. En Lenguaje Unificado de Modelado (UML), es un diagrama de actividades que representa los flujos de trabajo paso a paso.

# data[].attributes.attachment_link.title
Lenguaje algoritmico - Algorítmica y Programación

# data[].attributes.attachment_link.description
Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. Teniendo en cuenta la forma en que describen el proceso, existen dos tipos de lenguajes algorítmicos:

# data[].attributes.attachment_link.title
1.1.- Concepto de algoritmos y sus características - Programando con Rafa

# data[].attributes.attachment_link.description
1.1.- Concepto de algoritmos y sus características

# data[].attributes.attachment_link.title
Resolución de problemas con computadoras. Algoritmos y programas - Monografias.com

# data[].attributes.attachment_link.description
Algoritmo: Es un método para resolver problemas que consiste en dividir el...

# data[].attributes.headline
Fases de la resolución de problema por medio del computador

# data[].attributes.subject
Fases de la resolución de problema por medio del computador

# data[].attributes.attachment_link.readable_text
Cuando nos proponemos resolver problemas en programación siempre pasamos directamente al computador y empezamos a escribir código sin antes haber analizado en lo más mínimo el problema, o bueno lo vamos analizando y directamente vamos escribiendo el código y pues en algunos casos esta práctica funciona, claro está, cuando los problemas son sencillos o cuando eres un programador experimentado, no así con problemas más complejos y más aún cuando estas empezando a programar.

A veces pensamos que con hacer las cosas directamente vamos a ganar más tiempo, pero en realidad no es así, muchas de las veces el tiempo que se lleva programando un problema directamente sin haber hecho un análisis previo, es el doble o triple que si hubiésemos hecho previamente un análisis, por lo general se cometen muchos errores, que a la larga perdemos tiempo.

Un buen hábito y como buenos programadores es la de llevar una metodología para solucionar un problema por más mínimo que este sea. Es por eso que esta vez vamos a ver algunos pasos que debemos seguir para resolver un problema en programación y básicamente la idea es convertirlo en un hábito cada vez que vayamos a programar.

1. Análisis previo del problema

En esta etapa se debe definir y tener claro lo que el programa tiene que hacer junto con las tareas que debe realizar para llevar a cabo la solución, qué datos necesito para realizar la tareas, que formato deben tener los datos de entrada, de donde provienen los datos de entrada, como se obtienen esos datos, cómo interactúan los datos entre sí para obtener el resultado, muy importante tener claro cuál será el resultado que se desea obtener, tampoco dejar de lado las restricciones que puede haber al momento de procesar los datos..

De igual forma se debe analizar todos los escenarios que pueden darse ya que un cambio de escenario puede variar el resultado final del programa, siempre vale la pena cuestionarse y hacer la pregunta: y si pasa esto o aquello? qué comportamiento tomaría el programa.

Para clarificar dudas se debe pedir formatos (formas de presentación de los datos o de donde se obtienen los datos cuando se hacen de forma manual), fórmulas, realizar ejemplos y verificar los resultados.

Básicamente en este punto o fase se debe recoger todos los requerimientos y especificaciones del problema.

Este punto debe ser uno de los más importantes y críticos de la resolución de problemas ya que un mal análisis lleva a un mal diseño y posterior a un mal resultado.

En lo personal no importa el tiempo que demores en esta etapa, la idea es que quede bien claro todo, la primera vez puede que te demores un montón pero a medida que lo practicas vas cogiendo experiencia y si lo tomas como hábito en las próximas veces lo harás aún más rápido.

2. Diseño del Algoritmo

Una vez que tenemos claro el problema, después de haber definido todas la entradas y salidas que va tener el programa, también las tareas a realizar, es hora de diseñar el algoritmo y que irá de acuerdo a todas las especificaciones anteriores y posteriormente será implementado en un lenguaje de programación para ser ejecutado por la computadora.

El algoritmo se lo puede hacer de cualquier forma: Pseudocódigo o Diagrama de Flujo, la idea principal es que sea entendible, y no solo por el que lo diseñó si no por cualquier persona.

En conclusión en la etapa anterior se define qué es lo que hará el programa, en esta fase, se define como lo hará.

Algo importante de este diseño es que sea entendible para el programador que lo va implementar.

3. Configuración del entorno de desarrollo y codificación

Esta etapa consiste en transcribir o adaptar el algoritmo a un lenguaje de programación, se tendrá que adaptar todos los pasos diseñados en el algoritmo con sentencias y sintaxis propias del lenguaje.

Verificar errores, organizar el código y comentarlo, son buenas prácticas que hacen programas más legibles y facilitan la depuración.

Previamente a la codificación se debe tener configurado el entorno de trabajo: IDEs, librerías, Frameworks (aunque este último no lo recomiendo si estas empezando a programar, es mejor aprender las cosas más básicas los fundamentos, todo a mano primero y luego los frameworks) y luego pasar el algoritmo al lenguaje de programación.

4. Compilación y pruebas

La fase de compilación permitirá detectar errores en tiempo de compilación, ejecución y lógicos, y en el caso de Java se generará uno o varios archivos bytecode que serán ejecutados por la computadora.
En esta fase también es necesario realizar pruebas con una gran cantidad de datos para encontrar posibles errores y corregirlos.

5. Documentación y mantenimiento

Por últimos se debe tener una documentación de todos los pasos hasta llegar a la solución del problema, a veces es un poco tedioso esta fase pero también es muy importante ya que muchas veces suceden modificaciones con el pasar del tiempo y estas se hace en algunos casos por otros programadores diferentes a los que lo crearon (que incluso cuando uno mismo va ha modificar no se acuerda que rayos hacia ese código, me ha pasado), y cuando un programa es pobre en documentación este proceso de modificación es totalmente complejo.

Vamos al grano, resolvamos un problema aplicando los pasos anteriores

1. Análisis previo del problema: Definir qué es lo que debe hacer el programa

Para este ejemplo he tomado un requerimiento sencillo y real, es un pequeño problema de una entidad bancaria, el gerente de negocios de esta entidad necesita un reporte (obviamente el reporte debe estar el sistema bancario) en el cual se muestre el porcentaje de morosidad (o índice de morosidad) por cada una de las agencia con las que cuenta la entidad.

Existen varias líneas de crédito que brinda la entidad, por ejemplo: Consumo, Microcréditos, Comerciales e Inmobiliarios, para considerar un crédito vencido se tiene en cuenta el número de días tope para cada línea, pasado este número de días el crédito se considera vencido.

Tener en cuenta que para cada línea de crédito tiene diferente número de días tope antes de considerar el crédito como vencido.

La finalidad de este reporte le permitirá al Gerente de Negocios evaluar la morosidad y tomar decisiones respecto a los créditos que brinda la entidad bancaria

Nota: Para tener una idea de lo que es la morosidad, bueno la morosidad o mora está ligada a todos los créditos en los cuales los clientes no están al día en el pago de sus cuotas, mientras más clientes estén atrasados en el pago de sus cuotas habrá un porcentaje de morosidad más alto.
Obtenemos el requerimiento detallado:

Calcular el índice de morosidad por agencia y consolidado de todas las agencias
DATOS PARA ENTENDER EL PROBLEMA:
Índice o porcentaje de morosidad es el cociente del total de saldos de créditos vencidos y el total de saldos de créditos.
Para el cálculo del índice de morosidad se considera la siguiente fórmula:
% MOROSIDAD = Cartera Vencida / Cartera total

CARTERA VENCIDA = Cartera Vencida de Consumo + Cartera Vencida de Microcrédito + Cartera Vencida de Crédito Comercial + Cartera Vencida de Crédito Inmobiliario

CARTERA TOTAL = Saldo de Deuda de Crédito de Consumo + Saldo de Deuda de Microcrédito + Saldo de Deuda de Crédito Comercial + Saldo de Deuda de Crédito Inmobiliario

A continuación se muestra las líneas de crédito y los días tope para cada una.
CARTERA VENCIDA DE CRÉDITOS DE CONSUMO

Para el cálculo de la cartera vencida de crédito de consumo, se considera el saldo de deuda de todas las operaciones vencidas superiores a 15 días (ello es desde el día 16 en adelante)
CARTERA VENCIDA DE MICROCRÉDITOS

Para el cálculo de la cartera vencida de microcrédito, se considera el saldo de deuda de todas las operaciones vencidas superiores a 15 días (ello es desde el día 16 en adelante)
CARTERA VENCIDA DE CRÉDITOS COMERCIALES

Para el cálculo de la cartera vencida de crédito comercial, se considera el saldo de deuda de todas las operaciones vencidas superiores a 30 días (ello es desde el día 31 en adelante)
CARTERA VENCIDA CRÉDITOS INMOBILIARIOS

Para el cálculo de la cartera vencida de crédito inmobiliario, se considera el saldo de deuda de todas las operaciones vencidas superiores a 60 días (ello es desde el día 61 en adelante)

Cómo podemos ver en esta fase nos empapamos del problema y de lo que quiere el usuario, para esto recogemos fórmulas utilizadas, buscamos el significado de términos utilizados y que suenen desconocidos, restricciones, hacer ejemplos manuales también permite entender que es lo que hará el programa.

2. Diseño del Algoritmo

Hasta ahora hemos definido el problema y tenemos la información que se necesita para resolverlo, ahora nos falta realizar las acciones necesarias para resolverlo, estas acciones que siguen una secuencia de pasos se llama algoritmo, en esta fase podemos encontrar varias formas de cómo resolver el problema, trataremos de usar la forma más eficiente, esta fase no tiene un formato establecido ya que depende mucho de la lógica de cada desarrollador, al mismo problema varios programadores pueden dar distintas soluciones.

En un principio podríamos utilizar cualquier solución, ya que la finalidad es obtener el resultado, pero a medida que tenemos experiencia vale la pena buscar la solución más eficiente.

Un consejo para diseñar un algoritmo complejo, es tratar de descomponer el problema en pequeños subproblemas y estos fraccionarlos aún en más pequeños hasta llegar a un nivel en que sea más fácil de solucionar. Este método se lo conoce técnicamente como diseño descendente ( top-down) o modular.

Como mencioné, el diseño del algoritmo no es único y podríamos intentar hacerlo de diferentes formas.

De manera general, una solución podría ser la siguiente:

1. Obtener los datos por agencia, línea de crédito y luego por los créditos vencidos de acuerdo a los días tope (Consumo y Microcrédito > a 15 dias, Comercial > 30 días, Inmobiliario > a 60 días) para cada línea de crédito.

2. Almacenar el saldo de la cartera vencida para esa linea de crédito(Resultado paso 1).

3. Repetir paso 1 y 2 para todas las líneas de crédito (Consumo, Microcréditos, Comercial, Inmobiliario) para la misma agencia.

4. Sumar los saldos de todas las líneas de crédito obtenidas.

5. Sumar los saldos de todos los créditos por agencia para obtener la cartera total.

6. Obtener el índice de morosidad por agencia con los resultados obtenidos en los puntos 4 y 5, de acuerdo a la fórmula: % MOROSIDAD = Cartera Vencida / Cartera total

7. Presentar en un reporte el nombre de la agencia, la cartera total, la cartera vencida y el índice de morosidad.

8. Repetir los paso de 1 a 7 para cada agencia.

9. Para obtener el índice de morosidad consolidado sumaremos la cartera vencida por cada agencia y lo mismo con la cartera total, y utilizamos la fórmula del punto 6

Hasta aquí tenemos resuelto el problema, aunque podríamos refinar el algoritmo por ejemplo asignar los resultados a variables, utilizar estructuras de control en lenguaje algorítmico, pero la idea es hacerlo sencillo y claro para cualquier programador de manera que sea fácil de implementar y dejar que él se encargue de variables y sentencias de control en el siguiente paso

Como mencioné no hay un estándar para el diseño y pueda que en otros casos se necesite hacer diagramas o hacer pseudocodigo, eso irá de acuerdo a la complejidad del problema, pero en fin lo importante no es hacer más diagramas o más pseudocódigo, lo importante es que el algoritmo quede claro para su implementación

Una técnica para diseñar algoritmos cuando se esta empezando y no se tiene mucha experiencia, es primero hacer los pasos de forma general y a partir de ahí refinarlo o pulirlo hasta llegar a la versión optima, la perfección y la eficiencia se la consigue con la práctica, es por eso que la única forma de mejorar en esta fase es practicar y practicar.

Me olvidaba de algo, pueda que en este punto también se diseñen prototipos de pantallas con las que va interactuar el usuario.

3. Configuración del entorno de desarrollo para la codificación, compilación y pruebas

Lo siguiente es configurar el IDE cargar las librerías necesarias, reutilizar código que tal vez se tenga de otros proyectos, configurar algún Framework, dado sea el caso que se utilice.

Y posteriormente pasar el diseño del algoritmo al lenguaje de programación, también en este caso se implementan las pantallas, se verifica la sintaxis, se hace pruebas en la codificación por parte del programador y se depura el programa.

4. Documentación

Finalmente tenemos que generar la documentación de cómo funciona la aplicación para que el usuario la pueda manejar, esto se conoce como manual de usuario, manual técnico, la idea es que el usuario no tenga problemas al utilizar el software y los programadores en hacer modificaciones.

Bueno como puedes ver, hay algunas cosas que he omitido como por ejemplo la codificación y manuales, me hubiese gustado también mostrar más formatos, así mismo el algoritmo se pudo refinar más, pero bueno un poco por motivos de tiempo no fue posible, pero en si la idea es que aprendas lo esencial de ahí tu con tus propios problemas los puedes ir puliendo más.

Por último recalcar que esta es una buena práctica para empezar a programar como para tener un buen hábito, pero recuerda que ya para hacerlo de forma profesional y en equipos de programación y con proyectos se suele utilizar metodologías de desarrollo de software que también será otro tema que abordaremos en tutoriales más adelante.

Te sirvió de ayuda este tutorial?, tienes problemas con algún paso de los que hemos visto, tienes otra forma resolver problemas? o quieres añadir algún aporte, experiencia?. Si es así, no dudes en dejar un comentario será bienvenido.

Si este tutorial te sirvió de ayuda, comenta y comparte esta publicación. Además si quieres recibir tutoriales o artículos sobre programación Java o Java Web? SUSCRÍBETE al blog y recibirás un correo cada vez que hayan nuevas publicaciones.

Full Stack Developer, JavaScript, PHP, Java, Spring, Laravel, Vuejs, Blogger, aprendiendo y compartiendo conocimientos. Cursos de Programación Web en: https://programacionfullstack.com/

# data[].attributes.attachment_link.title
Las 5 fases para resolver problemas en Programación

# data[].attributes.attachment_link.description
Cuando nos proponemos resolver problemas en programación siempre pasamos directamente al computador y empezamos a escribir código sin antes haber analizado en lo más mínimo el problema, o bueno lo vamos analizando y directamente vamos escribiendo el código y pues en algunos casos esta práctica funciona, claro está, cuando los problemas son sencillos o cuando eres un programador experimentado, no así con problemas más complejos y más aún cuando estas empezando a programar.

# data[].attributes.attachment_link.readable_text
Germán Escobar

Todos los lenguajes de programación comparten algunos elementos básicos que funcionan y se usan de forma diferente en cada lenguaje, pero que cumplen el mismo objetivo. Esos elementos son:

Acepto que entender cómo funcionan estos elementos no es diversión pura, pero es la base de la programación. Recuerda que la programación no es más que una herramienta, un medio para lograr algún fin: ¿escribir un juego? ¿hacer una aplicación web? ¿una aplicación móvil?.

Tipos de datos

Algunos lenguajes de programación tienen más tipos de datos que otros, pero, en general, todos incluyen al menos los siguientes: caracteres (char), cadenas de caracteres (string), enteros (integer), decimales (decimal, float), y booleanos (true y false). Por ejemplo:
En JavaScript:
"Hola Mundo" 34 23.45 false
En Ruby:
"Hola Mundo" 34 23.45 false

Variables

Las variables nos permiten almacenar información temporalmente. Por ejemplo, podemos almacenar la cadena "Hola Mundo" en una variable.
En JavaScript:
var miPrimeraVariable = "Hola Mundo"
En Ruby:
mi_primera_variable = "Hola Mundo"

Acá se empiezan a notar algunas diferencias entre los lenguajes. En JavaScript, una variable se define empezando con la palabra var (es posible omitirla pero eso se considera una mala práctica). En Ruby se empieza con el nombre de la variable.

En JavaScript, si el nombre de una variable se compone de varias palabras, las palabras inician con mayúscula excepto la primera (a eso se le conoce como CamelCase ... porqueTieneFormaDeCamello). En Ruby las palabras se separan con underscore (a esto se le conoce como snake_case ... porque_parece_una_culebra). (Esto es solo una notación y no hay nada que impida utilizar snake_case en JavaScript, o CamelCase en Ruby. En los tutorials más básicos de cada lenguaje generalmente le dicen a uno qué notación utilizar).

Un mecanismo para tomar de decisiones

Un elemento muy importante en todo lenguaje de programación es cómo tomar una decisión según la información que se tenga en las variables. Por ejemplo:
En JavaScript:
var puntos = 20; if (puntos > 15) { console.log("Felicitaciones, tienes más de 15 puntos!"); } else { console.log("Muy Regular, tienes menos de 15 puntos"); }
En Ruby:
puntos = 5 if puntos > 15 puts "Felicitaciones, tienes más de 15 puntos!" else puts "Muy Regular, tienes menos de 15 puntos" end

De nuevo, la sintaxis cambia de lenguaje a lenguaje, pero el principio es el mismo.

A esto se le llama control de flujo porque cuando el programa está corriendo, los if deciden qué código se ejecuta.

Un mecanismo para iterar (ciclos)

Por ejemplo, cuando queremos imprimir los números de 0 hasta 9.
En JavaScript:
for (var i = 0; i < 10; i++) { console.log(i); }
En Ruby:
9.times do |i| puts i end

Estructuras de datos

Si vieron programación en la universidad el título los puede asustar. Pero las estructuras de datos existen porque programar únicamente con los tipos básicos (char, integer, boolean, etc) sería muy difícil. A veces necesitamos almacenar colecciones de datos e información más estructurada.

Los arreglos son los más conocidos, nos permiten almacenar varios datos en una sola variable.
En Javascript:
var arreglo = [1, 2, 3, 4, 5] console.log(arreglo[2]); // 3 - el primer elemento está en la posición 0
En Ruby:
arreglo = [1, 2, 3, 4, 5] puts arreglo[2] # 3 - el primer elemento está en la posición 0

A veces se necesita guardar información más estructurada. Por ejemplo, los datos de una persona.
En JavaScript:
var german = { name: "German Escobar", gender: 'male', age: 32 }; console.log(german.gender); // male
En Ruby:
class Person attr_accessor :name, :gender, :age end german = Person.new german.name = "German Escobar" german.gender = "male" german.age = 32 puts german.gender # male

Funciones

Las funciones, también llamadas procedimientos o métodos, encapsulan algunas instrucciones y se pueden llamar utilizando el nombre de la función.
En JavaScript:
function rockear(lenguaje) { console.log(lenguaje + " rocks!"); } rockear("JavaScript");
En Ruby:
def rockear(lenguaje) puts lenguaje + " rocks!" end rockear("Ruby")

Existen muchos más elementos de cada lenguaje de programación, pero con estos podemos empezar a leer código y jugar con el lenguaje.

Preguntas básicas sobre un lenguaje de programación

¿Qué tipos de datos existen?

¿Cómo se define y se asigna un valor a una variable?

¿Cómo se itera sobre un rango de números?

¿Cómo se define un arreglo?

¿Cómo se itera sobre un arreglo?

¿Cómo se define una función?

¿Cómo se comenta el código?

¿En qué se usa principalmente el lenguaje?

Más recursos

# data[].attributes.attachment_link.description
Germán Escobar Todos los lenguajes de programación comparten algunos elementos básicos que funcionan y se usan de forma diferente en cada lenguaje, pero que cumplen el mismo objetivo. Esos elementos son: Acepto que entender cómo funcionan estos elementos no es diversión pura, pero es la base de la programación.