Unidad 3: Diseño de software utilizando diagramas de actividades


Sesión 8: Introducción al uso de diagramas de actividades

Como se mencionó en la sesión 2, los diagramas de actividades son uno de los múltiples diagramas que se realizan cuando se emplea el diseño de modelado unificado (UML) específicamente para la POO. Sin embargo, se puede emplear este tipo de diseños para representar algoritmos que estén en modelos de programación diferente a la POO. Desde esta sesión, empezarás a trabajar con este tipo de diagramas.

¿QUÉ SABES SOBRE…?

  1. ¿Cómo se realiza el diseño de algoritmos empleando diagramas de actividades?


8.1 CÓMO REPRESENTAR PROCESOS BÁSICOS

En este punto ya debes comprender los conceptos y las habilidades que se requieren para diseñar algoritmos en estructuras secuenciales, de comparación - selección y de repetición. Estos mismos conceptos y habilidades se aplican para el diseño de diagramas de actividades. Observa a continuación el diseño general para cada tipo de estructura:

Algoritmos con estructura secuencial:

Algoritmos con estructura de comparación – decisión:

Algoritmos con estructura de repetición:

Como puedes observar, la lógica es muy similar a la abordada en los diagramas de flujo, sin embargo, existen algunas diferencias. Por un lado, la secuencia del diagrama no es estrictamente vertical, esto implica que los diagramas también pueden expandirse de forma horizontal. Por otro lado, cómo pudiste identificar en la imagen 21, la comparación que se realiza en el símbolo de decisión no se ingresa dentro del símbolo como se hacía en el diagrama de flujo, sino que se establece en las líneas que salen del símbolo.

8.2 CÓMO REPRESENTAR CONDICIONALES ANIDADOS

Los condicionales anidados son condicionales que se establecen dentro de un condicional, ya que en ocasiones es necesario realizar varias comparaciones para determinar si se realiza un procedimiento o no. A continuación se muestra el esquema general de un condicional anidado:

En este caso, el proceso 2 y el proceso 3 solo se puede ejecutar si se da un valor de verdad en el primer condicional.

8.3 COMO REPRESENTAR CICLOS ANIDADOS

Al igual que en los condicionales, existen situaciones en las cuales se deben realizar ciclos anidados, es decir, un ciclo dentro de otro ciclo. Por ejemplo, si quisiéramos agregar un submenú dentro de un menú necesitaríamos dos ciclos, uno para cada menú. Un esquema general para representar un ciclo anidado podría ser el siguiente:

Debes tener en cuenta que dependiendo del tipo de ciclo cambia la forma como se realiza el diagrama, pero la lógica que se aplica en los diagramas de flujo también se aplica los diagramas de actividades.

8.4 CASO DE APLICACIÓN 5

Como se mencionó en la primera sesión, el diseño de juegos es uno de las líneas de trabajo en desarrollo de software. En este caso, vas a observar cómo se realiza el diseño del juego piedra, papel o tijera.

Situación problema:

Construir el juego piedra, papel o tijera.

Requerimientos:

El programa debe mostrar al usuario un mensaje de bienvenida

El programa debe indicarle al usuario que va a jugar contra el sistema

El programa debe solicitar al usuario que ingrese una de las tres opciones: piedra, papel o tijera.

El programa debe elegir aleatoriamente una de las opciones.

El programa debe comparar la selección del usuario y la del programa

El programa debe mostrar al usuario un mensaje indicando el ganador del juego

El programa debe repetirse tantas veces como el usuario lo desee.

Algoritmo

De acuerdo al caso y los requerimientos establecidos, se plantea el siguiente algoritmo:

• Paso 1: Mostrar al usuario el siguiente mensaje de Bienvenida: “Bienvenid@ al juego piedra, papel o tijera en el cual vas a jugar contra el sistema”.

• Paso 2: Solicitarle al usuario que ingrese una de las tres opciones (piedra, papel o tijera).

• Paso 3: El sistema elige de forma aleatoria una de las tres opciones.

• Paso 4: Comparar el valor ingresado por el usuario y el valor elegido por el sistema.

• Paso 5: Mostrar un mensaje al usuario indicando el ganador de la partida

• Paso 6: Preguntarle al usuario si desea jugar de nuevo


Diagrama de flujo

Imagen 25. Diagrama caso aplicación 5

Como puedes observar, en este caso se evidencia el uso de condicionales anidados ya que el mensaje de retorno de si ganó o perdió el usuario depende de la respuesta de él y del número aleatorio que haya determinado el sistema.

ACTIVIDAD DE APRENDIZAJE 8

Propósito

Analizar una situación problema para realizar el diagrama de actividades correspondiente

Descripción

En esta actividad el estudiante deberá analizar un caso propuesto para determinar el algoritmo apropiado y realizar su correspondiente diagrama de actividades.

Criterios de evaluación (I)

Determina un algoritmo de acuerdo a un caso planteado

Construye un diagrama de actividades a partir de algoritmo determinado

Caso

La entidad financiera “Tayrona” desea realizar una aplicación móvil para sus usuarios en la cual le permita a una persona calcular cuánto ahorrará en un tiempo determinado, si al final de cada mes depositara una cantidad de dinero fijo o variable.

Requerimientos

  • El software debe mostrar al usuario un mensaje de bienvenida

  • El software se debe solicitar al usuario que ingrese el tiempo en meses en el cual va a realizar su ahorro

  • El software debe solicitar si la cuota es fija o es variable

  • Si la cuota es fija, calcular el monto que tendrá al final del tiempo ingresado por el usuario.

  • Si la cuota es variable, el usuario debe ingresar la cantidad que va a depositar cada mes y a medida que va ingresando debe aparecerle en pantalla lo que lleva ahorrado. Al final se le debe mostrar al usuario el total que ahorró en este tiempo

  • El programa debe ejecutarse las veces que desee el usuario.

A partir del caso anterior, plantear un algoritmo para dar solución al caso planteado y construir el respectivo diagrama de flujo.

Sesión 9: Arreglos

Existen diversos contextos en los cuales es necesario guardar grandes cantidades de información lo cual es insuficiente con solo definir variables como lo hemos hecho hasta este punto. Por esta razón, en esta sesión abordarás el concepto de arreglo y los procedimientos necesarios para guardar información en un arreglo.

¿QUÉ SABES SOBRE…?

  1. ¿Qué es un arreglo?
  2. ¿Qué tipos de arreglos existen?
  3. ¿Cómo representar un arreglo?

9.1 QUÉ ES UN ARREGLO

Un arreglo es una estructura de datos que permite agrupar y almacenar información utilizando un solo identificador. A diferencia de las variables, los arreglos separan más espacio en memoria para guardar la información ya que depende de la cantidad de información que se va a guardar. Para que tengas un poco más de claridad sobre esto miremos algunos ejemplos:

  • Se desea construir un programa para calcular el IMC (índice de masa corporal) de una persona dependiendo de la altura y el peso ingresado.

  • Se desea construir un programa para calcular la media de edades de un conjunto de personas. La cantidad de personas que puede ingresar el usuario es variable.

En el ejemplo 1, es suficiente con definir dos variables: altura y peso, para hacer el cálculo del IMC. Sin embargo, para el ejemplo 2, como no es posible saber cuántos datos se van a ingresar exactamente por cada usuario que utilice el programa, y tampoco es conveniente definir muchas variables para un mismo tipo de datos, entonces en este caso si es necesario guardar la información en un arreglo. Y en este caso, ¿cómo se definiría un arreglo?...

Como el arreglo funciona como un conjunto de espacios reservados para guardar información se podría visualizar de la siguiente forma:

Edad:

En este caso lo que estás viendo es como una especie de tabla en la cual se establecen posiciones para cada dato y el respectivo espacio para guardar la información. Para el ejemplo se están guardando nueve datos, pero podrían ser más datos, tantos como el usuario quiera. Ahora bien, en este momento te puedes estar preguntando ¿por qué se inicia desde una posición 0?... La posición se debe a que en la mayoría de lenguajes de programación los arreglos contemplan las posiciones desde este valor, por esto se debe tener mucho cuidado en cómo se guarda la información para que no se presenten confusiones en la parte del desarrollo.

Teniendo esto en cuenta, si el usuario va a ingresar 5 edades para calcular el respectivo promedio el arreglo se visualizaría inicialmente de la siguiente forma:

Para guardar información en una posición específica debes usar el identificador del arreglo que en este caso tiene como nombre “edad” y el número de la posición en la cual se va a guardar la información, de esta forma: edad[0] = 23, edad[1] = 19, edad[2] = 27, edad[3] = 31, edad[4] = 25. Los paréntesis cuadrados se utilizan para indicar la posición. Teniendo esto en cuenta, después de guardar la información el arreglo quedaría de la siguiente forma:

Finalmente, para poder calcular la media es necesario sumar todas las edades y dividir entre el número total de edades ingresadas, lo cual sería de la siguiente forma:

Y este mismo proceso se aplicaría para una cantidad mayor de edades ingresadas por el usuario.

9.2 TIPOS DE ARREGLOS

En el caso que se abordó anteriormente abordaste la esquematización y ejemplificación de un arreglo en el cual sólo se podía ingresar un tipo de datos, pero existen diferentes formas de construir arreglos. En este caso se va a abordar los diferentes tipos de arreglos que existen dependiendo de las restricciones y de la dimensión del arreglo.

9.2.1 Arreglos dependiendo de su restricción

Como sabes los arreglos son estructuras de datos que permiten guardar información. Sin embargo, dependiendo del lenguaje de programación es posible crear diferentes tipos de arreglos:

  • Arreglos de un solo tipo de dato: La mayoría de lenguajes de programación exigen al desarrollador que en la construcción del arreglo indiquen el tipo de información que se va a guardar. Si se eligen datos numéricos, entonces el arreglo sólo podrá guardar datos numéricos; si se elige cadenas de caracteres, el arreglo sólo podrá guardar cadena de caracteres, pero los tipos de datos no se pueden combinar.

  • Arreglos de varios tipos de datos: A diferencia del anterior, algunos lenguajes de programación permiten al desarrollador que un arreglo permita guardar diferentes tipos de datos, numéricos o cadena de caracteres, lo cual facilita en algunas situaciones el manejo de la información.

9.2.2 Arreglos dependiendo de su dimensión

En muchas situaciones es insuficiente guardar información en un arreglo como el que se propuso para el caso del promedio de la edad. Por ejemplo, una tienda desea crear un software que permita guardar la información de las ventas diarias para determinar, mensualmente, las ventas totales realizadas. Podrías realizar un arreglo llamado ventas en el cual se guarden entre 28 y 31 datos para el mes, o podría realizar un arreglo que guarde las ventas diarias realizadas por semanas, pero esto implicaría que el arreglo tendría un esquema como el siguiente:

En el caso de la edad había sólo un grupo de casillas para guardar información, pero en este esquema hay varios grupos de casillas, determinados por dos categorías: el de los días y el de las semanas. Esta diferencia nos permite establecer los tipos de arreglos que existen dependiendo de su estructura:

  • Arreglos unidimensionales: Los arreglos unidimensionales son aquellos en los cuales se establece una sola categoría para guardar información como el caso del arreglo construido para guardar la información de la edad.
  • Arreglos multidimensionales: Los arreglos multidimensionales son aquellos en los cuales se establecen diversas categorías para guardar información como el caso del ejemplo del arreglo para las ventas. Como en este ejemplo se establecen dos categorías (día - semana) a este arreglo se le denomina Bidimensional, pero si estuvieran más categorías, por ejemplo (día – semana – mes) el nombre que se le asigna es multidimensional.

Retomando el caso de la tienda, para poder ingresar información en un arreglo debes tener en cuenta que se aplica la misma lógica para un arreglo unidimensional, cada posición tiene un valor que se aplica para cada categoría, lo cual generaría la siguiente estructura equivalente:

Para guardar información en un arreglo bidimensional, se debe establecer la posición en la cual estará cada valor similar a la representación de una pareja ordenada de un punto en el plano cartesiano, de la siguiente forma: ventas[0][0] = 120000, ventas[0][1] = 5000. Esta representación indica que para la semana 1, en el día 1, se va a guardar como valor 120000, y en la semana 1, día 2, se va a guardar como información 5000.

9.3 CÓMO REPRESENTAR UN ARREGLO UNIDIMENSIONAL

Como observaste anteriormente, como la cantidad de información que se guarda en un arreglo no es fija, para guardar y mostrar la información de un arreglo es necesario utilizar las estructuras de repetición. A continuación, se muestra el diseño para generar el arreglo unidimensional del caso edad:

Como puedes observar, el contador del ciclo también funciona para indicar la posición del arreglo en el cual se va a guardar la información. Por esta razón, esta variable debe inicializarse en cero.

9.4 COMO REPRESENTAR UN ARREGLO BIDIMENSIONAL

Para representar un arreglo bidimensional es necesario tener en cuenta el orden en el que se debe guardar la información. Por ejemplo, en el caso de las ventas, se guarda el valor de la venta diaria hasta completar la semana y luego se empieza a guardar los valores de la siguiente semana y así sucesivamente. Teniendo en cuenta esto, el diseño para este caso sería el siguiente:

Como puedes observar, en este diagrama, para poder guardar los datos de las ventas diarias se están evaluando dos ciclos, un ciclo correspondería a los días de la semana y el otro al número de semanas. Generalmente, para esto se utilizan ciclos FOR.

9.5 CASO DE APLICACIÓN 6

Cuando estás en una institución educativa de educación básica, media o superior para verificar que tus calificaciones sean correctas debes sacar promedios simples o ponderados. Para optimizar este proceso, vas a observar el diseño de un software en el cual se va a realizar el proceso de promedio simple:

Situación problema:

Construir un programa que le permita al usuario obtener un promedio simple de 4 calificaciones ingresadas por el usuario.

Requerimientos:

El programa debe solicitar al usuario el nombre y el género

El programa debe mostrar un mensaje de bienvenida al usuario dependiendo del género ingresado

En el mensaje de bienvenida se debe mostrar el nombre del usuario.

El programa debe solicitar al usuario que ingrese las 4 calificaciones

El programa debe verificar que el número de calificaciones no sea superior a 10 para poder calcular el promedio simple

Si el número de calificaciones que va a ingresar el usuario es superior a 10 debe mostrarle un mensaje indicando que no es posible calcular el promedio y se debe volver a solicitar esta información

Se debe calcular el promedio simple de las calificaciones ingresadas

El programa debe mostrar al final el valor del promedio simple con un mensaje que incluya el nombre del usuario.

Algoritmo

De acuerdo al caso y los requerimientos establecidos, se plantea el siguiente algoritmo:

Paso1: Solicitar al usuario que ingrese su nombre y que indique si es género masculino o femenino

Paso 2: Si el usuario eligió masculino mostrar el siguiente mensaje “Bienvenido” + nombre + ”, este software te permite determinar el promedio simple de un conjunto de calificaciones ingresadas”.

Paso 3: Si el usuario eligió femenino mostrar el siguiente mensaje “Bienvenida” + nombre + “, este software te permite determinar el promedio simple de un conjunto de calificaciones ingresadas”

Paso 4: Solicitar al usuario que ingrese la cantidad de calificaciones sobre las cuales va a calcular el promedio simple.

Paso 5: Si el usuario ingresa un número de calificaciones mayor a 10 mostrar el siguiente mensaje: “Lo sentimos, el número de calificaciones no puede ser mayor a 10”, luego, repetir el paso 4.

Paso 6: Si el usuario ingresa un número de calificaciones menor a 10 calcular el promedio simple de las calificaciones ingresadas por el usuario utilizando la expresión algebraica:

En la cual “p” representa el promedio y “N” el número de calificaciones.

Paso 7: Mostrar al usuario el siguiente mensaje: nombre + “, el promedio simple es: “+promedio.

Diagrama de flujo

Teniendo en cuenta lo anterior, el diagrama de flujo correspondiente a este algoritmo es el siguiente:

Como puedes observar, en este caso para guardar las calificaciones ingresadas por el usuario se está utilizando un arreglo unidimensional definido en la variable “calificacion” y una variable denominada sumatoria en la cual se va acumulando la suma de las calificaciones ingresadas por el usuario para poder calcular el promedio después de que el usuario termine de ingresar las calificaciones.

ACTIVIDAD DE APRENDIZAJE 9

Propósito

Analizar una situación problema para realizar el diagrama de actividades correspondiente

Descripción

En esta actividad el estudiante deberá analizar un caso propuesto para determinar el algoritmo apropiado y realizar su correspondiente diagrama de actividades.

Criterios de evaluación (I)

Determina un algoritmo de acuerdo a un caso planteado

Construye un diagrama de actividades a partir de algoritmo determinado

Caso

Se desea construir un programa que registre la siguiente información personal de un usuario: Identificación, Nombre y Edad. La aplicación debe permitirle al usuario ingresar información y consultar la información guardada para un usuario específico.

Requerimientos

  • El software debe mostrar al usuario un mensaje de bienvenida

  • El software se debe mostrar al usuario un menú con 2 opciones: registrar información y consultar información

  • Si el usuario no ha realizado registros, si elige la opción de consulta debe mostrar un mensaje indicando que no hay registros.

  • Si el usuario elige la opción de registro, debe solicitar que ingrese la cantidad de registros que va a guardar.

  • El software debe permitirle al usuario que guarde tantos registros como él lo desee.

A partir del caso anterior, plantear un algoritmo para dar solución al caso planteado y construir el respectivo diagrama de flujo.

Sesión 10: Validación de datos

Durante todas las sesiones hemos visto cómo diseñar algoritmos usando diferentes tipos de estructuras: básicas o secuenciales, de selección o condición y de repetición. Sin embargo, en el diseño de software se debe tener en cuenta que al manejar diferentes tipos de datos se debe tener especial cuidado con la validación de esta información para evitar que se presenten errores en la ejecución del mismo. Por esta razón, en esta sesión vas a aprender a diseñar procesos de validación de datos.

¿QUÉ SABES SOBRE…?

  1. ¿Qué es una validación de datos?
  2. ¿Cómo representar una validación de datos?

10.1 QUÉ ES UNA VALIDACIÓN DE DATOS

La validación de datos es un proceso que te permite crear procedimientos de control sobre la información que ingresa el usuario, es decir, que el tipo de información que se pide sea ingresado correctamente. Por ejemplo, en la sesión anterior observaste un caso en el cual se le solicitaba al usuario que ingresara calificaciones, pero, ¿qué sucedería si el usuario no ingresa un valor numérico sino una palabra o una letra?...

Dentro del diseño no está contemplado esto y si se replica dentro de la programación posiblemente lo que sucedería es que se generaría un error y el programa terminaría su ejecución, y esto no debe suceder. Por esta razón, es necesario que dentro del diseño se tenga en cuenta el proceso de validación de datos para cada dato que se ingresa dentro del software.

10.2 CÓMO REPRESENTAR UNA VALIDACIÓN DE DATOS

Para representar una validación de datos basta con utilizar un condicional sobre un dato de entrada antes de realizar cualquier operación con este dato. Por ejemplo, en muchos de los ejemplos que se trabajaron en el libro se solicitó al usuario que ingresara el género: masculino o femenino. Como es una palabra, es posible que el usuario se equivoque e ingrese otra palabra diferente, por esta razón en el diseño se debe crear un condicional en el cual si el usuario ingresó de forma incorrecta el valor le aparezca un mensaje de error y vuelva a solicitar al usuario que ingrese de nuevo la información.

De manera general y teniendo en cuenta lo mencionado anteriormente, una validación de datos se puede representar de la siguiente forma:

Como puedes observar, lo que se representa en este caso es una condición y una repetición dependiendo del dato ingresado, si el dato está mal ingresado se genera un mensaje de error y se vuelve a pedir al usuario que ingrese el dato, pero si el dato está bien ingresado se pasa al proceso y luego al dato de salida.

10.3 CASO DE APLICACIÓN 7

En diferentes tipos de software es necesario que realices operaciones básicas entre cantidades numéricas, sin embargo, en la que se debe tener mayor cuidado es en la división, ya que se puede presentar un error si se llega a dar el caso en el que se realice una división entre 0. Por esta razón, vas a abordar el diseño de un software en el cual se requiere de una validación de datos para esta operación matemática.

Situación problema:

Construir un programa que le permita al usuario calcular el resultado de dividir 2 números.

Requerimientos:

El programa debe mostrar un mensaje de bienvenida al usuario

El programa debe solicitar al usuario que ingrese dos valores: el primer valor correspondería al dividendo y el segundo al divisor

El programa debe verificar que el segundo valor no sea igual a 0

El programa debe verificar que ninguno de los valores sea un dato no numérico.

El programa debe mostrar al final el resultado de dividir los dos números.

Algoritmo

De acuerdo al caso y los requerimientos establecidos, se plantea el siguiente algoritmo:

  • Paso 1: Mostrar el siguiente mensaje: “Bienvenid@, en este programa puedes calcular la división entre dos números”.

  • Paso 2: Solicitar al usuario que ingrese el primer valor correspondiente al dividendo.

  • Paso 3: Verificar que el dato ingresado sea un valor numérico

  • Paso 4: Solicitar al usuario que ingrese el segundo valor correspondiente al divisor

  • Paso 5: Verificar que el dato ingresado sea un valor numérico

  • Paso 6: Verificar que el dato ingresado no sea igual a 0

  • Paso 7: Calcular la división

  • Paso 8: Mostrar al usuario el resultado de realizar la división

Diagrama de actividades

Teniendo en cuenta el algoritmo planteado, a continuación se presenta el diagrama de actividades correspondiente para este caso:

En esta primera parte se está comprobando si el dividendo es un valor numérico. Si no lo es, se muestra al usuario un mensaje de error y se vuelve a ejecutar la solicitud del dividendo. En muchos lenguajes de programación esto se realiza utilizando el código para la captura de excepciones.

Ya en esta parte lo que se está realizando es una doble verificación de dato del divisor, ya que este, además de que tiene que ser un dato numérico, no puede ser igual a cero ya que el programa generaría un error. Por esta razón, antes de hacer la operación de la división, se realiza la validación de información para que vuelva a ingresar el valor numérico si no cumple con el requerimiento establecido.


ACTIVIDAD DE APRENDIZAJE 10

Propósito

Modificar un diseño establecido para agregar procesos de validación de datos.

Descripción

En esta actividad el estudiante deberá modificar un caso propuesto para agregar procesos de validación al correspondiente diagrama de actividades.

Criterios de evaluación (I)

Modifica un diagrama de actividades ya propuesto para agregar procesos de validación

Indicaciones

Elige uno de los dos casos de aplicación planteados en la sesión 9 y modifica el diseño agregando procesos de validación de datos para cada uno de los datos que se solicitaron al usuario.

results matching ""

    No results matching ""