lenguaje de diseño: estructuración de...

35
Lenguaje de Diseño: Estructuración de Datos Teoría Nº 6 Primer Cuatrimestre 2019

Upload: others

Post on 25-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Lenguaje de Diseño:

Estructuración de Datos

Teoría Nº 6

Primer Cuatrimestre 2019

Page 2: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

2019

Un palíndromo es una palabra, o frase que se lee igual hacia adelante que hacia atrás. Si se trata de un número, se llama capicúa. Ej. neuquen, Afromorfa, Solos, Somos, No deseo yo ese don

¿Cómo sería el algoritmo que permite reconocer si una palabra es palíndromo?.

Page 3: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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.

2019

Page 4: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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, comparar- las con el promedio. Si es mayor al promedio, informar. 2019

Page 5: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Dia

gram

a de

Flu

jo d

e la

solu

ción

en

Leng

uaje

del

Pro

blem

a

C

Ingresar la venta de la sucursal .

De 1 a 3

Acumular la venta.

Calcular el promedio.

F

informo venta > promedio

V F Ingresar la venta de la sucursal .

De 1 a 3

¿Objetos?

2019

Page 6: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Objetos?

venta - guarda la venta de cada sucursal.

acumulo - acumula las ventas

promedio - almacena promedio.

i - lleva la cuenta de la sucursal que trato.

2019

Page 7: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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?

2019

Page 8: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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.

Solución 2:

2019

Page 9: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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 2019

Page 10: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

100 Objetos?

vent1 - guarda la venta de sucursal 1. vent2 - guarda la venta de sucursal 2.

...

vent100 - guarda la venta de sucursal 100.

2019

Page 11: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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

2019

Page 12: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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 objetos 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 2019

Page 13: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Existe una estructura en particular que nos interesa denominada:

ARREGLO LINEAL DE DATOS

Tipos de Estructuras de Datos:

Estructuras Contiguas o Físicas: los datos se encuentran en posiciones adyacentes de memoria.

Estructuras Enlazadas: los datos no se encuentran en posiciones adyacentes de memoria.

2019

Page 14: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

578 120 625 1230 1 2 3 99 100

Solución 3: Reunir los 100 objetos en un solo objeto estructurado.

578 120 625 1230 1 2 3 99 100

Arreglo Lineal

VECTOR

VENTA

VENTA[3] 625

Arreglo Lineal

2019

Page 15: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

4 Todos los elementos del arreglo son del mismo tipo primitivo por lo tanto es una estructura homogénea.

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.

Donde:

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 (estructuras dinámicas) pero este concepto no será abordado en este curso) .

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.

2019

Page 16: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

arreglo <Nombre> : [ Li .. Ls] de <tipo>

Declaración de un Arreglo:

VENTA: arreglo[1..100] de real

2019

Page 17: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Usos y operaciones: VENTA[15] (valor almacenado en la posición 15 del arreglo)

VENTA[I] (valor almacenado en la posición indicada por el valor almacenado en I)

I 20 VENTA[I] ≡ VENTA[20]

VENTA[K+5] (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] 30

Operación J 13 * J + VENTA[I]

2019

Page 18: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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

2019

Page 19: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Suponga Ud. que se desea hacer un programa relacionado con los 250 empleados de una empresa.

Ejemplo:

¿Es posible definir el siguiente arreglo?

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.

2019

Page 20: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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 2019

Page 21: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

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

2 0 1 3 0 0 5 1 1

1 2 3 4 5 6 7 8 9

1 0 1 1 2 1 1 1 0

10 11 12 13 14 15 16 17 18

Arreglo M

2019

Page 22: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

2 0 1 3 0 0 5 1 1

1 2 3 4 5 6 7 8 9

1 0 1 1 2 1 1 1 0

10 11 12 13 14 15 16 17 18

Matrices[1] + Matrices[10] Matrices[2] + Matrices[11] Matrices[3] + Matrices[12]

Matrices[4] + Matrices[13] Matrices[5] + Matrices[14] Matrices[6] + Matrices[15]

Matrices[7] + Matrices[16] Matrices[8] + Matrices[17] Matrices[9] + Matrices[18] 2019

Page 23: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

2 0 1 3 0 0 5 1 1

1 2 3 4 5 6 7 8 9

1 0 1 1 2 1 1 1 0

10 11 12 13 14 15 16 17 18

PARA I DESDE ?? HASTA ?? CON PASO ?? HACER M[?? ] M[?? ] + M[?? ]

FINPARA

PARA I DESDE 1 HASTA 9 CON PASO 1 HACER M[I+18 ] M[I ] + M[I+10]

FINPARA

2019

Page 24: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

2 3 5 0 0 1 1 0 1

1 2 3 4 5 6 7 8 9

1 1 1 0 2 1 1 1 0

10 11 12 13 14 15 16 17 18

Matrices[1] + Matrices[10] Matrices[4] + Matrices[13] Matrices[7] + Matrices[16]

Matrices[2] + Matrices[11] Matrices[5] + Matrices[14] Matrices[8] + Matrices[17]

Matrices[3] + Matrices[12] Matrices[6] + Matrices[15] Matrices[9] + Matrices[18] 2019

Page 25: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

2 3 5 0 0 1 1 0 1

1 2 3 4 5 6 7 8 9

1 1 1 0 2 1 1 1 0

10 11 12 13 14 15 16 17 18

PARA I DESDE 1 HASTA 3 CON PASO 1 HACER M[I+18 ] M[I ] + M[(I+10-1)] M[I+18+3 ] M[I+3] + M[(I+10-1)+3] M[I+18+6 ] M[I+6 ] + M[(I+10-1)+6]

FINPARA 2019

Page 26: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

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.

Escribir un algoritmo que dado un arreglo de 7 elementos enteros positivos menores a 5000, los muestre ordenados de menor a mayor.

2019

Page 27: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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 i n g r e s a d o s s e a n positivos y no mayor que 5000

2019

Page 28: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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.

2019

Page 29: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo: estado inicial: 21 35 17 8 14 42 2

1º intercambio: 2 35 17 8 14 42 21

2º intercambio: 2 8 17 35 14 42 21

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

2019

Page 30: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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.

2019

Page 31: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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.

2019

Page 32: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

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

2019

Page 33: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

V[1] V[2] V[3] V[4] V[5] V[6] V[7] I MIN J VAL_MIdespués dela lectura

21 35 17 8 14 42 2ingreso alpara externo

16

1er iteraciónsobre I

1 1ingreso alpara interno

27

1er iteraciónsobre J

22da iteraciónsobre J

3 33er iteraciónsobre J

4 44ta iteraciónsobre J

55ta iteraciónsobre J

66ta iteraciónsobre J

7 7salida delpara interno

2 35 17 8 14 42 21 22da iteraciónsobre I

2 2ingreso alpara interno

37

1er iteraciónsobre J

3 32da iteraciónsobre J

4 43er iteraciónsobre J

54ta iteraciónsobre J

65ta iteraciónsobre J

7salida delpara interno

2 8 17 35 14 42 21 8

2019

Page 34: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

Versión 1: t0 – Definir objetos y asignar valores. t1 - Ingresar 10 valores enteros en un arreglo A. t2 - Ingresar hasta 25 caracteres en un otro arreglo B.

Escribir un algoritmo que le permita al usuario ingresar 10 valores enteros en un arreglo y hasta 25 caracteres en otro arreglo.

¿Objetos?

2019

Page 35: Lenguaje de Diseño: Estructuración de Datosdirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · Arreglo Lineal VECTOR VENTA VENTA[3] 625 Arreglo Lineal 2019 . ... 3º intercambio:

Ejemplo:

En el último año de una institución privada, se dictan 10 materias que completa el cursado del ciclo Secundario. Almacene en una estructura de datos apropiada el Nro. De documentos de cada alumno y las notas que obtuvo en cada asignatura. ¿Cómo se debería hacer para calcular el promedio?

2019