36
Módulo 3 ALGORITMOS Y ESTRUCTURA DE DATOS PROFESOR: SIRACUSA EMILIANO MARTÍN Página Web: www.esiracusa.jimdo.com 1

Módulo 3

Embed Size (px)

Citation preview

Page 1: Módulo 3

Módulo 3

ALGORITMOS Y ESTRUCTURA DE DATOS

PROFESOR: SIRACUSA EMILIANO MARTÍN

Página Web: www.esiracusa.jimdo.com1

Page 2: Módulo 3

PrimitivasAcciones conocidas por la persona que especifica el algoritmo y por la persona o instrumento que las lleva a cabo.

Primitivas descriptas por el lenguaje de diseño.Primitivas especificas por una persona que desarrolla

el algoritmo.

2

Page 3: Módulo 3

Ejemplo1:

Cocinar un huevo frito:1. Buscar la sartén.

2. Colocarle aceite.

3. Colocar la sartén en el fuego.

4. Buscar un huevo.

5. Cascar el huevo.

6. Colocar el interior del huevo en la sartén.

7. Cocinar el huevo.

8. Sacar el huevo de la sartén.

9. Retirar la sartén del fuego.

10. Finalizar

3

Page 4: Módulo 3

Primitivas

4

2. Colocar aceite.2.1Buscar la botella de aceite de girasol.2.2 llenar hasta la mitad taza de café con el aceite.2.3Volterar el aceite de la taza de café en la sartén.

7. Cocinar el huevo frito.7.1Con una cuchara juntar el aceite que queda alrededor del huevo frito y arrojar sobre este para que cocine la parte superior.

3.Colocar la sartén en el fuego.3.1Encender la hornalla.3.2Colocar entre la posición de máximo y mínimo.3.3Colocar el sartén sobre la hornalla.

8. Sacar el huevo de la sartén.8.1 Buscar una espumadera.8.2 Colocar la espumadera entre el huevo y la sartén.8.3 Levantar la espumadera y mantenerla para que escurra el aceite.8.4 Colocar el huevo en el plato.

Page 5: Módulo 3

Ejemplo 2:Escribir un algoritmo para dibujar figuras en la pantalla.

Consideremos tener una pantalla de 9 filas por 15 columnas numeradas en forma creciente desde la fila superior hacia la inferior y de columnas de izquierda a derecha. Se desea dibujar una silla, una mesa un sillón y por último una sala.

Se tiene exclusivamente las siguientes primitivas.

1. Línea vertical (f,c,h) que dibuja una línea vertical desde la posición (f,c) hasta (f+h,c).

2. Línea Horizontal (f,c,h) que dibuja una línea horizontal desde la posición (f,c) hasta (f,c+h).

5

Page 6: Módulo 3

6

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0

1

2

3

4

5

6

7

8

9

Algoritmo silla

Acciones Línea vertical (2,1,4) Línea Horizontal (4,1,2) Línea Vertical (4,3,2)fin

Algoritmo silla

Acciones Línea vertical (f,c,2h) Línea Horizontal (f+h,c,h) Línea Vertical (f+h,c+h,h)fin

Silla (2,1,2)

Silla (2,8,3)

Silla (1,12,1)

Page 7: Módulo 3

7

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0

1

2

3

4

5

6

7

8

9

Algoritmo sillaDe: f,c,hAcciones Línea vertical (f,c,2h) Línea Horizontal (f+h,c,h) Línea Vertical (f,c+h,h)Fin

Algoritmo mesaDe:f,c,hAcciones Línea vertical (f,c,2h) Línea Horizontal (f,c,h) Línea Vertical (f+h,c,2h) Línea vertical (f,c+2h,2h)fin

Silla (2,1,2)Mesa (2,9,2)

Page 8: Módulo 3

8

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0

1

2

3

4

5

6

7

8

9

Algoritmo SalaDe: fs,cs,hs,fm,cm,hm

Acciones Silla(2,1,3) Mesa(2,92)Fin

Silla (2,1,2)Mesa (2,9,2)

Page 9: Módulo 3

9

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0

1

2

3

4

5

6

7

8

9

Algoritmo SalaDe: fs,cs,hs,fm,cm,hm

Acciones Silla(fs,cs,hs) Mesa(fm,cm,hm)Fin

Fs:3Cs:4Hs:2Fm:3Cm:7Hm:2

Sala (3,4,2,3,7,2)

Page 10: Módulo 3

Ejemplo: Escribir un algoritmo que permita hallar el mayor de tres. El algoritmo sólo debe usar como primitiva al algoritmo Mayor-de-dos indicado a continuación.

10

Algoritmo Mayor-de-dos

De: a,bDs: mayor

Acciones Si a>b entonces mayor a sino mayor bFin

Algoritmo Mayor-de-tres

De: a,b,cDs: el-mayor

Acciones Mayor-de-dos(a,b,mayor) Mayor-de-dos(mayor,c,el-mayor)

Fin

Page 11: Módulo 3

Esquema de ejecución del algoritmo mayor-de-tres

11

Algoritmo Mayor-de-tres

De: a,b,cDs: el-mayor

Acciones Mayor-de-dos(a,b,mayor) Mayor-de-dos(mayor,c,el-mayor)

Fin

Algoritmo Mayor-de-dos

De: a ,bDs: mayor

Algoritmo Mayor-de-dos

De: a,bDs: mayor

-5833 8

8 -5

8

8

8

Page 12: Módulo 3

Traza de ejecución de algoritmo mayor-de-tres

12

Acción A B C mayor El-mayor

3 8 -5

1 8

2 8

Acción a b mayor

3 8

1 8

Acción a b mayor

8 -5

1 8

Page 13: Módulo 3

Sintaxis de la Invocación a una primitiva en un algoritmo A

La invocación a primitivas esta formada por.- Nombre del algoritmo que se invoca como primitiva.- Los valores o los nombre de los datos del algoritmo A cuyo valores se

transmitirán a los datos de entrada de la primitiva cuando ésta sea invocada (si tiene datos de entrada).

- Los nombres de los datos del algoritmo A que se escribirán los valores de los datos de salida de la primitiva una vez finalizada la ejecución de la misma (si tiene datos de entrada) subrayados.

En ambos casos el orden en que se escriben los datos A se corresponderán con el orden en que están especificados en la primitiva.

13

Page 14: Módulo 3

Sintaxis de la Invocación a una primitiva en un algoritmo A

La indicación a primitiva se indica por:

Nombre de la primitiva (arg1, arg2, arg3, …. argn, )

Donde arg1, arg2, arg3, …. argi, corresponden en cantidad, dominio y orden de los datos de entrada y

argi+1, argi+2, …. argn, se corresponden a los datos de salida de la primitiva invocada.

14

Page 15: Módulo 3

Ejecución de una primitiva invocada en un algoritmo A

- Cuando se alcanza la ejecución en un algoritmo A que es invocación a una primitiva, se realizan las siguientes acciones:

Se transmiten los valores de los datos del algoritmo A que se encuadran idénticos en la invocación (argumentos) y que se correspondan con los datos de entrada de la primitiva.

Se ejecutará la primitiva con dichos valores para los datos de entrada. Finalizada la ejecución de la primitiva se transfieren los valores de los datos de

salida de la primitiva a sus correspondientes (Argumentos) datos del algoritmo. Se retorna a la ejecución a la acción siguiente de la invocación mencionada.

15

Page 16: Módulo 3

Escribir un algoritmo que permita hallar a partir de un natural dado, otro número natural de siguiente manera:

16

Si el número dado es n=n1 n2 n3 …. Ni

Debe dar como resultado m=n1 * ni + n2 *ni-1 +n3 * ni-2 +….+ ni *n1

Algoritmo SPMismoNúmero

DE: nDS: m

Acciones

CantDigitos(n, cantidad) InvertirNumero(n, ninv) Suma de productos (n, ninv, m)

Fin

Page 17: Módulo 3

Ejemplo: Escribir un algoritmo que permita decir si un punto que resulta de la intersección de dos rectas se encuentra sobre uno de los

ejes cartesianos o no. Se considera la las ecuaciones de la rectas: r1: ax + by + cr2: dx + ey + d

17

Page 18: Módulo 3

Resolución ¿Qué debemos hacer? Estudiar si el punto de intersección pertenece a algún eje. ¿Cómo resolver este problema? - encontrar el punto de intersección. - estudiar si pertenece a los ejes

18

Algoritmo IntersecciónEnEje

DE: a,b,c,d,e,f [Reales]DS: Pertenece [Lógico]

Acciones

Intersección(a,b,c,d,e,f,x,y) Pertenencia(x,y,pertenece)

Fin

Page 19: Módulo 3

Primitiva Intersección, Encontrar el punto de intersección

Por medio de determinantes:

19

X= c*e-b*f Y=- a*f-d*e

a*e-b*d a*e-b*d

Algoritmo Intersección

DE: a,b,c,d,e,f [Reales]DS: x,y [Reales]

Acciones

x(c*e-b*f)/(a*e-b*d) y-(a*f-d*e)/(a*e-b*d)

Fin

Page 20: Módulo 3

Primitiva pertenencia, estudiar si pertenece a los ejes

Si x=0 o y=0 entonces el punto pertenece de lo contrario el punto no pertenece a los ejes

20

Algoritmo Pertenencia

DE: x,y [Reales]DS: pertenece [Lógico]

Acciones Si (x=0) o (y=0) entonces pertenece v si no pertenece fFin

Page 21: Módulo 3

21

Algoritmo IntersecciónEnEje

DE: a,b,c,d,e,f [Reales]DS: Pertenece [Lógico]

Acciones

Intersección(a,b,c,d,e,f,x,y) Pertenencia(x,y,pertenece)

Fin

Algoritmo Intersección

DE: a,b,c,d,e,f[Reales]

DS: x,y[Reales]

Acciones x(c*e-b*f)/(a*e-b*d) y-(a*f-d*e)/(a*e-b*d)

Fin

Algoritmo Pertenencia

DE: x,y [Reales]DS: pertenece [Lógico]

Acciones Si (x=0) o (y=0) entonces pertenece v si no pertenece fFin

Page 22: Módulo 3

Suma de sucesionesS1- 1,2,3,4,…,i,…S2- 2,4,6,8,…,i,…S3- 1,,3,5,7,…,i,…S4- 4,9,16,25,…,i,…S5- 1,4,9,16 ,…,i,…S6- n1 ,n2,n3 ,…,i,…S7- -n1 ,n2,-n3 ,…,i,…S8- 1!, 2!, 3! ,…,i,…

22

Page 23: Módulo 3

Cálculo de la suma de los primeros n elementos de una sucesión

S1- 1,2,3,4,…,i,… i-ésimo= iS2- 2,4,6,8,…,i,… i-ésimo= i*2S3- 1,,3,5,7,…,i,… i-ésimo= i*-1S4- 4,9,16,25,…,i,… i-ésimo= (i+1)2

S5- 1,4,9,16 ,…,i,… i-ésimo= i2

S6- 51 ,52,53 ,…,i,… i-ésimo= 5i

S7- -51 ,52,-53 ,…,i,… i-ésimo=(-1i)*5i

S8- 1!, 2!, 3! ,…,i,… i-ésimo= i!

23

Page 24: Módulo 3

Escribir un algoritmo para hallar la suma de los primeros n términos de una sucesión.

a) Para S1.b) Para S4.c) Para S7.

Tener en cuenta:

Generar elemento.Sumar elemento

Repetir ambas acciones, n-veces.

24

Page 25: Módulo 3

25

S1- 1,2,3,4,…,i,…i-ésimo= i

Pasos:

Generar elemento.

Sumar elemento

Repetir ambas acciones, n-veces. Algoritmo SumaNElementos

DE: n [Natural]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir n veces

suma suma+ii i+1

Fin

Page 26: Módulo 3

26

S4- 4,9,16,25,…,i,… i-ésimo= (i+1)2

Pasos:

Generar elemento.

Sumar elemento

Repetir ambas acciones, n-veces. Algoritmo SumaNElementos

DE: n [Natural]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir n veces

suma suma+ (i+1)2

i i+1Fin

Page 27: Módulo 3

27

S7- -51 ,52,-53 ,…,i,… i-ésimo=(-1i)*5i

Pasos:

Generar elemento.

Sumar elemento

Repetir ambas acciones, n-veces. Algoritmo SumaNElementos

DE: n [Natural]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir n veces

suma suma+ (-1i)*5i

i i+1Fin

Page 28: Módulo 3

Coparemos los tres algoritmos

28

Page 29: Módulo 3

La forma general

29

Algoritmo SumaNElementos

DE: n [Natural]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir n veces

suma suma+ Elemento(i) i i+1Fin

Algoritmo Elementos

DE: i [Natural]DS: i-ésimo [Natural]

Acciones i-ésimo iFin

Algoritmo Elementos

DE: i [Natural]DS: i-ésimo [Natural]

Acciones i-ésimo (i+1)2

Fin

Algoritmo Elementos

DE: i [Natural]DS: i-ésimo [Natural]

Acciones i-ésimo (-1i)*5i

Fin

Page 30: Módulo 3

Aproximación Sucesivas El concepto de aproximación es muy utilizado en la vida cotidiana ya que matemáticamente hablando es muy poco probable trabajar con números exactos.Es por eso que aproximamos distintas magnitudes en el que hacer cotidiano.Veamos un ejemplo de una sucesión que se aproxima a un número:

Cada termino se aproxima al número 1

300 1 2 3 4 5 6 7 8 9 10 11

0.4

0.6

0.8

1

Suceción n/(n+1)

Suceción n/(n+1)

Page 31: Módulo 3

Aproximación Sucesivas

31

Algoritmo SumaNElementos

DE: n [Natural]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir n veces

suma suma+ Elemento(i) i i+1Fin

Algoritmo SumAroximada

DE: error [Real]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir

suma suma+ Elemento(i) i i+1 hasta Elemento(i)<ErrorFin

Page 32: Módulo 3

Consideraciones Elementales

32

Algoritmo SumAroximada

DE: error [Real]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir

suma suma+ Elemento(i) i i+1 hasta Elemento(i)<ErrorFin

Este algoritmo está desarrollado para sumar distintos términos que

dependan sólo de su posición dentro de la suma

El valor absoluto vale para todas las series ya sea que sus

términos sean positivos o negativos

Si no esta desarrollada la primitiva valor absoluto,

debemos escribirla

Page 33: Módulo 3

Si se desea que el primer término mayor o igual al error no se incorpore a la suma, entonces debemos realizar la comparación con el

error antes de sumarlo

33

Algoritmo SumAroximada

DE: Error [Real]DS: Suma [Natural]

Acciones Suma 0 i 1 repetir mientras Elemento(i)>Error

suma suma+ Elemento(i) i i+1 fin repetir Fin

Page 34: Módulo 3

Otra forma de pensarlo…

34

Como Si=Si-1+ti entonces ti=Si-Si-1 para no analizar si los términos son positivos o negativos podemos utilizar el valor absoluto |ti|=|Si-Si-

1|

Cada vez que sumamos un término a la suma anterior para obtener la nueva suma, es evidente que la diferencia entre ambas sumas es precisamente el término sumado. Por lo tanto:

|ElTermino|=|Aprox1-Aprox2|

Luego podemos escribir el algoritmo anterior de la siguiente manera:

Page 35: Módulo 3

Realizar la traza para el ejemplo con error=0,01 y Sn=n/(n+1)

35

Algoritmo SumAroximada

DE: error [Real]DS: Suma [Natural]

Acciones aprox1 0 i 1 aprox2 Elemento(i) repetir mientras |Aprox1-Aprox2|>= error

aprox1 aprox2i i+1aprox2 aprox1 + Elemento(i)

fin mientrasSuma aprox1Fin

Page 36: Módulo 3

El número e

36

i-1

i+1

𝑒1=2+11+1

=2.5

𝑒2=1

1+12+2

=2.8

𝑒3=1

1+1

2+ 23+3

=2.7

Ejercicio escribir un algoritmo que permita aproximar al número e