0% encontró este documento útil (0 votos)
7 vistas36 páginas

Algoritmos y Estructuras de Datos

El documento presenta conceptos fundamentales sobre algoritmos y estructuras de datos, incluyendo la definición de primitivas y ejemplos de algoritmos para tareas específicas como cocinar un huevo frito, dibujar figuras y hallar el mayor de tres números. Se detallan las acciones y la sintaxis de invocación de primitivas en algoritmos, así como ejemplos de algoritmos para calcular intersecciones y pertenencias en ejes cartesianos. Además, se incluyen algoritmos para calcular la suma de elementos en sucesiones numéricas.

Cargado por

EmilianoSiracusa
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas36 páginas

Algoritmos y Estructuras de Datos

El documento presenta conceptos fundamentales sobre algoritmos y estructuras de datos, incluyendo la definición de primitivas y ejemplos de algoritmos para tareas específicas como cocinar un huevo frito, dibujar figuras y hallar el mayor de tres números. Se detallan las acciones y la sintaxis de invocación de primitivas en algoritmos, así como ejemplos de algoritmos para calcular intersecciones y pertenencias en ejes cartesianos. Además, se incluyen algoritmos para calcular la suma de elementos en sucesiones numéricas.

Cargado por

EmilianoSiracusa
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Módulo 3

ALGORITMOS Y
ESTRUCTURA DE DATOS
PROFESOR: SIRACUSA EMILIANO
MARTÍN

Página Web: [Link]


1
Primitivas
Acciones 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
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
Primitivas
2. Colocar aceite. 7. Cocinar el huevo frito.
2.1Buscar la botella de aceite de girasol. 7.1Con una cuchara juntar el aceite que
2.2 llenar hasta la mitad taza de café con el queda alrededor del huevo frito y arrojar
aceite. sobre este para que cocine la parte
2.3Volterar el aceite de la taza de café en la superior.
sartén.

[Link] la sartén en el fuego. 8. Sacar el huevo de la sartén.


3.1Encender la hornalla. 8.1 Buscar una espumadera.
3.2Colocar entre la posición de máximo y 8.2 Colocar la espumadera entre el huevo y
mínimo. la sartén.
3.3Colocar el sartén sobre la hornalla. 8.3 Levantar la espumadera y mantenerla
para que escurra el aceite.
8.4 Colocar el huevo en el plato.

4
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
Algoritmo silla Algoritmo silla

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

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0
1 Silla (2,1,2)
2
3
Silla (1,12,1)
4
5
6
7
8
9 Silla (2,8,3)
6
Algoritmo silla Algoritmo mesa
De: f,c,h De:f,c,h
Acciones Acciones
Línea vertical (f,c,2h) Línea vertical (f,c,2h)
Línea Horizontal (f+h,c,h) Línea Horizontal (f,c,h)
Línea Vertical (f,c+h,h) Línea Vertical (f+h,c,2h)
Fin Línea vertical (f,c+2h,2h)
fin

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0
Mesa (2,9,2)
1 Silla (2,1,2)
2
3
4
5
6
7
8
9
7
Algoritmo Sala
De: fs,cs,hs,fm,cm,hm

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

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0
Mesa (2,9,2)
1 Silla (2,1,2)
2
3
4
5
6
7
8
9
8
Algoritmo Sala Fs:3
De: fs,cs,hs,fm,cm,hm Cs:4
Hs:2
Acciones Fm:3
Silla(fs,cs,hs) Cm:7
Mesa(fm,cm,hm) Hm:2
Fin

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0
1 Sala (3,4,2,3,7,2)
2
3
4
5
6
7
8
9
9
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.

Algoritmo Mayor-de-dos Algoritmo Mayor-de-tres

De: a,b De: a,b,c


Ds: mayor Ds: el-mayor

Acciones Acciones
Si a>b Mayor-de-dos(a,b,mayor)
entonces mayor  a Mayor-de-dos(mayor,c,el-mayor)
sino mayor b
Fin Fin

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

3 8 -5
3 8
Algoritmo Mayor-de-tres
Algoritmo Mayor-de-dos
De: a,b,c
Ds: el-mayor De: a ,b
Ds: mayor
Acciones 8
Mayor-de-dos(a,b,mayor)
Mayor-de-dos(mayor,c,el-mayor)
8 -5
Fin

8 Algoritmo Mayor-de-dos

De: a,b
Ds: mayor
8

11
Traza de ejecución de algoritmo mayor-de-tres
Acción A B C mayor El-mayor
3 8 -5
1 8
2 8

Acción a b mayor Acción a b mayor


3 8 8 -5
1 8 1 8

12
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
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
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
Escribir un algoritmo que permita hallar a partir de un natural dado,
otro número natural de siguiente manera:
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: n
DS: m

Acciones

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

Fin
16
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 + c
r2: dx + ey + d

17
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
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
18
Primitiva Intersección, Encontrar el punto de
intersección

Por medio
X= c*e-b*f
de determinantes:
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

19
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

Algoritmo Pertenencia

DE: x,y [Reales]


DS: pertenece [Lógico]

Acciones
Si (x=0) o (y=0)
entonces
pertenece v
si no
pertenece f
Fin
20
Algoritmo IntersecciónEnEje

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


DS: Pertenece [Lógico]
Algoritmo Intersección Algoritmo Pertenencia
DE: a,b,c,d,e,f DE: x,y [Reales]
[Reales] DS: pertenece [Lógico]
DS: x,y
[Reales] Acciones
Si (x=0) o (y=0)
Acciones entonces
x(c*e-b*f)/(a*e-b*d) pertenece v
y-(a*f-d*e)/(a*e-b*d) si no
Fin pertenece f
Acciones Fin

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

Fin

21
Suma de sucesiones
S1- 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
Cálculo de la suma de los primeros n elementos
de una sucesión
S1- 1,2,3,4,…,i,… i-ésimo= i
S2- 2,4,6,8,…,i,… i-ésimo= i*2
S3- 1,,3,5,7,…,i,… i-ésimo= i*-1
S4- 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
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
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+i
i  i+1
Fin

25
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+1
Fin

26
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+1
Fin

27
Coparemos los tres algoritmos

28
La forma general
Algoritmo Elementos

DE: i [Natural]
DS: i-ésimo [Natural]
Algoritmo SumaNElementos Acciones
i-ésimo  i
Fin
DE: n [Natural]
DS: Suma [Natural] Algoritmo Elementos

Acciones DE: i [Natural]


Suma 0 DS: i-ésimo [Natural]
i 1 Acciones
repetir n veces i-ésimo  (i+1)2
suma suma+ Elemento(i) Fin
i  i+1
Algoritmo Elementos
Fin
DE: i [Natural]
DS: i-ésimo [Natural]

Acciones
i-ésimo  (-1i)*5i
Fin 29
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


Suceción n/(n+1)
1
0.8 Suceción n/(n+1
0.6
0.4 30
0 1 2 3 4 5 6 7 8 9 10 11
Aproximación Sucesivas
Algoritmo SumaNElementos Algoritmo SumAroximada
DE: n [Natural] DE: error [Real]
DS: Suma [Natural] DS: Suma [Natural]

Acciones Acciones
Suma 0 Suma 0
i 1 i 1
repetir n veces repetir
suma suma+ Elemento(i) suma suma+ Elemento(i)
i  i+1 i  i+1
Fin hasta Elemento(i)<Error
Fin

31
Consideraciones Elementales
Este algoritmo está
Algoritmo SumAroximada desarrollado para sumar
distintos términos que
dependan sólo de su posición
DE: error [Real]
dentro de la suma
DS: Suma [Natural]

Acciones
Suma 0
El valor absoluto vale para
i 1
todas las series ya sea que sus
repetir
términos sean positivos o
suma suma+ Elemento(i)
negativos
i  i+1
hasta Elemento(i)<Error
Fin

Si no esta desarrollada la
primitiva valor absoluto,
debemos escribirla
32
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
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

33
Otra forma de pensarlo…
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:

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

DE: error [Real]


DS: Suma [Natural]

Acciones
aprox1 0
i 1
aprox2 Elemento(i)
repetir mientras |Aprox1-Aprox2|>= error
aprox1  aprox2
i  i+1
aprox2  aprox1 + Elemento(i)
fin mientras
Suma aprox1
Fin

35
El número e
1
𝑒 1=2+ = 2.5
1+1
1
𝑒 2= =2.8 i-1
1
1+
2+2 i+1
1
𝑒 3= =2.7
1
1+
2 Ejercicio escribir un
2+
3+3 algoritmo que permita
aproximar al número e

36

También podría gustarte