Módulo 2ALGORITMOS Y ESTRUCTURA DE DATOS <br />PROFESOR:SIRACUSA EMILIANO <br />                   MARTÍN<br />Página Web:...
Problemas modelos y abstracciones<br /><ul><li>Buscar la solución a un problema es buscar un MODELO.
Un modelo es una versión simplificada de la realidad con datos relevantes del problema.
Los modelos se construyen con ayuda de abstracciones.</li></li></ul><li>Algoritmo<br /><ul><li>Buscar la solución a un pro...
Un modelo es una versión simplificada de la realidad con datos relevantes del problema.
Los modelos se construyen con ayuda de abstracciones.</li></li></ul><li>Ejemplo:<br />Cocinar un huevo frito:<br />Buscar ...
Especificación del algoritmo: Sucesión de pasos o instrucciones que representan la resolución de una clase de problemas. E...
-Para cada paso del algoritmo, el siguiente está definido sin ambigüedad.<br />-El orden de ejecución se establece en la e...
Ejemplo:<br />0. Observar si hay algún huevo.<br />0. Si hay por lo menos un huevo entonces realizar las acciones de 1 a 1...
Buscar la sartén.<br />Colocarle aceite.<br />	2’ Buscar la botella de aceite de girasol.<br />2’’Colocar 1/3 cm3 de aceit...
Ejemplo:<br />Juan suele ir de campamento amenudeo y como es muy metódico y consume tres rebanadas de pan en su desayuno. ...
Base lunar Alfa<br />La Base Alfa con dos robots, Pipo y Kuki, y abundantes baterías. En la Base Beta no hay baterías.<br ...
Base lunar Alfa<br />Kuki<br />Base <br />Alfa<br />Suelo lunar<br />9 Días<br />Pipo<br />Base <br />Beta<br />
Las acciones conocidas que emplean en la especificación de un algoritmo se llaman acciones primitivas.<br />Para que un al...
Lenguaje de diseño de algoritmos<br />Objetivos:<br />Servir de apoyo durante la resolución del problema.<br />Servir de e...
Estructura de un algoritmo<br />Todo algoritmo se encabeza por un nombre elegido por la persona que lo escribe, al que se ...
Los datos de algoritmo son objetos que representan a un conjunto de valores, tienen un nombre y asumen algún valor durante...
Algoritmopredecesor<br />Datos de entrada: un-numero<br />Datos de salida: otro-numero<br />
Ejemplo1: Determinar el perímetro de un polígono regular, sabiendo la longitud de uno de sus lados y la cantidad de lados....
Ejemplo2: Contar la cantidad de números primos entre un número natural y otro.Algoritmoprimos-entre-naturalesDatos de entr...
Ejemplo3: Determinar si un año es bisiesto.Algoritmo año-bisiestoDatos de entrada: añoDatos de salida: es-bisiesto<br />
Precondición <br />Precondición: Conjunto de valores que puede tomar un dato de entrada y cierta condiciones preestablecid...
Postcondición <br />Postcondición: Conjunto de valores que puede tomar un dato de salida<br />Las postcondiciones no asegu...
Descripción de las acciones<br />Distinguiremos dos tipos de acciones<br /><ul><li>Manipulación de datos: expresiones por ...
Estructuras de control: Esquemas por medio de los cuales se establece el orden de ejecución.</li></li></ul><li>Manipulació...
Manipulación de datos<br />Expresiones lógicas: natación y evaluación matemática.<br />Ejemplo:-[(a<b)^(c>5)]<br />       ...
Manipulación de datos<br />Asignación: Operación que aplica un valor a un dato.<br />Forma general: nombre del dato			expr...
Ejercicio: Escribir un algoritmo que calcule el área de un cuadrado considerando el lado.<br />Datos u objetos: lado, cuad...
Ejercicio: Escribir un algoritmo que calcule el área de un circulo considerando su radio.<br />Solución<br />Datos u objet...
Ejercicio: Escribir un algoritmo que calcule el área de un triángulo considerando la base y la altura.<br />Solución<br />...
Estructuras de control<br />-Secuencia: Secuencias de control implícita que establece que la ejecución del algoritmo se re...
Secuencia<br />El orden en que se escribe las acciones de un algoritmo, es el orden en el que se van a ser llevadas a cabo...
Ejercicio: Escribir un algoritmo que calcule el perímetro de un cuadrado conociendo su diagonal.<br />Solución<br />Datos ...
Ejercicio: Escribir un algoritmo que permita intercambiar los valores numéricos de dos datos.<br />Solución<br />Algoritmo...
Estructuras de control Condicionadas<br />Algunas acciones pueden llevarse a cabo para alguna instancia de una clase de pr...
Estructuras de control Condicionadas<br />Si n>0<br />        	entonces<br />        	            n		        n-1<br />		si...
Estructuras de control Condicionadas<br />La expresión booleana debe ser mutuamente excluyente<br />
Estructuras de control Condicionadas<br />La estructura condicional a la izquierda no es equivalente a las tres estructura...
Estructuras de control Condicionadas<br />Ejemplo: Escribir un algoritmo que permita hallar el mayor ente dos números.<br ...
Estructuras de control Condicionadas<br />Ejemplo: Escribir un algoritmo que <br />permita calcular lo que cobrará en <br ...
Estructuras de control Condicionadas<br />Algoritmo Descuento<br />Datos de entrada: sueldo		[real positivo]<br />Datos de...
Estructuras de control Condicionadas<br />Ejemplo: Escribir un algoritmo que <br />permita detectar si un año es bisiesto....
Estructuras de control Condicionadas<br />Propuesta dos.<br />Algoritmo Año-bisiesto2<br />Datos de entrada: año  [año∈ℕ]<...
Estructuras de control Condicionadas<br />Anidada<br />Si EXPRESIÓN BOOLEANA<br />          entonces      BLOQUE1<br />   ...
Estructuras de control Condicionadas Anidada<br />Algoritmo Descuento<br />Datos de entrada: sueldo		[real positivo]<br />...
Estructuras de control Repetitivas<br />La repetición permite que un conjunto de acciones indicadas en la estructura se ej...
Número fijo de repeticiones<br />Forma general de la estructura:<br />Repetir   n   veces<br />	acción<br />Interpretación...
Ejemplo: Escribir un algoritmo que permita sumar todos los números naturales entre dos números dados, incluyendo éstos.<br...
Podemos escribir la siguiente sucesión de acciones<br />auxiliar 		auxiliar+1<br />suma			suma + auxiliar<br />Tantas vece...
Algoritmo Suma-de-naturales-sucesivos<br />Datos de entrada: n , m  		[Naturales]<br />Datos de salida: suma			[Natural]<b...
Algoritmo Suma-de-naturales-sucesivos2<br />Datos de entrada: n , m  		[Naturales]<br />Datos de salida: suma			[Natural]<...
Ejercicio: Escribir un algoritmo que permita escribir el factorial de un número.<br />       =1 		si n=0<br />n!<br />    ...
Algoritmo Factorial<br />Datos de entrada: numero		[Natural]<br />Datos de salida: el-factorial		[Natural]<br />Acciones<b...
Otra estructura repetitiva depende de una condición.<br />Repetir mientras condición<br />     	acción<br />Interpretación...
Ejemplo1:<br />b	1<br />a	3		<br />repetir mientras a<=b			2 veces<br />        a	a-1<br />Ejemplo2:<br />	b	1<br />	a	3		...
Ejemplo: escribir un algoritmo que permita hallar el menor múltiplo de un número m que sea mayor que un número n dado.<br ...
Algoritmo MenorNumeroMayor<br />Datos de entrada: n , m 	 [Naturales, m<=n]<br />Datos de salida: múltiplo	 [Naturales]<br...
Ejercicio: contar la cantidad de dígitos que posee un número natural dado.<br />2456    cantidad de dígitos = 4<br />canti...
Algoritmo CantidadDigitos<br />Datos de entrada: numero	 [Naturales y ‘0’]<br />Datos de salida: cantidad	 [Naturales]<br ...
Otra estructura que depende de una condición es:<br />repetir<br />               acción<br />hasta condición<br />Interpr...
Ejemplo1:<br />b	1<br />a	3		<br />repetir 					2 veces<br />        a	a-1<br />         hasta a<=b<br />Ejemplo2:<br />	b...
Ejercicio: Contar la cantidad de dígitos que posee un número natural dado.<br />Solución<br />Algoritmo Cantidad-de-dígito...
Estructuras de control repetitivas anidadas<br />Un estructura de control repetitiva puede ser también una estructura de c...
Ejemplo1:<br />  b			0<br />  a			0<br />Repetir   mientras b<n <br />		b			 b+1<br />		Repetir   m   veces<br />		a			 a+...
Ejercicio: Escribir un algoritmo que permita resolver la siguiente suma:𝑰=𝟏𝒏𝒋=𝟏𝒎𝒋𝟑<br /> <br />Solución<br />Algoritmo Sum...
Traza de un algoritmo<br />Una traza es un cuadro en el cual se plasman los datos que están especificados en un algoritmo ...
Traza de un algoritmo<br />Algoritmo Uno<br />DE: n<br />DS: p<br />Acciones<br /> 1)		m		3.n<br />  2)		p		n.2(m/2)<br />...
Ejemplo: hacer una traza de <br />ejecución del algoritmo que <br />permite obtener la suma de <br />todos los divisores d...
Ejemplo: hacer una traza de <br />ejecución del algoritmo que <br />permite obtener la suma de <br />todos los divisores d...
Observando la traza podemos <br />mejorar el método que hemos <br />empleado en resolver el problema, <br />cambiando la c...
Ejemplo: Algoritmo para calcular el divisor común menor entre dos números naturales. <br />Algoritmo DCMDos<br />DE: n,m<b...
Próxima SlideShare
Cargando en…5
×

Módulo 2

853 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
853
En SlideShare
0
De insertados
0
Número de insertados
53
Acciones
Compartido
0
Descargas
16
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Módulo 2

  1. 1. Módulo 2ALGORITMOS Y ESTRUCTURA DE DATOS <br />PROFESOR:SIRACUSA EMILIANO <br /> MARTÍN<br />Página Web: www.esiracusa.jimdo.com<br />
  2. 2. Problemas modelos y abstracciones<br /><ul><li>Buscar la solución a un problema es buscar un MODELO.
  3. 3. Un modelo es una versión simplificada de la realidad con datos relevantes del problema.
  4. 4. Los modelos se construyen con ayuda de abstracciones.</li></li></ul><li>Algoritmo<br /><ul><li>Buscar la solución a un problema es buscar un MODELO.
  5. 5. Un modelo es una versión simplificada de la realidad con datos relevantes del problema.
  6. 6. Los modelos se construyen con ayuda de abstracciones.</li></li></ul><li>Ejemplo:<br />Cocinar un huevo frito:<br />Buscar la sartén.<br />Colocarle aceite.<br />Colocar la sartén en el fuego.<br />Buscar un hueva.<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 />
  7. 7. Especificación del algoritmo: Sucesión de pasos o instrucciones que representan la resolución de una clase de problemas. Es una entidad estática.<br />Ejecución del algoritmo: Proceso de llevar a cabo los pasos indicados en la especificación.<br />Algoritmo: Secuencia de pasos o especificaciones que cundo se ejecutan, produce resultados y termina luego de una cantidad finita de tiempo.<br />
  8. 8. -Para cada paso del algoritmo, el siguiente está definido sin ambigüedad.<br />-El orden de ejecución se establece en la especificación.<br />-Todo algoritmo tiene un punto inicial y al menos un punto final.<br />-La resolución del problema frecuente mente se divide en distintas secciones y la terminación del proceso depende de la sección que se ha ejecutado<br />
  9. 9. Ejemplo:<br />0. Observar si hay algún huevo.<br />0. Si hay por lo menos un huevo entonces realizar las acciones de 1 a 10, sino , pensar en otra comida y finalizar.<br />Ejemplo:<br />Cocinar un huevo frito:<br />Buscar la sartén.<br />Colocarle aceite.<br />Colocar la sartén en el fuego.<br />Buscar un hueva.<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 />
  10. 10. Buscar la sartén.<br />Colocarle aceite.<br /> 2’ Buscar la botella de aceite de girasol.<br />2’’Colocar 1/3 cm3 de aceite en la sartén.<br />Colocar la sartén en el fuego.<br />Buscar un hueva.<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 />
  11. 11. Ejemplo:<br />Juan suele ir de campamento amenudeo y como es muy metódico y consume tres rebanadas de pan en su desayuno. Habitualmente trata de minimizar lo que lleva en su mochila. Su parrilla no es muy grande, y por ejemplo solo entran tres rebanadas de pan que siempre consume, las cuales por supuesto siempre se doran de un solo lado.<br />Al desayuno hace tostadas en la parrilla y quiere saber cuanto es el mínimo que tardaría en hacer las tostadas.<br />Como no le gustan ni muy tostadas ni muy blancas, descubrió que necesita 30 segundos para que la tostada este lista de un lado.<br />Tarda 5 segundos en sacarla, y 3 segundos en dar vuelta una rebanada (Si son dos rebanadas puede hacer esta tarea simultáneamente)<br />
  12. 12. Base lunar Alfa<br />La Base Alfa con dos robots, Pipo y Kuki, y abundantes baterías. En la Base Beta no hay baterías.<br />Un robots necesita viajar 9 días para llegar de una a la otra base.<br />Un robot necesita baterías con carga para poder moverse.<br />Cada robots puede cargar 12 baterías (cada batería dura un día). Los robots pueden dejar alguna de sus baterías (no todas) en suelo lunar, y también recogerlas de el.<br />Se quiere hacer llegar un mensaje a la Base Beta en menos de 10 días usando los robots, que deben regresar a Alfa.<br />Elabore un plan para que los robots cumplan su tarea.<br />
  13. 13. Base lunar Alfa<br />Kuki<br />Base <br />Alfa<br />Suelo lunar<br />9 Días<br />Pipo<br />Base <br />Beta<br />
  14. 14. Las acciones conocidas que emplean en la especificación de un algoritmo se llaman acciones primitivas.<br />Para que un algoritmo pueda ser interpretado y ejecutado debe estar expresado por medio de acciones primitivas que puedan ser comprendidas por el interlocutor, persona o máquina que las llevara a cabo.<br />Un algoritmo puede ser transformado en un programa, cuando se traduce a instrucciones ejecutables por una computadora.<br />Un programa está formado por un conjunto de acciones primitivas definidas por el lenguaje de programación que se utilice.<br />
  15. 15. Lenguaje de diseño de algoritmos<br />Objetivos:<br />Servir de apoyo durante la resolución del problema.<br />Servir de etapa previa a la traducción a un lenguaje de programación.<br />Opción de elegir el lenguaje de programación que más se adecue a las primitivas especificadas en el algoritmo.<br />Permitir la visón global del trabajo aunque lo estén desarrollando distintas personas.<br />
  16. 16. Estructura de un algoritmo<br />Todo algoritmo se encabeza por un nombre elegido por la persona que lo escribe, al que se le precede la palabra algoritmo.<br />Ejemplo<br />Algoritmo Prueba<br />Todo algoritmo esta constituido por dos componentes claramente identificadas:<br />1- Los datos.<br />2- Las acciones.<br />Los datos: objetos que intervienen en la resolución del problema. Forman que intervienen en la resolución del problema. Forman el estado inicial y final del problema. Se llaman datos de entrada y de salida respectivamente<br />
  17. 17. Los datos de algoritmo son objetos que representan a un conjunto de valores, tienen un nombre y asumen algún valor durante la ejecución del algoritmo.<br />Ejemplo: <br /> A partir del número 3 obtengo el número 3.<br /> A partir del número -5 obtengo el -6.<br />Objetos que intervienen en el problema:<br />El dato es un número.<br />Nombre del dato: número, x, num, etc.<br />Conjunto de valores que se representan: enteros.<br />Valores que se asumen: se establece durante la ejecución del algoritmo.<br />
  18. 18. Algoritmopredecesor<br />Datos de entrada: un-numero<br />Datos de salida: otro-numero<br />
  19. 19. Ejemplo1: Determinar el perímetro de un polígono regular, sabiendo la longitud de uno de sus lados y la cantidad de lados.Algoritmoperímetro-polígono-regulaDatos de entrada: lado, cantidad-ladosDatos de salida: perímetro<br />
  20. 20. Ejemplo2: Contar la cantidad de números primos entre un número natural y otro.Algoritmoprimos-entre-naturalesDatos de entrada: numreo1, numero2Datos de salida: cantidad-de-primos<br />
  21. 21. Ejemplo3: Determinar si un año es bisiesto.Algoritmo año-bisiestoDatos de entrada: añoDatos de salida: es-bisiesto<br />
  22. 22. Precondición <br />Precondición: Conjunto de valores que puede tomar un dato de entrada y cierta condiciones preestablecidas entre o para los datos. (Dominio)<br />Las precondiciones garantizan que un algoritmo correcto, dé resultados correctos.<br />Precondición es la información que se conoce como verdadera antes de comenzar el algoritmo.<br />Ejemplo división entera.<br />Algoritmodivisión-entera<br />Datos de entrada: dividendo, divisor.<br />[Dividendo ∈Ζ, Divisor ∈Ζ−0]<br /> <br />
  23. 23. Postcondición <br />Postcondición: Conjunto de valores que puede tomar un dato de salida<br />Las postcondiciones no aseguran que los valores de los datos de salida pertenecen a los conjuntos indicados..<br />Es la información que se conoce como verdadera al concluir el algoritmo si se cumple adecuadamente el requerimiento pedido.<br />Ejemplo división entera.<br />Algoritmo división-entera<br />Datos de entrada: dividendo, divisor.<br />[Dividendo ∈Ζ, Divisor ∈Ζ−0]<br />Datos de salida: cociente, resto<br />[Cociente ∈Ζ, Resto ∈Ν∪0]<br /> <br />
  24. 24. Descripción de las acciones<br />Distinguiremos dos tipos de acciones<br /><ul><li>Manipulación de datos: expresiones por medio de las cuales se obtiene valores. Esos valores pueden asignarse a los datos.
  25. 25. Estructuras de control: Esquemas por medio de los cuales se establece el orden de ejecución.</li></li></ul><li>Manipulación de datos<br />Expresiones aritmética: natación y evaluación matemática.<br />Ejemplo: 𝑎.𝑏+8 /𝑒(−6)<br /> <br />
  26. 26. Manipulación de datos<br />Expresiones lógicas: natación y evaluación matemática.<br />Ejemplo:-[(a<b)^(c>5)]<br /> (a≤10) y (a≠7)o(a=15)<br /> <br />
  27. 27. Manipulación de datos<br />Asignación: Operación que aplica un valor a un dato.<br />Forma general: nombre del dato expresión<br />Ejemplos:<br />Número 18<br />X a – b . C + n<br />Vale verdadero<br />Casi a=b<br />
  28. 28. Ejercicio: Escribir un algoritmo que calcule el área de un cuadrado considerando el lado.<br />Datos u objetos: lado, cuadrado, área.<br />Método área =lado . lado <br />Algoritmo área-cuadrado<br />Acciones<br /> Dato de entrada: lado [real positivo]<br /> Dato de salida: área [real positivo]<br />área lado . lado<br />Fin <br />
  29. 29. Ejercicio: Escribir un algoritmo que calcule el área de un circulo considerando su radio.<br />Solución<br />Datos u objetos: circulo, radio, área.<br />Método área =pi . radio2<br />Algoritmo área-circulo<br />Dato de entrada: radio [real positivo]<br />Dato de salida: área [real positivo]<br />Acciones<br />área pi . radio. radio<br />Fin <br />
  30. 30. Ejercicio: Escribir un algoritmo que calcule el área de un triángulo considerando la base y la altura.<br />Solución<br />Datos u objetos:,triángulo, área.<br />Método área =base. Altura/2<br />Algoritmo área-triángulo<br />Dato de entrada: base, altura [real positivo]<br />Dato de salida: área [real positivo]<br />Acciones<br />área base. Altura/2<br />Fin <br />
  31. 31. Estructuras de control<br />-Secuencia: Secuencias de control implícita que establece que la ejecución del algoritmo se realiza desde la primera acción hacia la última. Este orden puede ser interrumpido por otra estructura de control.<br />-Condicional: Permite indicar las distintas acciones alternativas a ejecutarse que presentan resolución del problema para hallar las soluciones.<br />-Repetición: Permite indicar en una sola estructura las acciones durante la ejecución se deben reiterar.<br />
  32. 32. Secuencia<br />El orden en que se escribe las acciones de un algoritmo, es el orden en el que se van a ser llevadas a cabo.<br />El orden en que nosotros acostumbramos a escribir y a leer un texto es secuencial y es implícito, esto es, la frese anterior no indica expresamente cual es la siguiente que se debe leer, pero sabemos que es la que continua en el texto.<br />En un algoritmo, la secuencia es similar a la de un texto.<br />En esa secuencia puede ser interrumpida por otras estructuras de control. <br />
  33. 33. Ejercicio: Escribir un algoritmo que calcule el perímetro de un cuadrado conociendo su diagonal.<br />Solución<br />Datos : perímetro, diagonal, cuadrado.<br />Método: diagonal . diagonal=lado.lado+lado.lado<br /> lado=diagonal.2<br />perímetro=4.lado<br />Algoritmo perímetro-cuadrado-diagonal<br />Dato de entrada: diagonal [real positivo]<br />Dato de salida: perímetro [real positivo]<br />Acciones<br /> lado diagonal.2<br />perímetro 4.lado<br />Fin <br /> <br />
  34. 34. Ejercicio: Escribir un algoritmo que permita intercambiar los valores numéricos de dos datos.<br />Solución<br />Algoritmo intercambio-datos<br />Dato de entrada: dato1 dato2<br />Dato de salida: dato1 dato2<br />dato-auxiliar dato1<br />dato1 dato2<br />dato2 dato-auxiliar <br />Fin <br />
  35. 35. Estructuras de control Condicionadas<br />Algunas acciones pueden llevarse a cabo para alguna instancia de una clase de programa o bien si cierta condición se satisfacen.<br />El condicional permite que una acción o conjunto de acciones se pueda ejecutar sólo bajo ciertas condiciones.<br />Ejemplo:<br /> Si n>0<br /> Entonces<br /> n n-1<br />
  36. 36. Estructuras de control Condicionadas<br />Si n>0<br /> entonces<br /> n n-1<br /> si no<br /> n n+1<br />Forma de la estructura de control condicional<br />Si EXPRESIÓN BOOLEANA<br />entonces<br /> BLOQUE1<br />si no<br />BLOQUE2<br />
  37. 37. Estructuras de control Condicionadas<br />La expresión booleana debe ser mutuamente excluyente<br />
  38. 38. Estructuras de control Condicionadas<br />La estructura condicional a la izquierda no es equivalente a las tres estructuras de la derecha.<br /> Es decir en el caso de la izquierda solo contemplara una de las tres opciones posible mientras que la estructura de la derecha realizará tres evaluaciones sin considerar que sucedió antes y después. <br />
  39. 39. Estructuras de control Condicionadas<br />Ejemplo: Escribir un algoritmo que permita hallar el mayor ente dos números.<br />Algoritmo Mayor-de-dos<br />Datos de entrada: n,m [𝑛,𝑚∈ℝ]<br />Datos de salida: mayor [𝑚𝑎𝑦𝑜𝑟∈ℝ]<br />Acciones<br /> si n>=m<br /> mayor n<br /> n<m<br /> mayor m<br />Fin<br /> <br />Acciones<br />si n >= m<br /> entonces<br /> mayor n <br /> sino <br />mayor m<br />Fin <br />
  40. 40. Estructuras de control Condicionadas<br />Ejemplo: Escribir un algoritmo que <br />permita calcular lo que cobrará en <br />persona a la que se le ha reducido <br />el sueldo en in 13% si con <br />anterioridad cobra menos de 500 <br />pesos, en un 15% si cobra menos <br />de 800 pesos y más o igual a 500, y un 18% si cobra más o igual de 800 pesos.<br />Análisis del problema <br />Sueldo< 500 cobrara=sueldo-sueldo . 0,13<br />800<=Sueldo< 500 cobrara=sueldo-sueldo . 0,15<br />800<=Sueldo cobrara=sueldo-sueldo . 0,18<br />
  41. 41. Estructuras de control Condicionadas<br />Algoritmo Descuento<br />Datos de entrada: sueldo [real positivo]<br />Datos de salida: sueldo-nuevo [real positivo]<br />Acciones<br /> Si Sueldo< 500 <br />sueldo-nuevo=sueldo-sueldo . 0,13<br /> 800<=Sueldo< 500<br /> sueldo-nuevo=sueldo-sueldo . 0,15<br /> 800<=Sueldo <br />sueldo-nuevo=sueldo-sueldo . 0,18<br />Fin<br />
  42. 42. Estructuras de control Condicionadas<br />Ejemplo: Escribir un algoritmo que <br />permita detectar si un año es bisiesto.<br />Algoritmo Año-bisiesto<br />Datos de entrada: año [año∈ℕ]<br />Datos de salida: es-bisiesto [es-bisiesto ∈𝑣;𝑓]<br />Acciones<br /> Si (año//4=0)y(año//100<>0)o(año//400=0)<br /> entonces es-bisiesto v<br /> si no es-bisiesto f<br />Fin<br /> <br />
  43. 43. Estructuras de control Condicionadas<br />Propuesta dos.<br />Algoritmo Año-bisiesto2<br />Datos de entrada: año [año∈ℕ]<br />Datos de salida: es-bisiesto [es-bisiesto ∈𝑣;𝑓]<br />Acciones<br /> es-bisiesto(año//4=0)y(año//100<>0)o(año//400=0)<br />Fin<br /> <br />
  44. 44. Estructuras de control Condicionadas<br />Anidada<br />Si EXPRESIÓN BOOLEANA<br /> entonces BLOQUE1<br /> si no BLOQUE2<br />Cada uno de los bloque puede ser una estructura condicionada<br />Si EXPRESIÓN BOOLEANA<br /> entoncesSi EXPRESIÓN BOOLEANA<br /> entonces BLOQUE1<br /> si no BLOQUE2<br /> si no Si EXPRESIÓN BOOLEANA<br /> entonces BLOQUE1<br /> si no BLOQUE2<br />
  45. 45. Estructuras de control Condicionadas Anidada<br />Algoritmo Descuento<br />Datos de entrada: sueldo [real positivo]<br />Datos de salida: sueldo-nuevo [real positivo]<br />Acciones<br /> Si Sueldo< 500 <br /> entonces<br />sueldo-nuevo=sueldo-sueldo . 0,13<br /> si no <br />Si 800<=Sueldo< 500<br /> entonces<br /> sueldo-nuevo=sueldo-sueldo . 0,15<br />Si no<br /> sueldo-nuevo=sueldo-sueldo . 0,18<br />Fin<br />
  46. 46. Estructuras de control Repetitivas<br />La repetición permite que un conjunto de acciones indicadas en la estructura se ejecute más de una vez,<br />de acuerdo a determinadas condiciones.<br />
  47. 47. Número fijo de repeticiones<br />Forma general de la estructura:<br />Repetir n veces<br /> acción<br />Interpretación semántica:<br />La acción se repite tantas veces como lo indique el valor de n:0, 1, o más veces.<br />Ejemplo:<br />Repetir 10 veces<br />X x+1<br />Repetir n+2 veces<br />X x+1<br />
  48. 48. Ejemplo: Escribir un algoritmo que permita sumar todos los números naturales entre dos números dados, incluyendo éstos.<br />Si n=5 y m=13 suma=5+6+7+8+9+10+11+12+13=81<br />Si n=1 y m=5 suma=1+2+3+4+5=15<br />
  49. 49. Podemos escribir la siguiente sucesión de acciones<br />auxiliar auxiliar+1<br />suma suma + auxiliar<br />Tantas veces como sea necesario para obtener el resultado final.<br />Usando la estructura de control repetitiva<br />Repetir m-n veces<br />auxiliar auxiliar+1<br />suma suma + auxiliar<br />
  50. 50. Algoritmo Suma-de-naturales-sucesivos<br />Datos de entrada: n , m [Naturales]<br />Datos de salida: suma [Natural]<br />Acciones<br /> auxiliar n<br /> suma auxiliar <br /> Repetir m-n veces<br /> auxiliar auxiliar+1<br /> suma suma + auxiliar<br />Fin<br />
  51. 51. Algoritmo Suma-de-naturales-sucesivos2<br />Datos de entrada: n , m [Naturales]<br />Datos de salida: suma [Natural]<br />Acciones<br /> auxiliar n<br /> suma 0 <br /> Repetir (m-n)+1 veces<br /> suma suma + auxiliar<br /> auxiliar auxiliar+1<br />Fin<br />
  52. 52. Ejercicio: Escribir un algoritmo que permita escribir el factorial de un número.<br /> =1 si n=0<br />n!<br /> =1.2.3…n si n>0<br />Datos de entrada: n<br />Datos de salida: el-factorial<br />Para obtener el factorial debo general los números desde 1 hasta n<br />factor factor+1<br />
  53. 53. Algoritmo Factorial<br />Datos de entrada: numero [Natural]<br />Datos de salida: el-factorial [Natural]<br />Acciones<br /> el-factorial 1 <br /> factor 1<br /> Repetir numero veces<br /> el-factorial el-factorial. Factor<br /> factor factor+1<br />Fin<br />
  54. 54. Otra estructura repetitiva depende de una condición.<br />Repetir mientras condición<br /> acción<br />Interpretación semántica<br />-Se evalúa la condición, se dicho valor es verdadero se ejecuta la acción.<br />-Se repite lo anterior mientras la condición es Verdadera.<br />-En la condición participan datos que modifican su valor en la acción para que el ciclo termine.<br />-La acción puede ejecutarse 0, 1 o más veces.<br />-Los datos que participan en la condición deben estar inicializados. <br />
  55. 55. Ejemplo1:<br />b 1<br />a 3 <br />repetir mientras a<=b 2 veces<br /> a a-1<br />Ejemplo2:<br /> b 1<br /> a 3 <br /> repetir mientras a<b 0 veces<br /> a a-1<br />Ejemplo1:<br /> b 1<br /> a 3 <br /> repetir mientras a>b infinitas veces<br /> a a+1<br />
  56. 56. Ejemplo: escribir un algoritmo que permita hallar el menor múltiplo de un número m que sea mayor que un número n dado.<br />Sabemos que m<=n Supongamos que los números son 3 y 17.<br />Los múltiplos de 3 son: 3, 6, 9, 12, 15, 18, …, el menor múltiplo de 3 mayor que 17 es 18.<br />Un intento de desarrollar un algoritmo:<br />Datos de entrada: n , m [Naturales]<br />Datos de salida: múltiplo [Naturales]<br />Repetir mientras múltiplo < 17<br /> Buscar nuevo múltiplo<br />
  57. 57. Algoritmo MenorNumeroMayor<br />Datos de entrada: n , m [Naturales, m<=n]<br />Datos de salida: múltiplo [Naturales]<br />Acciones<br /> múltiplo m <br /> Repetir mientras múltiplo < =n<br /> múltiplo múltiplo+m<br />Fin<br />
  58. 58. Ejercicio: contar la cantidad de dígitos que posee un número natural dado.<br />2456 cantidad de dígitos = 4<br />cantidad de dígitos = 5<br />Método para calcularlo:<br />Si vamos dividiendo el número por diez y contamos la cantidad de veces que lo dividimos, obtenemos la cantidad de dígitos.<br />1563879 <br />156387 1 vez<br />15638 2 veces<br />1563 3 veces<br />156 4veces<br />15 5 veces<br />1 6 veces<br />0 7 veces<br />
  59. 59. Algoritmo CantidadDigitos<br />Datos de entrada: numero [Naturales y ‘0’]<br />Datos de salida: cantidad [Naturales]<br />Acciones<br /> cantidad 1 <br /> Repetir mientras numero>9<br /> numero numero/e 10<br /> cantidad cantidad +1<br />Fin<br />
  60. 60. Otra estructura que depende de una condición es:<br />repetir<br /> acción<br />hasta condición<br />Interpretación semántica<br />-Se ejecuta la acción y luego se evalúa la condición, si es falsa se ejecuta nuevamente la acción. Esto se repite hasta que la condición sea verdadera.<br />-La acción se ejecuta por lo menos una vez.<br />-En la estructura repetitiva, repetir-hasta se ejecutará la acción por lo menos una vez.<br />-En la condición deberá participar datos que sean modificados en la acción de manera que tal condición cambie su valor de verdad.<br />
  61. 61. Ejemplo1:<br />b 1<br />a 3 <br />repetir 2 veces<br /> a a-1<br /> hasta a<=b<br />Ejemplo2:<br /> b 1<br /> a 3 <br /> repetir 1 vez<br />a a-1<br /> hasta a<b<br />Ejemplo1:<br /> b 1<br /> a 3 <br /> repetir mientras a>b infinitas veces<br /> a a+1<br /> hasta a<=b<br />
  62. 62. Ejercicio: Contar la cantidad de dígitos que posee un número natural dado.<br />Solución<br />Algoritmo Cantidad-de-dígitos<br />Datos de entrada: numero [Naturales y ‘0’]<br />Datos de salida: cantidad [Naturales]<br />Acciones<br /> cantidad 0<br />Repetir<br /> numero numero/e 10<br /> cantidad cantidad +1<br /> mientras numero<0<br />Fin<br />
  63. 63. Estructuras de control repetitivas anidadas<br />Un estructura de control repetitiva puede ser también una estructura de control repetitiva. En este caso diremos que esta estructura se encuentra anidada en la otra.<br />Por ejemplo:<br /> b 0<br /> a 0<br />Repetir n veces<br /> b b+1<br /> Repetir m veces<br /> a a+1 <br />
  64. 64. Ejemplo1:<br /> b 0<br /> a 0<br />Repetir mientras b<n <br /> b b+1<br /> Repetir m veces<br /> a a+1 <br />El siguiente ejemplo produce los mismos valores para a y b que el anterior.<br />Ejemplo2:<br /> b 0<br /> a 0<br />Repetir mientras b<n <br /> b b+1 <br /> Repetir mientras a<m<br /> a a+1 <br />¿Presenta alguna variante en cuanto los resultados con respecto al Ejemplo 1?<br />
  65. 65. Ejercicio: Escribir un algoritmo que permita resolver la siguiente suma:𝑰=𝟏𝒏𝒋=𝟏𝒎𝒋𝟑<br /> <br />Solución<br />Algoritmo Suma<br />Datos de entrada: m, n [Naturales ]<br />Datos de salida: suma [Naturales]<br />Acciones<br /> i 1, suma1 0<br />Repetir n veces<br /> j 1, suma2 0<br /> Repetir n veces<br /> suma2 suma2+j3<br /> j j+1<br /> suma1 suma1+i2,suma2<br /> i i+1<br />Fin<br />
  66. 66. Traza de un algoritmo<br />Una traza es un cuadro en el cual se plasman los datos que están especificados en un algoritmo y el estado de los datos en cada momento de la ejecución del algoritmo.<br />El cuadro presenta una columna para fijar la acción que se está ejecutando en ese momento, una columna por cada uno de los datos que intervienen en el algoritmo, ya sean datos de entrada, de salida u otros, una columna que refleja el valor de verdad de la condición que se evaluada en alguna estructura de control condicional o repetitiva. La primera fila del cuadro contendrá los nombres de los ítems que representan las columnas. Las siguientes filas se irán completando a medida que se ejecutan cada una de las acciones. Cada línea representa la alteración que produce la ejecución de las acciones asociadas a ella. Las acciones que intervienen en el algoritmo estarán numeradas en orden creciente desde el 1, considerando el orden textual de la especificación del algoritmo, no el orden de ejecución.<br />Eventual mente estos ordenes podrán coincidir.<br />
  67. 67. Traza de un algoritmo<br />Algoritmo Uno<br />DE: n<br />DS: p<br />Acciones<br /> 1) m 3.n<br /> 2) p n.2(m/2)<br />Fin<br />Estado inicial<br />
  68. 68. Ejemplo: hacer una traza de <br />ejecución del algoritmo que <br />permite obtener la suma de <br />todos los divisores de un <br />número natural.<br />Algoritmo SumaDivisores<br />DE: n<br />DS: Suma<br />Acciones<br />1) i 1<br /> suma 0<br /> repetir mientras i<=n<br /> si n//i=0<br /> entonces<br /> suma suma+i<br /> i i+1 <br />Fin<br />
  69. 69. Ejemplo: hacer una traza de <br />ejecución del algoritmo que <br />permite obtener la suma de <br />todos los divisores de un <br />número natural.<br />Algoritmo SumaDivisores<br />DE: n<br />DS: Suma<br />Acciones<br />1) i 1<br /> suma 0<br /> repetir mientras i<=n<br /> si n//i=0<br /> entonces<br /> suma suma+i<br /> i i+1 <br />Fin<br />
  70. 70. Observando la traza podemos <br />mejorar el método que hemos <br />empleado en resolver el problema, <br />cambiando la condición del ciclo por<br /> 1<= n/e2. De esta manera se realiza<br /> la mitad de las iteraciones.<br />Algoritmo SumaDivisores<br />DE: n<br />DS: Suma<br />Acciones<br />1) i 1<br /> suma n<br /> repetir mientras i<=n/e2<br /> si n//i=0<br /> entonces<br /> suma suma+i<br /> i i+1 <br />Fin<br />
  71. 71. Ejemplo: Algoritmo para calcular el divisor común menor entre dos números naturales. <br />Algoritmo DCMDos<br />DE: n,m<br />DS: dcm<br />Acciones<br />1) repetir<br /> resto m// n<br /> m n<br /> n resto<br /> entonces<br />Hasta resto =0<br />dcm m <br />Fin<br />
  72. 72. Ejemplo: Algoritmo para calcular el divisor común menor entre dos números naturales. <br />Algoritmo DCMDos<br />DE: n,m<br />DS: dcm<br />Acciones<br />1) repetir<br /> resto m// n<br /> m n<br /> n resto<br /> entonces<br />Hasta resto =0<br />dcm m <br />Fin<br />
  73. 73. Bibliografía<br /><ul><li>López García, Guillermo (ed.) (2005). El ecosistema digital: Modelos de comunicación, nuevos medios y público en Internet. Valencia: Servei de Publicacions de la Universitat de València. Disp.
  74. 74. Snyder, Ilana –compiladora (2004): Alfabetismos digitales. Comunicación,innovación y educación en la era electrónica. Málaga: Aljibe Stallman, Richard M. (2004) Software libre para una sociedad libre. Introducción de Lawrence Lessig.
  75. 75. Curso Nivelación 2011 - Universidad Nacional de Chilecito Lic. en Sistemas - Ing. En Sistemas – Tecnicatura Univ. Desarrollo Aplic. WEB.
  76. 76. Agustin Fonseca- Juegos de mente – Memoria, Cálculo, Memoria, Agilidad Mental.
  77. 77. Martín Sierra, Abel Martín Álvarez, Ángel Aguirre Pérez- Aula Matemática digital 2.
  78. 78. Ing. Gábor loerines, ing. Francisco Chaves-Micro computación Tomo 2- Nahel Ediciones.
  79. 79. Adrián Paenza- Matemática... ¿Estás Ahí?
  80. 80. Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 2
  81. 81. Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 3,14.
  82. 82. Moroni Norma-Apunte de R.P.A (2003) –U.N.S.</li>

×