Guia Basica para bachillerato de Circuitos Basicos
Módulo 2
1. Módulo 2ALGORITMOS Y ESTRUCTURA DE DATOS PROFESOR:SIRACUSA EMILIANO MARTÍN Página Web: www.esiracusa.jimdo.com
2.
3. Un modelo es una versión simplificada de la realidad con datos relevantes del problema.
4.
5. Un modelo es una versión simplificada de la realidad con datos relevantes del problema.
6.
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. 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.
8. -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
9. 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. 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
10. 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
11. 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)
12. 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.
13. Base lunar Alfa Kuki Base Alfa Suelo lunar 9 Días Pipo Base Beta
14. 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.
15. 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.
16. 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
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. 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.
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
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
21. Ejemplo3: Determinar si un año es bisiesto.Algoritmo año-bisiestoDatos de entrada: añoDatos de salida: es-bisiesto
22. Precondición Precondición: Conjunto de valores que puede tomar un dato de entrada y cierta condiciones preestablecidas entre o para los datos. (Dominio) Las precondiciones garantizan que un algoritmo correcto, dé resultados correctos. Precondición es la información que se conoce como verdadera antes de comenzar el algoritmo. Ejemplo división entera. Algoritmodivisión-entera Datos de entrada: dividendo, divisor. [Dividendo ∈Ζ, Divisor ∈Ζ−0]
23. Postcondición Postcondición: Conjunto de valores que puede tomar un dato de salida Las postcondiciones no aseguran que los valores de los datos de salida pertenecen a los conjuntos indicados.. Es la información que se conoce como verdadera al concluir el algoritmo si se cumple adecuadamente el requerimiento pedido. Ejemplo división entera. Algoritmo división-entera Datos de entrada: dividendo, divisor. [Dividendo ∈Ζ, Divisor ∈Ζ−0] Datos de salida: cociente, resto [Cociente ∈Ζ, Resto ∈Ν∪0]
24.
25.
26. Manipulación de datos Expresiones lógicas: natación y evaluación matemática. Ejemplo:-[(a<b)^(c>5)] (a≤10) y (a≠7)o(a=15)
27. 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 18 X a – b . C + n Vale verdadero Casi a=b
28. 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
29. 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
30. 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
31. 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.
32. 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.
33. Ejercicio: Escribir un algoritmo que calcule el perímetro de un cuadrado conociendo su diagonal. Solución Datos : perímetro, diagonal, cuadrado. Método: diagonal . diagonal=lado.lado+lado.lado lado=diagonal.2 perímetro=4.lado Algoritmo perímetro-cuadrado-diagonal Dato de entrada: diagonal [real positivo] Dato de salida: perímetro [real positivo] Acciones lado diagonal.2 perímetro 4.lado Fin
34. 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
35. 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
36. 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 entonces BLOQUE1 si no BLOQUE2
37. Estructuras de control Condicionadas La expresión booleana debe ser mutuamente excluyente
38. Estructuras de control Condicionadas 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.
39. Estructuras de control Condicionadas Ejemplo: Escribir un algoritmo que permita hallar el mayor ente dos números. Algoritmo Mayor-de-dos Datos de entrada: n,m [𝑛,𝑚∈ℝ] Datos de salida: mayor [𝑚𝑎𝑦𝑜𝑟∈ℝ] Acciones si n>=m mayor n n<m mayor m Fin Acciones si n >= m entonces mayor n sino mayor m Fin
40. 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< 500 cobrara=sueldo-sueldo . 0,13 800<=Sueldo< 500 cobrara=sueldo-sueldo . 0,15 800<=Sueldo cobrara=sueldo-sueldo . 0,18
41. 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
42. Estructuras de control Condicionadas Ejemplo: Escribir un algoritmo que permita detectar si un año es bisiesto. Algoritmo Año-bisiesto Datos de entrada: año [año∈ℕ] Datos de salida: es-bisiesto [es-bisiesto ∈𝑣;𝑓] Acciones Si (año//4=0)y(año//100<>0)o(año//400=0) entonces es-bisiesto v si no es-bisiesto f Fin
43. Estructuras de control Condicionadas Propuesta dos. Algoritmo Año-bisiesto2 Datos de entrada: año [año∈ℕ] Datos de salida: es-bisiesto [es-bisiesto ∈𝑣;𝑓] Acciones es-bisiesto(año//4=0)y(año//100<>0)o(año//400=0) Fin
44. 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 entoncesSi EXPRESIÓN BOOLEANA entonces BLOQUE1 si no BLOQUE2 si no Si EXPRESIÓN BOOLEANA entonces BLOQUE1 si no BLOQUE2
45. 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 entonces sueldo-nuevo=sueldo-sueldo . 0,15 Si no sueldo-nuevo=sueldo-sueldo . 0,18 Fin
46. 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.
47. 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 X x+1
48. 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=5+6+7+8+9+10+11+12+13=81 Si n=1 y m=5 suma=1+2+3+4+5=15
49. 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 auxiliar auxiliar+1 suma suma + auxiliar
50. 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
51. 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
52. 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
53. Algoritmo Factorial Datos de entrada: numero [Natural] Datos de salida: el-factorial [Natural] Acciones el-factorial 1 factor 1 Repetir numero veces el-factorial el-factorial. Factor factor factor+1 Fin
54. 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.
55. Ejemplo1: b 1 a 3 repetir mientras a<=b 2 veces a a-1 Ejemplo2: b 1 a 3 repetir mientras a<b 0 veces a a-1 Ejemplo1: b 1 a 3 repetir mientras a>b infinitas veces a a+1
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. 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
57. 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
58. Ejercicio: contar la cantidad de dígitos que posee un número natural dado. 2456 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. 1563879 156387 1 vez 15638 2 veces 1563 3 veces 156 4veces 15 5 veces 1 6 veces 0 7 veces
59. 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
60. 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.
61. Ejemplo1: b 1 a 3 repetir 2 veces a a-1 hasta a<=b Ejemplo2: b 1 a 3 repetir 1 vez a a-1 hasta a<b Ejemplo1: b 1 a 3 repetir mientras a>b infinitas veces a a+1 hasta a<=b
62. 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
63. 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
64. 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?
65. Ejercicio: Escribir un algoritmo que permita resolver la siguiente suma:𝑰=𝟏𝒏𝒋=𝟏𝒎𝒋𝟑 Solución Algoritmo Suma Datos de entrada: m, n [Naturales ] Datos de salida: suma [Naturales] Acciones i 1, suma1 0 Repetir n veces j 1, suma2 0 Repetir n veces suma2 suma2+j3 j j+1 suma1 suma1+i2,suma2 i i+1 Fin
66. 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.
67. Traza de un algoritmo Algoritmo Uno DE: n DS: p Acciones 1) m 3.n 2) p n.2(m/2) Fin Estado inicial
68. 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 1 suma 0 repetir mientras i<=n si n//i=0 entonces suma suma+i i i+1 Fin
69. 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 1 suma 0 repetir mientras i<=n si n//i=0 entonces suma suma+i i i+1 Fin
70. 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 1 suma n repetir mientras i<=n/e2 si n//i=0 entonces suma suma+i i i+1 Fin
71. 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
72. 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
73.
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. Curso Nivelación 2011 - Universidad Nacional de Chilecito Lic. en Sistemas - Ing. En Sistemas – Tecnicatura Univ. Desarrollo Aplic. WEB.