Descargar la presentación
La descarga está en progreso. Por favor, espere
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 verificatrue 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]) verificafalse 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 verificatrue para i=0,1,…,pos-1 y mientras verifica si (L[i] > L[pos]) verificafalse 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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.