Un objeto se dice recursivo si está definido en términos de sí mismo.
|
|
- Rosario Ana María Maestre Godoy
- hace 5 años
- Vistas:
Transcripción
1 19. RECURSION Conceptos. Cualquier procedimiento o función pueden contener, en su bloque de acciones ejecutables, llamados a otros procedimientos que sean accesibles. Si puede llamarse a cualquier procedimiento accesible, entonces un procedimiento puede llamarse a sí mismo. Esta autoreactivación se denomina recursión. Una cadena de llamados recursivos debe terminar en algún momento; por esta razón los subprogramas recursivos deben colocar dentro de una instrucción condicionada el llamado recursivo. El empleo de un identificador de subprograma dentro del texto del mismo subprograma implica la ejecución recursiva del mismo. Más específicamente, la ocurrencia de un llamado a una función, dentro de una expresión perteneciente al bloque asociado a la misma función, implica la ejecución recursiva de la función. Su aplicación es natural en aquellos algoritmos definidos recursivamente; y también cuando se emplean estructuras de datos que hayan sido definidas recursivamente. Sin embargo, siempre es posible desarrollar un algoritmo repetitivo en lugar del recursivo; lo cual trá ventajas en menor ocupación de memoria y mayor velocidad de ejecución. Cada vez que se realiza una autoinvocación, se crea espacio para variables y parámetros valor; es decir, a medida que aumentan los llamados recursivos existen varias instancias (o encarnaciones) de las variables. Así también habrá que considerar todas las instrucciones que permitan retornar a los diferentes puntos de llamado. Esto también implica que el programador debe asegurarse que los niveles de recursión no sean excesivamente altos; ya que esto podría copar la memoria disponible. Un objeto se dice recursivo si está definido en términos de sí mismo Ejemplos de definiciones recursivas. Prof. Leopoldo Silva Bijit
2 El concepto de recursión es particularmente poderoso en definiciones matemáticas; veamos algunos ejemplos: a) Número natural: i) 1 es un número natural. ii) el sucesor de un número natural es un número natural. b) La función factorial, para enteros no negativos: i) 0! = 1 ii) Si n>0 entonces n! = n*(n-1)! c) Máximo común divisor, para enteros positivos. mcd(m, n) i) mcd(m, 0) = m ii) Si n>0 entonces mcd(m, n) = mcd(n, m mod n) d) Números de Fibonacci: i) fib(0) = 1; fib(1) = 1 ii) fib(n) = fib(n-1)+fib(n-2) para n>1 En Pascal, pueden diseñarse, casi directamente las siguientes funciones: a) function fact(i:integer):integer; if i>0 then fact:=i*fact(i-1) else fact:=1 b) function mcd(m,n:integer):integer; if n=0 then mcd:=m else mcd:=mcd(n,m mod n) c) function fib(n:integer):integer; if n=0 then fib:=0 Prof. Leopoldo Silva Bijit
3 else if n=1 then fib:=1 else fib:=fib(n-1)+fib(n-2) UNIVERSIDAD TECNICA FEDERICO SANTA MARIA Algunos de estos ejemplos han sido desarrollados antes por algoritmos repetitivos. Nótese que los llamados recursivos están dentro de estructuras de control condicional. La potencia de la recursión se basa en la posibilidad de definir un conjunto infinito de objetos por una sentencia finita. Del mismo modo un número infinito de computaciones puede describirse por un programa finito recursivo. Las etapas previas de compilación, el análisis léxico y sintáctico pueden describirse recursivamente; por esta razón los programas que los implementan suelen ser recursivos. Se han ilustrado algunas funciones recursivas, pero también es posible desarrollar procedimientos recursivos Ejemplos Permutaciones. Una permutación de una secuencia de objetos es una redisposición de los mismos. Por ejemplo las permutaciones de 123 son: 123, 132, 213, 231, 312 y 321. Permutando las letras de una palabra se obtiene un anagrama. Por ejemplo: roma, amor, omar, mora, ramo. El número de permutaciones de n objetos es n!. En la primera posición es posible colocar cualesquiera de los n objetos; en la segunda existen n-1 posibilidades, ya que se asume utilizado un objeto en la primera posición. En la última posición sólo es posible colocar el que queda. El siguiente programa genera las permutaciones de 123. program permute(output); var i,j,k : integer; Prof. Leopoldo Silva Bijit
4 for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do if (i<>j) and (i<>k) and (j<>k) then writeln(i,j,k);. El programa efectúa 3*3*3 iteraciones; es decir, 27. Mientras que el número de permutaciones es 3! ; es decir, 6. Una forma de disminuir las iteraciones es por ejemplo, no realizar el tercer lazo (el más interno) si las dos variables anteriores son iguales. Pero si se desea obtener las permutaciones de un número de objetos mayor (y que no sean necesariamente números) debe pensarse en un algoritmo diferente, que sea más eficiente. Si se escriben las permutaciones de 1234 y se analiza en detalle la secuencia, podremos plantear para las permutaciones de n objetos distintos a[1], a[2],..., a[n] el siguiente algoritmo recursivo. Sea permute(n) la acción que obtiene las permutaciones de los n objetos. Su implementación se descompone en: a) Se mantiene a[n] en su lugar; y se generan todas las permutaciones de los n-1 objetos restantes. Es decir se invoca a permute(n-1). b) Se repite a) previo cambio de a[n] con a[1]. c) Se sigue repitio a) efectuando el cambio a[n] con a[i] para i=2 hasta n-1. Debe observarse que el procedimiento recursivo permute emplea un parámetro valor. También cuando el número de objetos a permutar sea igual a uno, se trá una permutación lista para ser impresa. procedure permute(k:integer); var i : integer; if k=1 then salida else {se mantiene a[k] en su lugar} Prof. Leopoldo Silva Bijit
5 permute(k-1); {se generan las permutaciones de los k-1 objetos restantes} for i:=1 to k-1 do cambio de a[k] con a[i]; {pasos b y c} permute(k-1); se vuelve a[k] a posicion original; El siguiente programa permite generar permutaciones de caracteres. program permutaciones(input,output); {$A- Esta es una orden para el Compilador Turbo-Pascal} var n : integer; a : array[1..5] of char; procedure lea(var ch:char); read(kbd,ch) {lee sin eco; depe del compilador} procedure entrada; {llena arreglo de largo variable} var ch : char; write('->entre una secuencia de caracteres, terminada en punto: ') n:=0; lea(ch); while ch <> '.' do n:=n+1; a[n]:=ch; write(ch); lea(ch) writeln; procedure salida; var i : integer; for i:=1 to n do write(a[i]); Prof. Leopoldo Silva Bijit
6 writeln procedure permute(k:integer); procedure con_el_i_en_k; procedure cambio_k_por_i; var t : char; t:=a[i]; a[i]:=a[k]; a[k]:=t; {La llamada a permute (k-1) equivale a ir decrementando k} var i : integer; {con el i en k} for i:=1 to k-1 do cambio_k_por_i; permute(k-1); cambio_k_por_i {permute} if k=1 then salida else permute(k-1); {cona[k]fijo,genera las permutaciones de los k- 1 objetos precedentes.} con_el_i_en_k {repite con a[i] en el lugar de 1. } {principal} a[k], para i desde 1 a k- Permutaciones Entrada Salida Permute con_el_i_en_k Cambio Prof. Leopoldo Silva Bijit
7 entrada; permute(n). El diagrama anterior muestra la estructura de los bloques. SALIDA debe estar antes de PERMUTE, para ser accesible desde este último. CAMBIO es accesible sólo desde con_el_i_en_k Coeficientes Binomiales. Los coeficientes del binomio, suelen describirse por el triángulo de Pascal Emplearemos la notación: Se tienen: n Cnk (, ) = k Prof. Leopoldo Silva Bijit
8 C(n,0) = 1 n >=0 C(n,k) = 0 n < k C(n,k) = C(n-1,k)+C(n-1,k-1) 0<=k<=n Las relaciones anteriores definen recursivamente al coeficiente del binomio; es inmediata entonces, la codificación: function C(n,k:integer):integer; if k=0 then C:=1 else if n<k then C:=0 else C:=C(n-1,k)+C(n-1,k-1) Pero también: Que puede escribirse: C(n,k) = n! / k!(n-k)! C(n,k) = (n-k+1)(n-k+2)..(n) / 1*2*3*..*k La siguiente función desarrolla el coeficiente binomial en forma no recursiva: function C(n,k:integer):integer; var num,den : integer; num:=1; den:=1; for j:=1 to k do num:=num*(n+1-j); den:=den*j C:=num div den Prof. Leopoldo Silva Bijit
9 Generador de Combinaciones. Analizar el algoritmo y colocar comentarios. program combinaciones(kbd,output); var m,n : integer; a : array[1..10] of integer; b : array[1..10] of char; procedure entrada; var ch : char; write('->entre secuencia de caracteres, terminada en punto: '); m:=0; read(kbd,ch); while ch <> '.' do m:=m+1; b[m]:=ch; write(ch); read(kbd,ch); a[m]:=m writeln; repeat write('->elementos de la combinacion: '); read(n); if n>m then write('<-error debe ser menor que: ',m+1); writeln until n<=m; procedure salida; var i : integer; writeln; for i:=1 to n do write(b[a[i]]) procedure combine; var p,b : integer; salida; {escribe la inicial} p:=1; while p<=n do Prof. Leopoldo Silva Bijit
10 if a[n+1-p] < m+1-p then b:=a[n+1-p]; while p>=1 do a[n+1-p]:=b+1; b:=b+1; p:=p-1 salida; p:=1 else p:=p+1 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA writeln('generacion de combinaciones'); entrada; combine. Prof. Leopoldo Silva Bijit
11 Análisis sintáctico. UNIVERSIDAD TECNICA FEDERICO SANTA MARIA Se desea saber si una determinada secuencia de caracteres cumple las reglas sintácticas siguientes : <expresión> ::= <término>{'+' '-'<término>} <término> ::= <factor>{ '*' '/'<factor>} <factor> ::= <letra> '('<expresión> ')' '['<expresión>']' Nótese que <expresión> está definida en forma recursiva. Además se desea transformar la expresión a notación polaca inversa. Esta puede describirse por las siguientes reglas: t1 + t2 --> t1t2+ t1 - t2 --> t1t2- f1 * f2 --> f1f2* f1 / f2 --> f1f2/ (e) --> e [e] --> e Donde : t1 y t2 son términos; f1 y f2 son factores; y e es una expresión. Nótese que la secuencia de salida no contiene paréntesis. Se aprovecha el programa que permite recorrer la sintaxis para generar código; en este caso, se produce una secuencia en notación polaca inversa que podría posteriormente ser evaluada en una pila. En el programa se lee sin eco; se detectan errores de sintaxis, no aceptando caracteres ilegales, de acuerdo a las producciones. La secuencia de salida se almacena temporalmente en un arreglo; luego se la escribe en la misma línea que la secuencia aceptada de entrada. Se toman providencias para mantener alineadas las columnas de resultado, esto a través de una variable que contabiliza los pares de paréntesis. Prof. Leopoldo Silva Bijit
12 El programa ilustra el diseño de procedimientos locales. Factor es local a término; y término es local a expresión. En este caso, debe cuidarse la definición de las variables locales; ya que debido al carácter recursivo es necesario disponer de las encarnaciones adecuadas de las variables locales. Se emplea la técnica de leer un carácter por adelantado; y al mismo tiempo se valida que el carácter recién leído pertenezca al conjunto válido de caracteres siguientes. Nótese que el texto del programa refleja las producciones. La generación de la secuencia polaca inversa se logra, no pasando los paréntesis hacia el arreglo de salida; y posponio el paso de los operadores, hasta haber encontrado el siguiente factor o término. Se emplean conjuntos, los que son tratados en el capítulo siguiente. program polaca; const largo=20; var ch : char; salida : array[1..largo] of char; cursor : integer; cpar : integer; procedure leach; read(kbd,ch) {no estándar} procedure error; write(chr(07)); leach(ch) procedure wrt(ch : char); cursor:=cursor+1; salida[cursor]:=ch procedure wrtpol; var i : integer; for i:=1 to largo+10-cursor-cpar do write(' '); Prof. Leopoldo Silva Bijit
13 {compensa los parentesis con cpar} for i:=1 to cursor do write(salida[i]) procedure expresion; var sumop : char; procedure termino; var mulop : char; UNIVERSIDAD TECNICA FEDERICO SANTA MARIA procedure factor; {factor} if ch='(' then write(ch); leach(ch); while not (ch in ['a'..'z','(','[']) do error; expresion; while ch <> ')' do error; cpar:=cpar+2 else if ch='[' then write(ch); leach(ch);whilenot(ch in['a'..'z','(','['])do error; expresion; while ch <> ']' do error; cpar:=cpar+2 else while (ch<'a') or (ch>'z') do error; wrt(ch) write(ch); leach(ch); whilenot (ch in ['*','/','-','+',')',']','.']) do error; {factor} {termino} Prof. Leopoldo Silva Bijit
14 factor; while (ch='*') or (ch='/') do write(ch); mulop:=ch; leach(ch); while not (ch in ['a'..'z','(','[']) do error; factor; wrt(mulop) {termino} {expresion} termino; while (ch='+') or (ch='-') do write(ch); sumop:=ch; leach(ch); while not (ch in ['a'..'z','(','[']) do error; termino; wrt(sumop) {expresion} {polaca} clrsrc; {no estándar} writeln('entre <expresion>"." Y la paso a polaca inversa.'); write('->'); leach(ch); while not (ch in ['a'..'z','(','[','.']) do error; while ch <> '.' do cursor:=0; cpar:=0; expresion; wrtpol; writeln; write('->'); leach(ch);whilenot(ch in['a'..'z','(','[','.']) do error;. Prof. Leopoldo Silva Bijit
Asumiremos que se dispone de procedimientos para leer y escribir caracteres. Se desarrollan algunas funciones primitivas que nos serán útiles.
26. Representación de números. Conversiones 26.1. Representación y conversión. Los números son representados internamente, en un computador digital, en sistema binario. Externamente se representan mediante
Más detallesUniversidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad
Más detallesRecursión. Recursión continuación
Recursión Recursión continuación Recursión Temas que veremos hoy Estructuras de control iterativas, repetitivas y la recursión. Ejemplos recursivos Búsqueda lineal Eficiencia y recursión Conclusiones Recursión
Más detallesDepartamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN
Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN ÍNDICE Definición Conceptos básicos Ejemplos recursivos Recursión mútua Recursión e iteración DEFINICIÓN Técnica
Más detallesPuede clasificarse en cuatro componentes básicas la eficiencia de un programa:
24. Eficiencia. Complejidad temporal. 24. Introducción. La eficiencia de un programa es una medida de la cantidad de recursos que se requieren para producir resultados correctos. Hace algunos años atrás,
Más detallesRecursividad Definición
Recursividad Definición Un procedimiento o función se dice recursivo si durante su ejecución se invoca directa o indirectamente a sí mismo. Esta invocación depende al menos de una condición que actúa como
Más detalles1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:
1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura: PROGRAM Nombre_del_programa; ZONA de DECLARACIONES ZONA de INSTRUCCIONES
Más detallesRecursividad. Definición. Diseño de Algoritmos Recursivos
Recursividad Definición Un procedimiento o función se dice recursivo si durante su ejecución se invoca directa o indirectamente a sí mismo. Esta invocación depende al menos de una condición que actúa como
Más detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problema Diseño de la solución Dividir y conquistar Implementación de los
Más detallesUno de los conceptos más útiles en ciencias de la computación es la pila.
23. PILA. (Stack). Tipos de Datos Abstractos. 23.1 Conceptos. Uno de los conceptos más útiles en ciencias de la computación es la pila. Una pila es una colección ordenada de elementos de igual tipo, en
Más detallesArreglos y Subrangos
Arreglos y Subrangos Programación 1 InCo - FING Contents 1 Tipo subrango 2 1.1 Subrangos de enteros......................... 2 1.2 Subrangos de caracteres....................... 2 1.3 Operaciones con subrangos.....................
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 detallesManual de turbo pascal
Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de
Más detallesIntroducción a la Programación
0,25 puntos cada pregunta 1. Observa el siguiente esquema de código. Cuándo se ejecuta Instrucción4? IF Condición1 THEN Instrucción1 ELSE IF Condición2 THEN Instrucción2 ELSE IF Condición3 THEN Instrucción3;
Más detallesResolución de Problemas y Algoritmos
RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS CLASE 3 Definición y compatibilidad de tipos de datos. Sentencia condicional CASE. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la
Más detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Cuando la complejidad de los problemas aumenta, la tarea de hallar una solución
Más detallesMódulo 7: Sentencias de control en Pascal
Módulo 7: Sentencias de control 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,
Más detallesArreglos y Subrangos
Arreglos y Subrangos Programación 1 InCo - FING Programación 1 Arreglos y Subrangos InCo - FING 1 / 27 Tipos de datos definidos por el programador Programación 1 Arreglos y Subrangos InCo - FING 2 / 27
Más detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR La recursividad es adecuada en problemas que reúnen las siguientes propiedades:
Más detallesFUNDAMENTOS DE OBJECT PASCAL
FUNDAMENTOS DE OBJECT PASCAL 1. ASPECTOS GENERALES DE LA SINTAXIS Los bloques de código quedan delimitados por y end. Se usa punto y coma como separador de sentencias de código. Comentarios: - ias líneas:
Más detallesQué es la recursividad?
Recursividad 1 Ejemplo Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Esta muñeca, también contiene otra muñeca dentro.
Más detallesTrabajo Práctico Nº 4 Iteración
Trabajo Práctico Nº 4 Iteración Ejercicio 1: Realice una traza y muestre la salida de cada secuencia de instrucciones. for i:= 0 to 0 do for i:= 1 to -1 do for i:= 1 downto 0 do Ejercicio 2: Escriba un
Más detallesResolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones)
Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la
Más detalles'type' <nombre conjunto> '=' 'SET OF' <tipo base>
20. CONJUNTOS. SET. 20.1. Valores. Un tipo de datos especifica el conjunto de valores que una variable de ese tipo puede adoptar. El tipo conjunto es estructurado a partir de un tipo base; el tipo base
Más detallesLa recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.
RECURSIVIDAD La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares
Más detallesApunte Laboratorio ALPI - El lenguaje de programación Pascal
Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................
Más detallesTema 06: Recursividad
Tema 06: Recursividad M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Recursión Recursividad Programación
Más detallesTipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR
Tipos y Estructuras de Control Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Datos: variables y constantes Tipos básicos: entero, real, char, lógico Estructuras de control
Más detallesFUNDAMENTOS DE PROGRAMACIÓN LABORATORIO SESIÓN 2
FUNDAMENTOS DE PROGRAMACIÓN LABORATORIO SESIÓN 2 EJERCICIO 1 VALIDACIÓN DE DATOS DE ENTRADA Modificar el programa del cálculo del MCD de dos números enteros positivos para validar los datos de entrada
Más detallesPrimer Parcial. Programación 1 Instituto de Computación Año 2011
No. Parcial: Nombre: CI: Primer Parcial. Programación 1 Instituto de Computación Año 2011 Observaciones: Cada ejercicio tiene una única opción correcta. Una respuesta correcta suma 2 puntos Una respuesta
Más detallesIteración Diagrama de SINTAXIS: IF
VISION ESTATICA VISION DINAMICA Dra. Jessica Andrea Carballi jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Diagrama de SINTAXIS: IF Visión estática Diagrama
Más detallesEXAMENES RESUELTOS DE PROGRAMACION I
EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994, Reserva Soluciones no oficiales 1.- Determinar los valores reales válidos en Modula-2: a) 56.2F-54 y 2.2
Más detallesPrimer Parcial. Programación 1 Instituto de Computación Año 2017
Nº Parcial: Nombre: CI: Primer Parcial. Programación 1 Instituto de Computación Año 2017 a) -1919293949 b) -1-1-1-1-1-1 c) 01020304050 d) No imprime nada e) 012345 Respuesta: 3 Observaciones: Cada ejercicio
Más detallesResolución de Problemas y Algoritmos
CONSULTA RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS CAMBIA DE HORARIO LA CONSULTA DEL PROFESOR! DESDE LA SEMANA DEL 0/0 SERÁ LOS VIERNES A LAS 7HS EN EL NUEVO EDIFICIO DEL DCIC. CLASE Funciones definidas por
Más detallesDeclaración de Procedimientos
Procedimientos Concepto Un procedimiento es un subprograma que realiza una tarea especifica. Puede recibir cero más valores del programa que llama y devolver cero o más valores a dicho programa que lo
Más detallesResolución de Problemas y Algoritmos
RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS CLASE Estructura de control condicional. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur,
Más detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 27. Verificación analítica de programas.
27. VERIFICACION ANALITICA DE PROGRAMAS El texto de un programa determina un patrón de conducta para el proceso o computación. Un programa puede originar una cantidad no especificada, quizá infinita de
Más detalles6. Estructuras básicas de control 1. Pseudocódigo
6. Estructuras básicas de control 1 Acciones Pseudocódigo Slide 1 Estructuras de control Secuencia Selección simple (si... entonces... ) doble (si... entonces... si no... ) múltiple (según el caso... )
Más detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas.
2. ACCIONES PRIMITIVAS. En los lenguajes de alto nivel existen cuatro instrucciones primitivas que reflejan lo que un computador puede realizar (en este nivel de abstracción). Se describirán las instrucciones
Más detallesAPUNTES DE CÁTEDRA: ARREGLOS MULTIDIMENSIONALES
Facultad de Ciencias Exactas, Ingeniería y Agrimensura (U.N.R.) Escuela de Ciencias Exactas y Naturales Departamento de Matemática Cátedra: Computación (L.M. - P.M.) Prof. responsable: Mgr. María del Carmen
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 detallesAnálisis de algoritmos. Recursividad
Análisis de algoritmos Recursividad 1 Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene
Más detallesMódulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.
EQUIVALENCIAS BÁSICAS ENTRE PASCAL Y C A continuación se presentan algunas equivalencias básicas entre estos lenguajes de programación : Operadores en lenguaje C: Operador Descripción % Módulo = Asignación
Más detallesTemario. Tipos de recursión. Eficiencia y recursión
RECURSION Temario Tipos de recursión Eficiencia y recursión Tipos de RECURSION Según desde donde se realice el llamado recursivo: Directa: la función se llama a sí misma. Indirecta: la función A llama
Más detallesResolución de Problemas y Algoritmos Segundo cuatrimestre de 2015 Clase 18: Recursión - Problemas clásicos
Resolución de Problemas y Algoritmos Segundo cuatrimestre de 2015 Clase 18: Recursión - Problemas clásicos Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación
Más detallesU nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales
ARREGLOS Introducción Primero que todo, es importante conocer el concepto de estructura de datos. Una estructura de datos es "una colección de datos organizados de un modo particular." Las estructuras
Más detallesResolución de Problemas y Algoritmos Clase 6: Repetición (continuación)
Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación) Dr. http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca,
Más detallesProgramación modular en Pascal
Programación modular en Pascal Programación modular Es una técnica para escribir programas grandes y complejos Se basa en subdividir el programa en secciones más simples. Cada sección se llama módulo y
Más detallesControla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion
UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto
Más detallesConcepto de Recursión. Características de algoritmos recursivos. Ejemplos
RECURSION Temario Concepto de Recursión Características de algoritmos recursivos Ejemplos RECURSION Metodologías para resolver problemas: 1. Diseño Top Down 2. Recursión 3. Abstracción de Datos 4. Diseño
Más detallesRepetición Condicional
Repetición Condicional InCo - FING Programación 1 InCo - FING Repetición Condicional Programación 1 1 / 20 La instrucción while InCo - FING Repetición Condicional Programación 1 2 / 20 Ejemplo Leer números
Más detallesEstructuras de Programación
Apunte del curso ALGORITMOS y PROGRAMACIÓN (FI-UBA, Prof. Ing. F. J. LAGE, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez Estructuras de Programación Todo programa puede
Más detalles28/10/2016. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias
Un tipo particular de problemas para el cual resulta adecuada la iteración es el procesamiento de secuencias de valores. Dra. Jessica Andrea Carballi jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de
Más detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,
Más detallesJesús Ravelo Kelwin Fernández Universidad Simón Bolívar Dpto. de Computación y Tecnología de la Información
Recursión Reglas de Correctitud Jesús Ravelo Kelwin Fernández Universidad Simón Bolívar Dpto. de Computación y Tecnología de la Información *** Observación: esta versión es un borrador y posiblemente puede
Más detallesRecursividad. Definición de Recursividad: Técnica de programación muy potente que puede ser usada en lugar de la iteración.
Capítulo IV Recursividad Aprende a nacer desde el dolor y a ser más grande que el más grande de los obstáculos, mírate en el espejo de ti mismo y serás libre y fuerte y dejarás de ser un títere de las
Más detallesTrabajo Práctico Nº 06
Tema: Recursividad 1. Dado el siguiente método: static int puzle (int base, int limite) if (base > limite) return -1; if (base = = limite) return base * puzle(base+1,limite); 1.1 Identificar: a) el caso(s)
Más detalles21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo.
Variables y Constantes Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Los datos de un programa están representados por variables
Más detallesTema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN
Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos
Más detallesAnálisis y Programación
Análisis Numérico y Programación Facultad de Ingeniería Química Primavera 2009 Dra. Lilia Meza Montes Instituto de Física 1 Conceptos Básicos 1. Varios 2. Estructuras de programación 3. Lenguaje Fortran
Más detallesTema 7. Recursividad. J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.
Tema 7 Recursividad 7.1 Introducción El concepto de recursión aparece en varias situaciones de la vida cotidiana, aunque en muchas no sabemos que estamos en presencia de este concepto, por ejemplo, sacar
Más detallesListas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015
Listas y Recursión Taller de Álgebra I Primer Cuatrimestre de 2015 Un nuevo tipo: Listas Tipo Lista Las listas pueden contener elementos de cualquier tipo (incluso listas) [1] :: [Integer] [1, 2] :: [Integer]
Más detallesAnálisis de algoritmos
Tema 05: no recursivos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido no recursivos La notación de Landau O La notación O Principio
Más detalles3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.
CAP. 3. PROGRAMACION ESTRUCTURADA 3.1. Técnicas de programación Las herramientas de programación fundamentalmente los diagramas de flujo, son las representaciones gráficas utilizada para el diseño de algoritmos
Más detallesUna clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos
Una clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos Definición formal del lenguaje por comprensión L = {C n D m \ n,m >0 Donde C representa
Más detallesDepartamento de Informática Universidad de Valladolid Campus de Segovia LABORATORIO: INTRODUCCIÓN A LAS UNIDADES EN TURBO PASCAL
Departamento de Informática Universidad de Valladolid Campus de Segovia LABORATORIO: INTRODUCCIÓN A LAS UNIDADES EN TURBO PASCAL UNIDADES EN TURBO PASCAL 7.0 Concepto de unidad Estructura de una unidad
Más detallesTEMA 3: Estructuras de Control: Iterativas
UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE MATEMÁTICA INTRODUCCIÓN A LA COMPUTACIÓN TEMA 3: Estructuras de Control: Iterativas Estructuras Iterarivas En la programación existen las
Más detallesÍndice general 7. Presentación 15
ÍNDICE GENERAL Índice general 7 Presentación 15 1. Introducción 19 1.1. Antecedentes históricos de la computación................... 19 1.2. Definiciones previas............................... 24 1.3.
Más detallesEstructura de Datos. Recursividad. Primer Semestre, Indice
Estructura de Datos Recursividad Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2 Indice Introducción Definición Condiciones para la Recursividad Tipos de Recursividad Aplicaciones Ejemplo
Más detallesComponentes Básicos. InCo. InCo Componentes Básicos 1 / 28
Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes
Más detallesIteración Diagrama de SINTAXIS: IF
VISION ESTATICA VISION DINAMICA Dra. Jessica Andrea Carballi jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Diagrama de SINTAXIS: IF estática Diagrama de
Más detallesSUBRANGO ENUMERADOS CONJUNTOS
Apunte del curso ALGORITMOS y PROGRAMACIÓN (FI-UBA, Prof. Ing. F. J. LAGE, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez SUBRANGO ENUMERADOS CONJUNTOS SUBRANGO: Un tipo
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 detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar La Procesamiento Computadora de Secuencias Una computadora es un dispositivo electrónico que integra componentes físicos y lógicos. El hardware de una computadora
Más detallesFACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de recursividad
H AC LUCE FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información Ejercicios de recursividad 1. Determinar qué operación realiza: //x>=0, y>0 function funcion_x (x,y:
Más detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas.
UNIERSIDD TENI EDERIO SNT MRI DEPRTMENTO DE ELETRONI apítulo 3. cciones Estructuradas. 3. cciones Estructuradas Por estructurar se entiende secuenciar las acciones primitivas sobre los datos; es decir:
Más detallesSi L es recursivo, entonces es recursivamente numerable
Si L es recursivo, entonces es recursivamente numerable Slide 19 program GeneraRec (output); procedure sgte (var x: string); (* calcula la siguiente x en el orden natural *) begin... end; var x: string;
Más detallesESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA
ESTRUCTURA SECUENCIAL Es aquélla 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 y así sucesivamente hasta
Más detalles4.5 Ligado de Variables en Scheme
4.5 Ligado de Variables en Scheme Referencia a variables, lambda, formas let y asignación a) Referencia a una Variable variable retorno: valor de la variable Cualquier identificador no citada en una expresión
Más detallesEl lenguaje de programación JKL
El lenguaje de programación JKL Copyright 2006 JosuKa Díaz Labrador Facultad de Ingeniería, Universidad de Deusto, Bilbao, España Verbatim copying and distribution of this entire article is permitted in
Más detallesRECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres
ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS RECURSIVIDAD Definición. Estado base. Estado general. Ejemplos. Ejercicios. DEFINICIÓN Es una técnica de programación muy potente que permite
Más detallesDepartamento de Informática Universidad de Valladolid Campus de Segovia. TEMA 4: TIPOS ABSTRACTOS DE DATOS (TADs)
Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 4: TIPOS ABSTRACTOS DE DATOS (TADs) TIPOS ABSTRACTOS DE DATOS (TADs) Introducción Un contraejemplo completo Metodología de la
Más detallesEstructura de datos y Programación
Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de
Más detallesUnidades en PASCAL (Units)
Programación II - Prof. Alejandro H. Gonzalez - 1 Unidades en PASCAL (Units) Aquellos que quieran probar los ejercicios de TAD en Pc pueden utilizar las UNITS de Pascal. En este documento se explican los
Más detallesEXAMENES RESUELTOS DE PROGRAMACION I
EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994 Soluciones no oficiales 1.- Cuál de las siguientes sentencias es incorrecta?: VAR A : ARRAY [0..3] OF ARRAY
Más detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 21. Registros. Records.
21. REGISTROS. Records. 21.1. Concepto Abstracto. Así como el arreglo es la estructura más usada por los programadores en un ambiente científico o de aplicaciones personales, el registro es la unidad básica
Más detallesALGORITMOS Y ESTRUCTURAS DE DATOS EJERCICIOS RESUELTOS SEGUNDA PARTE
ALGORITMOS Y ESTRUCTURAS DE DATOS EJERCICIOS RESUELTOS CUADERNILLO DE PRACTICA SEGUNDA PARTE Página - 1 ARREGLOS a) Unidimensionales: Ejercicio Resuelto: Ingresar 20 números reales en un arreglo y luego
Más detallesProgramcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.
Programación Básica Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 5 Universidad de Guanajuato, DCI, Campus León 1 / 31 Universidad
Más detallesDiseño de Compiladores I. Estructura General de un Compilador
Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce
Más detallesAnalizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones
Analizador Léxico Programación II Margarita Álvarez Analizador Léxico - Funciones Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos
Más detallesIntroducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani
Introducción Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Algoritmos y Algoritmia Problemas e instancias Primer Cuatrimestre 2014 Algoritmos
Más detallesAlgoritmos y Complejidad
Algoritmos y Complejidad Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2017 Introducción Algoritmos y Algoritmia Problemas
Más detallesSubprogramas en Fortran 90. Seminario de Computación 2009
Seminario de Computación 2009 1. Algoritmos con nombre en Fortran 90 Un algoritmo con nombre es la generalización de un operador En Fortran 90 los algoritmos con nombre pueden ser: - Intrínsecos (propios
Más detallesRecursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada
TEMA Recursividad Dept. Ciencias de la Computación e I.A. Universidad de Granada Índice Introducción a la recursión Recursividad frente a iteración Eficiencia de los algoritmos recursivos Ejemplos y ejercicios
Más detallesRECURSION. Se deben hacer cuatro preguntas para construir una solución recursiva:
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
Más detallesGUIA EXAMEN FINAL/EXTRAORDINARIO
INSTITUTO SAN ANGEL DEL SUR ESCUELA NACIONAL PREPARATORIA INCORPORADA A LA UNAM CLAVE 1261 CICLO 2012-2013 Nombre del profesor: Ing. Jorge Padilla Gutiérrez Asignatura: INFORMATICA V GUIA EXAMEN FINAL/EXTRAORDINARIO
Más detallesLABORATORIO DE PROGRAMACIÓN II Problemas HOJA 1 RECURSIVIDAD
LABORATORIO DE PROGRAMACIÓN II Problemas HOJA 1 RECURSIVIDAD NÚMERO 1. PROGRAM Hoja1_numero1 (input,output); **** Este programa pide al usuario N letras y las escribe, en el orden inverso al que fueron
Más detalles14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes
Problemas, Algoritmos y Programas PROBLEMA Solución Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar ALGORITMO Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR PROGRAMA Problemas,
Más detalles