La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Recorridos Iterativos y Recursivos

Presentaciones similares


Presentación del tema: "Recorridos Iterativos y Recursivos"— Transcripción de la presentación:

1 Recorridos Iterativos y Recursivos
Números L [] enteros <<Constructor>> Numeros(cant:entero) <<Comandos>> establecerNum(i:entero,num:entero) ordenar() <<Consultas>> obtenerNum(i:entero):entero estaNumero(num:entero):boolean particionado(pos:entero):boolean mayorNumero():entero ordenado(): booleano Asume que i es una posición válida Introducción a la Programación Orientada a Objetos

2 Recorridos Iterativos y Recursivos
estaNumero(num) retorna verdadero si y solo sí L[i]=num para algún i tal que 0<=i<L.length mayorNumero() retorna num tal que num = L[i] y L[i]>=L[j] para 0<=i<L.length t 0<=j<L.length ordenado() retorna verdadero si solo sí L[i]<=L[i+1] para 0<=i<L.length-1 parcicionado(pos:entero) decide si L[i] < L [pos] para 0<=i<pos y L[j] > L [pos] para pos<j<L.length ordenar() reacomoda los elementos de modo que queden ordenados en forma creciente. Diseñamos e implementamos métodos correctos, legibles y eficientes. Introducción a la Programación Orientada a Objetos

3 Recorridos Iterativos y Recursivos
Dado un arreglo L con n elementos L0,L1, …, Ln-1 estaNumero(num) retorna verdadero si uno de los elementos de L es num. Planteo Iterativo Comparar cada elemento Li con num Condición de corte La comparación es verdadera o se agota la estructura Algoritmo Iterativo para 0 <= i < n y mientras no encuentre si num = Li encontro el elemento n es la cantidad de elementos Introducción a la Programación Orientada a Objetos

4 Recorridos Iterativos y Recursivos
Implementación public boolean estaNumero(int num){ int i=0; esta=false; int n=L.length; while ((i<n) && !esta){ if (L[i] == num) esta=true; else i++; } return esta; Buscamos soluciones correctas, legibles y eficientes. Introducción a la Programación Orientada a Objetos

5 Recorridos Iterativos y Recursivos
Dado un arreglo L con n elementos L0,L1, …, Ln-1 estaNumero(num) retorna verdadero si uno de los elementos de L es num. Retorna verdadero si el último elemento es num o num está en L0,L1, …, Ln-2 Ln-1=num o num está en L0, …, Ln-2 Una alternativa de solución es generar un nuevo arreglo sin el elemento Ln-1 Es una alternativa natural pero muy ineficiente. Introducción a la Programación Orientada a Objetos

6 Recorridos Iterativos y Recursivos
Dado un arreglo L con n elementos L0,L1, …, Ln-1 estaNumero(num) retorna verdadero si uno de los elementos de L es num false n<=0 true Ln-1=num estaNum(num,n-1) en otro caso estaNum(num,n) Definimos estaNum agregando un argumento que la cantidad de elementos considerados Introducción a la Programación Orientada a Objetos

7 Recorridos Iterativos y Recursivos
Solución Recursiva private boolean estaNum (int num, int n){ boolean esta; if (n<=0) esta=false; else if (L[n-1]==num) esta = true; else esta = estaNum(num,n-1); return esta; } Introducción a la Programación Orientada a Objetos

8 Recorridos Iterativos y Recursivos
Solución Recursiva private boolean estaNum (int num, int n){ boolean esta; return esta; } public boolean estaNumero (int num){ return estaNum (num,L.length); Introducción a la Programación Orientada a Objetos

9 Recorridos Iterativos y Recursivos
mayorNumero() retorna el mayor elemento del arreglo Planteo Iterativo Comenzando con el segundo comparar cada elemento del arreglo con el mayor encontrado entre los anteriores, para la primera comparación asumir que el primero es el mayor. Algoritmo Iterativo mayor = L0 para i=1,2,…,n-1 si Li > mayor mayor = Li Introducción a la Programación Orientada a Objetos

10 Recorridos Iterativos y Recursivos
mayorNumero() retorna el mayor elemento del arreglo Planteo Recursivo Caso trivial: El arreglo tiene un único elemento que es el mayor Caso recursivo: El mayor elemento del L0,L1, …, Ln-1 es el mayor entre el último y el mayor elemento de L0,L1, …, Ln-2 . Introducción a la Programación Orientada a Objetos

11 Recorridos Iterativos y Recursivos
mayorNumero() retorna el mayor elemento del arreglo Algoritmo MayorNum DE n si n = 1 mayor = L0 sino mayor = mayorNum(n-1) si Ln-1> mayor mayor=Ln-1 Introducción a la Programación Orientada a Objetos

12 Recorridos Iterativos y Recursivos
mayorNumero() retorna el mayor valor almacenado en el arreglo Solución Recursiva Private int mayorNum ( int n){ int mayor; return mayor; } Public int mayorNumero (){ return mayorNum (L.length); Introducción a la Programación Orientada a Objetos

13 Recorridos Iterativos y Recursivos
particionado(pos:entero) decide si L[i] < L [pos] para 0<=i<pos y L[j] > L [pos] para pos<j<L.length Algoritmo iterativo DE pos verificatrue para i=0,1,…,L.length-1 y mientras verifica si (i < pos y L[i] > L[pos]) o (i > pos y L[i] < L[pos]) verificafalse Introducción a la Programación Orientada a Objetos

14 Recorridos Iterativos y Recursivos
particionado(pos:entero) decide si L[i] < L [pos] para 0<=i<pos y L[j] > L [pos] para pos<j<L.length Algoritmo iterativo DE pos verificatrue para i=0,1,…,pos-1 y mientras verifica si (L[i] > L[pos]) verificafalse para i=pos+1,…,L.length-1 y mientras verifica si (L[i] < L[pos]) Introducción a la Programación Orientada a Objetos

15 Recorridos Iterativos y Recursivos
ordenar() reacomoda los elementos de modo que queden ordenados en forma creciente. Método de ordenamiento Ubicar el menor elemento en la primera posición, el menor elemento entre los restantes en la segunda posición y así siguiendo Más adelante vamos a proponer otros métodos de ordenamiento Introducción a la Programación Orientada a Objetos

16 Recorridos Iterativos y Recursivos
ordenar() reacomoda los elementos de modo que queden ordenados en forma creciente. Buscar el menor elemento Ubicarlo en la primera posición Buscar el menor elemento a partir de la segunda posición Ubicarlo en la segunda posición Introducción a la Programación Orientada a Objetos

17 Recorridos Iterativos y Recursivos
ordenar() reacomoda los elementos de modo que queden ordenados en forma creciente. Algoritmo iterativo para i=0,1,…,n-1 Buscar el menor elemento a partir de la posición i Ubicarlo en la posición i Introducción a la Programación Orientada a Objetos

18 Recorridos Iterativos y Recursivos
ordenar() reacomoda los elementos de modo que queden ordenados en forma creciente. Algoritmo iterativo para i=n-1,n-2,…,1 m= posicion del mayor elemento (i) intercambiarElementos (i,m) Introducción a la Programación Orientada a Objetos

19 Recorridos Iterativos y Recursivos
ordenar() reacomoda los elementos de modo que queden ordenados en forma creciente. Algoritmo Recursivo si el arreglo tiene un elemento está ordenado sino Buscar el mayor elemento Ubicarlo en la última posición Ordenar el arreglo sin considerar el último elemento Introducción a la Programación Orientada a Objetos

20 Recorridos Iterativos y Recursivos
Palabra pal [] char Crea una palabra con el mismo contenido y longitud que la cadena recibida <<Constructor>> Palabra(s:String) <<Comandos>> establecerLetra(i:entero,l:char) <<Consultas>> obtenerLetra(i:entero):char esPrefijo(p:Palabra):boolean esSufijo(p:Palabra):boolean estaContenida(p:Palabra):boolean esPalindrome():boolean histograma():Numeros Introducción a la Programación Orientada a Objetos

21 Recorridos Iterativos y Recursivos
histograma():Numeros retorna un objeto de clase Números que mantiene la cantidad de apariciones de cada letra en la palabra. El subíndice en el arreglo representa una letra (el subíndice 0 representa los caracteres “a” y “A”). El contenido en el arreglo representa la cantidad de apariciones de la letra en la palabra. Introducción a la Programación Orientada a Objetos


Descargar ppt "Recorridos Iterativos y Recursivos"

Presentaciones similares


Anuncios Google