Vous êtes sur la page 1sur 15

TEMA 1 INTRODUCCIN A LAS ESTRUCTURAS DE DATOS, APLICACIONES EN JAVA CONCEPTO DE TIPO DE DATO Un tipo de datos es una especificacin de rango

y tipo de valores que puede adoptar una variable. De acuerdo al lenguaje de programacin especfico, cada tipo de dato tiene definido un tamao de memoria. TIPOS DE DATOS PRIMITIVOS En Java los tipos de datos primitivos tienen un comportamiento particular, diferente de los objetos, y permiten declarar variables, esto es, asignar un tamao de memoria a la variable que tiene vigencia durante la ejecucin del programa. TIPOS PRIMITIVOS ESTANDAR En Java, los tipos de datos son los siguientes: RANGO -128 a +127 -32768 a 32767 -2147483648 a 2147483647) -9223372036854775808 a 9223372036854775807 desde 1.40239846e45 a 3.40282347e+38 (IEEE 754-1985 ) desde 4.94065645841246544e324 a double 1.7976931348623157e+308 boolean true o false. char 8 Bytes desde 0 hasta 65535 (Caracteres Unicode). Los tipos de datos por defecto son: int para los enteros y double para los reales. USO DE METODOS EN JAVA Un principio fundamental del desarrollo de programas consiste en dividir un problema en partes y resolver cada parte de manera independiente (de acuerdo al principio: Divide y Vencers); posteriormente se deber unir las partes para resolver el problema general. Este procedimiento permite i) concentrarse en aspectos puntuales de la resolucin de un problema muy complejo y ii) resolver el problema con un equipo de programadores. Una de las formas ms simples que soporta Java para implementar un problema dividido en partes es mediante los mtodos. TIPO Byte short Int Long float TAMAO 1 Byte 2 Bytes 4 Bytes 8 Bytes 4 Bytes 8 Bytes

Un mtodo es un bloque de cdigo definido en una clase, que puede recibir 0 o ms parmetros y devolver o no resultados. Por ejemplo, un mtodo de la clase principal se expresa de la siguiente forma: public static void nombreMetodo(Clase parametro1, Clase parametro2){ //bloque de cdigo; } La palabra void significa que el mtodo no devolver ningn valor. Un ejemplo de un mtodo que devuelve un nmero entero es: public static int nombreMetodo(Clase parametro){ //bloque de cdigo; return valorEntero; } En este caso, el mtodo devuelve un valor entero, por lo tanto se debe usar la palabra return para devolver ese valor. Un mtodo se invoca mediante el nombre de la clase a la que pertenece, seguido por un punto, seguido por el nombre del mtodo, seguido por parntesis con la lista de valores, variables y/o expresiones que representan los argumentos. CADENAS Una cadena es una secuencia finita de cero o ms caracteres alfanumricos y smbolos. En java, una cadena es un objeto que pertenece a la clase String; sin embargo por su gran aplicacin, se lo usa y confunde con un tipo de dato primitivo. La caracterstica ms destacable de las cadenas en Java es que son inmutables, es decir, no se puede alterar o modificar el tamao de las mismas; en consecuencia, el siguiente cdigo: String cad=Informtica; cad=Ingeniera +cad; System.out.println(cad); implica la creacin de tres objetos distintos: Informtica, Ingeniera e Ingeniera Informtica, esta ltima asignada a cad.

La manera directa de crear o instanciar un objeto de la clase cadena es: String cadena=Empezamos bien Programacin II); La declaracin formal de instanciar el objeto cadena es: String cadena=new String(Empezamos mejor Programacin II); Ambas expresiones tienen el mismo efecto. El identificador cadena, a diferencia de las variables, que estn ligados a un rea de memoria especfico, se denomina REFERENCIA y equivale a un apuntador que tiene la capacidad de apuntar a un objeto de la clase String; en consecuencia, no se encuentra ligada a ningn rea de memoria especficamente, sino que puede apuntar a cualquier rea de memoria donde exista un objeto de la clase String. Una referencia, al ser un elemento independiente del objeto, puede crearse sin necesidad de apuntar a ningn objeto, pero por precaucin se le asigna el valor null, que no corresponde a ningn lugar de memoria: String cadena=null; Luego, cadena no apunta a nada, pero tiene la posibilidad de apuntar a cualquier objeto de la clase String. En consecuencia, un mismo objeto podra ser apuntado por cero o ms referencias; en el caso particular que el objeto no tenga referencia, el recolector de basura de Java, automticamente lo elimina. METODOS DE LA CLASE STRING La clase String contiene varios mtodos para operar sobre las cadenas, facilitando la tarea del programador; la siguiente tabla resume los mtodos ms empleados de esta clase: METODO char charAt(int indice) DESCRIPCION Devuelve el carcter en la posicin indicada por index. El rango de index va de 0 a length() - 1. Devuelve el cdigo Unicode del carcter del ndice indicado Compara esta cadena con cad y devuelve un entero con la posicin relativa del primer carcter diferente entre cad y esta cadena. Si

int codePointAt(int ndice) int comparteTo(String cad)

cad est alfabticamente delante de esta cadena, de un valor positivo. Compara esta cadena con el objeto especificado. El resultado es true si el argumento es un objeto String que contiene la misma secuencia de caracteres. Compara esta cadena con s, ignorando maysculas y minsculas. Devuelve el ndice donde se produce la primera aparicin de c. Devuelve -1 si c no est en el string. Alternativamente el argumento puede ser el entero que corresponde al cdigo Unicode del carcter. Devuelve el ndice donde se encuentra la primera aparicin de c, a partir de pos. Devuelve el ndice donde se localiza la primera ocurrencia de s en esta cadena. Devuelve el ndice donde se encuentra la primera ocurrencia de s, a partir de pos. Devuelve el tamao o nmero de caracteres de esta cadena. Devuelve una subcadena desde el ndice inicio hasta el final de esta cadena. Devuelve una subcadena desde el ndice inicio hasta el ndice fin (ste ltimo se excluye). Devuelve una cadena correspondiente al entero i. Hay mtodos equivalentes donde el argumento es un float, double, etc. Debe observarse que es un mtodo esttico. Transforma esta cadena en un array de caracteres. Transforma esta cadena a maysculas o a minsculas. Reemplaza en esta cadena los caracteres viejoChar por nuevoChar.

boolean equals(Object obj)

boolean equalsIgnoreCase(String s)

int indexOf(char c)

Int indexOf(char c, int pos) int indexOf(String s) int indexOf(String s, int pos) int length() String substring(int inicio) String substring(int inicio, int fin)

static String valueOf(int i)

char[] toCharArray() String toLowerCase() String toUpperCase() String replace (char viejoChar, char nuevoChar)

String replaceAll (String viejaCad, String nuevaCad) boolean startsWith(String str) boolean endsWith(String str)

Reemplaza en esta cadena las subcadenas viejaCad por nuevaCad. Devuelve true si esta cadena comienza por str. Devuelve true si esta cadena termina con la cadena str. Elimina los espacios al principio ni al final de esta cadena; no elimina los espacios en blanco situados entre palabras. Comprueba si una subcadena de esta cadena, que empieza en thisoffset y tiene un tamao igual a len, es igual a la subcadena de s2 que empieza en s2offset y tiene tamao igual a len. Cuando se usa boolean = true, se ignoran maysculas y minsculas Devuelve una cadena correspondiente al objeto (ver ejemplos al final de la tabla)

String trim()

boolean regionMatch( int thisoffset,String s2,int s2offset,int len ); boolean regionMatch( boolean ignoreCase,int thisoffset,String s2, int s2offset,int 1 ); String toString()

Convierte la subcadena de esta cadena, que void getChars(int ini, int fin, char[] empieza en el ndice ini y termina en el ndice fin, en un arreglo de caracteres y los almacena destino, int destIni) en el arreglo destino, a partir del ndice destIni. static String concat( String s ) Concatena esta cadena con la cadena s.

METODOS DE CONVERSIN DE TIPOS CON CADENAS Algunos mtodos de conversin de datos relacionados con cadenas, que no pertenecen a la clase String son: String Byte.toString(Byte b); String Short.toString(Short s); String Integer.toString(int n); String Double.toString(double d); String Float.toString(float f); String Boolean.toString(Boolean b); String Character.toString(char car); Devuelve una cadena correspondiente al objeto correspondiente al parmetro.

byte Byte.parseByte(String cad); short Short.parseShort(String cad); int Integer.parseInt(String cad); long Long.ParseLong(String cad); Convierte la cadena cad, si es consistente, al float Float.parseFloat(String cad); tipo de dato especfico. double Double.parseDouble(String cad); boolean Boolean.parseBoolean(String cad); byte Byte.parseByte(String cad, int b); short Short.parseShort(String Convierte la cadena cad que se encuentra en cad, int b); int Integer.parseInt(String cad, int la base b, al tipo de dato especfico. b); long Long.ParseLong(String cad, int b); El mtodo Scanner tiene los siguientes mtodos para leer cadenas de teclado: next(); nextLine(); next() solo lee una palabra a la vez, y no lee los cdigos ocultos de retorno de carro. nextLine() lee una lnea completa. EJERCICIOS Ejemplo 1: Escribir un programa que lea un nmero entero n (n>0) y varias palabras hasta la introduccin de la palabra fin y despliegue las cadenas que tienen menos de n caracteres. Por ejemplo, si el nmero es 8 y las palabras son: Programacin, I, Carrera, de, Ingeniera, Informtica, el resultado ser: I Carrera de. Ejemplo 2: Escribir un programa que lea una letra y una cadena de varias palabras y despliegue el nmero de veces que la letra se encuentra en la cadena. Por

ejemplo si la letra es: a y la cadena es: Ingeniera Informtica, el resultado ser: 2. Ejemplo 3: Escribir un programa que lea una letra y una cadena de varias palabras y despliegue el nmero de veces que la letra se encuentra cada palabra. Por ejemplo si la letra es: a y la cadena es: Ingeniera Informtica, el resultado ser: Ingeniera, 1 Informtica, 1 Ejemplo 4: Leer un programa que lea una cadena y la despliegue al revs. Por ejemplo, si la cadena es Programacin I, el resultado ser: I nicamargorP. Ejemplo 5: Escribir un programa que lea una palabra, separe todas las letras con un espacio y la despliegue. Por ejemplo, si la palabra es: Infor, se desplegar: I n f o r. Ejemplo 6: Escribir un programa que lea una cadena y la despliegue cambiando las minsculas por maysculas y las maysculas por minsculas. Por ejemplo si la cadena es: Ingeniera Informtica, el resultado ser: iNGENIERA iNFORMTICA". Ejemplo 7: Escribir un programa que despliegue una cadena leda por teclado, en forma vertical, en orden ascendente y descendente en dos columnas separadas por un espacio; por ejemplo si la cadena es "Hola Ing.", se desplegar: H. og ln aI Ia nl

go .H Ejemplo 8: Escribir un programa para determinar la cantidad de vocales de una cadena cualquiera (incluyendo maysculas, minsculas y acentuadas); por ejemplo si la cadena es Hola Informticos, la respuesta ser: Existen 7 vocales. Ejemplo 9: Determinar la cantidad de palabras de una cadena cualquiera, cuya palabras pueden encontrarse separadas por uno o ms espacios, o por smbolos de puntuacin (. , ; ); por ejemplo si la cadena es Hola,estudiantes deInformtica., la respuesta ser: Existen 4 palabras. Ejemplo 10: Escribir un programa que lea una palabra e indique si la misma es un palndroma. Una palabra es palndroma si se lee igual de izquierda a derecha y viceversa, ignorando letras maysculas y minsculas. Por ejemplo si la palabra es: Oruro, el resultado ser true. Ejemplo 11: Escribir un programa que lea una palabra y una cadena de varias palabras e indique las veces que la palabra aparece en la cadena, respetando maysculas y minsculas. Por ejemplo, si la palabra es: la y la cadena es: La programacin y la carrera de Informtica, el resultado ser 1. Ejemplo 12: Escribir un programa que, dada una cadena, despliegue la misma, truncada a ambos lados, en forma triangular con justificacin central; por ejemplo si la frase es "Hola Informticos", se deber desplegar: Hola Informticos ola Informtico la Informtic a Informti Informt

nform form or Ejemplo 13: Escribir un programa que lea una cadena de caracteres e indique si la cadena leda es palndromo o no. Una cadena es palndromo si se lee igual de izquierda a derecha y viceversa, ignorando los espacios y letras maysculas y minsculas. Por ejemplo si la cadena es: Anita lava la tina, el resultado es true. ARREGLOS Un arreglo es un conjunto de elementos homogneos, organizados de forma rectangular, el que se trata como una entidad y posibilita el acceso a cada elemento en particular mediante ndices correlativos. En Java un arreglo es un objeto y puede contener cero o ms elementos de tipo primitivo u cualquier otro objeto, incluyendo otros arreglos. Los ndices de los arreglos en Java empiezan en cero. Los arreglos se clasifican en unidimensionales (vectores), bidimensionales (matrices) y multidimensionales (de ms de dos dimensiones). ARREGLOS UNIDIMENSIONALES, VECTORES Un arreglo unidimensional consiste en una disposicin lineal de elementos, cuyos elementos son indizados secuencialmente empezando en cero. La creacin de un arreglo unidimensional se realiza de la siguiente forma: Tipo/Clase[] identificador=new Tipo/Clase[tamao]; O bien de la siguiente forma equivalente: Tipo/Clase identificador []=new Tipo/Clase[tamao]; Por ejemplo para crear un arreglo de 15 elementos de tipo entero ser: int[] vector=new int[15]; o bien int vector[]=new int[15]; Un caso particular de creacin de un arreglo consiste en especificar los valores directamente en la declaracin, por ejemplo: tipo identificador[] = { valor1, valor2, , valorN };

El acceso a un elemento en particular, lectura o escritura, se realiza mediante la referencia seguido por el ndice correspondiente entre corchetes, por ejemplo: vector[4]; RECORRIDO DEL ARREGLOS Es una operacin que consiste en acceder secuencialmente a los elementos del arreglo en un sentido especfico. Esta operacin se realiza mediante un bucle. Ejemplo 14: Escribir un programa que almacene en un arreglo, de diez elementos, los nmeros enteros del 1 al 10 en orden ascendente y desplegar. Ejemplo 15: Escribir un programa que almacene en un arreglo, de 15 elementos, los nmeros enteros del 15 al 1 en orden descendente y desplegar. Ejemplo 16: Escribir un programa que lea un nmero entero y genere un arreglo de 10 elementos con todos los mltiplos del nmero ingresado por teclado y desplegar los mismos. Por ejemplo si se ingresa el nmero 3, el arreglo contendr: 3 6 9 12 15 18 21 24 27 30 Ejemplo 17: Escribir un programa para crear un arreglo de cinco elementos de tipo oubl, asigne cinco nmeros reales ledos por teclado y calcule y despliegue el promedio de todos los datos. Ejemplo 18: Escribir un programa que defina un arreglo de caracteres de diez elementos y se le asigne por teclado diez vocales cualesquiera, luego desplegar la cantidad de cada vocal existente en el arreglo. Ejemplo 19: Escribir un programa que defina un arreglo de cadenas de diez elementos y asignar por teclado diez nombres de pila de personas, luego desplegar si existe algn nombre repetido. Ejemplo 20:

Escribir un programa que cargue un arreglo con 1000 nmeros enteros aleatorios de dos dgitos y determine cuantos son menores a 55. Implementacin de la clase Vector Para disponer de los diferentes mtodos que operen con arreglos unidimensionales que se implementen en este curso y otros, es conveniente crear una clase MiVector que agrupe a los mismos y poderla usar en cualquier aplicacin que la requiera. La clase MiVector se crea de igual manera que una clase corriente con la diferencia que no contiene el mtodo main() y sus mtodos no sern estticos, por lo cual la clase MiVector tendr que ser instanciada dentro la clase que la use. Existen dos formas de implementar una clase: i) como contenedor de mtodos que actan sobre otros objetos, por ejemplo la clase Math. ii) como una estructura de datos y mtodos que actan sobre el mismo objeto y otros objetos, por ejemplo la clase String. Ejemplo 21: Escribir un mtodo que reciba por parmetros un arreglo con enteros y un nmero entero y devuelva la cantidad de veces que el nmero se encuentra en el arreglo. Ejemplo 22: Escribir un mtodo para generar un arreglo con nmeros reales aleatorios en el rango de N a M (N<M). Ejemplo 23: Escribir un mtodo para generar un arreglo con nmeros enteros aleatorios en el rango de N a M (N<M). Ejemplo 24: Escribir un mtodo para para invertir el orden de los elementos de un arreglo. Ejemplo 25: Escribir un mtodo para desordenar aleatoriamente los elementos de un arreglo. Ejemplo 26:

Un arreglo es una buena estructura para representar un polinomio, almacenando cada coeficiente del mismo en una celda y omitiendo la parte literal de cada trmino. Escribir la clase MiPolinomio que implemente un arreglo para representar un polinomio de grado n. Ejemplo 27: Escribir el mtodo sumar(pol); que sume este polinomio con el polinomio pol y devuelva el polinomio resultante. Ejemplo 28: Escribir el mtodo derivar(); que derive este polinomio y devuelva el polinomio resultante. Ejemplo 29: Escribir el mtodo multiplicar(pol); que multiplique este polinomio y devuelva el polinomio resultante. MATRICES Una matriz es un arreglo bidimensional (rectangular) de elementos homogneos (del mismo tipo), consistente de N filas y N columnas. En Java, una matriz de N filas x M columnas es un objeto que se instancia de la siguiente forma: Tipo[ ][ ] referencia=new Tipo[N][M]; RECORRIDOS EN MATRICES Consiste en una operacin que accede a los diferentes elementos de un arreglo de diferentes maneras: por filas, por columnas, diagonal principal, diagonal secundaria, etc. Ejemplo 30: Escribir un programa que crea objeto matriz de enteros de N filas y N columnas. Ejemplo 31: Escribir un mtodo que cargue una matriz de enteros leyendo sus elementos desde el teclado.

Ejemplo 32: Escribir un mtodo para desplegar una matriz de forma rectangular Ejemplo 33: Escribir un mtodo que reciba un parmetro N y devuelva una matriz cuadrada de tamao N con datos consecutivos por filas; por ejemplo si N=4, la matriz devuelta ser: 1234 2345 3456 4567 Ejemplo 34: Escribir un mtodo que reciba un parmetro N y devuelva una matriz cuadrada de tamao N con datos consecutivos hasta N; por ejemplo, si N=4, la matriz devuelta ser: 1234 2341 3412 4123 Ejemplo 35: Escribir un mtodo que reciba un parmetro N y devuelva una matriz cuadrada de tamao N con datos consecutivos crecientes y decrecientes por filas; por ejemplo, si N=4, la matriz devuelta ser: 1234 4321 1234 4321 Ejemplo 36:

Escribir un mtodo que reciba un parmetro N y devuelva una matriz cuadrada de tamao N con datos consecutivos crecientes y decrecientes por columnas; por ejemplo, si N=4, la matriz devuelta ser: 1414 2323 3232 4141 Ejemplo 37: Escribir un mtodo que reciba tres enteros: N, A y B y crea y devuelva una matriz cuadrada de tamao NxN con nmeros enteros aleatorios entre A y B. Ejemplo 38: Escribir un mtodo que reciba una matriz de enteros y un nmero N y determine cuantas veces se repite el nmero N dentro la matriz. Ejemplo 39: Escribir un mtodo que reciba una matriz con enteros y devuelva la suma de todos los datos de dicha matriz. Ejemplo 40: Escribir un mtodo que reciba por parmetro una matriz y dos enteros correspondientes a la fila y columna y devuelva otra matriz que corresponda a la submatriz inferior derecha a partir de la fila y columna indicada por los parmetros. Si fila o columna excede a los lmites de la matriz, se devolver una matriz vaca. Por ejemplo, si la matriz es: 12345 23456 34567 45678 Y la fila=3 y columna= 2, el resultado ser: 4567 5678

Ejemplo 41: Escribir un mtodo que devuelva un vector de enteros de dos elementos que contengan los ndices de la fila y columna donde se localiza el mayor dato de la matriz. Si existiesen ms de un mximo repetido, se devolver el elemento de ndices ms bajos. Ejemplo 42: Escribir un mtodo que realice la suma de esta matriz y otra pasada por parmetros. Asumir que ambas matrices sern compatibles. Ejemplo 43: Escribir un mtodo que realice el producto de esta matriz con otra pasada por parmetros. Asumir que ambas matrices sern compatibles. Programacin II, 2012

Vous aimerez peut-être aussi