Escribir programas a partir de un diagrama de...

9
I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista ©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por 1 Escribir programas a partir de un diagrama de flujo por Iván Cruz En esta lectura se revisará una estrategia específica para lograr implementar un programa computacional a partir de un diagrama de flujo, el cual fue diseñado posterior al análisis de un problema predefinido, en este caso se revisarán tres problemas con diferentes enfoques entre sí, para lograr una mayor conceptualización de la estrategia utilizada. En dos de los problemas presentados se realizó una representación de una situación común de implementación de programas computacionales en la vida real, mientras que en el tercer problema a resolver se realizaron dos diagramas de flujo del mismo planteamiento, con la intención de que puedas observar y razonar que existen diferentes maneras de realizar tanto diagramas de flujo como programas y todas son igualmente válidas, siempre y cuando sigan las reglas establecidas para tales propósitos. A continuación se presenta el primer problema de una situación en una librería. Ejemplo 1.‐ Programa para una librería Una librería está rematando todos los libros de edición antigua a $ 125.00 pesos cada uno, por lo cual es necesario desarrollar un pequeño sistema de información que calcule y muestre por pantalla el total a pagar de cada cliente, contemplando la cantidad de libros comprados por el cliente. El primer paso consiste en desarrollar el diagrama de flujo de tal problema. Se deben de tomar en consideración las variables más representativas y tener muy en claro el proceso a seguir. En el presente caso ya se cuenta con el diagrama de flujo como se muestra en la Figura 1.

Transcript of Escribir programas a partir de un diagrama de...

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

1

 

      Escribir programas a partir de un diagrama de flujo  

por Iván Cruz  

 En esta lectura se revisará una estrategia específica para lograr implementar un programa computacional a partir de un diagrama de flujo, el cual fue diseñado posterior al análisis de un problema predefinido, en este caso se revisarán tres problemas con diferentes enfoques entre sí, para lograr una mayor conceptualización de la estrategia utilizada. En dos de los problemas presentados se realizó una representación de una situación común de implementación de programas computacionales en la vida real, mientras que en el tercer problema a resolver se realizaron dos diagramas de flujo del mismo planteamiento, con la intención de que puedas observar y razonar que existen diferentes maneras de realizar tanto diagramas de flujo como programas y todas son igualmente válidas, siempre y cuando sigan las reglas establecidas para tales propósitos. A continuación se presenta el primer problema de una situación en una librería.

  Ejemplo 1.‐ Programa para una librería  Una librería está rematando todos los libros de edición antigua a $ 125.00 pesos cada uno, por lo cual es necesario desarrollar un pequeño sistema de información que calcule y muestre por pantalla el total a pagar de cada cliente, contemplando la cantidad de libros comprados por el cliente. El primer paso consiste en desarrollar el diagrama de flujo de tal problema. Se deben de tomar en consideración las variables más representativas y tener muy en claro el proceso a seguir. En el presente caso ya se cuenta con el diagrama de flujo como se muestra en la Figura 1.

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

2

En este diagrama se puede apreciar que es necesario que el usuario ingrese al programa dos datos, nombre y cantidad, además ya se cuenta con un valor previamente definido que es el precio. Una vez que se han ingresado los datos al sistema se inicia el proceso, donde se realizará el cálculo del monto a pagar. En el ejemplo anterior, se deberá multiplicar el número de libros adquiridos por el precio fijo que tiene cada uno de ellos obteniendo así el resultado que se mostrará por pantalla al empleado de mostrador del negocio mediante un formato determinado: El cliente “nombre” compro “cantidad” y tiene que pagar:” Total pesos”. En la Figura 2, se presenta el código fuente en Lenguaje C del diagrama de flujo anterior, está dividido en cuatro partes fundamentales, las cuales se analizan a continuación.

a) Declaración de variables: Para solucionar el problema anterior se hizo uso de tres variables y una constante:

Variables. Constantes. Cantidad de libros comprados (entero)

Precio de promoción que tienen los libros (flotante)

Monto total a pagar (flotante) Tabla 1. Variables y constantes utilizadas en la figura 1.

La cantidad de libros comprados tiene que ser un valor entero, ya que un libro es una pieza única, no puede ser divida, una persona no puede decir que compró un cuarto de un libro. Por otro lado es importante aclarar que el nombre debe de ir sin espacios en blanco, ya que la sentencia scanf interpreta un espacio en blanco como si fuera el fin de una línea, en el caso de que necesitaras capturar texto con espacios en blanco puedes hacer uso de la sentencia gets, de la cual se presenta un ejemplo:

Tabla 2. Ejemplo del uso de la instrucción gets en lenguaje C.

b) Ingreso de datos: Para capturar los datos que iba a ingresar el usuario, en este caso el

empleado de mostrador de la librería, se hace uso de las sentencias de entrada y salida estándar, printf para desplegar el mensaje indicando al usuario el dato que se desea proporciones y la sentencia de entrada scanf para tomar ese dato de entrada y almacenarlo en las variables previamente definidas de nombre y cantidad. A diferencia de otros tipos de variable los tipos de dato char no necesitan el operador & para poder asignarles la entrada del teclado.

c) Cálculo del total a pagar: Esta línea realiza la operación para obtener la cantidad total a

pagar por parte del cliente asignando ese valor a la variable de tipo float total.

Figura 1. Diagrama de flujo para obtener el precio a pagar por una adquisición de libros

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

3

d) Desplegado de resultado: De nuevo se utiliza la sentencia printf para desplegar el resultado

final dándole un formato agradable al usuario.

Figura 2. Código fuente en Lenguaje C del ejemplo 1. (Dev C++, 2005).

    Ejemplo 2.‐ Programa para calcular el salario de un trabajador.

El profesor de una universidad, tiene un salario base quincenal, pero además puede obtener un 15% extra por estímulo al desempeño y un 10% extra por puntualidad de manera mensual. Debido a que la persona encargada de la nómina tiene una sobrecarga de trabajo, se tomó la decisión de realizar un pequeño programa que sea capaz de calcular el salario mensual de cada profesor de la universidad. En la Figura 3 se presenta el diagrama de flujo de este problema. Se pone de manifiesto que existen tres variables que definen la solución: salario, desempeño y puntualidad. Conociendo el valor de esas tres variables se puede determinar cual sería el salario total de un trabajador, únicamente se requiere de saber si un trabajador obtuvo o no cuáles estímulos para poder realizar las operaciones correspondientes de incremento salarial.

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

4

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

5

Figura 3. Diagrama de flujo del ejemplo 2.

En la Figura 4, se presenta el código fuente en Lenguaje C, del diagrama de flujo del presente ejemplo, el cual para una mejor conceptualización de los aspectos relevantes se ha organizado en cuatro partes, las cuales se describen a continuación.

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

6

a) Declaración de variables: Se han declarado cuatro variables en total, el salario y el total que

representa el salario total, de tipo real (float), para almacenar el salario fijo y el salario calculado posterior a los estímulos, respectivamente. Las otras dos variables desempeño y puntualidad, de tipo entero (int), las cuales se pretende que se les asigne un valor de 1 en caso de haber obtenido tal estímulo y el valor de 0 en caso de no haberlo obtenido. Estas variables son una copia fiel del diagrama de flujo anterior.

b). Ingreso de datos por el usuario: En esta sección se solicita la usuario ingresar el salario del

trabajador, así como especificar con 1 ó 0 el estado del estímulo en ambos rubros del trabajador, lo cuales se almacenan en las variables salario, desempeño y puntualidad respectivamente.

c) Razonamiento de solución: Esta es la parte medular de todo el programa, es aquí donde

convertimos los símbolos de decisión del diagrama de flujo a sentencias condicionales if, las cuales contienen una condición lógica para poder ejecutar el código contenido entre llaves, es necesario aclarar que esta sólo es una solución y puede haber infinidad de ellas, eso depende de la imaginación de cada programador. La primera sentencia de cálculo salarial es la correspondiente a cuando el trabajador obtuvo ambos estímulos, la segunda es cuando se obtuvo el estímulo al desempeño, la tercera es cuando sólo se obtuvo el estímulo a la puntualidad y la cuarta y última es cuando el trabajador no obtuvo ningún estímulo.

d) Salida por pantalla del resultado: Finalmente se despliega el resultado contenido en la

variable el total por medio de la sentencia printf por medio de la pantalla, dando por terminado la ejecución del programa

Figura 4.Código fuente en lenguaje C del ejemplo 2. (Dev C++, 2005).

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

7

  

     Ejemplo 3.‐ Programa para calcular el área de un hexágono.

Un hexágono es una figura de seis lados que contiene seis vértices, la fórmula para calcular el área de este polígono es:

1.- Área = (Perímetro x Apotema) / 2.

Como podemos observar en la fórmula anterior, para poder determinar el área es necesario haber calculado con anterioridad el perímetro, el cual se obtiene con la fórmula:

2.- Perímetro = 6L.

Donde la L representa la medida de cada uno de sus lados.

Ahora bien, en base a lo anterior podemos determinar que el área de un hexágono puede calcularse de la siguiente manera:

3.- Área = (6L x Apotema) / 2. En la Figura 5 se presenta el diagrama de flujo para encontrar el área de un hexágono, aunque hemos de mencionar que existen muchas maneras de dar solución al problema anterior. El uso de los operadores relaciones y lógicos es fundamental en problemas de este tipo y con los cuales se puede ahorrar tiempo de codificación y también del desarrollo del diagrama de flujo.

Figura 5. Diagrama de flujo del ejemplo 3.

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

8

En la Figura 6 se presenta el código fuente del diagrama de flujo que utiliza el operador lógico AND. Este código para efectos de organización se ha dividido en cuatro pasos fundamentales que se describen a continuación.

a) Declaración de variables: En este paso sólo se necesitó declarar tres variables de tipo real (float); la

variable perímetro almacenará el valor del perímetro del hexágono, la variable apotema que almacenará el valor del apotema del hexágono y la variable área que será la responsable de almacenar el resultado del área obtenida.

b) Ingreso de datos: En este paso se le pide al usuario que ingrese tanto el valor del perímetro como del apotema del hexágono respectivamente y se almacenan en sus respectivas variables. c) Proceso de validación y cálculo del área de un hexágono: Este último paso es fundamental debido a que es aquí donde se requiere la lógica por parte del programador, además de que se mostrará el resultado final. El primer objetivo en esta fase es determinar si las cantidades ingresadas por el usuario son las correctas para realizar los cálculos posteriores, las validaciones que se tienen que hacer son las siguientes cuatro: 1. Que el perímetro sea 0 2. Que el perímetro sea negativo 3. Que la apotema sea 0 4. Que la apotema sea negativo Si los datos ingresados no pertenecen a ningún de los incisos previos, entonces únicamente se aplica la formula (1) y se muestra por pantalla el resultado utilizando printf, en caso de que los datos pertenezcan a alguno de los incisos anteriores se muestra por pantalla un mensaje de error para el usuario y se termina la ejecución del programa, toda esta validación esta contenida en la condición if que contiene 2 expresiones relacionales y utiliza el operador lógico AND.

  I-MIP7001_M2AA2L1_Cédula Versión: Septiembre 2012 Revisor: En lista

 

 

©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por escrito de la Universidad Virtual del Estado de Guanajuato.

9

Figura 6.Código fuente en lenguaje C del ejemplo 3. (Dev C++, 2005).

Conclusión  A lo largo de esta lectura se mostraron tres ejemplos de cómo resolver un problema por medio de un programa computacional utilizando un diagrama de flujo previamente diseñado, este paso es fundamental en cualquier desarrollo de programación, debido a que permite mantener de forma clara, legible y organizado, un mecanismo de ayuda conceptual y esquematizado que muestra una secuencia razonada de etapas, para solucionar un problema por medio de un programa computacional en el lenguaje de programación C. 

Referencias   

Deitel, M. (2004). Cómo programar en C/C++ y Java (4ª. Ed.). México: Pearson Educación. [Versión en línea]. Recuperado el 29 de julio de 2010, de la base de datos de Bibliotechnia. Recurso disponible en la Biblioteca Digital de la UVEG. Sedgewick, R. (2000). Algoritmos en C++ (1ª. Ed.). México: Addison Wesley Longman. [Versión en línea]. Recuperado el 29 de julio de 2010, de la base de datos de Bibliotechnia. Recurso disponible en la Biblioteca Digital de la UVEG. Dev C++. (2005). Dev C++ (Ver. 5 (4.9.9.2)). Recuperado el 29 de julio de 2010 de http://www.bloodshed.net/index.html Software utilizado bajo licencia GPL.