860 likes | 1.27k Views
Algoritmo. Nociones fundamentales. Algoritmo. Noción de algoritmo Objetos y acciones elementales Esquemas condicionales Iteraciones. Noción de algoritmo Objetos y acciones elementales Esquemas condicionales Iteraciones. Esta presentación. Algoritmo. Noción de algoritmo:
E N D
Algoritmo Nociones fundamentales
Algoritmo • Noción de algoritmo • Objetos y acciones elementales • Esquemas condicionales • Iteraciones • Noción de algoritmo • Objetos y acciones elementales • Esquemas condicionales • Iteraciones Esta presentación
Algoritmo • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación
Algoritmo – Procesador, entorno, acciones Enunciado 1 Enunciado 2 Preparación de un omelette de 6 huevos a: romper seis huevos en un plato; b: batir las claras y las yemas con untenedor; c: calentar aceite en una sartén al fuego; d: cuando el aceite esté caliente, verter el contenido del plato; e: quitar la sartén del fuego cuando la preparación esté hecha. Cálculo de la media de tres números con una calculadora a: pulsar la tecla C; b: ingresar el primer número; c: pulsar la tecla + ; d: ingresar el segundo número; e: pulsar la tecla +; f: ingresar el tercer número; g: pulsar la tecla / ; h: pulsar la tecla 3; i: pulsar la tecla = .
Algoritmo – Procesador, entorno, acciones Los enunciados 1 y 2 describen cada uno un cierto trabajo Procesador Toda entidadcapaz de entender un enunciado y de ejecutar el trabajo indicado En el caso de los enunciados 1 y 2, una persona que sepa leer y disponga de los utensilios necesarios, puede ser un procesador adecuado
Algoritmo – Procesador, entorno, acciones Entorno El conjunto de utensilios necesarios para la ejecución del trabajo. Dado un procesador, el entorno es específico del trabajo a ejecutar. Sin embargo, la forma de realizar el trabajo, depende a menudo de los utensilios puestos a disposición del procesador
50 50 50 10 1 50 1 50 10 27,50 1 1 10 1 1 10 1 1 1 10 1 1 1 10 1 1 50 1 10 20 20 20 20 1 1 10 1 10 1 10 1 10 1 10 1 5 10 5 1 5 5 1 10 10 10 10 10 10 5 1 5 5 5 5 5 10 5 10 5 10 5 10 10 10 50 10 5 5 5 5 5 5 5 5 5 50 10 50 50 50 2 2 2 2 2 2 2 2 2 2 2 2 50 10 50 10 50 50 50 50 10 50 10 50 50 50 50 10 50 10 50 50 50 50 10 25 50 10 50 50 50 25 50 10 25 50 10 50 50 50 25 50 25 50 50 50 50 25 50 25 50 50 50 50 25 50 25 50 50 50 50 25 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 Algoritmo – Procesador, entorno, acciones Ejemplo: Tarea: Dar vuelto. Entorno a b b c c NO 1 n
Algoritmo – Procesador, entorno, acciones La ejecución de un trabajo no elemental, supone cierta progresión hacia el fin deseado. En los Enunciados 1 y 2 se distinguen las etapas a, b, c,... Acción Un suceso que modifica el entorno Dada la acción a del Enunciado 1: romper seis huevos en un plato. Después de ejecutar la acción, el plato contiene 6 yemas y 6 claras. Antes de ejecutar la acción, el plato está vacío.
Algoritmo – Procesador, entorno, acciones La ejecución de una acción puede necesitar una observación del entorno (Ej.:Acción d, Enunc.1) El procesador, en general, respeta la secuencia de las acciones. (Se verá cómo es posible romper esa secuencia) Ciertas acciones podrían ejecutarse al mismo tiempo (en paralelo). Ventaja: ganancia de tiempo. Requeriría varios procesadores. El enunciado de una acción puede aparecer varias veces en la descripción de un trabajo. (Acciones c y e, Enunciado 2) Sin embargo, el número de apariciones de una acción, no corresponde forzosamente a la cantidad de ejecuciones de la misma.
Algoritmo – Procesador, entorno, acciones Ejecución: 2 x y repetir x 5 veces y z 2 x 6 y 2 Enunciado 3 Sin embargo, el número de apariciones de una acción, no corresponde forzosamente a la cantidad de ejecuciones de la misma.
Algoritmo • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación
Algoritmo – Acciones primitivas En los Enunciados 1 y 2 se ha supuesto que el procesador sabía ejecutar las acciones enumeradas. Para ese procesador, éstas son acciones primitivas. Acción primitiva Aquella cuyo enunciado es suficiente para que el procesador pueda ejecutarla sin información adicional.
Algoritmo – Acciones primitivas En el Enunciado 3, el procesador no sabrá ejecutar la acción repetir 5 veces, si ésta no es una primitiva. En caso de que sea una primitiva, ejecutará la secuencia: x, x, x, x, x. Si no lo fuera, habrá que reemplazarla por la secuencia x, x, x, x, x. Toda acción no primitiva, habrá de descomponerse en acciones primitivas.
Algoritmo – Acciones primitivas Ejemplo: En el Enunciado 1, si el procesador es un niño, la acción a, romper seis huevos en un plato, puede no ser suficientemente explícita. Será necesario descomponerla: En el Enunciado 1, si el procesador es un niño, la acción a, romper seis huevos en un plato, puede no ser suficientemente explícita. Será necesario descomponerla: a1 : poner seis huevos sobre la mesada repetir a2: tomar un huevo de la mesada a3: romperlo y verter su contenido en el plato a4: tirar las cáscaras a la basura hasta que no queden huevos sobre la mesada. a: romper seis huevos en un plato
Algoritmo – Acciones primitivas Observación: La descomposición efectuada utiliza un esquema repetitivo, que permite simplificar la representación de la repetición de una secuencia de acciones. repetir acciones ejecutar acciones condición no realizada hasta que condición evaluar condición condición realizada
Algoritmo • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación
Algoritmo – Análisis descendente Metodología: Uno de los métodos para obtener la descomposi-ción de una acción en acciones primitivas es el Análisis descendente. Análisis descendente Dado un trabajo T descripto por un enunciado no primitivo, el análisis descendente de T consiste en encontrar una descomposición formada por una secuencia de enunciados, cuya ejecución realiza el trabajo T.
. . . (Ei k) tk (Ef k) . . . (Ei n) tn (Ef n) (Ei 1) t1 (Ef 1) t1 1 t1 2 tk 1 tk 2 tk 3 Algoritmo – Análisis descendente Representación: (Ei) T (Ef) (Ef k-1) =(Ei k) (Ef k) =(Ei k+1) Para cada enunciado tk, hay dos posibilidades: o bien tk es una acción primitiva, y se detiene el análisis descendente para tk ; o bien tk no es una acción primitiva, y se descompone nuevamente tk. Cada trabajo tk, pasa el entorno de un estado (Ei k) a un estado (Ef k)
Algoritmo – Análisis descendente Ejemplo: Tarea: Realizar la agrupación de cierto número de ejemplares de un documento de diez páginas que ha sido enviado a un servicio de fotocopiado. Para cada una de las páginas se ha reproducido aproxi-madamente una centena de ejemplares. Entorno: . Diezpaquetes de hojas numeradas, apilados sobre un escritorio. . Unagrapadora . Diez mesas numeradas de 1 a 10.
Algoritmo – Análisis descendente Competencias del procesador: . Tomar y poner . Ir de una mesa a otra (pasar de la mesa i a la mesa i + 1) . Ir a una mesa de un número dado (reconocer igualdad de valores numéricos) . Reconocer la presencia o ausencia de hojas sobre una mesa . Grapar
Algoritmo – Análisis descendente Enunciado: A partir de la pila que se encuen-tra enel escritorio, agrupar las fotocopias. A A A B B C C Repartir los paquetes arazón de un paquete por mesa, tal que el paquete de hojas i quede en la mesa i. Reunir y grapar los ejemplares yponerlos sobre el escritorio.
Repetir B1: tomar el paquete situado encima de la pila sobre el escritorioB2: ir a la mesa cuyo número es el mismo que el de las hojas del paquete B3: poner el paquete sobre la mesahasta que (B4) se acabe la pilaque hay sobre el escritorio. B C RepetirC1: tomar las hojas necesarias para un ejemplarC2: grapar el ejemplarC3: ponerlo sobre el escritoriohasta que (C4) una de las mesas quede sin hojas. Algoritmo – Análisis descendente B A A C11: colocarse en la mesa Nº 1C12: tomar una hoja de esa mesaRepetirC13: ir a la mesa siguienteC14: tomar una hoja de esa mesa hasta que la mesa sea la Nº 10 C1 C1 C
Algoritmo – Análisis descendente InicioRepetirtomar el paquete situado encima de la pila sobre el escritorioir a la mesa cuyo número es igual al de las hojas delpaquete poner el paquete sobre la mesahasta quese acabe la pilaque hay sobre el escritorio.Repetircolocarse en la mesa Nº 1tomar una hoja de esa mesaRepetir ir a la mesa siguiente tomar una hoja de esa mesa hasta que la mesa sea la Nº 10grapar el ejemplarponerlo sobre el escritoriohasta que una de las mesas quede sin hojasFin
Noción de Algoritmo Primera definición: Algoritmo Dado un procesador bien definido y un tratamiento a ejecutar por ese procesador, unalgoritmo de tratamiento es el enunciado de una secuencia de acciones primitivas que realizan ese tratamiento.
Algoritmo • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación • Noción de algoritmo: • Procesador, entorno, acciones • Acciones primitivas • Análisis descendente • Objetivo de la programación
Objetivo de la programación Dado un trabajo que se desea efectuar con la ayuda de un procesador determinado: Objetivo Establecer una secuencia de acciones que puedan ser ejecutadas por el procesador y que realicen dicho trabajo. Fase 1 Fase 2 Resolución del problema: determinación de un algo-ritmo que realice el tratamiento. Adaptación del algoritmo al procesador: codificación.
Inteligencia Inteligencia Intuición Objetivo de la programación Fase 1 Fase 2 Resolución del problema: determinación de un algo-ritmo que realice el tratamiento. Adaptación del algoritmo al procesador: codificación. Lenguaje de programación Etapa más difícil No presenta mayores dificultades Herramientas Soluciones elegantes y eficientes Mecanismos de traducción
Algoritmo • Noción de algoritmo • Objetos y acciones elementales • Esquemas condicionales • Iteraciones • Noción de algoritmo • Objetos y acciones elementales • Esquemas condicionales • Iteraciones
Algoritmo • Objetos y acciones elementales: • Formalización • Objetos en un entorno • Utilización de objetos • Acciones y algoritmos • Constantes y variables • Tipos de objetos • Contexto y herramientas • Acción leer, acción escribir, acción de asignación, expresiones aritméticas • Objetos y acciones elementales: • Formalización • Objetos en un entorno • Utilización de objetos • Acciones y algoritmos • Constantes y variables • Tipos de objetos • Contexto y herramientas • Acción leer, acción escribir, acción de asignación, expresiones aritméticas
Formalización – Objetos en un entorno Repaso: ACCIONES: * colocarse en la mesa Nº 1* tomar el paquete situado encima de la pila* ir a la mesa siguiente* ingresar el primer número* pulsar la tecla 3* pulsar la tecla + Intervienen distintos objetos: La mesa Nº 1 El paquete deencima de lapila La mesa siguiente El primernúmero La tecla 3 La tecla +
La mesa Nº 1 El paquete deencima de lapila La mesa siguiente El primernúmero La tecla 3 La tecla + Formalización – Objetos en un entorno Características de la noción de objeto: Nombre Lo designa sin ambigüedad Indica los caracteres comunes a todos los estados posibles del objeto Tipo Valor En cada instante, todo objeto del entorno tiene un valor susceptible de variar después de la ejecución de una acción Cada objeto tiene una utilización particular.Las utilizaciones no son intercambiables. Dos de los objetos citados son del tipo mesa. Representan, en cada instante, una de las mesasdel grupo de 10 mesas del problema.
5 3 3 7 7 6 6 1 1 Formalización – Objetos en un entorno Objeto: el paquete encima de la pila Nombre Tipo Valor Valor Se ejecutala acción Antes de la ejecución de la acción Después de la ejecución de la acción Acción: tomar el paquete de encima de la pila
Formalización – Objetos en un entorno Ejemplo: Utilización de objetos Tarea: Elaborar un algoritmo que determine la suma de los n primeros números naturales. Pasos: Conocer el procesador Describir el entorno Generar el algoritmo
Formalización – Objetos en un entorno Conocer el procesador Competencias del procesador: . Dar un valor a un objeto, . Calcular la suma de dos valores numéricos, . Comparar dos valores numéricos (constatar su igualdad o diferencia). Ejecutar un esquema repetitivo del tipo repetir…hasta que
Formalización – Objetos en un entorno Describir el entorno objeto que contiene un valor numérico entero n ( n >= 1 ) NUM El valor inicial de este objeto está determinado y servirá para controlar el cálculo Si es 3 1 + 2 + 3 = 6 Se ejecutará 1 + 2 + 3 + 4 + 5 = 15 Si es 5 etc. …
Se requiere: Formalización – Objetos en un entorno Describir el entorno objeto que contiene un valor numérico entero n ( n >= 1 ) NUM objeto que contiene el valor del resultado S El valor del resultado tiene que figurar en el estado finaldel entorno. En este objeto se hará la acumulación de los enteros su-cesivos (que también tienen que estar representados). Utilizar n objetos, que contengan cada uno de los valores enteros necesarios (1, 2, ...n) Hay 2 posi-bilidades: Utilizar un solo objeto, al que se haga variar para representar todos los valores de 1 a n
Requiere muchos objetos Desventajas de la primera alternativa: El número de objetos es variable Formalización – Objetos en un entorno Describir el entorno objeto que contiene un valor numérico entero n ( n >= 1 ) NUM objeto que contiene el valor del resultado S objeto que contiene los valores sucesivos de 1 a n ENTERO Utilizar n objetos, que contengan cada uno de los valores enteros necesarios (1, 2, ...n) Hay 2 posi-bilidades: Utilizar un solo objeto, al que se haga variar para representar todos los valores de 1 a n
Formalización – Objetos en un entorno Observación: S ENTERO Se acaban de crear dos objetos numéricos (S y ENTERO). Un objeto tiene siempre un valor; pero, en el momento de la creación del objeto, su valor no puede ser conocido. se dice que es . . . indeterminado Si se desea dar un valor al objeto,es necesario ejecutar una acción
Formalización – Objetos en un entorno Descripción del entorno del problema: Objeto Función Estado inicial Estado final NUM Objeto de valor entero >= 1, que indica el entero más grande a acumular n n S Objeto en el cual se calcula la suma de los n primeros enteros valor indeterminado 1 + 2 + . . . +(n –1) + n ENTERO Objeto que contendrá los sucesivos enteros de 1 a n valor indeterminado
ENTERO S Formalización – Objetos en un entorno Generar el algoritmo Determinar las acciones a ejecutar para trasladar el entorno del estado inicial al estado final deseado. dar a ENTERO los valores sucesivos de 1 a n y acumular esos valores en S Idea el primer entero a acumular es 1; para lo que habrá que dar inicialmente a ENTERO el valor 1 análogamente, para obtener, por acumulación, el valor deseado en S, es necesario dar, pre-viamente un valor determinado a este objeto sea s el valor (indeterminado) de S en la creación de este objeto, una acumulación en S de todos los enteros de 1 a n, no producirá el resultado esperado, sino el valor s+1+2+...+n será necesario, por lo tanto, antes de la acumulación, dar a S el valor 0 el valor de un objeto que acaba de ser definido es siempre indeterminado
Formalización – Objetos en un entorno Para cada valor de ENTERO, es suficiente a continuación: * acumular el valor de ENTERO en S* pasar al entero siguiente, volver a em- pezar, etc., hasta que se hayan acumu- lado todos los enteros necesarios Es posible, entonces, redactar una solución. En ella todas las acciones expresadas serán acciones primitivas o composiciones de primitivas.
Formalización – Objetos en un entorno Composición de primitivas algoritmo suma_de_enterosInicio1: dar a S el valor 02: dar a ENTERO el valor 13: Repetir 3a: sumar el valor de ENTERO y el valor de S y asignar el resultado como nuevo valor de S 3b: sumar 1 al valor de ENTERO y asignar el resultado como nuevo valor de ENTEROhasta que 3c: el valor de ENTERO sea igual al de NUM aumentado en 1 Fin Expresado el algoritmo, es posible precisar el valor final de ENTERO.Es el que hace finalizar la repetición: n+1(siendo n el valor de NUM)
Formalización – Objetos en un entorno La importancia del algoritmo elaborado no reside en ser utilizado una sola vez para calcular, por ejemplo, la suma de los diez primeros enteros.Sería más rápido calcular la suma a mano que generar un algoritmo y utilizar un procesador. El algoritmo permite al procesador “aprender” a calcular la suma de los n primeros enteros, cualquiera sea n, y está destinado a ser ejecutado por el procesador, un gran número de veces, para distintos valores del objeto NUM.
NUM S ENTERO Estado del entorno después de la ejecución de la acción Acción ejecutada ocondición evaluada NUM S ENTERO Inicialmente 3 indeterminado indeterminado 3 0 indeterminado 1 3 0 1 2 3 1 1 3a 3 1 2 3b 2 <> 3+1,sigue 3c 3 3 2 3a 3 3 3 3b 3 <> 3+1,sigue 3c 3 6 3 3a 3 6 4 3b algoritmo suma_de_enterosInicio1: dar a S el valor 02: dar a ENTERO el valor 13: Repetir 3a: sumar el valor de ENTERO y el valor de S y asignar el resultado como nuevo valor de S 3b: sumar 1 al valor de ENTERO y asignar el resultado como nuevo valor de ENTEROhasta que 3c: el valor de ENTERO sea igual al de NUM aumentado en 1 Fin Formalización – Objetos en un entorno Ejecución del algoritmo por el procesador: Ejecución paso a paso 3 4 = 3+1, terminala ejecución 4 = 3+1, terminala ejecución 3c
Formalización – Objetos en un entorno Ejecución paso a paso (Prueba de escritorio) El creador del algoritmo sustituye al procesador para ejecutarlo a partir de los valores iniciales dados. El ejemplo anterior muestra que, para el valor inicial 3 del objeto NUM, el algoritmo funciona correctamente Ello no implica que funcione correctamente para cualquier valor de NUM Lo único que se puede probar a partir de la prueba de escritorio, es el mal funcionamiento de un algoritmo: Si el resultado obtenido con un seguimiento paso a paso es incorrecto, entonces el algoritmo no funciona correctamente
Algoritmo • Objetos y acciones elementales: • Formalización • Objetos en un entorno • Utilización de objetos • Acciones y algoritmos • Constantes y variables • Tipos de objetos • Contexto y herramientas • Acción leer, acción escribir, acción de asignación, expresiones aritméticas • Objetos y acciones elementales: • Formalización • Objetos en un entorno • Utilización de objetos • Acciones y algoritmos • Constantes y variables • Tipos de objetos • Contexto y herramientas • Acción leer, acción escribir, acción de asignación, expresiones aritméticas
Acciones y algoritmos Precisiones en la definición de acción: Acción Dado un entorno descrito formalmente como un conjunto de objetos, es un suceso de duración finita que, a partir de un estado inicial particular del entorno, tiene como consecuencia un nuevo estado bien definido.
Entorno Estado inicial Acciones y algoritmos Precisiones en la definición de algoritmo: Un algoritmo está compuesto de acciones, y tiene, sobre el entorno, un efecto de la misma naturaleza que la de una acción. Estado final Algoritmo --------------------------------------------------------------------------------------------------------