29
Diagrama de flujo de datos Programación I PEM. FREDY GONZALEZ 1 Concepto: Un diagrama de flujo de datos o DFD (sus siglas en español e inglés), se utiliza para hacer varias cosas entre ellas trabajos y tareas. Es una representación gráfica del flujo de datos a través de un sistema de información. Un diagrama de flujo de datos también se puede utilizar para la visualización de procesamiento de datos (diseño estructurado). Es una práctica común para un diseñador dibujar un contexto a nivel de DFD que primero muestra la interacción entre el sistema y las entidades externas. Los diagramas de flujo de datos fueron inventados por Larry Constantine, el desarrollador original del diseño estructurado, basado en el modelo de computación de Martin y Estrin: "flujo gráfico de datos" . Los diagramas de flujo de datos (DFD) son una de las tres perspectivas esenciales de Análisis de Sistemas Estructurados y Diseño por Método SSADM. El patrocinador de un proyecto y los usuarios finales tendrán que ser informados y consultados en todas las etapas de una evolución del sistema. Con un diagrama de flujo de datos, los usuarios van a poder visualizar la forma en que el sistema funcione, lo que el sistema va a lograr, y cómo el sistema se pondrá en práctica. El antiguo sistema de diagramas de flujo de datos puede ser elaborado y se comparó con el nuevo sistema de diagramas de flujo para establecer diferencias y mejoras a aplicar para desarrollar un sistema más eficiente. Los diagramas de flujo de datos pueden ser usados para proporcionar al usuario final una idea física de cómo resultarán los datos a última instancia, y cómo tienen un efecto sobre la estructura de todo el sistema. La manera en que cualquier sistema es desarrollado, puede determinarse a través de un diagrama de flujo de datos. Los niveles de un DFD son: Nivel 0: Diagrama de contexto Nivel 1: Diagrama de nivel superior Nivel 2: Diagrama de detalle o expansión

Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Embed Size (px)

Citation preview

Page 1: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

1

Concepto:

Un diagrama de flujo de datos o DFD (sus siglas en español e inglés), se

utiliza para hacer varias cosas entre ellas trabajos y tareas. Es una

representación gráfica del flujo de datos a través de un sistema de

información. Un diagrama de flujo de datos también se puede utilizar

para la visualización de procesamiento de datos (diseño estructurado).

Es una práctica común para un diseñador dibujar un contexto a nivel de

DFD que primero muestra la interacción entre el sistema y las entidades

externas.

Los diagramas de flujo de datos fueron inventados por Larry

Constantine, el desarrollador original del diseño estructurado, basado

en el modelo de computación de Martin y Estrin: "flujo gráfico de datos"

. Los diagramas de flujo de datos (DFD) son una de las tres perspectivas

esenciales de Análisis de Sistemas Estructurados y Diseño por Método

SSADM. El patrocinador de un proyecto y los usuarios finales tendrán

que ser informados y consultados en todas las etapas de una evolución

del sistema. Con un diagrama de flujo de datos, los usuarios van a poder

visualizar la forma en que el sistema funcione, lo que el sistema va a

lograr, y cómo el sistema se pondrá en práctica. El antiguo sistema de

diagramas de flujo de datos puede ser elaborado y se comparó con el

nuevo sistema de diagramas de flujo para establecer diferencias y

mejoras a aplicar para desarrollar un sistema más eficiente. Los

diagramas de flujo de datos pueden ser usados para proporcionar al

usuario final una idea física de cómo resultarán los datos a última

instancia, y cómo tienen un efecto sobre la estructura de todo el

sistema. La manera en que cualquier sistema es desarrollado, puede

determinarse a través de un diagrama de flujo de datos.

Los niveles de un DFD son:

Nivel 0: Diagrama de contexto

Nivel 1: Diagrama de nivel superior

Nivel 2: Diagrama de detalle o expansión

Page 2: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

2

Características de los niveles de un DFD

Diagrama de Contexto: Nivel 0

En el diagrama de contexto se caracterizan todas las interacciones que

realiza un sistema con su entorno (entidades externas), estas pueden

ser otros sistemas, sectores internos a la organización, o factores

externos a la misma. Se dibuja un sólo proceso que representa al

sistema en cuestión y se escribe su nombre en dicha burbuja como un

sustantivo común más adjetivos. De él solamente parten los flujos de

datos que denotan las interrelaciones entre el sistema y sus agentes

externos, no admitiéndose otros procesos ni almacenamientos en el

dibujo, ya que estos son procesos estructurados y ordenados, además

posee una cardinalidad que varia según la función que desempeñe cada

diagrama. Resulta de gran utilidad para los niveles posteriores de

análisis como herramienta de balanceo. Y es conocido como el Diagrama

de Flujo de Datos DFD de Nivel "0".

Diagrama de Nivel Superior: Nivel 1

En el diagrama de nivel superior se plasman todos los procesos que

describen al proceso principal. En este nivel los procesos no suelen

interrelacionarse directamente, sino que entre ellos debe existir algún

almacenamiento o entidad externa que los una. Esta regla de

construcción sirve como ayuda al analista para contemplar que en un

nivel tan elevado de abstracción (DFD Nivel 1) es altamente probable

que la información que se maneja requiera ser almacenada en el sistema

aunque no esté especificado por un Requisito funcional, siendo en

realidad un requisito no-funcional.

Diagrama de Detalle o Expansión: Nivel 2

En un diagrama de nivel 2 o mayor, comienzan a explotarse las

excepciones a los caminos principales de la información dado que

aumenta progresivamente el nivel de detalle. De aquí en adelante se

permiten los flujos entre procesos.

El DFD (Diagrama De Flujo De Datos) nivel 2 puede considerarse el

máximo para ser validado en forma conjunta con el usuario dado que en

los niveles posteriores el alto grado de complejidad del diagrama puede

Page 3: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

3

resultar de muy difícil lectura para personas ajenas al equipo de

sistemas. También se recomienda el diagrama de nivel superior.

DFD, símbolos

DFD, como ya había dicho usa una variedad de símbolos para ejecutar

dichas acciones que necesitamos en un programa, como:

Insertar – mostrar – calcular – funciones – condiciones – etc…

Para ello, les mostraré a continuación cada una:

* Para iniciar y terminar un algoritmo se usa el siguiente símbolo:

* Para ingresar (pedir algún dato) se usa el siguiente símbolo:

* Para calcular (hacer operaciones) se usa el siguiente símbolo:

* Para hacer una operación considerando un límite, se aplica el

“mientras que”, y se usa el siguiente símbolo:

* Para hacer de igual manera una operación poniéndole un límite se

aplica el “para – hasta que”, y se usa el siguiente símbolo:

Page 4: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

4

* Para hacer una condición de “decisión”, se usa el siguiente símbolo:

* Para mostrar (exponer algún dato) se usa el siguiente símbolo:

* Para hacer una función / subprograma, se usa el siguiente símbolo:

* Para llamar a una función / subprograma, se usa el siguiente símbolo:

Así que ahora ya sabemos que símbolos usaremos para hacer algún

proceso especifico cuando vayamos a hacer un algoritmo.

Page 5: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

5

Tipos de Datos y Variables

FreeDFD, es capaz de manejar básicamente tres tipos de datos, los

cuales son números, cadenas y booleanos, asimismo en FreeDFD se

puede trabajar tanto con variables como con constantes, algunos

ejemplos de constantes son:

Numérica: 1234.6

Cadena: ‘Palabra’

Booleana: .F.

Si observamos la definición de estos valores, nos damos cuenta que las

cadenas van entre comillas simples y que para los valores booleanos,

se pone la letra mayúscula correspondiente y un punto antes y después

de ponerla, de este modo:

Verdadero -> .V.

Falso -> .F.

Los valores numéricos pueden ir entre -1*10²⁰⁰⁰ y 1*10²⁰⁰⁰ y los

números más cercanos a 0, son 1*10⁻²⁰⁰⁰ y -1*10⁻²⁰⁰⁰.

Las nombres de las variables, deben empezar siempre con una letra y

puede ir seguida de letras, números y guiones bajos (_), los nombres de

las variables no son sensibles a mayúsculas o minúsculas, por

tanto VARIABLE es igual que variable o VaRiAbLe.

Numero < ------ 0

Texto < ------ ‘ ‘

Lógica < ------ .v.

Page 6: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

6

Cuando una variable recibe un valor por primera vez, el tipo de dato de

esta será igual al tipo de dato del valor. La variables matriciales se

distinguen porque sus índices se indican entre paréntesis: R(5),

Matriz(2,K), vector(1,3,5).

Operadores de FreeDFD

En el programa FreeDFD, se usan diferentes tipos de Operadores, entre

los que encontramos Matemáticos, Relacionales, Lógicos y con

operaciones sobre Cadenas.

A continuación, encontrarás una lista de los operadores, el tipo al que

pertenecen y su sintaxis:

Operadores Matemáticos:

Operación Símbolo Sintaxis

Suma + valor1 + valor2

Resta – valor1 – valor2

Multiplicación * valor1 * valor2

División / valor1 / valor2

Residuo mod valor1 mod

valor2

Potencia ^ valor1 ^ valor2

Raíz Cuadrada sqrt sqrt(valor)

Valor Absoluto abs abs(valor)

Seno sin sin(valor)

Page 7: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

7

Operación Símbolo Sintaxis

Coseno cos cos(valor)

Tangente tan tan(valor)

Arco Seno asin asin(valor)

Arco Coseno acos acos(valor)

Arco Tangente atan atan(valor)

Seno Hiperbólico sinh sinh(valor)

Coseno Hiperbólico cosh cosh(valor)

Tangente

Hiperbólico tanh tanh(valor)

Logaritmo Decimal log log(valor)

Logaritmo

Neperiano ln ln(valor)

Exponencial de e exp exp(valor)

Número Aleatorio random random(valor)

Entero más cercano round round(valor)

Parte entera trunc trunc(valor)

Page 8: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

8

Operadores Relacionales:

Operación Símbolo Sintaxis

Mayor que > valor1 > valor2

Menor que < valor1 < valor2

Mayor igual que >= valor1 >= valor2

Menor igual que <= valor1 <= valor2

Igual que = valor1 = valor2

Diferente de != valor1 != valor2

Operadores Lógicos (Véase Tablas de Verdad y Puertas Lógicas):

Operación Símbolo Sintaxis

No not not valor

Y and valor1 and valor2

O or valor1 or valor2

O exclusivo xor valor1 xor valor2

No Y nand valor1 nand valor2

No O nor valor1 nor valor2

No O exclusivo xnor valor1 xnor valor2

Page 9: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

9

Hoja de problemas a resolver con operadores de DFD

1. Solicita el ingreso de la base y altura de un rectángulo y calcula

su área muestra en pantalla el resultado.

2. Solicita el ingreso de dos número y calcula su potencia del primer

número ^ segundo número muestra en pantalla el resultado.

3. Calcula el logaritmo decimal de un número ingresado muestra en

pantalla el resultado.

4. Ingresa 7 números y calcula su raíz cuadrada a cada uno muestra

en pantalla el resultado.

5. Solicita el ingreso de tu nombre y muestra en pantalla la cantidad

de letras que lo conforman.

6. Solicita el ingreso de 3 nombres suma el primero con el segundo

y el resultado potencia por el tercero.

7. Calcula el iva de una cantidad ingresada por el usuario y muestra

en pantalla el resultado.

8. Solicita el ingreso de dos cantidades con 5 decimales y realiza

una división del primero por el segundo muestra su resultado

usando la opción trucn.

9. Solicita un número y calcula su seno muestra en pantalla el

resultado.

10. Solicita un número y calcula su coseno muestra en pantalla

el resultado.

11. Solicita un número y calcula su tangente muestra en pantalla

el resultado.

12. Solicita un número y calcula su exponencial muestra en

pantalla el resultado.

13. Solicita un número utiliza la opción random muestra en

pantalla el resultado.

Page 10: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

10

Tanto los operadores relacionales como los operadores lógicos,

retornan valores de tipo lógico o booleano, en el caso de FreeDFD,

retornan “.V.” (verdadero o 1) o “.F.” (falso o 0).

Operadores con Cadenas

Para este caso tenemos dos operadores que podemos usar en FreeDFD,

que son:

Obtener la longitud de una cadena: len. Por ejemplo: len(‘hola’) es igual a 4, que es la cantidad de caracteres en la cadena.

Obtener parte del contenido de una cadena: substring. Por

ejemplo:substring(‘pingüino’,5,4) es igual a ‘üino’, ya que “ü”, es el

carácter numero 5 de la palabra “pingüino” y el operador devolverá

los cuatro caracteres siguientes al quinto incluido el mismo.

-Sentencia if: Esta sentencia permite la ejecución de un bloque de

código, si y solo si, se ha cumplido la condición dentro del "if", si no se

cumplió la condición, se pasa a las instrucciones que estén fuera del

"if".

-Sentencia else: En esta sentencia no se plantea directamente una

condición, es mas bien, una respuesta a la condición que se formulo

dentro de la sentencia "if". Si la condición de "if" no se cumplió,

entonces se ejecuta el bloque de código que contenga la sentencia

"else".

Además, no puedo haber una sentencia "else" sin su respectiva

sentencia "if"

-Sentencia else if o else colgante: Esta sentencia es parecida a "else",

con la diferencia de que en ésta si se evalúa una condición. Si la

condición de un "if" anterior a "else if" no se cumplió, entonces se

evalúa la condición de "else if", en caso de que no se cumpla la

Page 11: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

11

condición de la sentencia "else if", se ejecutara el siguiente bloque de

código que este fuera de "else if".

De nuevo, no puede existir un "else if", sin que exista un "if" antes de

él.

Estructuras condicionales simples y compuestas

No todos los problemas pueden resolverse empleando estructuras

secuenciales. Cuando hay que tomar una decisión aparecen las

estructuras condicionales.

En nuestra vida diaria se nos presentan situaciones donde debemos

decidir.

¿Elijo la carrera A o la carrera B?

¿Me pongo este pantalón?

Para ir al trabajo, ¿elijo el camino A o el camino B?

Al cursar una carrera, ¿elijo el turno mañana, tarde o noche?

Por supuesto que en un problema se combinan estructuras

secuenciales y condicionales.

Estructura condicional simple.

Cuando se presenta la elección tenemos la opción de realizar una

actividad o no realizar ninguna.

Page 12: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

12

Representación gráfica:

Podemos observar: El rombo representa la condición. Hay dos opciones

que se pueden tomar. Si la condición da verdadera se sigue el camino

del verdadero, o sea el de la derecha, si la condición da falsa se sigue

el camino de la izquierda.

Se trata de una estructura CONDICIONAL SIMPLE porque por el camino

del verdadero hay actividades y por el camino del falso no hay

actividades.

Por el camino del verdadero pueden existir varias operaciones,

entradas y salidas, inclusive ya veremos que puede haber otras

estructuras condicionales.

Problema:

Ingresar el sueldo de una persona, si supera los 3000 Quetzales mostrar

un mensaje en pantalla indicando que debe abonar impuestos.

Page 13: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

13

Diagrama de flujo:

Podemos observar lo siguiente: Siempre se hace la carga del sueldo,

pero si el sueldo que ingresamos supera 3000 Quetzalesse mostrará por

pantalla el mensaje "Esta persona debe abonar impuestos", en caso que

la persona cobre 3000 o menos no aparece nada por pantalla.

Programa:

import java.util.Scanner;

public class EstructuraCondicionalSimple1 {

public static void main(String[] ar) {

Scanner teclado=new Scanner(System.in);

float sueldo;

System.out.print("Ingrese el sueldo:");

sueldo=teclado.nextFloat();

if (sueldo>3000) {

System.out.println("Esta persona debe abonar impuestos");

}

}

}

Page 14: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

14

La palabra clave "if" indica que estamos en presencia de una estructura

condicional; seguidamente disponemos la condición entre paréntesis.

Por último encerrada entre llaves las instrucciones de la rama del

verdadero.

Es necesario que las instrucciones a ejecutar en caso que la condición

sea verdadera estén encerradas entre llaves { }, con ellas marcamos el

comienzo y el fin del bloque del verdadero.

Ejecutando el programa e ingresamos un sueldo superior a 3000 pesos.

Podemos observar como aparece en pantalla el mensaje "Esta persona

debe abonar impuestos", ya que la condición del if es verdadera.

Volvamos a ejecutar el programa y carguemos un sueldo menor o igual

a 3000 pesos. No debe aparecer mensaje en pantalla.

Estructura condicional compuesta.

Cuando se presenta la elección tenemos la opción de realizar una

actividad u otra. Es decir tenemos actividades por el verdadero y por

el falso de la condición. Lo más importante que hay que tener en

cuenta que se realizan las actividades de la rama del verdadero o las

del falso, NUNCA se realizan las actividades de las dos ramas.

Representación gráfica:

Page 15: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

15

En una estructura condicional compuesta tenemos entradas, salidas,

operaciones, tanto por la rama del verdadero como por la rama del

falso.

Problema:

Realizar un programa que solicite ingresar dos números distintos y

muestre por pantalla el mayor de ellos.

Diagrama de flujo:

Se hace la entrada de num1 y num2 por teclado. Para saber cual variable

tiene un valor mayor preguntamos si el contenido de num1 es mayor

(>) que el contenido de num2, si la respuesta es verdadera vamos por

la rama de la derecha e imprimimos num1, en caso que la condición sea

falsa vamos por la rama de la izquierda (Falsa) e imprimimos num2.

Como podemos observar nunca se imprimen num1 y num2

simultáneamente.

Page 16: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

16

Estamos en presencia de una ESTRUCTURA CONDICIONAL

COMPUESTA ya que tenemos actividades por la rama del verdadero y

del falso.

Programa:

import java.util.Scanner;

public class EstructuraCondicionalCompuesta1 {

public static void main(String[] ar) {

Scanner teclado=new Scanner(System.in);

int num1,num2;

System.out.print("Ingrese primer valor:");

num1=teclado.nextInt();

System.out.print("Ingrese segundo valor:");

num2=teclado.nextInt();

if (num1>num2) {

System.out.print(num1);

} else {

System.out.print(num2);

}

}

}

Page 17: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

17

Cotejemos el diagrama de flujo y la codificación y observemos que el

primer bloque de llaves después del if representa la rama del verdadero

y el segundo bloque de llaves representa la rama del falso.

Compilemos el programa, si hubo errores sintácticos corrijamos y

carguemos dos valores, como por ejemplo:

Ingrese el primer valor: 10

Ingrese el segundo valor: 4

10

Si ingresamos los valores 10 y 4 la condición del if retorna verdadero

y ejecuta el primer bloque.

Un programa se controla y corrige probando todos sus posibles

resultados.

Ejecutemos nuevamente el programa e ingresemos:

Ingrese el primer valor: 10

Ingrese el segundo valor: 54

54

Cuando a un programa le corregimos todos los errores sintácticos y

lógicos ha terminado nuestra tarea y podemos entregar el mismo al

USUARIO que nos lo solicitó.

Operadores

En una condición deben disponerse únicamente variables, valores

constantes y operadores relacionales.

Page 18: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

18

>Operadores Relacionales:

> (mayor)

< (menor)

>= (mayor o igual)

<= (menor o igual)

== (igual)

!= (distinto)

Operadores Matemáticos

+ (más)

- (menos)

* (producto)

/ (división)

% (resto de una división) Ej.: x=13%5; {se guarda 3}

Hay que tener en cuenta que al disponer una condición debemos

seleccionar que operador relacional se adapta a la pregunta.

Ejemplos:

Se ingresa un número multiplicarlo por 10 si es distinto a 0. (!=)

Se ingresan dos números mostrar una advertencia si son iguales.

(==)

Los problemas que se pueden presentar son infinitos y la correcta

elección del operador sólo se alcanza con la práctica intensiva en la

resolución de problemas.

Page 19: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

19

Problemas propuestos

1. Realizar un programa que lea por teclado dos números, si el

primero es mayor al segundo informar su suma y diferencia, en

caso contrario informar el producto y la división del primero

respecto al segundo.

2. Se ingresan tres notas de un alumno, si el promedio es mayor o

igual a siete mostrar un mensaje "Promocionado".

3. Se ingresa por el teclado un texto y si el texto tiene más 5 letras

indicar este texto tiene 5 letras de lo contrario es menor de 5

letras el texto.

Page 20: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

20

Estructuras condicionales anidadas

Decimos que una estructura condicional es anidada cuando por la rama

del verdadero o el falso de una estructura condicional hay otra

estructura condicional.

El diagrama de flujo que se presenta contiene dos estructuras

condicionales. La principal se trata de una estructura condicional

compuesta y la segunda es una estructura condicional simple y está

contenida por la rama del falso de la primer estructura.

Es común que se presenten estructuras condicionales anidadas aún más

complejas.

Problema:

Confeccionar un programa que pida por teclado tres notas de un alumno,

calcule el promedio e imprima alguno de estos mensajes:

Si el promedio es >=7 mostrar "Promocionado".

Si el promedio es >=4 y <7 mostrar "Regular".

Si el promedio es <4 mostrar "Reprobado".

Page 21: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

21

Diagrama de flujo:

Analicemos el siguiente diagrama. Se ingresan tres valores por teclado

que representan las notas de un alumno, se obtiene el promedio

sumando los tres valores y dividiendo por 3 dicho resultado (Tener en

cuenta que si el resultado es un valor real solo se almacena la parte

entera).

Page 22: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

22

Primeramente preguntamos si el promedio es superior o igual a 7, en

caso afirmativo va por la rama del verdadero de la estructura

condicional mostramos un mensaje que indica "Promocionado" (con

comillas indicamos un texto que debe imprimirse en pantalla).

En caso que la condición nos de falso, por la rama del falso aparece

otra estructura condicional, porque todavía debemos averiguar si el

promedio del alumno es superior o igual a cuatro o inferior a cuatro.

Estamos en presencia de dos estructuras condicionales compuestas.

Problemas propuestos

1. Se cargan por teclado tres números distintos. Mostrar por pantalla

el mayor de ellos.

2. Se ingresa por teclado un valor entero, mostrar una leyenda que

indique si el número es positivo, nulo o negativo.

3. Un postulante a un empleo, realiza un test de capacitación, se

obtuvo la siguiente información: cantidad total de preguntas que

se le realizaron y la cantidad de preguntas que contestó

correctamente. Se pide confeccionar un programa que ingrese los

dos datos por teclado e informe el nivel del mismo según el

porcentaje de respuestas correctas que ha obtenido, y sabiendo

que:

4. Nivel máximo: Porcentaje>=90%.

5. Nivel medio: Porcentaje>=75% y <90%.

6. Nivel regular: Porcentaje>=50% y <75%.

Fuera de nivel: Porcentaje<50%.

Page 23: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

23

Condiciones compuestas con operadores lógicos

Hasta ahora hemos visto los operadores:

relacionales (>, <, >=, <= , ==, !=)

matemáticos (+, -, *, /, %)

pero nos están faltando otros operadores imprescindibles:

lógicos (&&, ||).

Estos dos operadores se emplean fundamentalmente en las estructuras

condicionales para agrupar varias condiciones simples.

Operador &&

Traducido se lo lee como ?Y?. Si la Condición 1 es verdadera Y la

condición 2 es verdadera luego ejecutar la rama del verdadero.

Cuando vinculamos dos o más condiciones con el operador ?&&?, las

dos condiciones deben ser verdaderas para que el resultado de la

condición compuesta de Verdadero y continúe por la rama del

verdadero de la estructura condicional.

La utilización de operadores lógicos permiten en muchos casos plantear

algoritmos más cortos y comprensibles.

Problema:

Confeccionar un programa que lea por teclado tres números distintos y

nos muestre el mayor.

Page 24: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

24

Diagrama de flujo:

Este ejercicio está resuelto sin emplear operadores lógicos en un

concepto anterior del tutorial. La primera estructura condicional es una

Page 25: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

25

ESTRUCTURA CONDICIONAL COMPUESTA con una CONDICION

COMPUESTA.

Podemos leerla de la siguiente forma:

Si el contenido de la variable num1 es mayor al contenido de la variable

num2 Y si el contenido de la variable num1 es mayor al contenido de la

variable num3 entonces la CONDICION COMPUESTA resulta

Verdadera.

Si una de las condiciones simples da falso la CONDICION COMPUESTA

da Falso y continua por la rama del falso.

Es decir que se mostrará el contenido de num1 si y sólo si num1>num2

y num1>num3.

En caso de ser Falsa la condición, analizamos el contenido de num2 y

num3 para ver cual tiene un valor mayor.

En esta segunda estructura condicional no se requieren operadores

lógicos al haber una condición simple.

Programa:

import java.util.Scanner;

public class CondicionesCompuestas1 {

public static void main(String[] ar) {

Scanner teclado=new Scanner(System.in);

int num1,num2,num3;

System.out.print("Ingrese primer valor:");

num1=teclado.nextInt();

System.out.print("Ingrese segundo valor:");

num2=teclado.nextInt();

System.out.print("Ingrese tercer valor:");

num3=teclado.nextInt();

if (num1>num2 && num1>num3) {

System.out.print(num1);

} else {

if (num2>num3) {

System.out.print(num2);

}else {

System.out.print(num3);

}

}

}

}

Page 26: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

26

Operador ||

Traducido se lo lee como ?O?. Si la condición 1 es Verdadera O la

condición 2 es Verdadera, luego ejecutar la rama del Verdadero.

Cuando vinculamos dos o más condiciones con el operador ?Or", con

que una de las dos condiciones sea Verdadera alcanza para que el

resultado de la condición compuesta sea Verdadero.

Problema:

Se carga una fecha (día, mes y año) por teclado. Mostrar un mensaje si

corresponde al primer trimestre del año (enero, febrero o marzo)

Cargar por teclado el valor numérico del día, mes y año.

Ejemplo: dia:10 mes:1 año:2010.

Diagrama de flujo:

Page 27: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

27

La carga de una fecha se hace por partes, ingresamos las variables dia,

mes y año.

Mostramos el mensaje "Corresponde al primer trimestre" en caso que

el mes ingresado por teclado sea igual a 1, 2 ó 3.

En la condición no participan las variables dia y año.

Programa:

import java.util.Scanner;

public class CondicionesCompuestas2 {

public static void main(String[] ar) {

Scanner teclado=new Scanner(System.in);

int dia,mes,año;

System.out.print("Ingrese nro de día:");

dia=teclado.nextInt();

System.out.print("Ingrese nro de mes:");

mes=teclado.nextInt();

Page 28: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

28

System.out.print("Ingrese nro de año:");

año=teclado.nextInt();

if (mes==1 || mes==2 || mes==3) {

System.out.print("Corresponde al primer trimestre");

}

}

}

Problemas propuestos

1. Realizar un programa que pida cargar una fecha cualquiera, luego

verificar si dicha fecha corresponde a Navidad.

2. Se ingresan tres valores por teclado, si todos son iguales se

imprime la suma del primero con el segundo y a este resultado se

lo multiplica por el tercero.

3. Se ingresan por teclado tres números, si todos los valores

ingresados son menores a 10, imprimir en pantalla la leyenda

"Todos los números son menores a diez".

4. Se ingresan por teclado tres números, si al menos uno de los

valores ingresados es menor a 10, imprimir en pantalla la leyenda

"Alguno de los números es menor a diez".

5. De un operario se conoce su sueldo y los años de antigüedad. Se

pide confeccionar un programa que lea los datos de entrada e

informe:

a) Si el sueldo es inferior a 500 y su antigüedad es igual o superior

a 10 años, otorgarle un aumento del 20 %, mostrar el sueldo a

pagar.

Page 29: Diagrama de flujo de datos - …€¦ · representación gráfica del flujo de datos a través de un sistema de ... Es una práctica común para un diseñador dibujar un contexto

Diagrama de flujo de datos

Programación I

PEM. FREDY GONZALEZ

29

b)Si el sueldo es inferior a 500 pero su antigüedad es menor a 10

años, otorgarle un aumento de 5 %.

c) Si el sueldo es mayor o igual a 500 mostrar el sueldo en pantalla

sin cambios.

6. Escribir un programa en el cual: dada una lista de tres valores

numéricos distintos se calcule e informe su rango de variación

(debe mostrar el mayor y el menor de ellos)