venta

Anuncio
Teoría Nº 6
Lenguaje de Diseño:
Estructuración de Datos
Segundo Cuatrimestre 2016
La determinación de los objetos es una parte importante en el proceso de
resolución
Restricción: los objetos deben determinarse en función de los cuatro tipos de
datos primitivos.
Ejemplo:
Una empresa recibe mensualmente información sobre las ventas de
cada una de sus tres sucursales. Se desea obtener un listado de
aquellas sucursales cuyas ventas superan el promedio de las mismas.
2016
Versión 1:
t1 - Leer los datos de las sucursales.
t2 - Determinar el promedio.
t3 - Comprobar cual o cuáles de las sucursales
tiene venta superior al promedio.
Versión 2:
t11 - Para cada sucursal leer sus ventas y
acumularlas.
t2 - Determinar el promedio.
t31 - Para cada sucursal leer sus ventas, compararlas con el promedio. Si es mayor al promedio,
informar.
2016
Diagrama de Flujo de la solución en Lenguaje del Problema
C
¿Objetos?
De 1 a 3
Ingresar la venta de la sucursal
.
Acumular la venta.
Calcular el promedio.
De 1 a 3
Ingresar la venta de la sucursal
F.
venta > promedio
V
informo
F
2016
Objetos?
venta - guarda la venta de cada sucursal.
acumulo - acumula las ventas
promedio - almacena promedio.
i - lleva la cuenta de la sucursal que trato.
2016
Algoritmo en lenguaje de diseño:
ALGORITMO “Ventas”
COMENZAR
VENTA, ACUMULO, PROMEDIO: real
I: entero
PROMEDIO
0
ACUMULO
0
PARA I DESDE 1 HASTA 3 CON PASO 1 HACER
LEER VENTA
ACUMULO
ACUMULO + VENTA
FINPARA
PROMEDIO
ACUMULO / 3
PARA I DESDE 1 HASTA 3 CON PASO 1 HACER
LEER VENTA
SI VENTA > PROMEDIO ENTONCES
ESCRIBIR I, VENTA
FINSI
FINPARA
FIN
¿Desventajas?
2016
Solución 2:
Objetos
vent1 - guarda la venta de sucursal 1.
vent2 - guarda la venta de sucursal 2.
vent3 - guarda la venta de sucursal 3.
promedio - acumula las ventas y saca promedio.
2016
Algoritmo en Lenguaje de Diseño:
ALGORITMO “Ventas”
COMENZAR
VENT1, VENT2, VENT3, PROMEDIO: real
LEER VENT1, VENT2, VENT3
PROMEDIO
(VENT1+ VENT2 + VENT3) / 3
SI VENT1 > PROMEDIO ENTONCES
ESCRIBIR VENT1
FINSI
SI VENT2 > PROMEDIO ENTONCES
ESCRIBIR VENT2
FINSI
SI VENT3 > PROMEDIO ENTONCES
ESCRIBIR VENT3
FINSI
FIN
2016
100 Objetos?
vent1 - guarda la venta de sucursal 1.
vent2 - guarda la venta de sucursal 2.
...
vent100 - guarda la venta de sucursal 100.
2016
ALGORITMO “Ventas”
COMENZAR
VENT1, VENT2, ..., VENT100, PROMEDIO: real
LEER VENT1, VENT2, ..., VENT100
PROMEDIO
(VENT1+ VENT2 + .. + VENT100) / 100
SI VENT1 > PROMEDIO ENTONCES
ESCRIBIR VENT1
FINSI
SI VENT2 > PROMEDIO ENTONCES
ESCRIBIR VENT2
FINSI
.
.
.
SI VENT100 > PROMEDIO ENTONCES
ESCRIBIR VENT100
FINSI
FIN
2016
Problema:
existen ocasiones donde los objetos no se pueden representar solamente con
primitivas.
Es necesario relacionar 2 o más tipos primitivos para poder construir
nuestro nuevo objeto.
Ejemplo:
Representar el objeto número complejo.
número complejo
real
imaginaria
real
real
Preal
Pimag
Nuevo objeto, de tipo complejo, conformado o estructurado con objetos de
tipo primitivo.
2016
Todas las formas posibles en que nosotros relacionemos lógicamente datos
primitivos para construir nuevos objetos se denomina:
ESTRUCTURACIÓN DE DATOS
Características:
4 toda estructura se construye a partir de tipos de datos primitivos.
4 el conjunto de datos se identifica con un único nombre.
4una estructura se diferencia de otra por la forma en que sus
componentes están relacionadas y el tipo de las mismas.
4se encuentran tanto en memoria principal como en memoria secundaria.
Nos concentraremos en la estructuras de memoria principal
2016
Tipos de Estructuras de Datos:
Estructuras Enlazadas: los datos no se encuentran en posiciones
adyacentes de memoria.
Estructuras Contiguas o Físicas: los datos se encuentran en
posiciones adyacentes de memoria.
Existe una estructura en particular que nos interesa denominada:
ARREGLO LINEAL DE DATOS
2016
Arreglo Lineal
Solución 3:
Reunir los 100 objetos en un solo objeto estructurado.
120
578
1
2
625
1230
3
99
100
Arreglo Lineal
VECTOR
VENTA
120
1
VENTA[3]
578
2
625
1230
3
99
100
625
2016
Donde:
4 Todos los elementos del arreglo son del mismo tipo primitivo por lo tanto
es una estructura homogénea.
4Es una estructura estática, es decir su tamaño (cantidad y tipo de
elementos del arreglo) se define en tiempo de compilación a partir de la
declaración y no cambia durante la ejecución del programa. (Es posible definir
arreglos cuya dimensión se modifique en tiempos de ejecución pero este concepto no será
abordado en este curso) .
4Es una estructura lineal de acceso directo, es decir se accede a un dato
en forma directa con sólo indicar la posición o subíndice. El número que
indica la posición (subíndice) es un número natural.
4El número de elementos o dimensión, se define con la declaración junto
con el límite mínimo y límite máximo o rango.
2016
Declaración de un Arreglo:
VENTA: arreglo[1..100] de real
<Nombre>
:
arreglo
[ Li .. Ls]
de
<tipo>
2016
Usos y operaciones:
VENTA[15]
VENTA[I]
(valor almacenado en la posición 15 del arreglo)
(valor almacenado en la posición indicada por el valor
almacenado en I)
I
20
VENTA[I]
VENTA[K+5]
VENTA[20]
≡
(valor almacenado en la posición indicada por el valor
resultante de la expresión K+5)
K
20
VENTA[K+5]
≡
VENTA[20 +5]
≡
VENTA[25]
Asignar un valor
VENTA[10]
Operación
J
30
13 * J + VENTA[I]
2016
Objetos:
VENTA - arreglo de 100 elementos de tipo
real.
I - variable índice del arreglo.
PROMEDIO - para el cálculo del promedio.
ALGORITMO “Ventas”
COMENZAR
VENTA: arreglo [1..100] de real
PROMEDIO: real
I: entero
PROMEDIO
0
PARA I DESDE 1 HASTA 100 CON PASO 1 HACER
LEER VENTA[I]
PROMEDIO
PROMEDIO + VENTA[I]
FINPARA
PROMEDIO
PROMEDIO / 100
PARA I DESDE 1 HASTA 100 CON PASO 1 HACER
SI VENTA[I] > PROMEDIO ENTONCES
ESCRIBIR I, VENTA[I]
FINSI
FINPARA
FIN
2016
Ejemplo:
Suponga Ud. que se desea hacer un programa
relacionado con los 250 empleados de una empresa.
Los datos de cada empleado que el programa va a
necesitar son: el año de ingreso de esa persona a la
empresa, género ( F para Femenino y M para
Masculino ) y si es profesional o no ( Verdadero o
Falso ).
Todos esos datos se almacenarán en un único
arreglo.
¿Es posible definir el siguiente arreglo?
2016
Ejemplo:
Diseñe y dibuje de que manera estructurar el almacenamiento de los
siguientes datos en una única estructura. A y B son matrices de nxn valores
enteros.
¿Dimensión
del arreglo?
La selección de una estructura de datos y de la manera de relacionar dichos datos es
una decisión importante, ya que ello influye decisivamente en el algoritmo que va a
usarse para resolver un determinado problema.
PROGRAMACION= ESTRUCTRAS DE DATOS + ALGORITMOS
2016
Ejemplo:
Escribir un algoritmo que dado un arreglo de 7 elementos
enteros positivos menores a 5000, los muestre ordenados de
menor a mayor.
Solución:
- Ingresar los elementos en el arreglo.
- Encontrar el menor elemento del arreglo y mostrarlo.
- Repetir la operación anterior para los restantes sin
considerar el elemento ya encontrado.
2016
ALGORITMO “Ordenar”
COMENZAR
V: arreglo [1..7] de entero
I,J, MIN: entero
PARA I DESDE 1 HASTA 7 CON PASO 1 HACER
LEER V[I]
FINPARA
PARA I DESDE 1 HASTA 7 CON PASO 1 HACER
MIN
1
PARA J DESDE 1 HASTA 7 CON PASO 1 HACER
SI V[J] < V[MIN] ENTONCES
MIN
J
FINSI
FINPARA
ESCRIBIR V[MIN]
V[MIN]
100000
FINPARA
FIN
Se debería controlar
que los números
ingresados sean
positivos y no mayor
que 5000
2016
Ejemplo:
Escribir un algoritmo que ordene de menor a mayor los elementos de un
arreglo de 7 elementos enteros positivos.
Solución:
- Encontrar el menor elemento del arreglo.
- Intercambiarlo con el primero del arreglo.
- Repetir la misma operación para los restantes sin
considerar al elemento ya ordenado.
2016
Ejemplo:
estado inicial:
21 35 17 8 14 42 2
1º intercambio:
2
35 17 8 14 42 21
2º intercambio:
2
8
3º intercambio:
2
8 14 35 17 42 21
4º intercambio:
2
8 14 17 35 42 21
5º intercambio:
2
8 14 17 21 42 35
6º intercambio:
2
8 14 17 21 35 42
17 35 14 42 21
2016
Objetos:
V - arreglo de enteros a ordenar.
I,J - variables índice del arreglo.
MIN - variable auxiliar que indica el índice donde se
encuentra el elemento mínimo.
VAL_MI - variable auxiliar usada para el intercambio
de valores.
2016
Versión 1:
t1 - Ingresar los elementos del arreglo.
t2 - Repetidamente mientras el arreglo no esté
ordenado, buscar el menor del arreglo, luego
colocarlo en la posición correspondiente.
t3 - Mostrar el arreglo ordenado.
Versión 2:
t1 - Ingresar los elementos del arreglo.
t20 - Repetidamente mientras el arreglo no esté
ordenado
t21 - Buscar el menor del arreglo y guardarlo en
MIN.
t22 - Intercambiar con el lugar que corresponda
en el ordenamiento el valor de V[MIN].
t3 - Mostrar el arreglo ordenado.
2016
ALGORITMO “Ordenar”
COMENZAR
V: arreglo [1..7] de entero
I,J, MIN, VAL_MI: entero
PARA I DESDE 1 HASTA 7 CON PASO 1 HACER
LEER V[I]
FINPARA
PARA I DESDE 1 HASTA 7-1 CON PASO 1 HACER
MIN
I
PARA J DESDE I+1 HASTA 7 CON PASO 1 HACER
SI V[J] < V[MIN] ENTONCES
MIN
J
FINSI
FINPARA
VAL_MI
V[MIN]
V[MIN]
V[I]
V[I]
VAL_MI
FINPARA
PARA I DESDE 1 HASTA 7 CON PASO 1 HACER
ESCRIBIR V[I]
FINPARA
FIN
2016
después
de
la lectura
ingreso
al
para externo
1er iteración
sobre I
ingreso
al
para interno
1er iteración
sobre J
2da iteración
sobre J
3er iteración
sobre J
4ta iteración
sobre J
5ta iteración
sobre J
6ta iteración
sobre J
salida
del
para interno
2da iteración
sobre I
ingreso
al
para interno
1er iteración
sobre J
2da iteración
sobre J
3er iteración
sobre J
4ta iteración
sobre J
5ta iteración
sobre J
salida
del
para interno
V[1]
21
V[2]
35
V[3]
17
V[4]
8
V[5]
14
V[6]
42
V[7]
2
I
MIN
J
VAL_MI
16
1
1
27
2
3
3
4
4
5
6
7
2
35
17
8
14
42
7
21
2
2
2
37
3
3
4
4
5
6
7
2
8
17
35
14
42
21
8
2016
Descargar