Módulo 3ALGORITMOS Y ESTRUCTURA DE DATOS <br />PROFESOR:SIRACUSA EMILIANO <br />                   MARTÍN<br />Página Web:...
Primitivas<br />Acciones conocidas por la persona que especifica el algoritmo y por la persona o instrumento que las lleva...
Primitivas especificas por una persona que desarrolla el algoritmo.</li></ul>2<br />
Ejemplo1:<br />Cocinar un huevo frito:<br />Buscar la sartén.<br />Colocarle aceite.<br />Colocar la sartén en el fuego.<b...
Primitivas<br />4<br />
Ejemplo 2:Escribir un algoritmo para dibujar figuras en la pantalla.<br />Consideremos tener una pantalla de 9 filas por 1...
6<br />Silla (2,1,2)<br />Silla (1,12,1)<br />Silla (2,8,3)<br />
7<br />Mesa (2,9,2)<br />Silla (2,1,2)<br />
8<br />Mesa (2,9,2)<br />Silla (2,1,2)<br />
9<br />Sala (3,4,2,3,7,2)<br />
Ejemplo: Escribir un algoritmo que permita hallar el mayor de tres. El algoritmo sólo debe usar como primitiva al algoritm...
Esquema de ejecución del algoritmo mayor-de-tres<br />11<br />-5<br />8<br />3<br />3<br />8<br />Algoritmo Mayor-de-tres<...
Traza de ejecución de algoritmo mayor-de-tres<br />12<br />
Sintaxis de la Invocación a una primitiva en un algoritmo A <br />La invocación a primitivas esta formada por.<br /><ul><l...
Los valores o los nombre de los datos del algoritmo A cuyo valores se transmitirán a los datos de entrada de la primitiva ...
Los nombres de los datos del algoritmo A que se escribirán los valores de los datos de salida de la primitiva una vez fina...
Sintaxis de la Invocación a una primitiva en un algoritmo A <br />La indicación a primitiva se indica por:<br />Nombre de ...
Ejecución de una primitiva invocada en un algoritmo A<br /><ul><li>Cuando se alcanza la ejecución en un algoritmo A que es...
Se transmiten los valores de los datos del algoritmo A que se encuadran idénticos en la invocación (argumentos) y que se c...
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 correspond...
Se retorna a la ejecución a la acción siguiente de la invocación mencionada.</li></ul>15<br />
Escribir un algoritmo que permita hallar a partir de un natural dado, otro número natural de siguiente manera:<br />16<br ...
Ejemplo: Escribir un algoritmo que permita decir si un punto que resulta de la intersección de dos rectas se encuentra sob...
Resolución<br />¿Qué debemos hacer?<br />    Estudiar si el punto de intersección pertenece a algún eje.<br />¿Cómo resolv...
Primitiva Intersección, Encontrar el punto de intersección<br />Por medio de determinantes:<br />19<br />Algoritmo Interse...
Primitiva pertenencia, estudiar si pertenece a los ejes<br />Si x=0 o y=0 entonces el punto pertenece de lo contrario el p...
21<br />Algoritmo IntersecciónEnEje<br />DE: a,b,c,d,e,f	[Reales]<br />DS: Pertenece		[Lógico]<br />Acciones<br />    Inte...
Suma de sucesiones<br />S1- 1,2,3,4,…,i,…<br />S2- 2,4,6,8,…,i,…<br />S3- 1,,3,5,7,…,i,…<br />S4- 4,9,16,25,…,i,…<br />S5-...
Cálculo de la suma de los primeros n elementos de una sucesión<br />S1- 1,2,3,4,…,i,…					i-ésimo= i<br />S2- 2,4,6,8,…,i,...
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.Tene...
25<br />S1- 1,2,3,4,…,i,…						i-ésimo= i<br />Pasos:<br />Generar elemento.<br />Sumar elemento<br />Repetir ambas accion...
26<br />S4- 4,9,16,25,…,i,…					i-ésimo= (i+1)2<br />Pasos:<br />Generar elemento.<br />Sumar elemento<br />Repetir ambas ...
27<br />S7- -51 ,52,-53 ,…,i,…				i-ésimo=(-1i)*5i <br />Pasos:<br />Generar elemento.<br />Sumar elemento<br />Repetir am...
Coparemos los tres algoritmos<br />28<br />
La forma general<br />29<br />Algoritmo Elementos<br />DE: i		[Natural]<br />DS: i-ésimo[Natural]<br />Acciones<br /> i-és...
Próxima SlideShare
Cargando en…5
×

Módulo 3

379 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
379
En SlideShare
0
De insertados
0
Número de insertados
59
Acciones
Compartido
0
Descargas
5
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Módulo 3

  1. 1. Módulo 3ALGORITMOS Y ESTRUCTURA DE DATOS <br />PROFESOR:SIRACUSA EMILIANO <br /> MARTÍN<br />Página Web: www.esiracusa.jimdo.com<br />1<br />
  2. 2. Primitivas<br />Acciones conocidas por la persona que especifica el algoritmo y por la persona o instrumento que las lleva a cabo.<br /><ul><li>Primitivas descriptas por el lenguaje de diseño.
  3. 3. Primitivas especificas por una persona que desarrolla el algoritmo.</li></ul>2<br />
  4. 4. Ejemplo1:<br />Cocinar un huevo frito:<br />Buscar la sartén.<br />Colocarle aceite.<br />Colocar la sartén en el fuego.<br />Buscar un huevo.<br />Cascar el huevo.<br />Colocar el interior del huevo en la sartén.<br />Cocinar el huevo.<br />Sacar el huevo de la sartén.<br />Retirar la sartén del fuego.<br />Finalizar<br />3<br />
  5. 5. Primitivas<br />4<br />
  6. 6. Ejemplo 2:Escribir un algoritmo para dibujar figuras en la pantalla.<br />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.<br />Se tiene exclusivamente las siguientes primitivas.<br />Línea vertical (f,c,h) que dibuja una línea vertical desde la posición (f,c) hasta (f+h,c).<br />Línea Horizontal (f,c,h) que dibuja una línea horizontal desde la posición (f,c) hasta (f,c+h).<br />5<br />
  7. 7. 6<br />Silla (2,1,2)<br />Silla (1,12,1)<br />Silla (2,8,3)<br />
  8. 8. 7<br />Mesa (2,9,2)<br />Silla (2,1,2)<br />
  9. 9. 8<br />Mesa (2,9,2)<br />Silla (2,1,2)<br />
  10. 10. 9<br />Sala (3,4,2,3,7,2)<br />
  11. 11. 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.<br />10<br />
  12. 12. Esquema de ejecución del algoritmo mayor-de-tres<br />11<br />-5<br />8<br />3<br />3<br />8<br />Algoritmo Mayor-de-tres<br />De: a,b,c<br />Ds: el-mayor<br />Acciones<br /> Mayor-de-dos(a,b,mayor)<br />Mayor-de-dos(mayor,c,el-mayor)<br />Fin<br />Algoritmo Mayor-de-dos<br />De: a ,b<br />Ds: mayor<br />8<br />8<br />-5<br />8<br />Algoritmo Mayor-de-dos<br />De: a,b<br />Ds: mayor<br />8<br />
  13. 13. Traza de ejecución de algoritmo mayor-de-tres<br />12<br />
  14. 14. Sintaxis de la Invocación a una primitiva en un algoritmo A <br />La invocación a primitivas esta formada por.<br /><ul><li>Nombre del algoritmo que se invoca como primitiva.
  15. 15. 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).
  16. 16. 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.</li></ul>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.<br />13<br />
  17. 17. Sintaxis de la Invocación a una primitiva en un algoritmo A <br />La indicación a primitiva se indica por:<br />Nombre de la primitiva (arg1, arg2, arg3, ….argn, )<br />Donde arg1, arg2, arg3, …. argi, corresponden en cantidad, dominio y orden de los datos de entrada y <br />argi+1, argi+2, …. argn, se corresponden a los datos de salida de la primitiva invocada.<br />14<br />
  18. 18. Ejecución de una primitiva invocada en un algoritmo A<br /><ul><li>Cuando se alcanza la ejecución en un algoritmo A que es invocación a una primitiva, se realizan las siguientes acciones:
  19. 19. 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.
  20. 20. Se ejecutará la primitiva con dichos valores para los datos de entrada.
  21. 21. 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.
  22. 22. Se retorna a la ejecución a la acción siguiente de la invocación mencionada.</li></ul>15<br />
  23. 23. Escribir un algoritmo que permita hallar a partir de un natural dado, otro número natural de siguiente manera:<br />16<br />Si el número dado es n=n1 n2 n3 ….Ni<br />Debe dar como resultado m=n1 *ni + n2*ni-1 +n3 * ni-2 +….+ ni *n1<br />Algoritmo SPMismoNúmero<br />DE: n<br />DS: m<br />Acciones<br />CantDigitos(n, cantidad)<br />InvertirNumero(n, ninv)<br /> Suma de productos (n, ninv, m)<br />Fin<br />
  24. 24. 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 <br />17<br />
  25. 25. Resolución<br />¿Qué debemos hacer?<br /> Estudiar si el punto de intersección pertenece a algún eje.<br />¿Cómo resolver este problema?<br /> - encontrar el punto de intersección.<br /> - estudiar si pertenece a los ejes<br />18<br />Algoritmo IntersecciónEnEje<br />DE: a,b,c,d,e,f [Reales]<br />DS: Pertenece [Lógico]<br />Acciones<br /> Intersección(a,b,c,d,e,f,x,y)<br /> Pertenencia(x,y,pertenece)<br />Fin<br />
  26. 26. Primitiva Intersección, Encontrar el punto de intersección<br />Por medio de determinantes:<br />19<br />Algoritmo Intersección<br />DE: a,b,c,d,e,f [Reales]<br />DS: x,y[Reales]<br />Acciones<br />x(c*e-b*f)/(a*e-b*d)<br /> y-(a*f-d*e)/(a*e-b*d)<br />Fin<br />
  27. 27. Primitiva pertenencia, estudiar si pertenece a los ejes<br />Si x=0 o y=0 entonces el punto pertenece de lo contrario el punto no pertenece a los ejes<br />20<br />Algoritmo Pertenencia<br />DE: x,y [Reales]<br />DS: pertenece [Lógico]<br />Acciones<br />Si (x=0) o (y=0)<br /> entonces<br /> pertenece v<br /> si no<br /> pertenece f<br />Fin<br />
  28. 28. 21<br />Algoritmo IntersecciónEnEje<br />DE: a,b,c,d,e,f [Reales]<br />DS: Pertenece [Lógico]<br />Acciones<br /> Intersección(a,b,c,d,e,f,x,y)<br /> Pertenencia(x,y,pertenece)<br />Fin<br />
  29. 29. Suma de sucesiones<br />S1- 1,2,3,4,…,i,…<br />S2- 2,4,6,8,…,i,…<br />S3- 1,,3,5,7,…,i,…<br />S4- 4,9,16,25,…,i,…<br />S5- 1,4,9,16 ,…,i,…<br />S6- n1 ,n2,n3 ,…,i,…<br />S7- -n1 ,n2,-n3,…,i,…<br />S8- 1!, 2!, 3! ,…,i,…<br />22<br />
  30. 30. Cálculo de la suma de los primeros n elementos de una sucesión<br />S1- 1,2,3,4,…,i,… i-ésimo= i<br />S2- 2,4,6,8,…,i,… i-ésimo= i*2<br />S3- 1,,3,5,7,…,i,…i-ésimo= i*-1<br />S4- 4,9,16,25,…,i,…i-ésimo= (i+1)2<br />S5- 1,4,9,16 ,…,i,…i-ésimo= i2<br />S6- 51 ,52,53,…,i,…i-ésimo= 5i<br />S7- -51 ,52,-53,…,i,…i-ésimo=(-1i)*5i<br />S8- 1!, 2!, 3! ,…,i,…i-ésimo= i!<br />23<br />
  31. 31. 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 elementoRepetir ambas acciones, n-veces. <br />24<br />
  32. 32. 25<br />S1- 1,2,3,4,…,i,… i-ésimo= i<br />Pasos:<br />Generar elemento.<br />Sumar elemento<br />Repetir ambas acciones, n-veces. <br />Algoritmo SumaNElementos<br />DE: n [Natural]<br />DS: Suma [Natural]<br />Acciones<br /> Suma 0<br /> i 1<br /> repetir n veces<br />suma suma+i<br />i  i+1<br />Fin<br />
  33. 33. 26<br />S4- 4,9,16,25,…,i,… i-ésimo= (i+1)2<br />Pasos:<br />Generar elemento.<br />Sumar elemento<br />Repetir ambas acciones, n-veces. <br />Algoritmo SumaNElementos<br />DE: n [Natural]<br />DS: Suma [Natural]<br />Acciones<br /> Suma 0<br /> i 1<br /> repetir n veces<br />suma suma+ (i+1)2 <br /> i  i+1<br />Fin<br />
  34. 34. 27<br />S7- -51 ,52,-53 ,…,i,… i-ésimo=(-1i)*5i <br />Pasos:<br />Generar elemento.<br />Sumar elemento<br />Repetir ambas acciones, n-veces. <br />Algoritmo SumaNElementos<br />DE: n [Natural]<br />DS: Suma [Natural]<br />Acciones<br /> Suma 0<br /> i 1<br /> repetir n veces<br />suma suma+ (-1i)*5i <br /> i  i+1<br />Fin<br />
  35. 35. Coparemos los tres algoritmos<br />28<br />
  36. 36. La forma general<br />29<br />Algoritmo Elementos<br />DE: i [Natural]<br />DS: i-ésimo[Natural]<br />Acciones<br /> i-ésimo i<br />Fin<br />Algoritmo SumaNElementos<br />DE: n [Natural]<br />DS: Suma [Natural]<br />Acciones<br /> Suma 0<br /> i 1<br /> repetir n veces<br />suma suma+Elemento(i)<br /> i  i+1<br />Fin<br />Algoritmo Elementos<br />DE: i [Natural]<br />DS: i-ésimo[Natural]<br />Acciones<br /> i-ésimo (i+1)2 <br />Fin<br />Algoritmo Elementos<br />DE: i [Natural]<br />DS: i-ésimo[Natural]<br />Acciones<br /> i-ésimo (-1i)*5i <br />Fin<br />
  37. 37. Aproximación Sucesivas <br />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.<br />Es por eso que aproximamos distintas magnitudes en el que hacer cotidiano.<br />Veamos un ejemplo de una sucesión que se aproxima a un número:<br />Cada termino se aproxima al número 1<br />30<br />
  38. 38. Aproximación Sucesivas <br />31<br />
  39. 39. Consideraciones Elementales<br />32<br />Algoritmo SumAroximada<br />DE: error[Real]<br />DS: Suma [Natural]<br />Acciones<br /> Suma 0<br /> i 1<br />repetir<br /> suma suma+ Elemento(i)<br /> i  i+1<br />hasta Elemento(i)<Error<br />Fin<br />
  40. 40. 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<br />33<br />Algoritmo SumAroximada<br />DE: Error[Real]<br />DS: Suma [Natural]<br />Acciones<br /> Suma 0<br /> i 1<br />repetir mientrasElemento(i)>Error<br /> suma suma+ Elemento(i)<br /> i  i+1<br /> fin repetir <br />Fin<br />
  41. 41. Otra forma de pensarlo…<br />34<br />Como Si=Si-1+ti entonces ti=Si-Si-1para no analizar si los términos son positivos o negativos podemos utilizar el valor absoluto |ti|=|Si-Si-1|<br />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:<br />|ElTermino|=|Aprox1-Aprox2|<br />Luego podemos escribir el algoritmo anterior de la siguiente manera:<br />
  42. 42. Realizar la traza para el ejemplo con error=0,01 y Sn=n/(n+1)<br />35<br />Algoritmo SumAroximada<br />DE: error[Real]<br />DS: Suma [Natural]<br />Acciones<br />aprox1 0<br /> i 1<br /> aprox2 Elemento(i)<br />repetir mientras |Aprox1-Aprox2|>= error<br />aprox1  aprox2<br />i  i+1<br />aprox2  aprox1 +Elemento(i)<br />fin mientras<br />Suma aprox1<br />Fin<br />
  43. 43. El número e<br />36<br />𝑒1=2+11+1=2.5<br /> <br />𝑒2=11+12+2=2.8<br /> <br />𝑒3=11+12+23+3=2.7<br /> <br />Ejercicio escribir un algoritmo que permita aproximar al número e<br />

×