Recorridos Iterativos y Recursivos

Slides:



Advertisements
Presentaciones similares
ESTRUCTURAS DE PROGRAMACIÓN
Advertisements

Sesión 3 Estructuras Repetitivas
Pippy (Python para niños)‏ 1.
Instrucciones y excepciones
ESTRUCTURAS ALTERNATIVAS Práctica #5 ESTRUCTURAS ALTERNATIVAS Grupo 1IL-701.
Informática I – 4to año Volumen II.
TÉCNICA DE DISEÑO BACKTRACKING
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Representación De La Información. Solo para principiantes.
Defina una clase TempMinEstacion que encapsule la representación de las temperaturas mínimas registradas en una estación meteorológica en un período y.
Tipos de Datos Abstractos Vector de Racionales
TDA Matriz Racionales Implementar un TDA MatrizRac que brinde operaciones para calcular el producto de un escalar por una matriz, la suma de dos matrices,
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
Programación 1 Estructuras de control y pseudocódigo
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Algoritmo y Estructura de Datos I
Estructuras de Datos Especificación formal de Listas.
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Genericidad Una clase genérica encapsula una estructura y brinda un conjunto de servicios cuya implementación no depende del tipo de las componentes.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Tema 4: Sentencias de control
Unidad 1 Definiciones Básicas
Programación III Clase 06 Funciones.
Estructuras de control Introducción a la programación.
Vectors (Vectores) Agustin J. González ELO329. Contenidos Qué es un vector? Declaración de Objetos Vectores Inserción y eliminación de items Uso de sub-índices.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado.
Unidad 4. Arreglos y Cadenas. Definición de Arreglo:  Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
Universidad Nacional Abierta y a Distancia
Introducción a los decimales Operaciones
El Concepto de Tipo Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa. Toda variable tiene asociado un tipo.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 7: Control del flujo en BASH Nombre unidad de.
Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.
Calculo de Predicado Clase 18. Un predicado es una función que devuelve un booleano, es decir, F es un predicado si y sólo si el tipo de F es así: F :
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
Igor Santos Grueiro. Cuando no sabemos cuánto vamos almacenar.
Unidad 4: LISTAS.
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
Introduccion al videojuego Gabriel De Ioannes Becker Clase 07.
Introducción a la Programación Orientada a Objetos VRacional Racional [] arreglo > VRacional (max : entero) > establecerElem (pos : entero, elem : Racional)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tabla.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Colección.
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
PROGRAMACION DE ROBOTS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Temas Generales sobre Microsoft Word y Excel. Para realizar un salto de pagina, que se tiene que hacer para encontrarlo: Diseño de Pagina -> Orientación.
Lic. En C.C. Ann Margareth Meza Rodríguez
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Estructuras Algorítmicas Selectivas
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación ENSAMBLADOR MC BEATRIZ BELTRÁN MARTÍNEZ.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Introducción a la Programación Orientada a Objetos Ordenamiento Ordenar una estructura de datos consiste en reacomodar sus elementos de manera tal que.
 Inicio/Final Se utiliza para indicar el inicio y el final de un diagrama; del Inicio sólo puede salir una línea de flujo y al Final sólo debe llegar.
1 Arquitecturas de Computadoras Breve repaso al algebra booleana.
GERITRIA Y GERONTOLOGIA INTRODUCCIÓN.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
INTRODUCCION AL LIBRO DE MATEO.
TITULO DEL TEMA INTRODUCCION.
Leccion 5: Escogiendo un Tipo de Variable
Hoja de cálculo Microsoft Excel

EJERCICIOS Objetivo: Resolver ejercicios y problemas en el conjunto de los números enteros.
Transcripción de la presentación:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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