La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Módulo 2 ALGORITMOS Y ESTRUCTURA DE DATOS

Presentaciones similares


Presentación del tema: "Módulo 2 ALGORITMOS Y ESTRUCTURA DE DATOS"— Transcripción de la presentación:

1 Módulo 2 ALGORITMOS Y ESTRUCTURA DE DATOS
PROFESOR: SIRACUSA EMILIANO MARTÍN Página Web:

2 Problemas modelos y abstracciones
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.

3 Algoritmo 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.

4 Ejemplo: Cocinar un huevo frito: Buscar la sartén. Colocarle aceite. Colocar la sartén en el fuego. Buscar un hueva. Cascar el huevo. Colocar el interior del huevo en la sartén. Cocinar el huevo. Sacar el huevo de la sartén. Retirar la sartén del fuego. Finalizar

5 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. Ejecución del algoritmo: Proceso de llevar a cabo los pasos indicados en la especificación. Algoritmo: Secuencia de pasos o especificaciones que cundo se ejecutan, produce resultados y termina luego de una cantidad finita de tiempo.

6 -Para cada paso del algoritmo, el siguiente está definido sin ambigüedad.
-El orden de ejecución se establece en la especificación. -Todo algoritmo tiene un punto inicial y al menos un punto final. -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

7 Ejemplo: 0. Observar si hay algún huevo. 0. Si hay por lo menos un huevo entonces realizar las acciones de 1 a 10, sino , pensar en otra comida y finalizar. Cocinar un huevo frito: Buscar la sartén. Colocarle aceite. Colocar la sartén en el fuego. Buscar un hueva. Cascar el huevo. Colocar el interior del huevo en la sartén. Cocinar el huevo. Sacar el huevo de la sartén. Retirar la sartén del fuego. Finalizar

8 Buscar la sartén. Colocarle aceite. 2’ Buscar la botella de aceite de girasol. 2’’Colocar 1/3 cm3 de aceite en la sartén. Colocar la sartén en el fuego. Buscar un hueva. Cascar el huevo. Colocar el interior del huevo en la sartén. Cocinar el huevo. Sacar el huevo de la sartén. Retirar la sartén del fuego. Finalizar

9 Ejemplo: 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. Al desayuno hace tostadas en la parrilla y quiere saber cuanto es el mínimo que tardaría en hacer las tostadas. Como no le gustan ni muy tostadas ni muy blancas, descubrió que necesita 30 segundos para que la tostada este lista de un lado. Tarda 5 segundos en sacarla, y 3 segundos en dar vuelta una rebanada (Si son dos rebanadas puede hacer esta tarea simultáneamente)

10 Base lunar Alfa La Base Alfa con dos robots, Pipo y Kuki, y abundantes baterías. En la Base Beta no hay baterías. Un robots necesita viajar 9 días para llegar de una a la otra base. Un robot necesita baterías con carga para poder moverse. 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. Se quiere hacer llegar un mensaje a la Base Beta en menos de 10 días usando los robots, que deben regresar a Alfa. Elabore un plan para que los robots cumplan su tarea.

11 Base lunar Alfa Kuki Base Alfa Suelo lunar 9 Días Pipo Base Beta

12 Las acciones conocidas que emplean en la especificación de un algoritmo se llaman acciones primitivas. 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. Un algoritmo puede ser transformado en un programa, cuando se traduce a instrucciones ejecutables por una computadora. Un programa está formado por un conjunto de acciones primitivas definidas por el lenguaje de programación que se utilice.

13 Lenguaje de diseño de algoritmos
Objetivos: Servir de apoyo durante la resolución del problema. Servir de etapa previa a la traducción a un lenguaje de programación. Opción de elegir el lenguaje de programación que más se adecue a las primitivas especificadas en el algoritmo. Permitir la visón global del trabajo aunque lo estén desarrollando distintas personas.

14 Estructura de un algoritmo
Todo algoritmo se encabeza por un nombre elegido por la persona que lo escribe, al que se le precede la palabra algoritmo. Ejemplo Algoritmo Prueba Todo algoritmo esta constituido por dos componentes claramente identificadas: 1- Los datos. 2- Las acciones. 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

15 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. Ejemplo: A partir del número 3 obtengo el número 3. A partir del número -5 obtengo el -6. Objetos que intervienen en el problema: El dato es un número. Nombre del dato: número, x, num, etc. Conjunto de valores que se representan: enteros. Valores que se asumen: se establece durante la ejecución del algoritmo.

16 Algoritmo predecesor Datos de entrada: un-numero Datos de salida: otro-numero

17 Ejemplo1: Determinar el perímetro de un polígono regular, sabiendo la longitud de uno de sus lados y la cantidad de lados. Algoritmo perímetro-polígono-regula Datos de entrada: lado, cantidad-lados Datos de salida: perímetro

18 Ejemplo2: Contar la cantidad de números primos entre un número natural y otro. Algoritmo primos-entre-naturales Datos de entrada: numreo1, numero2 Datos de salida: cantidad-de-primos

19 Ejemplo3: Determinar si un año es bisiesto
Ejemplo3: Determinar si un año es bisiesto. Algoritmo año-bisiesto Datos de entrada: año Datos de salida: es-bisiesto

20 Precondición

21 Postcondición

22 Descripción de las acciones
Distinguiremos dos tipos de acciones Manipulación de datos: expresiones por medio de las cuales se obtiene valores. Esos valores pueden asignarse a los datos. Estructuras de control: Esquemas por medio de los cuales se establece el orden de ejecución.

23 Operaciones elementales
Manipulación de datos Operaciones elementales Operadores Suma + Resta - Producto X ; , División real / División entera /e Módulo, resto de división entera // Cuadrado N2 ; n^2 Raíz cuadrada

24 Manipulación de datos Operadores Operandos Numéricos Lógicos y;^ o;v
Operadores Operandos Numéricos Lógicos y;^ o;v no; -; Lógicos Falso (F) Verdadero (V)

25 Manipulación de datos Asignación: Operación que aplica un valor a un dato. Forma general: nombre del dato expresión Ejemplos: Número X a – b . C + n Vale verdadero Casi a=b

26 Ejercicio: Escribir un algoritmo que calcule el área de un cuadrado considerando el lado.
Datos u objetos: lado, cuadrado, área. Método área =lado . lado Algoritmo área-cuadrado Acciones Dato de entrada: lado [real positivo] Dato de salida: área [real positivo] área lado . lado Fin

27 Datos u objetos: circulo, radio, área. Método área =pi . radio2
Ejercicio: Escribir un algoritmo que calcule el área de un circulo considerando su radio. Solución Datos u objetos: circulo, radio, área. Método área =pi . radio2 Algoritmo área-circulo Dato de entrada: radio [real positivo] Dato de salida: área [real positivo] Acciones área pi . radio. radio Fin

28 Datos u objetos:, triángulo, área. Método área =base. Altura/2
Ejercicio: Escribir un algoritmo que calcule el área de un triángulo considerando la base y la altura. Solución Datos u objetos:, triángulo, área. Método área =base. Altura/2 Algoritmo área-triángulo Dato de entrada: base, altura [real positivo] Dato de salida: área [real positivo] Acciones área base. Altura/2 Fin

29 Estructuras de control
-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. -Condicional: Permite indicar las distintas acciones alternativas a ejecutarse que presentan resolución del problema para hallar las soluciones. -Repetición: Permite indicar en una sola estructura las acciones durante la ejecución se deben reiterar.

30 Secuencia El orden en que se escribe las acciones de un algoritmo, es el orden en el que se van a ser llevadas a cabo. 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. En un algoritmo, la secuencia es similar a la de un texto. En esa secuencia puede ser interrumpida por otras estructuras de control.

31 Ejercicio: Escribir un algoritmo que calcule el perímetro de un cuadrado conociendo su diagonal.
Solución

32 Algoritmo intercambio-datos Dato de entrada: dato1 dato2
Ejercicio: Escribir un algoritmo que permita intercambiar los valores numéricos de dos datos. Solución Algoritmo intercambio-datos Dato de entrada: dato1 dato2 Dato de salida: dato1 dato2 dato-auxiliar dato1 dato1 dato2 dato2 dato-auxiliar Fin

33 Estructuras de control Condicionadas
Algunas acciones pueden llevarse a cabo para alguna instancia de una clase de programa o bien si cierta condición se satisfacen. El condicional permite que una acción o conjunto de acciones se pueda ejecutar sólo bajo ciertas condiciones. Ejemplo: Si n>0 Entonces n n-1

34 Estructuras de control Condicionadas
Si n>0 entonces n n-1 si no n n+1 Forma de la estructura de control condicional Si EXPRESIÓN BOOLEANA BLOQUE1 BLOQUE2

35 Estructuras de control Condicionadas
Generalización Ejemplo Si EXPRESIÓN BOOLEANA1 Si a>b BLOQUE1 a b-1 Si EXPRESIÓN BOOLEANA2 a=b BLOQUE2 a b-2 Si EXPRESIÓN BOOLEANA3 d d+5 BLOQUE3 a<b c b-a a a+b Si EXPRESIÓN BOOLEANA n BLOQUE n La expresión booleana debe ser mutuamente excluyente

36 Estructuras de control Condicionadas
Si n>0 Si n>0 entonces n n-1 n=0 Si n=0 entonces n n-2 n<0 Si n<0 entonces n n+1 La estructura condicional a la izquierda no es equivalente a las tres estructuras de la derecha. 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.

37 Estructuras de control Condicionadas
Acciones si n >= m entonces mayor n sino mayor m Fin

38 Estructuras de control Condicionadas
Ejemplo: Escribir un algoritmo que permita calcular lo que cobrará en persona a la que se le ha reducido el sueldo en in 13% si con anterioridad cobra menos de 500 pesos, en un 15% si cobra menos de 800 pesos y más o igual a 500, y un 18% si cobra más o igual de 800 pesos. Análisis del problema Sueldo< cobrara=sueldo-sueldo . 0,13 800<=Sueldo< cobrara=sueldo-sueldo . 0,15 800<=Sueldo cobrara=sueldo-sueldo . 0,18

39 Estructuras de control Condicionadas
Algoritmo Descuento Datos de entrada: sueldo [real positivo] Datos de salida: sueldo-nuevo [real positivo] Acciones Si Sueldo< 500 sueldo-nuevo=sueldo-sueldo . 0,13 800<=Sueldo< 500 sueldo-nuevo=sueldo-sueldo . 0,15 800<=Sueldo sueldo-nuevo=sueldo-sueldo . 0,18 Fin

40 Estructuras de control Condicionadas

41 Estructuras de control Condicionadas

42 Estructuras de control Condicionadas
Anidada Si EXPRESIÓN BOOLEANA entonces BLOQUE1 si no BLOQUE2 Cada uno de los bloque puede ser una estructura condicionada Si EXPRESIÓN BOOLEANA entonces Si EXPRESIÓN BOOLEANA entonces BLOQUE1 si no BLOQUE2 si no Si EXPRESIÓN BOOLEANA

43 Estructuras de control Condicionadas Anidada
Algoritmo Descuento Datos de entrada: sueldo [real positivo] Datos de salida: sueldo-nuevo [real positivo] Acciones Si Sueldo< 500 entonces sueldo-nuevo=sueldo-sueldo . 0,13 si no Si 800<=Sueldo< 500 sueldo-nuevo=sueldo-sueldo . 0,15 Si no sueldo-nuevo=sueldo-sueldo . 0,18 Fin

44 Estructuras de control Repetitivas
La repetición permite que un conjunto de acciones indicadas en la estructura se ejecute más de una vez, de acuerdo a determinadas condiciones.

45 Número fijo de repeticiones
Forma general de la estructura: Repetir n veces acción Interpretación semántica: La acción se repite tantas veces como lo indique el valor de n:0, 1, o más veces. Ejemplo: Repetir 10 veces X x+1 Repetir n+2 veces

46 Para generar los números entre n y m tomamos un dato auxiliar.
Ejemplo: Escribir un algoritmo que permita sumar todos los números naturales entre dos números dados, incluyendo éstos. Si n=5 y m=13 suma= =81 Si n=1 y m=5 suma= =15 Para generar los números entre n y m tomamos un dato auxiliar. auxiliar=5 auxiliar=6=auxiliar+1 auxiliar=7=auxiliar+1 auxiliar=13=auxiliar+1 Para acumular los valores de las sumas parciales tomamos suma. suma=5 suma=5+6=suma + auxiliar suma=11+7=suma + auxiliar suma=68+13=suma + auxiliar

47 Podemos escribir la siguiente sucesión de acciones
auxiliar auxiliar+1 suma suma + auxiliar Tantas veces como sea necesario para obtener el resultado final. Usando la estructura de control repetitiva Repetir m-n veces

48 Algoritmo Suma-de-naturales-sucesivos
Datos de entrada: n , m [Naturales] Datos de salida: suma [Natural] Acciones auxiliar n suma auxiliar Repetir m-n veces auxiliar auxiliar+1 suma suma + auxiliar Fin

49 Algoritmo Suma-de-naturales-sucesivos2
Datos de entrada: n , m [Naturales] Datos de salida: suma [Natural] Acciones auxiliar n suma 0 Repetir (m-n)+1 veces suma suma + auxiliar auxiliar auxiliar+1 Fin

50 Ejercicio: Escribir un algoritmo que permita escribir el factorial de un número.
=1 si n=0 n! =1.2.3…n si n>0 Datos de entrada: n Datos de salida: el-factorial Para obtener el factorial debo general los números desde 1 hasta n factor factor+1

51 Algoritmo Factorial Datos de entrada: numero [Natural] Datos de salida: el-factorial [Natural] Acciones el-factorial factor 1 Repetir numero veces el-factorial el-factorial. Factor factor factor+1 Fin

52 Otra estructura repetitiva depende de una condición.
Repetir mientras condición acción Interpretación semántica -Se evalúa la condición, se dicho valor es verdadero se ejecuta la acción. -Se repite lo anterior mientras la condición es Verdadera. -En la condición participan datos que modifican su valor en la acción para que el ciclo termine. -La acción puede ejecutarse 0, 1 o más veces. -Los datos que participan en la condición deben estar inicializados.

53 Ejemplo1: b 1 a 3 repetir mientras a<=b 2 veces a a-1 Ejemplo2: repetir mientras a<b 0 veces repetir mientras a>b infinitas veces a a+1

54 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. Sabemos que m<=n Supongamos que los números son 3 y 17. Los múltiplos de 3 son: 3, 6, 9, 12, 15, 18, …, el menor múltiplo de 3 mayor que 17 es 18. Un intento de desarrollar un algoritmo: Datos de entrada: n , m [Naturales] Datos de salida: múltiplo [Naturales] Repetir mientras múltiplo < 17 Buscar nuevo múltiplo

55 Algoritmo MenorNumeroMayor
Datos de entrada: n , m [Naturales, m<=n] Datos de salida: múltiplo [Naturales] Acciones múltiplo m Repetir mientras múltiplo < =n múltiplo múltiplo+m Fin

56 Método para calcularlo:
Ejercicio: contar la cantidad de dígitos que posee un número natural dado. cantidad de dígitos = 4 cantidad de dígitos = 5 Método para calcularlo: Si vamos dividiendo el número por diez y contamos la cantidad de veces que lo dividimos, obtenemos la cantidad de dígitos. vez veces veces veces veces 1 6 veces 0 7 veces

57 Algoritmo CantidadDigitos
Datos de entrada: numero [Naturales y ‘0’] Datos de salida: cantidad [Naturales] Acciones cantidad 1 Repetir mientras numero>9 numero numero/e 10 cantidad cantidad +1 Fin

58 Otra estructura que depende de una condición es: repetir acción
hasta condición Interpretación semántica -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. -La acción se ejecuta por lo menos una vez. -En la estructura repetitiva, repetir-hasta se ejecutará la acción por lo menos una vez. -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.

59 Ejemplo1: b 1 a 3 repetir veces a a-1 hasta a<=b Ejemplo2: repetir vez hasta a<b repetir mientras a>b infinitas veces a a+1

60 Algoritmo Cantidad-de-dígitos
Ejercicio: Contar la cantidad de dígitos que posee un número natural dado. Solución Algoritmo Cantidad-de-dígitos Datos de entrada: numero [Naturales y ‘0’] Datos de salida: cantidad [Naturales] Acciones cantidad 0 Repetir numero numero/e 10 cantidad cantidad +1 mientras numero<0 Fin

61 Estructuras de control repetitivas anidadas
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. Por ejemplo: b 0 a 0 Repetir n veces b b+1 Repetir m veces a a+1

62 Ejemplo1: b 0 a 0 Repetir mientras b<n b b+1 Repetir m veces a a+1 El siguiente ejemplo produce los mismos valores para a y b que el anterior. Ejemplo2: b 0 a 0 Repetir mientras b<n b b+1 Repetir mientras a<m a a+1 ¿Presenta alguna variante en cuanto los resultados con respecto al Ejemplo 1?

63 Datos de entrada: m, n [Naturales ] Datos de salida: suma [Naturales]
Solución Algoritmo Suma Datos de entrada: m, n [Naturales ] Datos de salida: suma [Naturales] Acciones i 1, suma Repetir n veces j 1, suma suma2 suma2+j3 j j+1 suma1 suma1+i2,suma2 i i+1 Fin

64 Traza de un algoritmo 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. 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. Eventual mente estos ordenes podrán coincidir.

65 Traza de un algoritmo Algoritmo Uno DE: n DS: p Acciones 1) m 3.n 2) p n.2(m/2) Fin Estado inicial Traza Uno (3;p) Acción Condición n m p 3 1 9 2 40,5

66 Ejemplo: hacer una traza de ejecución del algoritmo que
permite obtener la suma de todos los divisores de un número natural. Algoritmo SumaDivisores DE: n DS: Suma Acciones 1) i suma repetir mientras i<=n si n//i=0 entonces suma suma+i i i+1 Fin Acción Condición n i Suma 10 1 2 3 V 4 5 6 f F v 8

67 Ejemplo: hacer una traza de ejecución del algoritmo que
permite obtener la suma de todos los divisores de un número natural. Algoritmo SumaDivisores DE: n DS: Suma Acciones 1) i suma repetir mientras i<=n si n//i=0 entonces suma suma+i i i+1 Fin Acción Condición n i Suma 5 8 6 3 V 4 F 7 f 9 v 10 18 11

68 Algoritmo SumaDivisores DE: n DS: Suma Acciones 1) i 1 suma n
Observando la traza podemos mejorar el método que hemos empleado en resolver el problema, cambiando la condición del ciclo por 1<= n/e2. De esta manera se realiza la mitad de las iteraciones. Algoritmo SumaDivisores DE: n DS: Suma Acciones 1) i suma n repetir mientras i<=n/e2 si n//i=0 entonces suma suma+i i i+1 Fin Acción Condición n i Suma 10 1 2 3 V 4 5 11 6 13 F 18

69 28 8 1 2 3 4 F V 5 Algoritmo DCMDos DE: n,m DS: dcm Acciones
Ejemplo: Algoritmo para calcular el divisor común menor entre dos números naturales. Algoritmo DCMDos DE: n,m DS: dcm Acciones 1) repetir resto m// n m n n resto entonces Hasta resto =0 dcm m Fin Acción Condición n m resto dcm 28 8 1 2 3 4 F V 5

70 26 13 1 v 2 3 4 5 V 6 Algoritmo DCMDos DE: n,m DS: dcm Acciones
Ejemplo: Algoritmo para calcular el divisor común menor entre dos números naturales. Algoritmo DCMDos DE: n,m DS: dcm Acciones 1) repetir resto m// n m n n resto entonces Hasta resto =0 dcm m Fin Acción Condición n m resto dcm 26 13 1 v 2 3 4 5 V 6

71 Bibliografía 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. 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. Curso Nivelación Universidad Nacional de Chilecito Lic. en Sistemas - Ing. En Sistemas – Tecnicatura Univ. Desarrollo Aplic. WEB. Agustin Fonseca- Juegos de mente – Memoria, Cálculo, Memoria, Agilidad Mental. Martín Sierra, Abel Martín Álvarez, Ángel Aguirre Pérez- Aula Matemática digital 2. Ing. Gábor loerines, ing. Francisco Chaves-Micro computación Tomo 2- Nahel Ediciones. Adrián Paenza- Matemática... ¿Estás Ahí? Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 2 Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 3,14. Moroni Norma-Apunte de R.P.A (2003) –U.N.S.


Descargar ppt "Módulo 2 ALGORITMOS Y ESTRUCTURA DE DATOS"

Presentaciones similares


Anuncios Google