Tecnología de la Programación

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Tecnología de la Programación"

Transcripción

1 Título de Grado en Ingeniería Informática Curso 2009/10 Fernando Jiménez Barrionuevo Gracia Sánchez Carpena Mari Carmen Garrido Carrera Departamento de Ingeniería de la Información de las Comunicaciones Universidad de Murcia

2 Temario 1.1 Definición de recursividad 1.2 Recursividad en C 1.3 Esquemas recursivos 1.4 Tiempo de ejecución de los algoritmos recursivos 1.5 Recursión vs iteración 2

3 1.1 Definición de Recursividad Se dice que un objeto es recursivo si forma parte de sí mismo o se define en función de sí mismo. Técnica particularmente potente en las definiciones matemáticas. La potencia de la recursión reside evidentemente en la posibilidad de definir un número infinito de objetos mediante un enunciado finito. De igual forma, un número infinito de operaciones de cálculo puede describirse mediante un programa recursivo finito. En general, un programa recursivo P puede expresarse como una composición de instrucciones básicas S i (que no contienen a P) y el propio P. P [S i,p] 3

4 1.1 Definición de Recursividad Ejemplos: Números naturales: 1 es un número natural El siguiente de un número natural es un número natural Función factorial, n! (para números enteros no negativos): 0! = 1 Si n>0 entonces n! = n (n 1)! 3! = 3 (3-1)! = 3 2! = 3 2 (2-1)! = 3 2 1! = (1-1)! = ! = = 6 4

5 1.1 Definición de Recursividad Un algoritmo es recursivo si se invoca a sí mismo al menos una vez. Recursividad directa: El algoritmo contiene una llamada explícita a sí mismo, es decir, A invoca a A. Recursividad indirecta: El algoritmo se invoca a sí mismo de forma indirecta, es decir, A invoca a B y B invoca a A. Recursividad de cola o extremo final: La llamada recursiva es la última instrucción que ejecuta el algoritmo. 5

6 1.1 Definición de Recursividad Un algoritmo recursivo está bien construido si: 1. Contiene, al menos, un caso base, en el cual el algoritmo no se llama a sí mismo. 2. Los valores de los parámetros del algoritmo en las sucesivas llamadas recursivas están más cerca del caso base que el valor con el que se llamó inicialmente al algoritmo, garantizando que el caso base se alcanza. 6

7 1.2 Recursividad en C Multiplicación n m (m 0) Caso Base: (m = 0) n 0 = 0 Caso General: (m > 0) n m = n + n (m - 1) // m>=0 int multiplica(int n, int m) if (m==0) return 0; return n+multiplica(n,m-1); // m>=0 (version comprimida) int multiplica(int n, int m) return(m==0?0:n+multiplica(n,m-1)); 7

8 1.2 Recursividad en C División entera n / m (n 0 y m>0) Caso Base: (n < m) n / m = 0 Caso General: (n m) n / m = 1 + ( n m ) / m // n>=0, m>0 int divide(int n, int m) if (n<m) return 0; return 1+divide(n-m,m); // n>=0 y m>0 (version comprimida) int divide(int n, int m) return (n<m?0:1+divide(n-m,m)); 8

9 1.2 Recursividad en C Módulo n % m (n 0 y m > 0) Caso Base: Caso General: (n < m) n % m = n (n m) n % m = ( n m ) % m // n>=0, m>0 int modulo(int n, int m) if (n<m) return n; return modulo(n-m,m); // n>=0 y m>0 (version comprimida) int modulo(int n, int m) return (n<m?n:modulo(n-m,m)); 9

10 1.2 Recursividad en C Potencia n m (m 0) Caso Base: (m = 0) n 0 = 1 Caso General: (m > 0) n m = n n m - 1 // m>=0 int potencia(int n, int m) if (m==0) return 1; return n*potencia(n,m-1); // m>=0 (version comprimida) int potencia(int n, int m) return(m==0?1:n*potencia(n,m-1)); 10

11 1.2 Recursividad en C Factorial n! (n 0) Caso Base: (n = 0) 0! = 1 Caso General: (n > 0) n! = n ( n 1 )! // n>=0 int factorial(int n) if (n==0) return 1; return n*factorial(n-1); // n>=0 (version comprimida) int factorial(int n) return(n==0?1:n*factorial(n-1)); 11

12 1.2 Recursividad en C Fibonacci fib(n) (n 0) Caso Base: Caso General: (n 1) fib(n) = n (n > 1) fib(n) = fib(n-2) + fib(n-1) // n>=0 int fibonacci(int n) if (n<=1) return n; return fibonacci(n-2)+fibonacci(n-1); // n>=0 (version comprimida) int fibonacci(int n) return(((n<=1))?n:fibonacci(n-2)+fibonacci(n-1)); 12

13 1.2 Recursividad en C Hanoi h(n,a,b,c) (n 1) Caso Base: (n = 1) h(1,a,b,c): a c Caso General: (n > 1) h(n,a,b,c): h(n-1,a,c,b), a c, h(n-1,b,a,c) // n>=1 void hanoi(int n, char a, char b, char c) if (n>1) hanoi(n-1,a,c,b); printf( Mover de %d a %d\n,a,c); if (n>1) hanoi(n-1,b,a,c); 13

14 1.3 Esquemas recursivos Divide y Vencerás función DV(x) devuelve solución si x es suficientemente pequeño o sencillo entonces (Caso Base): devolver ad hoc (x) en otro caso (Caso General): descomponer x en casos más pequeños x 1,x 2,...,x n para i=1 hasta n hacer y i = DV(x i ) combinar los y i para obtener una solución y de x devolver y 14

15 1.3 Esquemas recursivos Divide y Vencerás: Búsqueda Binaria Busca un elemento e en un vector v ordenado. Devuelve el índice de una ocurrencia del elemento e en del vector v. Si el vector v no contiene ninguna ocurrencia del elemento e, devuelve -1. // v está ordenado int buscabin(int v[], int ini, int fin, int e) if (ini>fin) return -1; int med = (ini+fin)/2; if (v[med]==e) return med; if (v[med]>e) return buscabin(v,ini,med-1,e); if (v[med]<e) return buscabin(v,med+1,fin,e); // v está ordenado, tam es el numero de elementos de v int buscabin(int v[], int tam, int e) return buscabin(v,0,tam,e); 15

16 1.3 Esquemas recursivos Divide y Vencerás: Ordenación por Mezcla Ordena un vector v desde el índice ini hasta el índice fin. void mergesort(int v[], int ini, int fin) if ((fin-ini)>0) int med = (ini+fin)/2; mergesort(v,ini,med); mergesort(v,med+1,fin); mezcla(v,ini,fin,med); // tam es el numero de elementos de v void mergesort(int v[], int tam) mergesort(v,0,tam); 16

17 1.3 Esquemas recursivos Vuelta Atrás: Una solución Devuelve cierto si encuentra una solución a partir de un paso, y falso en caso contrario. Si encuentra una solución la devuelve en el parámetro solucion. funcion VA(entrada: paso, salida: solución) devuelve booleano si solución completa entonces devolver cierto fin si para cada posibilidad de solución si posibilidad aceptable en solución entonces anotar posibilidad en solución si VA(siguiente paso, solución) entonces devolver cierto fin si cancelar posibilidad en solución fin si fin para devolver falso 17

18 1.3 Esquemas recursivos Vuelta Atrás: Una solución Solución compuesta por n pasos y m posibilidades para cada paso. El parámetro solucion debe pasarse como apuntador porque es de salida. bool VA(int i, solucion * s) if (i==n) return true; for(int j=0;j<m;j++) if (aceptable(s,i,j)) anotar(s,i,j); if (VA(i+1,s)) return true; cancelar(s,i,j); return false; LLamada inicial al método VA: solucion * s = new solucion(); inicia(s); if (VA(0,s)) imprime(s); 18

19 1.3 Esquemas recursivos Vuelta Atrás: Todas las soluciones Obtiene todas las soluciones posibles a partir de un paso. funcion VA(entrada: paso, salida: solución) si solución completa entonces anotar solución en otro caso para cada posibilidad de solución si posibilidad aceptable en solución entonces anotar posibilidad en solución VA(siguiente paso, solución) cancelar posibilidad en solución fin si fin para fin si 19

20 1.3 Esquemas recursivos Vuelta Atrás: Todas las soluciones Solución compuesta por n pasos y m posibilidades para cada paso. void VA(int i, solucion * s) if (i==n) imprime(s); else for(int j=0;j<m;j++) if (aceptable(s,i,j)) anotar(s,i,j); VA(i+1,s); cancelar(s,i,j); LLamada inicial al método VA: solucion s = new solucion(); inicia(s); VA(0,s)); 20

21 1.3 Esquemas recursivos Vuelta Atrás: Ocho Reinas n = 8 (8 pasos, un paso por cada reina) m = 8 (8 posibilidades para cada reina) x[i]: indica la posición en columna de la reina en la fila i-ésima a[i]: true si la columna i-ésima está libre b[i]: true si la diagonal derecha i-ésima está libre c[i]: true si la diagonal izquierda i-ésima está libre struct solucion int x[8]; bool a[8]; bool b[15]; bool c[15]; ; 21

22 1.3 Esquemas recursivos Vuelta Atrás: Ocho Reinas void inicia(solucion * s) for(int j=0;j<8;j++) s->a[j] = true; for(int j=0;j<15;j++) s->b[j] = true; s->c[j] = true; void imprime(solucion * s) for(int j=0;j<8;j++) printf("%d ",s->x[j]); printf("\n"); bool aceptable(solucion * s,int i,int j) return s->a[j]&&s->b[i+j]&&s->c[i-j+7]; void anotar(solucion * s, int i, int j) s->x[i]=j; s->a[j]=false; s->b[i+j]=false; s->c[i-j+7]=false; void cancelar(solucion * s, int i, int j) s->a[j]=true; s->b[i+j]=true; s->c[i-j+7]=true; 22

23 1.4 Tiempo de ejecución de los algoritmos recursivos Expansión de recurrencias Utiliza la recurrencia misma para sustituir m<n por cualquier T(m) en la derecha, hasta que todos los términos T(m) para m>1 se hayan reemplazado por fórmulas que impliquen sólo T(1). Como T(1) siempre es constante, se tiene una fórmula para T(n) en función de n y de algunas constantes. A esta fórmula se le denomina forma cerrada para T(n). 23

24 1.4 Tiempo de ejecución de los algoritmos recursivos Ejemplo: Factorial Ecuación de recurrencia: T(0) = c 1 T(n) = T(n-1) + c 2 si n>0 Expansión de recurrencias: T(n) = T(n-1)+c 2 = [T(n-2)+c 2 ]+c 2 = T(n-2)+2c 2 = [T(n-3)+c 2 ]+2c 2 = T(n-3)+3c 2 Forma cerrada para T(n) (por inducción en i): T(n) = T(n-i) + i c 2 La expansión terminará cuando se alcance T(0) en lado derecho de la forma cerrada, es decir, cuando n-i=0, por tanto i=n. Sustituyendo en la forma cerrada i por n se obtiene: T(n) = T(0) + n c 2 = c 1 + n c 2 Esto demuestra que T(n) es O(n). 24

25 1.4 Tiempo de ejecución de los algoritmos recursivos Ejemplo: Búsqueda Binaria Ecuación de recurrencia: T(1) = c 1 T(n) = T(n/2) + c 2 si n>1 Expansión de recurrencias: T(n) = T(n/2)+c 2 = [T(n/4)+c 2 ]+c 2 = T(n/4)+2c 2 = [T(n/8)+c 2 ]+2c 2 = T(n/8)+3c 2 Forma cerrada para T(n) (por inducción en i): T(n) = T(n/2 i ) + ic 2 La expansión terminará cuando se alcance T(1) en lado derecho de la forma cerrada, es decir, cuando n/2 i =1, por tanto i=log n. Sustituyendo en la forma cerrada i por n se obtiene: T(n) = T(1) + log n c 2 = c 1 + log n c 2 Esto demuestra que T(n) es O(log n). 25

26 1.4 Tiempo de ejecución de los algoritmos recursivos Ejemplo: Mergesort Ecuación de recurrencia: T(1) = c 1 T(n) = 2 T(n/2) + n c 2 si n>1 Expansión de recurrencias: T(n) = 2T(n/2)+nc 2 = 2[2T(n/4)+(n/2)c 2 ]+nc 2 = 4T(n/4)+2nc 2 = 8T(n/8)+3nc 2 Forma cerrada para T(n) (por inducción en i): T(n) = 2 i T(n/2 i ) + i n c 2 La expansión terminará cuando se alcance T(1) en lado derecho de la forma cerrada, es decir, cuando n/2 i =1, por tanto i=log n. Sustituyendo en la forma cerrada i por n se obtiene: T(n) = nt(1) + (log n) n c 2 = nc 1 + n log n c 2 Esto demuestra que T(n) es O(n log n). 26

27 1.5 Recursión vs Iteración La recursión implica múltiples llamadas y el uso de la pila interna para almacenar, en cada llamada recursiva, los parámetros de llamada, variables locales y dirección de retorno, lo que hace que en general sea más ineficiente que el diseño iterativo. Siempre es posible sustituir un algoritmo recursivo por un algoritmo iterativo que utilice una pila. Casos en los que no se debe utilizar la recursión: 1. Recursividad de cola 2. Árbol de recursión lineal (ejemplo, factorial) 3. Árbol de recursión ramificado, pero con nodos repetidos (ejemplo Fibonacci) Conclusión: la recursión se deberá utilizar cuando, además de facilitar el diseño del algoritmo, genere un árbol de recursión ramificado y con nodos no repetidos. 27

28 1.5 Recursión vs Iteración Multiplicación n m (m 0) Caso Base: (m = 0) n 0 = 0 Caso General: (m > 0) n m = n + n (m - 1) // m>=0 (versión recursiva) int multiplica(int n, int m) if (m==0) return 0; return n+multiplica(n,m-1); // m>=0 (versión iterativa) int multiplica(int n, int m) int res = 0; for(;m>0;m--) res+=n; return res; 28

29 1.5 Recursión vs Iteración División entera n / m (n 0 y m > 0) Caso Base: (n < m) n / m = 0 Caso General: (n m) n / m = 1 + ( n m ) / m // n>=0, m>0 (versión recursiva) int divide(int n, int m) if (n<m) return 0; return 1+divide(n-m,m); // n>=0, m>0 (versión iterativa) int divide(int n, int m) int res = 0; for(;n>=m;n-=m) res++; return res; 29

30 1.5 Recursión vs Iteración Módulo n % m (n 0 y m > 0) Caso Base: Caso General: (n < m) n % m = n (n m) n % m = ( n m ) % m // n>=0, m>0 (versión recursiva) int modulo(int n, int m) if (n<m) return n; return modulo(n-m,m); // n>=0, m>0 (versión iterativa) int modulo(int n, int m) for(;n>=m;n-=m); return n; 30

31 1.5 Recursión vs Iteración Potencia n m (m 0) Caso Base: (m = 0) n 0 = 1 Caso General: (m > 0) n m = n n m - 1 // m>=0 (versión recursiva) int potencia(int n, int m) if (m==0) return 1; return n*potencia(n,m-1); // m>=0 (versión iterativa) int potencia(int n, int m) int res = 1; for(;m>0;m--) res*=n; return res; 31

32 1.5 Recursión vs Iteración Factorial n! (n 0) Caso Base: (n = 0) 0! = 1 Caso General: (n > 0) n! = n ( n 1 )! // n>=0 (versión recursiva) int factorial(int n) if (n==0) return 1; return n*factorial(n-1); // n>=0 (version iterativa) int factorial(int n) int res = 1; for(;n>0;n--) res*=n; return res; 32

33 1.5 Recursión vs Iteración Fibonacci fib(n) (n 0) Caso Base: Caso General: (n 1) fib(n) = n (n > 1) fib(n) = fib(n-2) + fib(n-1) // n>=0 (versión recursiva) int fibonacci(int n) if ((n<=1)) return n; return fibonacci(n-2)+fibonacci(n-1); // n>=0 (version iterativa) int fibonacci(int n) if (n<=1) return n; int * aux = (int *)malloc((n+1)*sizeof(int)); aux[0] = 0; aux[1] = 1; for(int i=2; i<=n; i++) aux[i] = aux[i-2] + aux[i-1]; int res = aux[n]; free(aux); return res; 33

34 1.5 Recursión vs Iteración Búsqueda Binaria // v está ordenado (versión recursiva) int buscabin(int v[], int ini, int fin, int e) if (ini>fin) return -1; int med = (ini+fin)/2; if (v[med]==e) return med; if (v[med]>e) return buscabin(v,ini,med-1,e); if (v[med]<e) return buscabin(v,med+1,fin,e); // v está ordenado (versión iterativa) int buscabin(int v[], int ini, int fin, int e) while(ini<=fin) int med = (ini+fin)/2; if (v[med]==e) return med; if (v[med]>e) fin = med-1; else ini = med+1; return -1; 34

35 Ejercicios Propuestos Máximo Común Divisor mcd(n,m) (n 0, m 0) Caso Base: (m == 0) mcd(n,m) = n Caso General: (m > 0) mcd(n,m) = mcd(m,n%m) Monedas: Calcular el número mínimo de monedas necesarias para una determinada cantidad. Suponemos que tenemos monedas de 1, 5, 10, 20 y 50 céntimos y que la cantidad es menor de 1 euro. 35

UNIVERSIDAD 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. 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 detalles

Metodología de la Programación II. Recursividad

Metodología de la Programación II. Recursividad Metodología de la Programación II Recursividad Objetivos Entender el concepto de recursividad. Conocer los fundamentos del diseño de algoritmos recursivos. Comprender la ejecución de algoritmos recursivos.

Más detalles

Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos

Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos 1. Algoritmos de ordenación recursivos 1.1. Mergesort, Ordenamiento por fusión Mergesort se ejecuta en un tiempo

Más detalles

Temario. Tema 2. Tecnología de Desarrollo Software. 2.1 Excepciones en C Prueba y Depuración. 2.3 Documentación

Temario. Tema 2. Tecnología de Desarrollo Software. 2.1 Excepciones en C Prueba y Depuración. 2.3 Documentación Temario 2.1 Excepciones en C++ La sentencia throw La sentencia try - catch Control de Flujo 2.2 Prueba y Depuración Concepto de Prueba Pruebas de Caja Blanca Pruebas de Caja Negra Diseño de casos de prueba

Más detalles

Universidad 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 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 detalles

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena ([email protected])

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena (luis.rodriguez@upsam.net) Fundamentos de Programación II Tema 2. Recursividad Luís Rodríguez Baena ([email protected]) Universidad Pontificia de Salamanca (campus Madrid) Escuela Superior de Ingeniería y Arquitectura Naturaleza

Más detalles

Alonso Ramírez Manzanares Computación y Algoritmos 10.03

Alonso Ramírez Manzanares Computación y Algoritmos 10.03 Recursividad mat-151 1 Ejercicio de recursión: dibujando una regla Queremos dibujar las marcas de diferentes tamaños de una regla. Marcas grandes cada 1/2 cm, marcas más pequeñas cada 1/4 cm... hasta una

Más detalles

Recursión Directa. Una función es de recursión directa si contiene una llamada explícita a si misma. return foo (y 1); Recursión Indirecta

Recursión Directa. Una función es de recursión directa si contiene una llamada explícita a si misma. return foo (y 1); Recursión Indirecta Recursión Directa Una función es de recursión directa si contiene una llamada explícita a si misma int foo (int x) { if ( x

Más detalles

Metodología y Tecnología de la Programación

Metodologí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 detalles

Capítulo 2: Recursividad.

Capítulo 2: Recursividad. Capítulo 2: Recursividad. 2.1.- Introducción. La recursividad consiste en realizar una definición de un concepto en términos del propio concepto que se está definiendo. Ejemplos: Los números naturales

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. 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 detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

Bloque 4. La descomposición funcional y el diseño descendente

Bloque 4. La descomposición funcional y el diseño descendente Bloque 4 La descomposición funcional y el diseño descendente Cómo afrontar un problema complejo Dividir cada una de las dificultades que se examinen en tantos fragmentos como sea posible y que se requieran

Más detalles

El concepto de función en programación se fundamenta en el concepto de función matemática 1

El concepto de función en programación se fundamenta en el concepto de función matemática 1 FUNCIONES Y PROCEDIMIENTOS OBJETIVOS Aprender a resolver problemas grandes y complejos dividiendo un problema en subproblemas a través del uso de procedimientos y funciones. Distinguir entre parámetros

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer

Más detalles

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Fundamentos de la informática 2. Algoritmos, diagramas de flujo y pseudocódigo Contenido Algoritmos Diagramas de flujo

Más detalles

#include <stdio.h> /* Factorial de un número - versión 1- */

#include <stdio.h> /* Factorial de un número - versión 1- */ Ejemplo 1: Programa que calcula el factorial de 'n' números introducidos desde teclado. Primera versión: /* Factorial de un número - versión 1- */ long int factorial (int x) /*definición de función*/ int

Más detalles

A = A n. = {a n. Georges E. Alfaro Salazar 1

A = A n. = {a n. Georges E. Alfaro Salazar 1 UNICIENCIA 26 pp. 99-111 2012 Cálculo de funciones por recursión de cola y sustitución de parámetros Evaluating functions using tail recursion and parameter substitution Georges E. Alfaro Salazar 1 Resumen

Más detalles

CI 2125, Computación I

CI 2125, Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de la Información CI 2125, Computación I Práctica 5: ESTRUCTURAS DE REPETICIÓN Como ya hemos visto, el procedimiento desarrollado para resolver

Más detalles

Estructuras de Repetición (Hacer-Mientras)

Estructuras de Repetición (Hacer-Mientras) Estructuras de Repetición (Hacer-Mientras) Material Original: Prof. Flor Narciso Modificaciones: Prof. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no

Más detalles

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD. Programación I, Guía 6 1 Facultad : Ingeniería Escuela : Computación Asignatura: Programación I Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD. Objetivos Utilizar la sintaxis de las funciones definidas

Más detalles

<tipo> Tipo de dato de los elementos del vector

<tipo> Tipo de dato de los elementos del vector Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.

Más detalles

8. Sentencia return y métodos

8. Sentencia return y métodos 92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente

Más detalles

Temario detallado. Conceptos generales de lenguajes y compiladores. Proceso de compilación de un programa en C++ bajo Code::Blocks

Temario detallado. Conceptos generales de lenguajes y compiladores. Proceso de compilación de un programa en C++ bajo Code::Blocks Temario detallado Programación básica en C++ Conceptos generales de lenguajes y compiladores Proceso de compilación de un programa en C++ bajo Code::Blocks Estructura básica de un programa en C++ Análisis

Más detalles

Examen Principios de Programación Febrero 2012

Examen Principios de Programación Febrero 2012 Por favor siga las siguientes indicaciones: Escriba con lápiz. Escriba su nombre y número de documento en todas las hojas que entregue. Numere las hojas e indique el total de hojas en la primera de ellas.

Más detalles

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña Presentación Conceptos Avanzados de Programación :: Prof. Yeniffer Peña Unidad I: Conceptos Avanzados de Programación Recursividad: El concepto de recursividad va ligado al de repetición. Son recursivos

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 09: Programación dinámica Solicitado: Ejercicios 06: Programación dinámica de Fibonacci y Coeficientes Binomiales M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom

Más detalles

Práctica 3: Vectores y matrices en C.

Práctica 3: Vectores y matrices en C. Práctica 3: Vectores y matrices en C. Objetivos En esta práctica el objetivo principal es el de poner en práctica los principios básicos de algoritmia (bucles y bifurcaciones) empleando vectores y matrices.

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 2 Expresiones, operadores y estructuras de control Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento de Ingeniería

Más detalles

Notación Asintótica 2

Notación Asintótica 2 Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad

Más detalles

Problemas de Recursividad

Problemas de Recursividad Problemas de Recursividad Problema 1. El factorial de un número entero n 0, denotado como n!, se define! como!!! i = 1 2 n cuando n > 0, y 0! = 1. Por ejemplo 6! = 1 2 3 4 5 6 = 720 Diseñad una método

Más detalles

Algoritmos de Ordenación

Algoritmos de Ordenación Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] Algoritmos comunes - Ordenación Ordenación o clasificación es

Más detalles

Mostrar Números Ascendentemente. Soluciones Ejercicios Tema 5. tostring Recursivo de LEG. Suma Recursiva de un Vector (1/3)

Mostrar Números Ascendentemente. Soluciones Ejercicios Tema 5. tostring Recursivo de LEG. Suma Recursiva de un Vector (1/3) Mostrar Números Ascendentemente Soluciones Ejercicios Tema 5 Germán Moltó [email protected] Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica

Más detalles

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006 ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los

Más detalles

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad EJERCICIOS RESUELTOS 1. Escribe una función que calcule el factorial de un número, dado como parámetro. A continuación realiza un programa que lea por teclado

Más detalles

Multiplicación de enteros Algoritmo clásico 1234*5678 = 1234* (5*1000 + 6*100+7*10+8) = 1234*5*1000 + 1234*6*100 + 1234*7*10 + 1234*8 Operaciones bási

Multiplicación de enteros Algoritmo clásico 1234*5678 = 1234* (5*1000 + 6*100+7*10+8) = 1234*5*1000 + 1234*6*100 + 1234*7*10 + 1234*8 Operaciones bási Algoritmos Divide y Vencerás Análisis y Diseño de Algoritmos Algoritmos Divide y Vencerás Ejemplo: Multiplicación de enteros grandes La técnica divide y vencerás Características Método general divide y

Más detalles

3. Técnicas de diseño de algoritmos

3. Técnicas de diseño de algoritmos 3. Técnicas de diseño de algoritmos 1. Métodos Generales de Soluciones de Problemas 2. Técnicas de diseño de algoritmos 1. ecursividad básica 2. Divide y vencerás 3. Backtracking Bibliografía Aho, Hopcroft

Más detalles

Algoritmos. Diseño de algoritmos por inducción. Alberto Valderruten. [email protected]. Dept. de Computación, Universidade da Coruña

Algoritmos. Diseño de algoritmos por inducción. Alberto Valderruten. alberto.valderruten@udc.es. Dept. de Computación, Universidade da Coruña Divide y Vencerás Diseño de algoritmos por inducción Dept. de Computación, Universidade da Coruña [email protected] Contenido Divide y Vencerás 1 Divide y Vencerás 2 Índice Divide y Vencerás 1

Más detalles

EJERCICIOS DE COMPLEJIDAD ALGORÍTMICA

EJERCICIOS DE COMPLEJIDAD ALGORÍTMICA EJERCICIOS DE COMPLEJIDAD ALGORÍTMICA 1. Calcula la complejidad del siguiente procedimiento: PROCEDIMIENTO intercambia(ref x : ENTERO, REF y : ENTERO) ES aux : ENTERO; aux := x; x := y; y := aux; 2. Calcular

Más detalles

Analisis de algoritmos

Analisis de algoritmos Analisis de algoritmos Eficiencia Es la capacidad de disponer de un recurso. En el caso de los algoritmos, la eficiencia se logra haciendo el mejor uso posible de los recursos del sistema. Recursos Qué

Más detalles

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008 INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema

Más detalles

MATEMATICA GRADO 9 II PERIODO PROF. LIC. ESP. BLANCA NIEVES CASTILLO R. CORREO: cel

MATEMATICA GRADO 9 II PERIODO PROF. LIC. ESP. BLANCA NIEVES CASTILLO R. CORREO: cel GUIA DE TEORIA NO. 1 LO QUE DEBO SABER Regla de Cramer Un sistema de ecuaciones lineales se dice de Cramer cuando cumple las siguientes condiciones: Es un sistema cuadrado, con igual número de ecuaciones

Más detalles

Funciones. Parámetros por valor

Funciones. Parámetros por valor Funciones I Parámetros por valor Fundamentos de Programación Fundamentos de Programación I Llamada a la función definición subprograma Subprogramas en C++ Funciones 1 Una función es un subprograma que

Más detalles

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2 324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:

Más detalles

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011 Sorting++ Herman Schinca Clase 21 10 de Junio de 2011 Recordando Ya vimos 3 algoritmos de ordenamiento basados en la comparación entre elementos: Selection, Insertion y Bubble. Los 3 en peor caso (cuando

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos) Examen escrito de Programación 1. Jueves 5 de febrero de 2015 Se debe disponer de un documento de identificación con fotografía sobre la mesa. Se debe comenzar a resolver cada uno de los dos problemas

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos 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 detalles

1. NUMEROS REALES a. Los Números Reales

1. NUMEROS REALES a. Los Números Reales 1. NUMEROS REALES a. Los Números Reales Los números reales comprenden todo el campo de números que utilizamos en las matemáticas, a excepción de los números complejos que veremos en capítulos superiores.

Más detalles

Java para programadores

Java para programadores Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) [email protected] Contenidos Variables. Tipos

Más detalles

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,

Más detalles

Lenguaje C Bucles, Condicionales, operadores y Algoritmos.

Lenguaje C Bucles, Condicionales, operadores y Algoritmos. Lenguaje C Bucles, Condicionales, operadores y Algoritmos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Operadores Los operadores son aquellos

Más detalles

1. + 1 + fib(0) + fib (1) + fib (5) = 2. + 0 + 1 + fib(5) = 3 + fib (3) + fib (4) = 3. + fib (1) + fib (2) + fib (4) =

1. + 1 + fib(0) + fib (1) + fib (5) = 2. + 0 + 1 + fib(5) = 3 + fib (3) + fib (4) = 3. + fib (1) + fib (2) + fib (4) = Recursividad 1. Introducción. 2. Recursividad. 3. Propiedades de las definiciones o algoritmos recursivos. 4. Cadenas recursivas. 5. Definición recursiva de expresiones algebraicas. 6. Programación Recursiva.

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones [email protected] Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL BLACKJACK Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones 1. Explicación del juego de cartas del Blackjack El Blackjack

Más detalles

La segunda observación permite reformular el problema de una manera más simple:

La segunda observación permite reformular el problema de una manera más simple: Problema partición Enunciado A: dados N enteros positivos, N>1, decir si estos pueden dividirse en dos grupos cuya suma sea la misma. Ejemplo: si el conjunto es {1,2,3,9,2,11,4}, una forma de partirlo

Más detalles

TEMA 4. ESTRUCTURAS DE CONTROL

TEMA 4. ESTRUCTURAS DE CONTROL M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. 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 detalles

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Lenguaje C. Tipos de Datos Simples y Estructuras de Control Lenguaje C Tipos de Datos Simples y Estructuras de Control Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje

Más detalles

Resolución de Problemas

Resolución de Problemas Resolución de Problemas con algoritmos Colaboratorio de Computación Avanzada (CNCA) 2015 1 / 27 Contenidos 1 Introducción 2 Elementos de algoritmos Elementos Variables Estructuras de Control Condicionales

Más detalles

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos

Más detalles

Semana 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 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 detalles

Apuntadores (Punteros)

Apuntadores (Punteros) Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable

Más detalles

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.

Para 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 detalles

Tema 5.- Recursividad

Tema 5.- Recursividad Apuntes elaborados por: Raquel López, Eduardo Quevedo y Aaron Asencio Revado por: Javier Miranda el???? Tema 5.- Recursividad NOTA Todos los ejemplos que se exponen en este tema se pueden realizar utilizando

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

Diseño de compiladores. Representación intermedia Ambientes de ejecución

Diseño de compiladores. Representación intermedia Ambientes de ejecución Diseño de compiladores Representación intermedia Ambientes de ejecución Generación de la RI Es la ultima etapa del frontend de un compilador El objetivo es traducir el programa en el formato que espera

Más detalles

Algoritmos: Diseño de algoritmos por inducción

Algoritmos: Diseño de algoritmos por inducción Algoritmos: Diseño de algoritmos por inducción Alberto Valderruten LFCIA - Departamento de Computación Facultad de Informática Universidad de A Coruña, España www.lfcia.org/alg www.fi.udc.es Contenido

Más detalles

Guía práctica de estudio 05: Diagramas de flujo

Guí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 detalles

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Distinguir 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 detalles

Primer Parcial de Programación 3 (1/10/2009)

Primer Parcial de Programación 3 (1/10/2009) Primer Parcial de Programación (/0/009) Instituto de Computación, Facultad de Ingeniería Este parcial dura horas y contiene carillas. El total de puntos es 0. En los enunciados llamamos C* a la extensión

Más detalles

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

!MATRICES INVERTIBLES

!MATRICES INVERTIBLES Tema 4.- MATRICES INVERTIBLES!MATRICES INVERTIBLES!TÉCNICAS PARA CALCULAR LA INVERSA DE UNA MATRIZ REGULAR 1 Hemos hablado anteriormente de la matriz cuadrada unidad de orden n (I n ).. Es posible encontrar

Más detalles

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios > Máquinas y directorios Vamos a trabajar con el siguiente multiprocesador SMP: PowerEdge 6850 (DELL) 4 procesadores Intel Xeon 7100 de doble núcleo

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Algoritmos de Ordenamiento

Algoritmos de Ordenamiento Algoritmos de Ordenamiento Fernando A. Lagos B. Copyleft 2007 INDICE 1 Introducción Pág. 3 2 Tipos de Algoritmos Pág. 4 2.1 Algoritmos iterativos Pág. 5 2.2 Algoritmos recursivos Pág. 6 3 Método de la

Más detalles

ALGORITMICA Y PROGRAMACION POR OBJETOS I

ALGORITMICA Y PROGRAMACION POR OBJETOS I ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 2 Definiendo situaciones y manejando casos Marcela Hernández Hoyos Qué vamos a aprender en este nivel: Diferencia entre clase y objeto Modelar características

Más detalles

Tema 6: Generación de código (parte 2)

Tema 6: Generación de código (parte 2) Tema 6: Generación de código (parte 2) Procesamiento de Lenguajes Dept de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 6: Generación de código (parte 2) 1 /

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

Por ejemplo, el factorial puede definirse de manera recursiva de la siguiente manera:

Por ejemplo, el factorial puede definirse de manera recursiva de la siguiente manera: RECURSIVIDAD Existen muchas funciones matemáticas cuyos argumentos son números naturales, que pueden definirse de manera recursiva. Esto quiere decir que el valor de la función para el argumento n puede

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación Introducción Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es la clasificación u ordenación de los mismos. Se considera ordenar al proceso de reorganizar un conjunto dado

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos Amalia Duch Barcelona, marzo de 2007 Índice 1. Costes en tiempo y en espacio 1 2. Coste en los casos mejor, promedio y peor 3 3. Notación asintótica 4 4. Coste de los algoritmos

Más detalles

Java Básico. Métodos estáticos

Java Básico. Métodos estáticos Java Básico Métodos estáticos Agregando métodos estáticos En un programa es deseable separar los algoritmos y asignarles un nombre. Cada algoritmo separado será llamado método. Cuando no necesitamos crear

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7

Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7 Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7 1, Escriba un método llamado puntoscalidad que reciba como entrada el promedio de un estudiante y devuelva 4 si el promedio se encuentra

Más detalles

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 =

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 = 1. NÚMEROS NATURALES POTENCIAS DE UN NÚMERO NATURAL Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 = 3 3 3 3 El factor que se repite es la base, y el número de veces que se repite

Más detalles

TIPO DE DATO ABSTRACTO (TDA)

TIPO DE DATO ABSTRACTO (TDA) TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet Actividad Extra Clases #include #include int binario(int

Más detalles

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC. Programación n Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño o Vargas MsC. Variables y expresiones aritméticas Variables Conceptos de Memoria Una variable es un espacio en la memoria

Más detalles

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

Programación de Sistemas

Programación de Sistemas Programación de Sistemas Algoritmos de Ordenación Índice Por qué es importante la ordenación? Un par de ejemplos InsertionSort QuickSort Para cada uno veremos: En qué consisten, Casos extremos Eficiencia

Más detalles