RECURSION. Se deben hacer cuatro preguntas para construir una solución recursiva:
|
|
- Andrés Ramos Araya
- hace 6 años
- Vistas:
Transcripción
1 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 RECURSION Veremos un nuevo mecanismo, una nueva técnica de diseño, para resolver problemas: L RECURSIÓN. La recursión es una alternativa a la iteración o repetición, y aunque en tiempo de ejecución y espacio de memoria ocupada la solución recursiva es menos eficiente que la iterativa, existen numerosas situaciones en las que la recursividad provee una solución más simple y natural a un problema. La recursividad es una herramienta potente y útil que la aplicaremos: - en la resolución de problemas que tengan naturaleza recursiva - en reemplazo de la iteración cuando el lenguaje de programación elegido NO posea ninguna estructura de control repetitiva - cuando la solución iterativa sea de gran complejidad respecto de la solución recursiva Qué es recursión? Es una técnica que realiza una tarea T, haciendo otra tarea T de la misma naturaleza que T, pero en algún sentido más pequeña que la original. De esta forma, un algoritmo recursivo expresa la solución de un problema de tamaño N, en términos de una llamada o invocación a sí mismo. Cada invocación se plantea sobre problemas de igual naturaleza que el original, pero de un tamaño menor que N. l ir reduciendo progresivamente la complejidad del problema a resolver, llegará un momento en que la resolución será trivial y directa. Esta última situación se denomina caso base. La forma en que se va reduciendo el tamaño del problema original asegura que el caso base se alcance y por consiguiente, se llegue a la solución esperada. Un algoritmo recursivo (procedimiento o función) presenta las siguientes 3 características: - se autoinvoca dentro de su propia definición, es decir se llama a sí mismo dentro de su cuerpo (al menos una vez) - presenta al menos un caso base o especial, donde se llevan a cabo acciones distintas que aseguran la finalización del proceso y la obtención de la solución - en cada autoinvocación se resuelve un problema de igual naturaleza que el original pero de menor tamaño. La reducción del tamaño del problema asegura que se alcance el caso base. Se deben hacer cuatro preguntas para construir una solución recursiva: 1.- Cómo representar el problema T en términos de un problema T del mismo tipo, pero más pequeño. 1
2 puntes teóricos Sintaxis y Semántica del Lenguaje ño Cómo reducir, en cada llamada recursiva, el tamaño del problema. 3.- Qué instancia del problema sirve como caso base. 4.- Qué manera de reducir el problema nos asegura que siempre será alcanzado el caso base. Para analizar esta técnica de diseño desde el punto de vista del uso de memoria veamos el siguiente ejemplo. Cálculo del Factorial, se elige porque es fácil de entender y se ajusta perfectamente al modelo dado. Definición iterativa del factorial (con n entero positivo): FCT (n) = n * (n-1) * (n-2) *...* 1 FCT (0) = 1 y el factorial de un número negativo es indefinido. Todos sabemos construir una solución iterativa para este problema basándonos en esta definición. También podemos construir un solución recursiva del factorial: FCT (n) = n * FCT (n - 1) Esta definición carece de un elemento importante, el caso base. Como en el diccionario, un caso debe definirse diferente de todos los demás, de lo contrario la recursión nunca se detiene. El caso base en la recursión es el Factorial (0) el que se define simplemente como 1. Dado que n se asume positivo, decrementando en 1 cada vez que se llama al factorial se sabe que siempre será alcanzado el caso base. Definición recursiva del factorial: Factorial (n) 1 si n = 0 n * Factorial (n -1) si n > 0 Estudiaremos los mecanismos de ejecución de esta función recursiva. Si calculamos el Factorial (3), usando esta definición: Factorial (3) = 3 * Factorial (2) 2
3 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 Factorial (2) = 2 * Factorial (1) Factorial (1) = 1 * Factorial (0) Factorial (0) = 1 Se alcanzó el caso base. La aplicación de la definición recursiva se detiene y la información obtenida se puede usar para responder la pregunta original factorial (3)? Dado que: Factorial (0) = 1 entonces, reemplazando en cada llamada Factorial (1) = 1 * 1 = 1, entonces Factorial (2) = 2 * 1 = 2, entonces Factorial (3) = 3 * 2 = 6 Es fácil construir una función a partir de la definición recursiva: Function Factorial (n: entero) : entero hacer si (n=0) entonces Factorial :=1 sino Factorial := n * Factorial (n-1) finsi finhacer finfunción Esta función responde al modelo de solución recursiva. 1) La función Factorial se llama a sí misma 2) En cada llamada recursiva el número cuyo factorial se calcula se disminuye en 1. 3) El Factorial (0) se maneja en forma distinta. Este caso base no produce una llamada recursiva. Tipos de recursión. La recursión puede ser: Directa: si el algoritmo recursivo presenta una o más llamadas recursivas en su propio cuerpo. o Simple: si presenta una sola llamada recursiva El factorial de un nº entero positivo: Fact(0):=1 Fact(N):= N* fact(n-1), si N>0 o Múltiple: si presenta dos o más llamados recursivos La serie de Fibonacci: F(0):=0 F(1):=1 F(N):= F(N-1) + F(N-2), si N>1 3
4 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 o nidada: si presenta un llamado recursivo como argumento de una llamada recursiva La función de ckerman: (m,n):= n +1, si m=0 (m,n):=(m-1,1), si n=0 (m,n):=(m-1, (m,n-1)), si m>0 y n>0 Indirecta o cruzada: si el llamado recursivo no aparece en su cuerpo sino que se da a través de la invocación de un algoritmo auxiliar. Es decir, si un algoritmo invoca a otro algoritmo B y recíprocamente, el algoritmo B invoca al algoritmo. Procedimiento Hacer. B. finhacer finprocedimiento Procedimiento B Hacer. finhacer finprocedimiento Cómo funciona la recursión en memoria?. Traza de ejecución: método de la caja En principio la evaluación de un algoritmo recursivo no es más difícil que la evaluación de cualquier otro algoritmo. En la práctica, sin embargo, el seguimiento puede irse de las manos, para ello introducimos un método sistemático, llamado método de la caja, para seguir la ejecución de funciones o procedimientos recursivos. Cada caja muestra la representación en memoria de la activación de una unidad de programa y se denomina Registro de ctivación de la unidad. Este contiene toda la información necesaria para que dicha unidad pueda llevar a cabo su ejecución: datos + información de control * Cada llamada recursiva hecha al subprograma en el transcurso de la ejecución va a generar una caja o registro de activación, que contendrá el 4
5 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 ambiente local del subprograma. Esto es, las variables y parámetros que se crean en el llamado y se destruyen cuando se termina la ejecución. Cada caja contendrá entonces: -El valor de los parámetros formales. -Las variables declaradas localmente (no existen en este ejemplo). -Un lugar para el valor a ser retornado por cada llamada recursiva generada a partir de la caja corriente (marcada con el rótulo). -El valor de la función misma. * Cuando se crea una nueva caja se dibuja una fecha desde la caja donde se hizo la llamada hacia la nueva. Sobre la flecha se pone el nombre de la llamada (rótulo) para indicar a donde se debe retornar. * Comenzar la ejecución del cuerpo del subprograma con los valores correspondientes al ámbito local de la caja corriente. Cuando termina la ejecución de la caja corriente y se vuelve hacia atrás en las cajas, la anterior es ahora la corriente y el nombre en la flecha indica el lugar a donde se debe retornar y continuar la ejecución del subprograma. El valor calculado se coloca en el ítem apropiado en la caja corriente. Trabajando sobre este concepto vamos a seguir la Traza de Ejecución que resulta de calcular el Factorial (3): Llamada original: Factorial (3) comienza la ejecución rótulo : En el punto, se hace una llamada recursiva, y la nueva invocación de la función Factorial comienza su ejecución. : : En el punto, nuevamente se hace una llamada recursiva, y la nueva invocación de la función Factorial comienza su ejecución. : : 1 : Nuevamente, en el punto, se hace una llamada recursiva, y la nueva invocación de la función Factorial comienza su ejecución. 5
6 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 : : 1 : 0 : 1 Se alcanza el caso base, por lo tanto la invocación de Factorial se completó y pueden comenzar a resolverse las cajas. Se vuelve a la caja anterior y se retorna el valor pendiente al punto del llamado (marcado con el rótulo ) : : 1 : 1 Factorial (n-1) = 1? 0 : 1 : : Factorial (n-1) = 1 Factorial = 2 1 : : 1 : 2 Factorial (n-1) = 6? : Factorial (n-1) = 1 Factorial = 2 1 : 1 Factorial (n-1) = 1? 0 : 1 Valor final retornado al programa principal: 6 Otra forma de representación gráfica del método de las caja (pila de ejecución): Conclusión: Como se puede apreciar en los gráficos del ejemplo anterior, el espacio de memoria necesario para ejecutar un algoritmo recursivo es mucho mayor que si fuese un algoritmo iterativo. En un algoritmo recursivo se genera una caja o 6
7 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 registro de activación por cada llamada al mismo subprograma, representando en memoria los datos necesarios para su ejecución tantas veces como sea invocado. En un algoritmo iterativo solo existe una caja o registro de activación correspondiente al algoritmo que contiene dicha iteración. Ejemplos de aplicación: 1) Vamos a resolver de manera recursiva el problema de imprimir una lista de caracteres hacia atrás. Para ello debemos responder las tres preguntas, es decir vamos a construir la solución al problema de imprimir una lista de longitud N hacia atrás en términos de una cadena de longitud N -1. Esto indicaría que en cada paso recursivo la longitud de la lista se hace más chica. Entonces el problema de imprimir una lista muy pequeña hacia atrás puede servir como caso degenerado. Una lista muy pequeña es la lista vacía, es decir de longitud cero. Nuestro caso base es entonces imprimir una lista nula y la solución a este problema es no hacer nada (no hay nada que imprimir). hora hay que determinar de qué manera se puede usar la solución de imprimir hacia atrás un lista de longitud N 1 para resolver el problema de imprimir hacia atrás una lista de longitud N. La lista de longitud N 1 resulta de quitar un nodo de la lista original avanzando en cada llamada, al nodo siguiente. Veamos la siguiente solución aproximada: Procedimiento Imprimir_ hacia_ atrás (PC) Si (PC No es nulo) entonces Imprimir_hacia_atrás ( nodo siguiente de PC) Imprimir el carácter del nodo corriente apuntado por PC finsi Las llamadas recursivas a Imprimir _hacia _atrás pasan sucesivamente listas de longitud más chicas sacando siempre un nodo al pasar como argumento la dirección del nodo siguiente al corriente, entonces seguro se alcanzará el caso base (es decir la lista vacía). Procedure Imprimir_ hacia_ atrás (PC: lista) If (PC <> nil) then begin Imprimir_hacia_atrás ( PC^.psig) Writeln(PC^.let) End End; Invocación desde el principal: Imprimir_hacia_atrás(Pin) 7
8 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 Traza de la ejecución usando el método de la caja: Supongamos sea esta la lista L: C S NIL L pc pc pc pc pc Write C Write Write S Write Imprime a imprime s imprime a imprime c no hace nada Resultado SC La construcción de la solución en este ejemplo y en el del factorial se logra por backtracking, es decir, en la vuelta atrás del proceso recursivo. La retroalimentación es una de las técnicas esenciales de resolución de la recursión, eficaz a la hora de obtener todos los posibles resultados o combinaciones posibles a un problema dado. Por ejemplo para encontrar todas las combinaciones de números que cumplen una determinada condición, o todas las ubicaciones posibles de fichas en un tablero o la mejor solución a un problema, podemos sacar después de la llamada recursiva el último elemento colocado en la combinación y al volver hacia atrás el mecanismo probará con otro elemento aún no colocado. Este proceso se repetirá recursivamente y se lograrán combinaciones automáticas. 2) Diseñe una solución recursiva que encuentre todas las combinaciones posibles de 3 letras mayúsculas de la a la Z que admita letras repetidas. Procedure Comb_Letras (cad:string[3]; N:integer); {recibe una cadena nula en la que irá armando las posibles combinaciones y N=3, la longitud de la cadena a armar} Var I: char; If (N=0) then Writeln(cad) Else For I:= to Z do Comb_Letras (cad + I, N-1) {concatena una letra a la cadena y decrementa su longitud) End; Invocación desde el principal: Comb_Letras (, 3) 8
9 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 Este algoritmo usa la iteración para lograr generar todas las letras que se colocan en una posición dada de la cadena que se está armando. Observar que la lógica de resolución propone ubicar una letra inicial en la cadena (concatenando) comenzando con la y llamar recursivamente para ubicar una letra en la 2º posición y lo mismo con la siguiente. Cuando se hayan puesto las primeras 3 letras, llega al caso base e imprime (). Por backtracking deshace una caja al volver atrás y ahora va reemplazando la última letra por B e imprime, luego por C e imprime, y así siguiendo hasta llegar a la Z. B C Z l finalizar la ejecución del For para la 3º posición, retorna una paso más atrás y vuelve a la 2º posición y cambia la letra por B y vuelve a completar la 3º posición B BB BC..BZ C CB CC.CZ Z ZB. ZZ B BB BC BZ BB..... Z ZB..ZZ ZZ ZZB ZZZ Es decir, por cada letra que ubica en una posición dada, la combina con todas las 28 posibles del alfabeto en la posición siguiente. Esto se logra combinando backtracking y el uso del For. 3) Diseñe una solución recursiva que permita eliminar un elemento de una lista. Procedure Elim( var L:lista; pa:lista; pc:lista; el:elem); If (pc <> nil) then If (pc^.dato < > el) then Elim (L, pa^.ps, pc^.ps, el) Else If (pa=nil) then L:=L^.ps; Else Pa^.ps:=pc^.ps; Dispose(pc) End End; Invocación desde el principal: Elim(Pin, nil, Pin, eldato) {lista simple} 9
10 puntes teóricos Sintaxis y Semántica del Lenguaje ño ) Diseñe una solución recursiva que permita insertar al final un elemento en una lista circular. Procedure InsCir( var L:listaC; pc:listac; el:elem); Var Nuevo:listaC; If (L=nil) then {lista vacia} New(nuevo); nuevo^.dato:=el; L:= nuevo; nuevo^.ps:=l; end else If (pc^.ps <> L) then InsCirc(L, pc^.ps, el) Else New(nuevo); Nuevo^.dato:=el; Pc^.ps:=nuevo; Nuevo^.ps:=L End {lista circular} end Invocación desde el principal: InsCir( Pin, Pin, eldato) Ventajas y desventajas del uso de recursión. Las soluciones recursivas son elegantes y simples para problemas de complejidad grande, presentan un diseño muy bien estructurado y modular. Comparadas con la solución iterativa contienen menos líneas de código y son más fáciles de analizar y leer. Desde el punto de vista de la eficiencia, demandan más tiempo de ejecución que las soluciones iterativas y mayor espacio de memoria debido a que cada llamado recursivo genera una copia independiente de las variables declaradas en dicho algoritmo, almacenadas en una zona de la memoria Ram denominadas Registro de ctivación. plicación y uso. Esta técnica de diseño se aplica fundamentalmente en lenguajes de programación que carecen de estructuras de control repetitivas como ocurre en aquellos pertenecientes a la programación Funcional (LISP, HSKELL) y Lógica 10
11 puntes teóricos Sintaxis y Semántica del Lenguaje ño 2013 (PL, PROLOG). Es de amplio uso en Inteligencia rtificial como demostrador de teoremas, y en el área matemática para los cálculos combinatorios. Bibliografía de referencia: - Luis Joyanes guilar, Fundamentos de Programación. lgoritmos y Estructuras de Datos. Ed. Mc Graw Hill - Luis Joyanes guilar, Fundamentos de Programación. lgoritmos, Estructuras de Datos y Objetos. Ed. Mc Graw Hill - Luis Joyanes guilar, Programación en Turbo/Borland Pascal 7.0. Ed. Mc Graw Hill - De Giusti, Madoz y otros,1998. lgoritmos, datos y programas. Conceptos básicos. Ed. Exacta. 11
RECURSION. Se deben hacer cuatro preguntas para construir una solución recursiva:
puntes teóricos ño 2013 RECURSION Veremos un nuevo mecanismo, una nueva técnica de diseño, para resolver problemas: L RECURSIÓN. La recursión es una alternativa a la iteración o repetición, y aunque en
Más detallesEstudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:
25. Algoritmos heurísticos 25.1 Concepto de heurística. Se denomina heurística al arte de inventar. En programación se dice que un algoritmo es heurístico cuando la solución no se determina en forma directa,
Más detallesEstructuras de control
Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando
Más detallesUNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO Recursividad: La recursividad es una técnica de programación
Más detallesSemana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt
Semana de las Matemáticas e Ingeniería Desarrollo de algoritmos recursivos empleando la aplicación PseInt 21 de Noviembre de 2013 Agenda Desarrollo de algoritmos recursivos empleando la aplicación PSeInt
Más detallesUNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN PRODUCCIÓN INDUSTRIAL. UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 6 Material visual: Diapositivas Unidad de competencia
Más detallesFunciones Tipos de funciones y Recursividad
Funciones Tipos de funciones y Recursividad SESION 4 Definición Una función es una subrutina o subprograma que forman un programa que realiza tareas bien definidas. Todo programa en C consta de una o más
Más detallesDEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta
DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta SUCESIONES Y RELACIONES DE RECURRENCIA Esta última sección la dedicamos a presentar el concepto de recurrencia, que esta muy ligado al axioma de
Más detallesAlgoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
Más detallesPlanificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5
Planificaciones 7540 - Algoritmos y Programación I Docente responsable: AZCURRA DIEGO ANDRES 1 de 5 OBJETIVOS Objetivos estratégicos: -Desarrollar el concepto algorítmico. -Aplicar técnicas de programación
Más detallesProgramación MODULAR: Subalgoritmos - funciones y procedimientos
Programación MODULAR: Subalgoritmos - funciones y procedimientos Uno de los métodos fundamentales para resolver un problema es dividirlo en problemas más pequeños, llamados subproblemas. Estos problemas
Más detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detallesGuía práctica de estudio 03: Algoritmos
Guía práctica de estudio 03: Algoritmos Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 03: Algoritmos Objetivo:
Más detallesAlgoritmos. Diagramas de Flujo. Informática IV. L. S. C. Heriberto Sánchez Costeira
Informática IV Algoritmos Diagramas de Flujo L. S. C. Heriberto Sánchez Costeira Algoritmos 1 Definición Es una serie finita de pasos o instrucciones que deben seguirse para resolver un problema. Es un
Más detallesDistinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.
ESTRUCTURAS ITERATIVAS 1 ESTRUCTURAS ITERATIVAS OBJETIVOS Aprender a resolver problemas mediante la ejecución repetida de una secuencia de proposiciones llamados bucle o estructuras repetitivas o iterativas.
Más detallesAPUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.
APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido
Más detalles2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.
2007/2008 Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS 1.-Introducción. -Comprender cómo funciona un lenguaje de programación 2. Características del lenguaje C -Entender las
Más detallesModelos de Desarrollo de Programas Y Programación Concurrente Clase N 3
PROGRAMACION FUNCIONAL - Un lenguaje de programación funcional tiene gran flexibilidad, es conciso en su notación y su semántica es sencilla. El inconveniente principal de estos lenguajes ha sido la ineficiencia
Más detallesComplejidad computacional (Análisis de Algoritmos)
Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución
Más detallesProgramación Estructurada
Programación Estructurada Código de materia 01 Prof Titular Ing Rafael Brizuela Facultad de tecnología informática UNIVERSIDAD ABIERTA INTERAMERICANA GUÍA DE REPASO CONCEPTUAL PREGUNTAS Unidad 1: Conceptos
Más detallesla solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.
ALGORITMOS SECUENCIALES: La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente
Más detallesPUNTEROS. Un puntero es una variable cuyo valor o contenido es una dirección de memoria.
PUNTEROS Introducción Todas las variables y estructuras de datos que se han utilizado hasta el momento, exceptuando archivos, han sido estructuras estáticas. La cantidad de espacio de memoria ocupada por
Más detallesEstructuras de Control
Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas
Más detallesTipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
Más detallesControl de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO
Control de Flujo Estructuras de Control Experiencia Educativa de Algorítmica 1 Introducción El estilo de como escribimos y analizamos un algoritmo se convierte en una de las principales características
Más detallesTaller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010
FUNCIONES Definición: Una función es un subprograma que recibe cero o más valores de entrada y retorna un único objeto de salida. Es una tarea independiente que puede o no depender de variables externas.
Más detallesDiagramas de secuencia
Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Diagramas de secuencia Interacciones básicas 1 Para qué sirven los diagramas de secuencia? 2 Para qué sirven los diagramas de
Más detallesDiseño Estructurado de Algoritmos
Diseño Estructurado de Algoritmos 1 Sesión No. 11 Nombre: Estructuras algorítmicas. Tercera parte. Objetivo de la sesión: Al concluir la sesión el estudiante aplicará las estructuras algorítmicas repetitivas
Más detallesGuía práctica de estudio 03: Algoritmos
Guía práctica de estudio 03: Algoritmos Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 03: Algoritmos Objetivo:
Más detallesEcuaciones Diofánticas
2 Ecuaciones Diofánticas (c) 2011 leandromarin.com 1. Introducción Una ecuación diofántica es una ecuación con coeficientes enteros y de la que tenemos que calcular las soluciones enteras. En este tema
Más detallesMANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6
MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6 NOMBRE DE LA PRÁCTICA. Estructuras secuénciales 6.1 OBJETIVO GENERAL El alumno desarrollará la habilidad para diseñar algoritmos secuenciales,
Más detallesProfesor(a): M. A. Zeferino Galarza Hernández
Área Académica: Informática IV Tema: Algoritmos Profesor(a): M. A. Zeferino Galarza Hernández Periodo: Enero-junio de 2012 IV Semestre. Asignatura: Informática IV Tema: Algoritmos Abstract Contains and
Más detallesHerramientas de Programación. M.C. Juan Carlos Olivares Rojas
Herramientas de Programación M.C. Juan Carlos Olivares Rojas Febrero 2011 Temario Simbología Reglas para la construcción de Diagramas Pseudocódigo Temario Tipos de Datos y Expresiones Estructuras lógicas
Más detallesSISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos
TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus
Más detallesEnteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.
LENGUAJE DE PROGRAMACIÓN TURBO PASCAL El lenguaje de programación de alto nivel Pascal fue diseñado el 1968 por Niklaus Wirth con una finalidad eminentemente pedagógica El 1983, el Pascal fue estandarizado
Más detallesUbicación de la asignatura. Propósito de la asignatura. Desarrollando proyectos. Asignaturas relacionadas. Una mirada hacia la optimización económica
EL CÁLCULO EN MI VIDA DIARIA OPTATIVAS ÁREA: MATEMÁTICAS Ubicación de la asignatura La asignatura El cálculo en mi vida diaria, se encuentra dentro del bloque de las asignaturas optativas del Bachillerato
Más detalles5.- Problemas de programación no lineal.
Programación Matemática para Economistas 7 5.- Problemas de programación no lineal..- Resolver el problema Min ( ) + ( y ) s.a 9 5 y 5 Solución: En general en la resolución de un problema de programación
Más detallesMatrices Invertibles y Elementos de Álgebra Matricial
Matrices Invertibles y Elementos de Álgebra Matricial Departamento de Matemáticas, CSI/ITESM 20 de agosto de 2008 Índice 121 Introducción 1 122 Transpuesta 1 123 Propiedades de la transpuesta 2 124 Matrices
Más detallesInicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa
PROGRAMACIÓN 10. Prof. Dolores Cuiñas H. Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada APUNTES Nº 4 ESTRUCTURA SECUENCIAL GENERAL La estructura secuencial
Más detallesEstrategias de Diseño de Algoritmos
Estrategias de Diseño de Algoritmos Introducción A través de los años, los científicos de la computación han identificado diversas técnicas generales que a menudo producen algorit mos eficientes para la
Más detallesINDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje
INDICE Prólogo XV Parte 1. Visual Basic 1 Capitulo 1. Qué es Visual Basic? 3 Introducción 3 Como crear una aplicación 5 Otras facilidades de Visual Basic 6 Un lenguaje de alto nivel 9 Menús 10 Colores
Más detallesTema 2 Conceptos básicos de programación. Fundamentos de Informática
Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis
Más detallesECUACIONES.
. ECUACIONES... Introducción. Recordemos que el valor numérico de un polinomio (y, en general, de cualquier epresión algebraica) se calcula sustituyendo la/s variable/s por números (que, en principio,
Más detallesFundamentos de Programación. Flujo de Control I: Estructuras selectivas
Fundamentos de Programación Flujo de Control I: Estructuras selectivas El Flujo de Control de un Programa Un algoritmo puede ser construido utilizando combinaciones de tres estructuras de control de flujo
Más detallesEstructuras de repetición
Estructuras de repetición Una estructura de repetición, también llamada lazo o bucle, hace posible la ejecución repetida de secciones específicas de código. Hay dos tipos básicos de estructuras de repetición,
Más detallesUNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL
VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL PROGRAMA: PROGRAMACION I CÓDIGO ASIGNATURA: 1215-208 PRE-REQUISITO: 1215-102 SEMESTRE: II (SEGUNDO) UNIDADES
Más detallesDescomposición en forma canónica de Jordan (Segunda versión)
Descomposición en forma canónica de Jordan (Segunda versión) Francisco J. Bravo S. 1 de septiembre de 211 En esta guía se presentan los resultados necesarios para poder construir la forma de Jordan sin
Más detallesMétodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo
TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para
Más detallesMétodos que devuelven valor Dado el siguiente triángulo rectángulo:
Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán
Más detallesGuía práctica de estudio 05: Diagramas de flujo
Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de
Más detallesAlgoritmos glotones. mat-151
Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 04.06.2009 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente
Más detallesEstatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
Más detallesFila: Es un conjunto de varias celdas dispuestas en sentido horizontal.
Que Es Excel? Excel es un programa que permite la manipulación de libros y hojas de calculo. En Excel, un libro es el archivo en que se trabaja y donde se almacenan los datos. Como cada libro puede contener
Más detallesComplejidad de los Algoritmos
Que es un Algoritmo? Complejidad de los Algoritmos Webster: cualquier método especial para resolver cierta clase de problemas. Horowitz: método preciso utilizable en una computadora para la solución de
Más detallesPráctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.
Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función. Se suele llamar método de Newton-Raphson al método de Newton cuando se utiliza para calcular los ceros
Más detallesEcuaciones de primer grado o lineales
CATÁLOGO MATEMÁTICO POR JUAN GUILLERMO BUILES GÓMEZ BASE 8: ECUACIONES DE PRIMER Y DE SEGUNDO GRADO RESOLUCIÓN DE PROBLEMAS ECUACIONES DE PRIMER GRADO O LINEALES CON UNA SOLA INCÓGNITA: Teoría tomada de
Más detallesProgramación Dinámica 1
Programación Dinámica 1 El método de programación dinámica sirve para resolver problemas combinando las soluciones de subproblemas. Normalmente es usada para resolver problemas de optimización. Al construir
Más detallesMódulo 8: Primitivas en Pascal
Módulo 8: Primitivas en Pascal Tecnologías en la Educación Matemática Dr. Carlos Gonzalía DCIC - UNS Técnologías en la educación matemática Dr. Carlos Gonzalía 1 de Copyright Copyright 2010, 2012 M. Capobianco,
Más detallesSistemas de ecuaciones lineales
Sistemas de ecuaciones lineales TIPOS DE SISTEMAS. DISCUSIÓN DE SISTEMAS. Podemos clasificar los sistemas según el número de soluciones: Incompatible. No tiene solución Compatible. Tiene solución. Compatible
Más detallesCOMBINAR CORRESPONDENCIA
COMBINAR CORRESPONDENCIA Microsoft Office Word nos provee una herramienta muy útil que nos permite incluir en un documento, datos que se encuentran almacenados en otro lugar. De esta forma logramos obtener
Más detallesTema 3. Aplicaciones de Tipo Consola
Tema 3. Aplicaciones de Tipo Consola Una aplicación de consola es aquella que se ejecuta dentro de una ventana de línea de comandos. Este tipo de ventana recibe diferentes denominaciones: Símbolo del sistema,
Más detallesARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Introducción al tema a. Formar grupos de 4 personas b. Tomar una hoja en blanco y una lapicera o lápiz c. En la hoja en blanco diseña un
Más detallesESTADÍSTICA CON EXCEL
ESTADÍSTICA CON EXCEL 1. INTRODUCCIÓN La estadística es la rama de las matemáticas que se dedica al análisis e interpretación de series de datos, generando unos resultados que se utilizan básicamente en
Más detallesTaller de Resolución de Problemas Computacionales
Taller de Resolución de Problemas Computacionales Clase1: 27/9 Presentación: Equipo de Trabajo Encuentros Certificación del Taller: Por Asistencia Por Aprobación Sitio Web. Etapas en la Resolución de Problemas
Más detallesEstructuras de Control. Secuencia y Selección
Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 InCo - FING Estructuras de Control. Secuencia y Selección Programación 1 1 / 35 Estructuras de control InCo - FING Estructuras de
Más detallesAgradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
Más detallesEJERCICIOS EXCEL. Guardar el libro en tu pen drive, con el nombre PRACTICA1_ALUMNO_GRUPO.
EJERCICIOS EXCEL EJERCICIO DEL PRECIO CON IVA Crear un libro para saber cuál es el precio de un artículo aplicándole el 16% de IVA. El precio sin IVA es un valor que se tendrá que introducir, así como
Más detallesUnidad II: Análisis semántico
Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico
Más detallesAplicaciones de problemas de Máximos y Mínimos.
Aplicaciones de problemas de Máximos y Mínimos. En la resolución de problemas de máximos y mínimos el mayor desafío consiste generalmente en obtener, a partir del enunciado, la función que se necesita
Más detallesBase y Dimensión de un Espacio Vectorial
Base y Dimensión de un Espacio Vectorial 201 6Asturias: Red de Universidades Virtuales Iberoamericanas 1 Índice 1 Qué es un sistema generador?... 4 2 Base de un espacio vectorial... 4 3 Dimensión de un
Más detallesCapítulo 1. Algoritmos, diagramas de flujo y programas.
Capítulo 1. Algoritmos, diagramas de flujo y programas. 1.1 Problemas y algoritmos 1.2 Diagramas de flujo 1.2.1 Reglas para la construcción de diagramas de flujo 1.3 Conceptos fundamentales 1.3.1 Tipos
Más detallesPROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY
PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY ALGORITMO DEFINICIÓN: CONSISTE EN LA DESCRIPCIÓN CLARA Y DETALLADA DEL PROCEDIMIENTO A SEGUIR PARA ALCANZAR LA SOLUCIÓN A UN PROBLEMA EN DONDE SE ESTABLECE
Más detallesINSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "
INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA " GUIA DE ESTUDIOS DE ANALISIS Y DISEÑO DE ALGORITMOS. 1. Qué es un algoritmo? 2. Qué es un Pseudocódigo?
Más detallesPráctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros
Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros
Más detallesPara las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.
Unidad IV: Sistemas continuos (continuación) Objetivo específico: Entender ampliamente el fenómeno del comportamiento de los modelos matemáticos para la resolución de problemas enfocados a las ecuaciones
Más detallesMateria: Matemática de 5to Tema: Ecuación de la Recta. Marco Teórico
Materia: Matemática de 5to Tema: Ecuación de la Recta Marco Teórico Simplemente comenzar con la ecuación general de la forma pendiente-intersección de una línea, y luego conecte los valores dados de y
Más detallesRecursividad. Introducción a la programación
Recursividad Introducción a la programación I semestre, 2016 Concepto general Un concepto que está definido utilizando para este propósito el propio concepto que se está definiendo. Es un proceso de repetición
Más detallesFormato para prácticas de laboratorio
PLAN DE CLAVE CARRERA NOMBRE DE LA ASIGNATURA ESTUDIO ASIGNATURA LSC 2009-2 11290 Introducción a la Programación PRÁCTICA No. 2 LABORATORIO DE NOMBRE DE LA PRÁCTICA Licenciado en Sistemas Computacionales
Más detallesGrafos. Amalia Duch Brown Octubre de 2007
Grafos Amalia Duch Brown Octubre de 2007 Índice 1. Definiciones Básicas Intuitivamente un grafo es un conjunto de vértices unidos por un conjunto de líneas o flechas dependiendo de si el grafo es dirigido
Más detallesa) Factoriza el monomio común. En este caso 6 se puede dividir de cada término:
Materia: Matemática de 5to Tema: Factorización y Resolución de ecuaciones 1) Factorización Marco Teórico Decimos que un polinomio está factorizado completamente cuando no podemos factorizarlo más. He aquí
Más detallesClases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.
Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete
Más detallesLABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE
LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE 1 OBJETIVOS Al finalizar esta actividad, serás capaz de: Entender el funcionamiento de las estructuras iterativas en general; la(s) condición(es)
Más detallesExterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}
Bloque II. 2. Objetos y acciones elementales Bloque II. 2. Objetos y acciones elementales Objetivos: Familiarizarse con conceptos de entorno, objeto y tipo Entender qué significa que un objeto sea de un
Más detallesEstructuras Repetitivas
Estructuras Repetitivas Se solicita al operador que ingrese tres números enteros cualesquiera. En base a estos números, mostrar por pantalla cual es el mayor de todos. Diag. De Flujos Pseudocódigo Matlab
Más detallesProyecto. Tema 6 sesión 2: Generación de Rectas, Circunferencias y Curvas. Geometría Analítica. Isidro Huesca Zavaleta
Geometría Analítica Tema 6 sesión 2: Generación de Rectas, Circunferencias y Curvas Isidro Huesca Zavaleta La Integración de dos Ciencias La Geometría Analítica nació de la integración de dos ciencias
Más detallesEstructuras Secuénciales
Estructuras Secuénciales Los algoritmos más sencillos de realizar son los que no toman decisiones, tan solo se dedican a realizar o ejecutar instrucción tras instrucción en el orden determinado. Estos
Más detallesFundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Más detallesConceptos de Algoritmos, Datos y Programas
Conceptos de Algoritmos, Datos y Programas Año 2015 Carreras: Lic. en Informática P2015 Lic. en Sistemas P2015 APU P2015 Año: 1 Duración: Cuatrimestral Coordinador: Ing. Armando De Giusti Profesores: Esp.
Más detallesMetodología y Tecnología de la Programación
Tema 4. Abstracción procedimental y de datos 1. Cuál es el error del siguiente programa? import java.util.scanner; class Respuesta{ static Scanner leer=new Scanner(System.in); int valor = lectura(); System.out.println(valor);
Más detallesUniversidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos
Más detallesMODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.
MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.
Más detallesRelación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 2: Memoria dinámica y Bibliotecas Objetivos Practicar conceptos
Más detallesFUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)
APRENDERAPROGRAMARCOM FUNCIONES PHP: DECLARACIÓN Y LLAMADAS PARÁMETROS, RETURN EJERCICIOS EJEMPLOS RESUELTOS (CU00827B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero Fecha
Más detallesUnidad Nº V Listas Enlazadas
Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta
Más detallesFICHA TÉCNICA DEL MODELO MOTOROLA Asociación Estudiantil Kmon Mayo 2013
DEL MODELO MOTOROLA Asociación Estudiantil Kmon Mayo 2013 Calle Hendaia 8, IRUN 20301 1. QUÉ ES EL? El modelo Motorola es uno de los elementos del sistema de desarrollo de la metodología learning by doing.
Más detallesTema 7: Geometría Analítica. Rectas.
Tema 7: Geometría Analítica. Rectas. En este tema nos centraremos en estudiar la geometría en el plano, así como los elementos que en este aparecen como son los puntos, segmentos, vectores y rectas. Estudiaremos
Más detalles. De R (Reales) a C (Complejos)
INTRODUCCIÓN Los números complejos se introducen para dar sentido a la raíz cuadrada de números negativos. Así se abre la puerta a un curioso y sorprendente mundo en el que todas las operaciones (salvo
Más detallesFundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto
Más detallesC a l ses P P y y NP C a l se P C a l se N P N P [No N n o -De D te t rmin i i n s i ti t c i Polynomial-tim i e]
Análisis y Diseño de Algoritmos Introducción Análisis y Diseño de Algoritmos Concepto de algoritmo Resolución de problemas Clasificación de problemas Algorítmica Análisis de la eficiencia de los algoritmos
Más detallesPLAN DE MATERIAS ACADEMUSOFT 3.2
FACULTAD DE: _Ingenierías y Tecnológicas PROGRAMA DE: Ingeniería de Sistemas NOMBRE DE LA MATERIA: Programación II Semestre: III Código: _IS006SA No de Créditos 4 H. Teórica: 4 H. Práctica 2 H. Teórica-Practica
Más detalles