Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Preguntas
El DFD es una técnica para modelar sistemas que exhibe gráficamente las funciones del sistema, la
interacción de estas, las transformaciones de datos y el detalle de los datos que entran y los que salen,
entre otras. Dicho en forma resumida, el objetivo del DFD es el de desglosar aquella “Caja Negra” que
es un sistema al cual ingresan datos de entrada y genera una salida, enfocándose en cómo este
transforma los datos de entrada (y genera nuevos) hasta llegar a la salida de estos. Los diagramas de
flujo son modelos gráficos que muestran una serie de pasos secuenciales finito y con un objetivo
particular. Se llaman de esa forma porque el grafico tiene un sentido (hablando de dirección)
representado con flechas. La diferencia que tienen estos con los DFD es que en esas flechas, además,
viajan datos.
Porque se correrían de su principal objetivo que es hacer una abstracción de las interacciones de los
diferentes procesos del sistema y también porque al especificar los procedimientos que se hacen con
la información resultaría difícil poder visualizar todo con claridad en el mismo gráfico. Los detalles se
aclaran y desarrollan mediante las especificaciones de procesos.
En un DFD, un almacenamiento representa aquel lugar donde van a persistir los datos. Por ejemplo,
se puede usar para representar dónde van a guardarse los datos de un préstamo en un sistema
bancario.
Página 2 de 26
Esto se interpreta como la lectura o consulta de uno o más datos de ese almacén por parte del proceso.
Por ejemplo, el proceso “Brindar préstamo” de un sistema bancario, seguramente va a leer del
almacén de datos donde persiste la información acerca de los antecedentes financieros del cliente.
Esto se interpreta como la modificación de los datos del almacén por parte del proceso. Por ejemplo,
el proceso “Crear cuenta bancaria” va a ir a agregar un nuevo número de cuenta bancaria al almacén
de datos donde persisten las mismas. ABMC.
El propósito de una entidad externa es brindar datos que vienen fuera del sistema y que se verán
transformados por el sistema mismo; o también, consumir los datos que fueron transformados por
el sistema.
8. ¿Cuál sería una buena regla para nombrar los procesos en un DFD?
Una buena manera de nombrar los procesos en un DFD es utilizar acciones que representen lo que
se va a hacer en ese proceso. No tiene por qué ser muy extenso mientras se muestre lo que va a
hacer ese proceso. Por ejemplo: “Anotar persona”, “Vaciar inventario”, “Modificar producto”, etc.
9. ¿Cuál sería la mala interpretación que probablemente les daría el usuario a los
números de las burbujas en un DFD?
Una mala interpretación que podrían tener los usuarios a la hora de ver los números en las burbujas
de los DFD es que piensen que son uno seguido del otro (secuenciales), es decir, que un proceso
continúe obligatoriamente después de otro basándonos en su número (proceso B continua del
proceso A = ERROR) ya que el número no representa una continuidad de uno y del otro.
10. ¿Por qué son importantes los DFD por niveles en el modelo de un sistema?
Los niveles de un DFD son importantes porque nos permiten saber cuál será el límite o alcance de
ese sistema. Por ejemplo, no es lo mismo un DFD de nivel 0 que muestra todo de una manera más
sencilla y da una mirada rápida de cómo interaccionan las entidades externas con un único proceso,
que, un DFD de nivel 1 que muestra todo mucho más detallado y se muestra muchos más elementos
que en el nivel 0.
Página 3 de 26
No se pueden combinar dos almacenamientos mediante un flujo de datos por que en los DFD solo
se permite la comunicación mediante procesos, cualquier otra combinación no se verá aceptada.
13. ¿Es necesario que todas las partes de un sistema se dividan hasta el mismo nivel de
detalle? ¿Por qué?
Si, este proceso de descomposición debe continuar hasta que se alcance un nivel en el que un
proceso pueda ser descrito de forma sencilla y no ambigua. Estos procesos se denominan primitivos.
Es decir, todos deberían llegar hasta este punto, hasta este nivel de detalle.
Página 4 de 26
Parte Práctica
i. Procesos.
1. Crear caja de ahorro
2. Obtener recaudación
3. Autorizar crédito hipotecario
iii. Almacenamientos.
1. Exámenes
2. Clientes
3. Servidores
El proceso “Crear caja de ahorro” lee del almacén de datos ‘Clientes’ el cod_cliente para poder
agregar un nuevo registro al almacén de datos ‘Cuentas’ con el cod_cliente + nom + ape + fecha_alta
y que éste devuelva el num_cuenta el cual luego se envía al cliente.
Página 5 de 26
(De ser necesario completar narrativa con agregados que considere convenientes).
“Una biblioteca realiza préstamos de libros. El sistema de biblioteca controla, cuando llega un
usuario, si es o no socio; si no lo es, solo puede leer libros en sala, en cuyo caso controla la existencia
del libro y registra el préstamo para posteriores análisis estadísticos. Si es socio, puede llevarlo si
está disponible y si tiene todas las cuotas al día; en caso contrario solo puede verlos en sala. Controla
de devolución y penaliza a los socios que no la realizan cuando corresponde con una suspensión
temporaria de 3 días. Cuando realizan un pedido de un libro que no está en existencia en el catálogo,
lo registran para futuras compras...”.
Página 6 de 26
Página 7 de 26
Diccionario de Datos
Preguntas
• “=”: Significa que una variable o parámetro “Está compuesta por” un valor específico
que se detalla a la derecha del símbolo. Ejemplo: Color (mi variable) = (está
compuesta por) [rojo|verde|amarillo] (los valores posibles que componen a mí
variable
• “+”: Significa “y”, esto quiere decir que podemos concatenar distintos valores
utilizando este símbolo. Ejemplo: A = B + C esto significa que la variable A está
compuesta por la variable B y la C.
• “( )”: “optativo”, significa que los valores encerrados por los paréntesis pueden estar
o no presentes en la variable. Ejemplo: nombre=primer_nombre +
(segundo_nombre) + apellido. Esto quiere decir que el nombre debe componerse
del primer nombre y el apellido, pero es opcional que se incluya el segundo nombre.
• “{ }”: “Iteración”, quiere decir que el elemento puede estar compuesto por múltiples
componentes. Ejemplo: compra = {articulo}, esto significa que una compra de
contener distintos artículos, esta no tiene límites a no ser que nosotros lo
definamos. Por ejemplo, podemos poner articulo = {vi:1;vf:5} y determinaremos que
solo podemos incluir entre 1 y 5 artículos.
• “[ / ]”: Significa que podemos seleccionar una de las alternativas posibles que
encierran estos símbolos. Ejemplos: vino = [blanco|tinto|rosado]
Página 8 de 26
Parte práctica
Nombre: id
Descripción: Identificador de personal
Longitud: 4
Tipo: numérico
Dominio: id = {vi:0000; vf:9999}
Un dato opcional podría ser la descripción de un producto dentro de un sistema de stock, ya que no
es un dato indispensable.
Nombre: descripcion
Descripción: descripción de un producto
Longitud: 30
Tipo: alfanumérico
Dominio: descripción = (descripción_del_producto)
Podría escribirse con una iteración de 0 a 1, de esta forma quedaría así: Datos = nombre +
0{e-mail}1, donde el campo e-mail podría o no incluirse dentro de la definición de datos.
Un ejemplo podría darse en un dato “Billete”, donde tengamos que seleccionar entre los distintos
valores que puede tener la moneda peso: billete=[10|20|50|100|200|500|1000]
Nombre: Nombre
Descripción: Nombre completo del dueño del documento
Longitud: 30
Tipo: alfanumérico
Dominio: nombre = primer_nombre + (segundo_nombre)
Nombre: Apellido
Descripción: Apellido completo del dueño del documento
Longitud: 30
Tipo: alfanumérico
Dominio: apellido = apellido_paterno + (apellido_materno)
Nombre: Sexo
Descripción: sexo del dueño del documento
Longitud: 1
Tipo: alfanumérico
Dominio: sexo = [M | F]
Nombre: nacionalidad
Descripción: país de nacimiento del dueño del documento
Longitud: 10
Tipo: alfanumérico
Dominio: nacionalidad = país_de_nacimiento
Nombre: fecha_nacimiento
Descripción: Fecha de nacimiento del dueño del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_nacimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} +
Página 10 de 26
año={vi:1890; vf:9999}
Nombre: fecha_emision
Descripción: Fecha de emision del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_emision = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} + año={vi:1890;
vf:9999}
Nombre: fecha_vencimiento
Descripción: Fecha de vencimiento del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_vencimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} +
año={vi:1890; vf:9999}
Nombre: numero_tramite
Descripción: Numero identificador del trámite realizado
Longitud: 15
Tipo: numérico
Dominio: numero_tramite = {vi:000000000000000; vf:999999999999999}
Nombre: numero_de_documento
Descripción: Numero identificador del documento
Longitud: 8
Tipo: numérico
Dominio: numero_de_documento = {vi:00000000; vf:99999999}
Nombre: domicilio
Descripción: Domicilio del dueño del documento
Longitud: 50
Tipo: alfanumérico
Dominio: domicilio = calle + altura={vi:1; vf:999999} + barrio + localidad + provincia
Nombre: lugar_de_nacimiento
Descripción: Domicilio del dueño del documento
Longitud: 20
Tipo: alfanumérico
Dominio: lugar_de_nacimiento = localidad
Nombre: Nombre
Descripción: Nombre completo del dueño del documento
Longitud: 30
Tipo: alfanumérico
Dominio: nombre = primer_nombre + (segundo_nombre)
Nombre: Apellido
Descripción: Apellido completo del dueño del documento
Longitud: 30
Página 11 de 26
Tipo: alfanumérico
Dominio: apellido = apellido_paterno + (apellido_materno)
Nombre: nacionalidad
Descripción: país de nacimiento del dueño del documento
Longitud: 10
Tipo: alfanumérico
Dominio: nacionalidad = país_de_nacimiento
Nombre: fecha_nacimiento
Descripción: Fecha de nacimiento del dueño del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_nacimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC}
+(año={vi:1890; vf:9999}
Nombre: fecha_emision
Descripción: Fecha de emisión del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_emision = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} + año={vi:1890;
vf:9999}
Nombre: fecha_vencimiento
Descripción: Fecha de vencimiento del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_vencimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} +
año={vi:1890; vf:9999}
Nombre: control_interno
Descripción: Numero interno de verificación del trámite realizado
Longitud: 15
Tipo: numérico
Dominio: control_interno = {vi:000000000000000; vf:999999999999999}
Nombre: categoria
Descripción: Tipo de trámite realizado
Longitud: 10
Tipo: alfanumérico
Dominio: categoria = tipo_de_tramite
Nombre: domicilio
Descripción: Domicilio del dueño del documento
Longitud: 25
Tipo: alfanumérico
Dominio: domicilio = calle + altura={vi:1; vf:999999} + barrio
Nombre: clase
Descripción: Categorías habilitadas por el documento
Longitud: 30
Página 12 de 26
Tipo: alfanumérico
Dominio: clase = letra + identificador = {vi:1; vf:4}
Nombre: donante
Descripción: Especifica si la persona es donante de órganos
Longitud: 2
Tipo: booleano
Dominio: donante=[SI|NO]
Nombre: grupo_y_factor
Descripción: Tipo de sangre de la persona
Longitud: 10
Tipo: alfanumérico
Dominio: grupo_y_factor = factor_sanguineo=[A|B|AB|O] +
tipo=[POSITIVO|NEGATIVO]
Nombre: restricciones
Descripción: restricciones del conductor
Longitud: 50
Tipo: alfanumérico
Dominio: (restricciones = conjunto_de_restricciones)
Nombre: documento
Descripción: Documento Nacional de Identidad del alumno
Longitud: 8
Tipo: numérico
Dominio: documento = {vi:00000000; vf:99999999}
Nombre: Nombre_completo
Descripción: Nombre completo del alumno
Longitud: 60
Tipo: alfanumérico
Dominio: nombre = primer_nombre + (segundo_nombre) + apellido_paterno +
(apellido_materno)
Nombre: facultad
Descripción: Facultad a la que pertenece el alumno
Longitud: 25
Tipo: alfanumérico
Dominio: facultad = nombre_de_la_facultad
Nombre: telefono
Descripción: teléfono de contacto del alumno
Longitud: 10
Tipo: numérico
Dominio: teléfono = característica + numero_de_telefono
Nombre: domicilio
Descripción: Domicilio del dueño del alumno
Página 13 de 26
Longitud: 20
Tipo: alfanumérico
Dominio: domicilio = calle + altura={vi:1; vf:999999}
Nombre: matricula
Descripción: identificador interno de la universidad
Longitud: 12
Tipo: alfanumérico
Dominio: matricula = código_interno
Nombre: carrera
Descripción: carrera que cursa el alumno
Longitud: 40
Tipo: alfanumérico
Dominio: carrera = nombre_de_la_carrera
“En una empresa de alquiler de vehículos se pueden alquilar vehículos de varios tipos y formas.
Cuando se alquila un coche se formaliza un contrato en el que aparece un número de contrato
(formado por un código de dos letras y seis dígitos), la fecha de contratación del vehículo, los datos
del cliente, datos del vehículo, datos del tipo de alquiler, de la forma de pago (se pueden realizar los
pagos de diversas maneras) y unas observaciones. Los clientes que pueden alquilar los vehículos son
personas individuales o empresas. En el caso que sea una persona individual deberá aportar los
datos personales: nombre (10 caracteres), apellidos (30 caracteres), datos del carné de conducir,
dirección (30 caracteres), teléfono (número y extensión en el caso que sea necesario). El número de
teléfono está formado por 9 dígitos y la extensión por cuatro. Si es una empresa deberá indicar el
nombre de la empresa (25 caracteres), nombre de la persona de contacto (40 caracteres), teléfonos
(número y extensión, si es necesario) y fax, si lo tuviera. En ambos casos se puede alquilar más de un
vehículo. No es necesario para el alquiler de un vehículo que la persona que lo contrate posea carné
de conducir. Si no tiene carné de conducir se debe aportar el carné de identidad (número de 9
dígitos con el formato 99.999.999, un guión y una letra). Si tiene carné de conducir habrá que indicar
aparte del número (9 dígitos) y del tipo (A1, A2, B1,B2,C1,D,E), la fecha de caducidad. En el caso que
la persona que contrate el alquiler del vehículo no disponga de carné o no tenga el carné apropiado
para el tipo de vehículo contratado habrá que indicar en observaciones (100 caracteres) que la
empresa no se hace responsable ante cualquier tipo de circunstancia producida. Los vehículos que
existen en la empresa son de cuatro tipos: coches de lujo (L), turismos (T), camiones (C) y
motocicletas (M). Los vehículos podrán ser alquilados con conductor (C) o sin él (SC).
Independientemente de que se alquile con conductor o sin él, se podrá alquilar por días (D), por
kilómetros (K) o por ambos conceptos (A). Las formas de pago son al contado, por tarjeta de crédito
o combinación de ambos. Si se abona con tarjeta de crédito habrá que indicar la clase de tarjeta
(VISA, RED 6000, AMERICAN EXPRESS, DINERS CLUB) y el número de la misma (9999-9999-9999-
9999). “
Datos Elementales
Nombre: num_contrato
Descripción: número de contrato para identificar la operación
Tipo: alfanumérico
Longitud: 8
Dominio: num_contrato = {vi:AA000000; vf:ZZ999999}
Nombre: fecha_emision
Descripción: Fecha en la que se contrata el rodado
Tipo: alfanumérico
Longitud: 10
Dominio: fecha_emision = día={vi:01; vf:31} + mes={vi:ENE; vf:DIC} + año={vi:1890; vf:9999}
Nombre: nom_personal
Descripción: Nombre del individuo que alquile el rodado
Tipo: alfanumérico
Longitud: 10
Dominio: nom_personal = primer_nombre + (segundo_nombre)
Nombre: apellido
Descripción: Apellido del individuo que alquile el rodado
Tipo: alfanumérico
Longitud: 30
Dominio: apellido= apellido
Nombre: direccion
Descripción: Dirección del individuo que alquile el rodado
Tipo: alfanumérico
Longitud: 30
Dominio: direccion = nombre_calle + altura
Nombre: num_cel
Descripción: Número celular del individuo que alquile el rodado
Tipo: numérico
Longitud: 9
Dominio: num_cel = {vi:000000000; vf:999999999}
Nombre: cod_area
Descripción: Código de área de un número celular
Tipo: numérico
Longitud: 4
Dominio: (cod_area = {vi:+000; vf:+999})
Nombre: nom_empresa
Descripción: Nombre de la empresa que alquile el rodado
Página 15 de 26
Tipo: alfanumérico
Longitud: 25
Dominio: nom_empresa= razon_social
Nombre: nom_contacto
Descripción: Nombre de contacto de la empresa que alquile el rodado
Tipo: alfanumérico
Longitud: 40
Dominio: nom_contacto= nombre_persona + (apellido_persona)
Nombre: fax
Descripción: Número de fax de la empresa
Tipo: numérico
Longitud: 9
Dominio: (fax = {vi:000000000; vf:999999999})
Nombre: nro_carnet
Descripción: Número de carnet de conducir
Tipo: numérico
Longitud: 9
Dominio: (fax = {vi:000000000; vf:999999999})
Nombre: tipo_carnet
Descripción: Tipo de carnet de conducir
Tipo: alfanumérico
Longitud: 2
Dominio: (tipo_carnet= [A1 | A2 | B1 | B2 | C1 | D | E])
Nombre: fec_caducidad_carnet
Descripción: Fecha en la que vence el carnet de conducir
Tipo: alfanumérico
Longitud: 10
Dominio: (fec_caducidad_carnet= día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} + año={vi:2020; vf:9999})
Nombre: dni
Descripción: Documento Nacional de Identidad
Tipo: numérico
Longitud: 10
Dominio: (fax = {vi:0000000001; vf:9999999999})
Nombre: observaciones
Descripción: Se ponen comentarios acerca de la transacción
Tipo: alfanumérico
Longitud: 100
Dominio: observaciones = comentarios_alquiler
Página 16 de 26
Nombre: tipo_vehiculo
Descripción: Tipo de vehículo a alquilar
Tipo: alfanumérico
Longitud: 1
Dominio: (tipo_vehiculo= [ L | T| C | M])
Nombre: tiene_conductor
Descripción: Define si va a tener conductor el rodado
Tipo: booleano
Longitud: 2
Dominio: (tiene_conductor= [S | SC])
Nombre: forma_alquiler
Descripción: Forma en la que se alquila el rodado
Tipo: alfanumérico
Longitud: 1
Dominio: (forma_alquiler= [ D | K | A ])
Nombre: forma_pago
Descripción: Forma en la que se paga el alquiler
Tipo: alfanumérico
Longitud: 2
Dominio: (forma_pago= [ CO | CR | A ])
Nombre: nombre_tarjeta
Descripción: Nombre de la tarjeta de crédito
Tipo: alfanumérico
Longitud: 30
Dominio: nombre_tarjeta= nombre de la tarjeta
Nombre: numero_tarjeta
Descripción: Nombre de la tarjeta de crédito
Tipo: alfanumérico
Longitud: 19 9999-9999-9999-9999
Dominio: (numero_tarjeta = {vi:0000-0000-0000-0000; vf:9999-9999-9999-9999})
Nombre: cant_vehiculos_alquilados
Descripción: Cantidad de vehículos alquilados en la transacción
Tipo: numérico
Longitud: 3
Dominio: cant_vehiculos_alquilados = cant_vehiculos_alquilados
Nombre: telefono
Descripción: Número de teléfono con su código de área
Tipo: alfanumérico
Página 17 de 26
Longitud: 13
Dominio: telefono= (cod_area) + num_cel
Nombre: carnet_conducir
Descripción: Son los datos que componen el carnet de conducir
Tipo: alfanumérico
Longitud: 21
Dominio: carnet_conducir= nro_carne + tipo_carne + fec_caducidad_carne
Nombre: carnet_identidad
Descripción: Es el dni con un guión y un número
Tipo: alfanumérico
Longitud: 12
Dominio: carnet_identidad= dni + char(1) + numeric (1)
Nombre: carnet_conducir_o_identidad
Descripción: Es el dni con un guión y un número
Tipo: alfanumérico
Longitud: 121
Dominio:carnet_conducir_o_identidad= [carnet_conducir | carnet_identidad + observaciones]
Nombre: datos_persona
Descripción: son los datos de un particular que alquila el rodado
Tipo: alfanumérico
Longitud: 204
Dominio:datos_persona= nom_personal + apellido + carnet_conducir_o_identidad + direccion +
telefono
Nombre: datos_empresa
Descripción: son los datos de la empresa que alquila el rodado
Tipo: alfanumérico
Longitud: 87
Dominio: datos_empresa= nom_empresa + nom_contacto + telefono + (fax)
Nombre: datos_cliente
Descripción: son los datos del cliente que alquila el rodado
Tipo: alfanumérico
Longitud: 204
Dominio: datos_cliente= [datos_persona | datos_empresa]
Nombre: datos_vehiculo
Descripción: son los datos de la forma de alquiler
Tipo: alfanumérico
Longitud: 6
Dominio: datos_alquiler= tipo_vehiculo + tiene_conductor + cant_vehiculos_alquilados
Página 18 de 26
Nombre: dias_alquiler
Descripción: son los días que el rodado va a estar alquilado
Tipo: numerico
Longitud: 3
Dominio: (dias_alquiler= {vi:000; vf:999})
Nombre: km_alquiler
Descripción: son los kilómetros que el rodado va a tener disponibles durante el alquiler
Tipo: numerico
Longitud: 3
Dominio: (km_alquiler= {vi:000; vf:999})
Nombre: datos_alquiler
Descripción: son los datos de la forma de alquiler
Tipo: alfanumérico
Longitud: 7
Dominio: datos_alquiler= forma_alquiler + [dias_alquiler + (km_alquiler) | (dias_alquiler) +
km_alquiler ]
Nombre: datos_pago
Descripción: son los datos de la forma de pago
Tipo: alfanumérico
Longitud: 51
Dominio: datos_pago= forma_pago+ (nombre_tarjeta + numero_tarjeta)
Nombre: datos_transaccion
Descripción: son los datos de la transacción final
Tipo: alfanumérico
Longitud: 386
Dominio: datos_transaccion= num_contrato + fecha_emision + datos_cliente + datos_vehiculo +
datos_alquiler + datos_pago + observaciones
Especificación de procesos
Parte teórica
2. ¿Debe un proyecto de desarrollo de sistemas utilizar una sola herramienta para las
especificaciones de proceso? ¿Por qué?
Las burbujas que requieren una especificación son las de procesos primitivos.
El lenguaje procedimental o pseudocódigo tiene una sintaxis menos rígida que el lenguaje
convencional, es una combinación entre el lenguaje de programación y el lenguaje natural, esto
permite que sea mucho más sencillo codificar cada parte del sistema luego de su diseño. Además,
utiliza menor cantidad de espacio para expresar una idea. El objetivo principal de su implementación
es lograr detallar el funcionamiento de un proceso de una forma simple, realizando la menor
cantidad de ambigüedades posibles y logrando que este se comprenda de una forma clara.
ii) Luego continuamos con la secuencia de instrucciones del proceso. Estas se van a
ejecutar de forma lineal y en el orden que las iremos detallando.
iii) Dentro de cada proceso vamos a tener una serie de variables y parámetros que
pueden ser:
1) Parámetros de entrada: Son los que el proceso espera recibir para realizar
sus funciones. A esto también se lo conoce como Lectura de datos.
2) Variables de salida: Es el resultado del proceso, lo que entrega al usuario o al
proceso que las esté esperando. A esto también se lo denomina escritura o
salida de datos.
3) Variables internas del proceso: Estas son variables internas del proceso que
se utilizan para llevar a cabo ciertas funciones específicas. Estos pueden ser
acumuladores, contadores o variables simples.
iv) Es útil usar condicionales para evaluar determinados resultados o expresiones y así
realizar acciones puntuales.
v) También podemos usar iteraciones para generar una secuencia de operaciones en
forma repetida.
vi) Otra herramienta muy útil es la utilización de funciones, estas sirven para
descomponer tareas más complejas en varias partes que puede ser utilizadas a lo
largo de todo el proceso.
Las características principales de los árboles de decisiones es que están compuestos por una
raíz principal en la que se va dividendo en distintas condiciones hasta llegar a la condición
final, una vez se cumpla cierta condición se generará una acción correspondiente.
Sus características principales son el uso de las acciones y condiciones, pero divididas en
sub-cuadros, estos, muestran distintas posibilidades. Por parte de las acciones se las
identifica en un sub-cuadro y en otro se muestras las acciones seleccionadas. Por otro lado,
en las condiciones se identifican las distintas condiciones y se muestran todas las
combinaciones posibles de cada condición (utilizando un método de V o F).
Para el caso de un árbol de decisión lo utilizaría para la búsqueda binaria en el cual el árbol se
dividiría en dos partes donde los números más pequeños de su nodo superior se agregarían a la
izquierda y los de mayor tamaño a la derecha. Por otra parte, las tablas de decisión las utilizaría para
procesos de pago y que muestre las distintas condiciones en base a que pagó se usa con su
respectivo resultado.
Página 21 de 26
Parte práctica
Desde Net Systems se necesita un sistema para poder contratar personal idóneo que se ajuste a la
búsqueda de un sys admin. El sistema recibirá los datos del candidato (Nombre, Apellido y Edad) y
las notas de los exámenes tanto de Linux como de Windows. En base a los datos obtenidos se
verificarán sus skills. Los skills se definen en base a sus notas. Si la nota es mayor a 8, se considera
que el candidato tiene skills en dicho sistema operativo. El candidato debe ser mayor de 30 años
(preferentemente) tener skills en Linux y en Windows (deseable). Si el candidato no tiene skills en
Linux pero sí las tiene en Windows, también será contratado. En caso de que el candidato sea menor
de 30 años, debe tener skills en Linux (excluyente). En todos los demás casos, el candidato no será
contratado. Todos los candidatos que realizaron exámenes se registran en una lista de curriculums y
se archivan en la empresa. En caso de que el candidato sea contratado, será dado de alta como
empleado en nuestro sistema, creando un nuevo número de legajo e indicando la fecha en la que se
dió de alta. Se le informará al nuevo empleado su número de legajo y su fecha de inicio laboral.
Página 22 de 26
i) Pseudocódigo.
Almacenamientos
Flujos de datos
PSEUDOCODIGO
Contratar empleado
Inicio
INGRESO nom + ape + edad de Candidato
LEO nota_linux + nota_windows de Exámenes
*Si nota_linux >=8 || edad >30 && nota_linux >=6 && nota_linux <8 && nota_windows >=8
GRABO nom + ape + edad + fecha_ingreso en Empleados
fecha_ingreso = “Fecha actual”
fecha_inicio = “Fecha actual” + 7 días
LEO num_legajo de Empleados
GRABO cod_candidato + nom + ape en Curriculums
MUESTRO num_legajo + fecha_ingreso + fecha_inicio
Fin
i) Prestar libro.
En una biblioteca se realizan prestamos de libros. El cliente debe ingresar su nombre, apellido y libro
que desea. Se asume que el cliente está cargado en el sistema dado que, si no lo estuviera, no podría
realizar una solicitud. Se valida el código del cliente y el código del libro que desea llevar en
comodato. En base a estos datos, se registra la fecha en la cual se lleva el libro en comodato y se
informa que el mismo debe ser devuelto exactamente 7 días después de la solicitud.
Almacenamientos
Flujos de datos
PSEUDOCODIGO
Prestar libro
Inicio
INGRESO nom + ape de Cliente
LEO cod_cliente de Clientes
LEO cod_libro de libros
GRABO cod_cliente + cod_libro + fecha_solicitud + fecha_devolucion en Comodatos
fecha_solicitud = “Fecha actual”
fecha_devolucion = “Fecha actual” + 7 días
MUESTRO nom + ape + nom_libro + fecha_solicitud + fecha_devolucion
Fin
En una casa de electrodomésticos, se cuenta con un sistema de ventas en el cual, al momento del
pago, el cajero debe ingresar el código de pedido. Se debe validar dicho código de pedido y extraer
la información del código de cliente y el importe de la venta. Una vez obtenidos estos datos, se
registra la venta informando código de pedido, código de cliente, importe, fecha y hora de venta. Se
debe realizar una factura e informar al cajero el código de venta generado y todos los datos
nombrados anteriormente.
Almacenamientos
Página 25 de 26
Flujos de datos
PSEUDOCODIGO
Realizar factura
Inicio
INGRESO cod_pedido de Cajero
LEO cod_cliente + importe de Pedidos
GRABO cod_cliente + cod_pedido + importe + fecha_venta + hora_venta en Ventas
cod_cliente = cod_cliente
cod_pedido = cod_pedido
importe = importe
fecha_venta = “Fecha actual”
hora_venta = “Hora actual”
MUESTRO cod_venta + fecha_venta + hora_venta + importe
Fin
En un club de fútbol, todos los meses, los afiliados deben pagar sus cuotas. Para ello, el afiliado debe
ingresar su nombre y apellido. Se validará el código de afiliado, el mes que debe abonar y el importe
de la cuota. En base a esta información, se registrará el pago de la cuota detallando la fecha de pago
de la misma y se le brinda al afiliado una confirmación del pago.
Almacenamientos
Página 26 de 26
Flujos de datos
PSEUDOCODIGO
Cobrar cuota
Inicio
INGRESO nom + ape de Afiliado
LEO cod_afliliado de Afiliados
LEO nro_mes + importe de Cuotas
GRABO fecha_pago en Cuotas
fecha_pago = “Fecha actual”
MUESTRO nom + ape + importe + fecha_pago
Fin