Manual Estructura de Datos-Funciones y Metodos

25
 Estructura de Datos Luis rias Hidalgo ID T - 1 - Tema 4: Funciones y Procedimientos Funciones. Las funciones son bloques de código utilizados para dividir un programa en partes más pequeñas, cada una de las cuáles tendrá una tarea determinada. para luego retornar al punto desde donde fue llamada. Es decir es un conjunto de sentencias que hacen un proceso y devuelven un valor.  Algun as funciones hacen u n proce so pe ro no devuelven nada , en este caso a la fun ción se le conoce como método o procedimiento Sintaxis:  tipo_función nombre_función (tipo y nombre de argumentos) { bloque de sentencias } tipo_función: puede ser de cualquier tipo de los que conocemos. El valor devuelto por la función será de este tipo. Por defecto, es decir, si no indicamos el tipo, la función devolverá un valor de tipo entero ( int ). Si no queremos que retorne ningún valor deberemos indicar el tipo vacío ( void ). nombre_función: es el nombre que le daremos a la función. tipo y nombre de argumentos: son los parámetros que recibe la función. Los argumentos de una función no son más que variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones que no reciban argumentos. bloque de sentencias:  es el conjunto de sentencias que serán ejecutadas cuando se realice la llamada a la función. Las funciones pueden ser llamadas desde la función main o desde otras funciones. Nunca se debe llamar a la función main desde otro lugar del programa. Por último recalcar que los argumentos de la función y sus variables locales se destruirán al finalizar la ejecución de la misma. Ejemplo /* 1) */ int sumar(int a , int b) /* 2) */ { /* 3) */ return a + b; /* 4) */ } 1) cabecera del método : int sumar(int a,int b) tipo del resultado : int nombre del método : sumar lista de parámetros : int a,int b 2) comienzo del bloque o cuerpo del método 3) Instrucción : se retorna la suma de a y b 4) fin del bloque

Transcript of Manual Estructura de Datos-Funciones y Metodos

Page 1: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 1/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 1 -

Tema 4: Funciones y Procedimientos

Funciones.Las funciones son bloques de código utilizados para dividir un programa en partes más pequeñas,

cada una de las cuáles tendrá una tarea determinada.

para luego retornar al punto desde donde fue llamada.Es decir es un conjunto de sentencias que hacen un proceso y devuelven un valor.

Algunas funciones hacen un proceso pero no devuelven nada , en este caso a la función se le conoce

como método o procedimiento

Sintaxis:

 

tipo_función nombre_función (tipo y nombre de argumentos)

 

{bloque de sentencias

 

}

tipo_función : puede ser de cualquier tipo de los que conocemos. El valor devuelto por la funciónserá de este tipo. Por defecto, es decir, si no indicamos el tipo, la función devolverá un valor de tipoentero ( int ). Si no queremos que retorne ningún valor deberemos indicar el tipo vacío ( void ).

nombre_función: es el nombre que le daremos a la función.

tipo y nombre de argumentos: son los parámetros que recibe la función. Los argumentos de unafunción no son más que variables locales que reciben un valor. Este valor se lo enviamos al hacerla llamada a la función. Pueden existir funciones que no reciban argumentos.

bloque de sentencias: es el conjunto de sentencias que serán ejecutadas cuando se realice lallamada a la función.

Las funciones pueden ser llamadas desde la función main o desde otras funciones. Nunca sedebe llamar a la función main desde otro lugar del programa. Por último recalcar que losargumentos de la función y sus variables locales se destruirán al finalizar la ejecución de la misma.

Ejemplo

 /* 1) */ int sumar(int a , int b)  /* 2) */ {  /* 3) */ return a + b;  /* 4) */ }

1) cabecera del método : int sumar(int a,int b)tipo del resultado : int

nombre del método : sumarlista de parámetros : int a,int b

2) comienzo del bloque o cuerpo del método

3) Instrucción : se retorna la suma de a y b

4) fin del bloque

Page 2: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 2/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 2 -

Si se coloca las palabras public static antes del método se logra un comportamiento de tipoglobal.

1.- Crear una function que devuleva la suma de 2 numeros

class suma

{ public static void main(String arg[ ]){

int x,y;x = 12;y = 34;

int s = suma(x,y);System.out.println("La suma es : " + s);

} //Aqui se define la funcion

public static int suma(int a,int b){

return a + b;}

}

Resultado:

1.- Crear una function que devuelva TRUE si un numero es par caso contario devuelva FALSE

class metodo1{

public static void main(String arg[ ]){

int a = 5;if ( par(a) == true){

System.out.println(a + " es par ");}else{

System.out.println(a + " es impar");}

}public static boolean par(int num)

{boolean p = false;if (num % 2 == 0){

p = true;}

return p;}

}

Page 3: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 3/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 3 -

3.- implementar un programa en java que determine los 100 primeros números palíndromes a partirde un número ingresado por teclado en adelante, llamando al método : invertir_num.

class palindromes{

public static void main(String Arg[ ]){

int numero = 0;int contador = 0;numero = Integer.parseInt(JOptionPane.showInputDialog(“Ingrese numero”));System.out.println("\nLos 100 primeros palindromes a contar del " + numero);System.out.println("\n");while (contador < 100) {

if ( invertir_num(numero) == numero){

System.out.print(numero + "\t");contador++;

}

numero++;}

}public static int invertir_num ( int num ){

int div_entera,resto,num_inv;

num_inv = 0;div_entera = num;resto = 0;

while (div_entera != 0){

resto = div_entera % 10;div_entera = div_entera / 10;num_inv = num_inv * 10 + resto;

}

return num_inv;}

}

Page 4: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 4/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 4 -

Paso de valores a funciones 

En el paso de parámetros a funciones hay dos aproximaciones clásicas: el paso por valor y pasopor referencia.

Paso por valor significa que cuando un argumento se pasa a una función, la función recibe una

copia del valor original. Por lo tanto, si la función modifica el parámetro, sólo la copia cambia y elvalor original permanece intacto.

Paso por referencia significa que cuando un argumento se pasa a una función, la funciónrecibe la dirección de memoria del valor original, no la copia del valor. Por lo tanto, si la funciónmodifica el parámetro, el valor original en el código que llamó a la función cambia.

Ejercicios Resueltos 

1. Imprimir nombre y promedio de un alumno, capturar 3 calificaciones y nombre en unprocedimiento, calcular promedio en una función y mostrar los resultados.

Pasando parámetros por valor

package ejemplo1;import javax.swing.JOptionPane;public class Main {

static double promedio (int n1, int n2, int n3){double prom;prom = (n1+n2+n3)/3;return prom;

}static int pedirnum(){

String nota =JOptionPane.showInputDialog("Ingrese Nota1:");return Integer.parseInt(nota);

}public static void main(String[] args) {

String nota;int n1,n2,n3;double prom;n1 = pedirnum();n2 = pedirnum();n3 = pedirnum();prom = promedio(n1,n2,n3);JOptionPane.showMessageDialog(

null,prom,"Resultado",JOptionPane.INFORMATION_MESSAGE);

}}

Page 5: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 5/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 5 -

2. Crear una tabla de multiplicar, capturar datos de entrada en función, control de ciclo en elprincipal, operaciones en una función, muestra de datos en el principal.

import javax.swing.JOptionPane;

public class Main {public int pedirnum(){

String nota =JOptionPane.showInputDialog("Ingrese Nota1:");return Integer.parseInt(nota);

}public String tabla(int num,int por){

return (num + " x " +por + " = "+num*por);}public static void main(String[] args) {

int i,n = pedirnum();for (i=0;i<=12;i++){

System.out.println(tabla(n,i));}

}}

Ejercicios resueltos 

1.- Hacer un programa que ejecute un procedimiento, el cual imprime una variable y su valor.

import java.io.*;public class Ejemplo {public static void main(String[] args) {

int x; x = 10;proc1();System.out.println("x="+x);

}static void proc1(){

int y;y = 20;System.out.println("y="+y);

};} // cierra clase

Page 6: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 6/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 6 -

2.- Hacer un programa que muestre datos (enteros y cadenas) mediante procesos, una función“operación” que regrese de a cuerdo al parámetro recibido: el doble si es número o agregue lapalabra “IDAT” si es cadena. La captación de variables será mediante func iones.

import javax.swing.JOptionPane;public class Ejercicio1 {

public static void main(String args[]){Ejercicio1 x = new Ejercicio1();x. mostrar(123); x.mostrar("hola");x.mostrar( x.operacion(5) );x.mostrar( x.operacion("Hola") );String s = x.pedir("Ingrese cadena");int i = x.pedir("ingrese numero", 5);x. mostrar(s); x.mostrar(i);

}public void mostrar(String msj){

JOptionPane.showMessageDialog(null,msj);}public void mostrar(int msj){

JOptionPane.showMessageDialog(null,””+msj);}public int operacion(int var){

return var*2;}public String operacion(String cad){

return cad + " IDAT";}public int pedir(String msj, int i){

String var =JOptionPane.showInputDialog(msj);return Integer.parseInt(var);

}public String pedir(String msj){

return JOptionPane.showInputDialog(msj);}

}

3.- Construir un programa que contenga el siguiente menú con las opciones:1-Pasar de Soles a Dolares2-Calcular el area de un triangulo3-Calcular el precio de una venta (cantidad * precio)0-Salir

Page 7: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 7/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 7 -

import javax.swing.JOptionPane;public class NewClass {

public static void main(String args[]){String menu="Menu de Opciones"+

"\n1.-Soles a Dolares"+"\n2.-Area de un triángulo"+"\n3.-Boleta de venta"+"\n0.-Salir";

int op;do{

NewClass x = new NewClass();double opcion = x.pedirnum(menu);op = (int)opcion;switch(op){

case 1:SolesDolar();break;case 2:Triangulo();break;case 3:Boleta();break;

}}while(op!=0);

}static double pedirnum(String msj){String nota =JOptionPane.showInputDialog(msj);return Double.parseDouble(nota);

}static String pedirlet(String msj){String nota =JOptionPane.showInputDialog(msj);return nota;

}public void mostrar(String msj){

JOptionPane.showMessageDialog(null,msj);}public void mostrar(double msj){

JOptionPane.showMessageDialog(null,msj);}public static void SolesDolar(){

double soles=pedirnum("Ingrese Cantidad en Soles");NewClass x = new NewClass();x.mostrar(soles*3.12);

}public static void Triangulo(){

NewClass x = new NewClass();double b = pedirnum("Ingrese Base");double h = pedirnum("Ingrese Altura");double area = b*h/2;x.mostrar("El area es : " + area);

}public static void Boleta(){NewClass x = new NewClass();double can = pedirnum("Ingrese Cantidad");double costo= pedirnum("Ingrese Costo");double total = can*costo;x.mostrar("El total es" + total);

}}

Page 8: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 8/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 8 -

Funciones de Cadenas (Clase String)

Dentro de un objeto de la clases String o StringBuffer , Java crea un array de caracteres de unaforma similar a como lo hace el lenguaje C++. A este array se accede a través de las funcionesmiembro de la clase.

Los strings u objetos de la clase String se pueden crear explícitamente o implícitamente. Para crearun string implícitamente basta poner una cadena de caracteres entre comillas dobles. Por ejemplo,cuando se escribe

 

System.out.println("El primer programa");

Java crea un objeto de la clase String automáticamente.

Para crear un string explícitamente escribimos

String str=new String("El primer programa");

También se puede escribir, alternativamente

String str="El primer programa";

Para crear un string nulo se puede hacer de estas dos formas

String str="";String str=new String();

Un string nulo es aquél que no contiene caracteres, pero es un objeto de la clase String . Sinembargo,

String str;

está declarando un objeto str de la clase String , pero aún no se ha creado ningún objeto de estaclase.

Cómo se obtiene información acerca del string 

Una vez creado un objeto de la clase String podemos obtener información relevante acerca delobjeto a través de las funciones miembro.

Para obtener la longitud, número de caracteres que guarda un string se llama a la función miembrolength. 

 

String str="El primer programa";int longitud=str.length();

Podemos conocer si un string comienza con un determinado prefijo, llamando al método

startsWith , que devuelve true o false, según que el string comience o no por dicho prefijo

 

String str="El primer programa";boolean resultado=str.startsWith("El");

Page 9: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 9/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 9 -

En este ejemplo la variable resultado tomará el valor true.

De modo similar, podemos saber si un string finaliza con un conjunto dado de caracteres, mediantela función miembro endsWith . 

String str="El primer programa";

boolean resultado=str.endsWith("programa");

Si se quiere obtener la posición de la primera ocurrencia de la letra p, se usa la función indexOf . 

String str="El primer programa";int pos=str.indexOf('p');

Para obtener las sucesivas posiciones de la letra p, se llama a otra versión de la misma función

pos=str.indexOf('p', pos+1);

El segundo argumento le dice a la función indexOf que empiece a buscar la primera ocurrencia de

la letra p a partir de la posición pos+1.

Otra versión de indexOf busca la primera ocurrencia de un substring dentro del string.

String str="El primer programa";int pos=str.indexOf("pro");

Vemos que una clase puede definir varias funciones miembro con el mismo nombre pero quetienen distinto número de parámetros o de distinto tipo.

La comparación de strings nos da la oportunidad de distinguir entre el operador lógico == y lafunción miembro equals de la clase String . En el siguiente código

 

String str1="El lenguaje Java";String str2=new String("El lenguaje Java");

if(str1==str2){System.out.println("Los mismos objetos");

}else{System.out.println("Distintos objetos");

}if(str1.equals(str2)){

System.out.println("El mismo contenido");}else{

System.out.println("Distinto contenido");}

Esta porción de código devolverá que str1 y str2 son distintos objetos pero con el mismo contenido.str1 y str2 ocupan posiciones distintas en memoria pero guardan los mismos datos.

Cambiemos la segunda sentencia y escribamos

String str1="El lenguaje Java";String str2=str1;

System.out.prinln("Son el mimso objeto "+(str1==str2);

Page 10: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 10/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 10 -

Los objetos str1 y str2 guardan la misma referencia al objeto de la clase String creado. La

expresión (str1==str2 ) devolverá true.

Asi pues, el método equals compara un string con un objeto cualquiera que puede ser otro string,

y devuelve true cuando dos strings son iguales o false si son distintos.

String str="El lenguaje Java";boolean resultado=str.equals("El lenguaje Java");

La variable resultado tomará el valor true. 

La función miembro comapareTo devuelve un entero menor que cero si el objeto string es menor(en orden alfabético) que el string dado, cero si son iguales, y mayor que cero si el objeto string esmayor que el string dado.

 

String str="Tomás";int resultado=str.compareTo("Alberto");

La variable entera resultado tomará un valor mayor que cero, ya que Tomás está después deAlberto en orden alfabético.

String str="Alberto";int resultado=str.compareTo("Tomás");

La variable entera resultado tomará un valor menor que cero, ya que Alberto está antes que Tomásen orden alfabético.

En muchas ocasiones es necesario extraer una porción o substring de un string dado. Para estepropósito hay una función miembro de la clase String denominada substring . 

Para estraer un substring desde una posición determinada hasta el final del string escribimos

 

String str="El lenguaje Java";String subStr=str.substring(12);

Se obtendrá el substring "Java".

Una segunda versión de la función miembro substring , nos permite extraer un substringespecificando la posición de comienzo y la el final.

String str="El lenguaje Java";String subStr=str.substring(3, 11);

Se obtendrá el substring "lenguaje". Recuérdese, que las posiciones se empiezan a contar desdecero.

Para convertir un número en string se emplea la función miembro estática valueOf  (más adelanteexplicaremos este tipo de funciones).

int valor=10;String str=String.valueOf(valor);

Page 11: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 11/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 11 -

La clase String proporciona versiones de valueOf para convertir los datos primitivos: int, long,

float, double.

Cuando introducimos caracteres en un control de edición a veces es inevitable que aparezcanespacios ya sea al comienzo o al final. Para eliminar estos espacios tenemos la función miembrotrim  

String str=" 12 ";String str1=str.trim();

Para convertir un string en número entero, primero quitamos los espacios en blanco al principio y alfinal y luego, llamamos a la función miembro estática parseInt  de la clase Integer (clase envolventeque describe los números enteros)

 

String str=" 12 ";int numero=Integer.parseInt(str.trim());

Para convertir un string en número decimal (double) se requieren dos pasos: convertir el string en

un objeto de la clase envolvente Double , mediante la función miembro estática valueOf, y acontinuación convertir el objeto de la clase Double en un tipo primitivo double mediante la funcióndoubleValue  

 

String str="12.35 ";double numero=Double.valueOf(str).doubleValue();

Se puede hacer el mismo procedimiento para convertir un string a número entero

String str="12";int numero=Integer.valueOf(str).intValue();

El método split devuelve un array de String. Es muy útil cuando tenemos un conjunto deelementos separados por comas. Por ejemplo:

 

String colores = "rojo,amarillo,verde,azul,morado,marrón"; 

 

String[] arrayColores = colores.split(","); 

 

 // En este momento tenemos un array en el que cada elemento es un color.  for (int i = 0; i < arrayColores.length; i++) { 

System.out.println(arrayColores[i]); 

 

La salida será:rojoamarilloverde

azulmoradomarrón 

La clase StringBuffer  

En la sección dedicada a los operadores hemos visto que es posible concatenar cadenas decaracteres, es, decir, objetos de la clase String . Ahora bien, los objetos de la clase String son

Page 12: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 12/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 12 -

constantes lo cual significa que por defecto, solamente se pueden crear y leer pero no se puedenmodificar.

Imaginemos una función miembro a la cual se le pasa un array de cadenas de caracteres. Losarrays se estudiarán en la siguiente página.

 

public class CrearMensaje{public String getMensaje(String[] palabras){

String mensaje="";for(int i=0; i<palabras.length; i++){

mensaje+=" "+palabras[i];}return mensaje;

} //...}

Cada vez que se añade una nueva palabra, se reserva una nueva porción de memoria y sedesecha la vieja porción de memoria que es más pequeña (una palabra menos) para que sealiberada por el recolector de basura (grabage collector). Si el bucle se realiza 1000 veces, habrá1000 porciones de memoria que el recolector de basura ha de identificar y liberar.

Para evitar este trabajo extra al recolector de basura, se puede emplear la clase StringBuffer quenos permite crear objetos dinámicos, que pueden modificarse.

 

public class CrearMensaje{public String getMensaje(String[] palabras){

StringBuffer mensaje=new StringBuffer();for(int i=0; i<palabras.length; i++){

mensaje.append(" ");mensaje.append(palabras[i]);}return mensaje.toString();

} //...}

La función append  incrementa la memoria reservada para el objeto mensaje con una palabra mássin crear nueva memoria, cada vez que se ejecuta el bucle. La función toString , que veremos másadelante, convierte un objeto en una cadena de caracteres.

Page 13: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 13/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 13 -

Ejercicios resueltos de la Clase String 

// 1.- Constructores de la clase String.import javax.swing.*;

public class ConstructoresString {

public static void main( String args[] ){

char arregloChar[] = { 'c', 'u', 'm', 'p', 'l', 'e', ' ', 'a', 'ñ', 'o', 's' };byte arregloByte[] = { ( byte ) 'a', ( byte ) 'ñ',

( byte ) 'o', ( byte ) ' ', ( byte ) 'n',( byte ) 'u', ( byte ) 'e', ( byte ) 'v', (byte) 'o' };

String s = new String( "hola" );

 // usar constructores de StringString s1 = new String();String s2 = new String( s );String s3 = new String( arregloChar );String s4 = new String( arregloChar, 7, 4 );String s5 = new String( arregloByte, 4, 5 );String s6 = new String( arregloByte );

 // anexar objetos String a salidaString salida = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 +

"\ns4 = " + s4 + "\ns5 = " + s5 + "\ns6 = " + s6;

JOptionPane.showMessageDialog( null, salida,"Constructores de la clase String", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );}

}

Page 14: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 14/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 14 -

// 2.- Este programa demuestra los métodos length, charAt y getChars// de la clase String.import javax.swing.*;

public class VariosString {

public static void main( String args[] ){

String s1 = "hola a todos";char arregloChar[] = new char[ 4 ];

String salida = "s1: " + s1;

 // probar método lengthsalida += "\nLongitud de s1: " + s1.length();

 // iterar a través de los caracteres en s1 y mostrar al revéssalida += "\nLa cadena invertida es: ";

for ( int cuenta = s1.length() - 1; cuenta >= 0; cuenta-- )

salida += s1.charAt( cuenta ) + " ";

 // copiar caracteres de la cadena a arregloChars1.getChars( 0, 4, arregloChar, 0 );salida += "\nEl arreglo de caracteres es: ";

for ( int cuenta = 0; cuenta < arregloChar.length; cuenta++ )salida += arregloChar[ cuenta ];

JOptionPane.showMessageDialog( null, salida,"Métodos de String para manipular caracteres",JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );}

} // fin de la clase VariosString

// 3.- Los métodos equals, equalsIgnoreCase, compareTo y regionMatches de String.import javax.swing.JOptionPane;

public class CompararString {

public static void main( String args[] ){

String s1 = new String( "hola" ); // s1 es una copia de "hola"String s2 = "adiós";String s3 = "Feliz Cumpleaños";String s4 = "feliz cumpleaños";

String salida = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 +"\ns4 = " + s4 + "\n\n";

 // probar igualdadif ( s1.equals( "hola" ) ) // true

Page 15: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 15/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 15 -

salida += "s1 es igual a \"hola\"\n";else

salida += "s1 es distinta de \"hola\"\n";

 // probar igualdad con ==if ( s1 == "hola" ) // false; no son el mismo objeto

salida += "s1 es igual a \"hola\"\n";else

salida += "s1 es distinta de \"hola\"\n";

 // probar igualdad (ignorar mayúsculas)if ( s3.equalsIgnoreCase( s4 ) ) // true

salida += "s3 es igual a s4\n";else

salida += "s3 es distinta de s4\n";

 // probar compareTosalida += "\ns1.compareTo( s2 ) es " + s1.compareTo( s2 ) +

"\ns2.compareTo( s1 ) es " + s2.compareTo( s1 ) +"\ns1.compareTo( s1 ) es " + s1.compareTo( s1 ) +

"\ns3.compareTo( s4 ) es " + s3.compareTo( s4 ) +"\ns4.compareTo( s3 ) es " + s4.compareTo( s3 ) + "\n\n";

 // probar regionMatches (susceptible a mayúsculas)if ( s3.regionMatches( 0, s4, 0, 5 ) )

salida += "Los primeros 5 caracteres de s3 y s4 concuerdan\n";else

salida += "Los primeros 5 caracteres de s3 y s4 no concuerdan\n";

 // probar regionMatches (ignorar mayúsculas)if ( s3.regionMatches( true, 0, s4, 0, 5 ) )

salida += "Los primeros 5 caracteres de s3 y s4 concuerdan";else

salida += "Los primeros 5 caracteres de s3 y s4 no concuerdan";

JOptionPane.showMessageDialog( null, salida,"Comparaciones entre cadenas", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );}

} // fin de la clase CompararString

// 4.- String methods startsWith and endsWith.import javax.swing.*;

public class InicioFinString {

public static void main( String args[] ){

String cadenas[] = { "empezó", "empezando", "terminó", "terminando" };String salida = "";

 // probar el método startsWithfor ( int cuenta = 0; cuenta < cadenas.length; cuenta++ )

Page 16: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 16/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 16 -

if ( cadenas[ cuenta ].startsWith( "em" ) )salida += "\"" + cadenas[ cuenta ] + "\" empieza con \"em\"\n";

salida += "\n";

 // probar método startsWith, empezando desde la posición // 2 de la cadenafor ( int cuenta = 0; cuenta < cadenas.length; cuenta++ )

if ( cadenas[ cuenta ].startsWith( "pez", 2 ) )salida += "\"" + cadenas[ cuenta ] +

"\" empieza con \"pez\" en la posición 2\n";

salida += "\n";

 // probar el método endsWithfor ( int cuenta = 0; cuenta < cadenas.length; cuenta++ )

if ( cadenas[ cuenta ].endsWith( "do" ) )salida += "\"" + cadenas[ cuenta ] + "\" termina con \"do\"\n";

JOptionPane.showMessageDialog( null, salida,"Comparaciones con la clase String", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );}

} // fin de la clase InicioFinString

// 5.- String searching methods indexOf and lastIndexOf.import javax.swing.*;

public class MetodosIndexString {

public static void main( String args[] ){

String letras = "abcdefghijklmabcdefghijklm";

 // probar indexOf para localizar un caracter en una cadenaString salida = "'c' se encuentra en el índice " + letras.indexOf( 'c' );

salida += "\n'a' se encuentra en el índice " + letras.indexOf( 'a', 1 );

salida += "\n'$' se encuentra en el índice " + letras.indexOf( '$' );

 // probar lastIndexOf para buscar un caracter en una cadena

salida += "\n\nLa última 'c' se encuentra en el índice " +letras.lastIndexOf( 'c' );

salida += "\nLa última 'a' se encuentra en el índice " +letras.lastIndexOf( 'a', 25 );

salida += "\nEl último '$' se encuentra en el índice " +letras.lastIndexOf( '$' );

 // probar indexOf para localizar una subcadena en una cadena

Page 17: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 17/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 17 -

salida += "\n\n\"def\" se encuentra en el índice " +letras.indexOf( "def" );

salida += "\n\"def\" se encuentra en el índice " +letras.indexOf( "def", 7 );

salida += "\n\"hola\" se encuentra en el índice " +letras.indexOf( "hola" );

 // probar lastIndexOf para encontrar una subcadena en una cadenasalida += "\n\nEl último \"def\" se encuentra en el índice " +

letras.lastIndexOf( "def" );

salida += "\nEl último \"def\" se encuentra en el índice " +letras.lastIndexOf( "def", 25 );

salida += "\nEl último \"hola\" se encuentra en el índice " +letras.lastIndexOf( "hola" );

JOptionPane.showMessageDialog( null, salida,

"Métodos de búsqueda de String", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );}

} // fin de la clase MetodosIndexString

// 6.- Los métodos substring de la clase String.import javax.swing.*;

public class SubString {

public static void main( String args[] )

{String letras = "abcdefghijklmabcdefghijklm";

 // probar métodos substringString salida = "La subcadena desde el índice 20 hasta el final es " +

"\"" + letras.substring( 20 ) + "\"\n";

salida += "La subcadena desde el índice 3 hasta 6 es " +"\"" + letras.substring( 3, 6 ) + "\"";

JOptionPane.showMessageDialog( null, salida,"Métodos substring de la clase String", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );}

} // fin de la clase SubString

 // El método concat de la clase String.import javax.swing.*;

public class ConcatenacionString {

Page 18: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 18/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 18 -

public static void main( String args[] ){

String s1 = new String( "Feliz " );String s2 = new String( "Cumpleaños" );

String salida = "s1 = " + s1 + "\ns2 = " + s2;

salida += "\n\nResultado de of s1.concat( s2 ) = " + s1.concat( s2 );salida += "\ns1 después de la concatenación = " + s1;

JOptionPane.showMessageDialog( null, salida,"El método concat de String", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );}

} // fin de la clase ConcatenacionString

Page 19: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 19/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 19 -

Funciones de Fecha (Clase Date) 

Trabajar con fechas en java no es algo del otro mundo ni tiene demasiadas complicaciones, pero lacantidad de formas que hay para hacerlo puede confundirnos, o peor aún, puede que sóloconozcamos la más mala para hacerlo. Con estos artículos pretendo explicar un poco que clasestiene el lenguaje para trabajar con fechas, los métodos más usados y algunas sugerencias para

realizar un trabajo adecuado que nos facilite el mantenimiento de nuestras aplicaciones.

1.- Las clases java.util.Date y java.sql.Date. Son dos de las clases más usadas cuando una aplicación implica el trabajo con fechas:

 java.util.Date: Según la documentación "La clase java.util.Date representa un instante de tiempoespecífico, con precisión de milisegundos"; esto más que ser una especie de "autoadulación" parala clase, quiere decir que no solo se trata de una simple cadena al estilo yyyy/MM/dd, sino quealmacena hasta milisegundos y que es posible trabajar con ellos.Antes del jdk1.1 la clase java.util.Date tenía dos funciones adicionales a la que conocemos ahora,una de ellas era la interpretación de datos que tenían que ver con fechas, como años, días,segundos, entre otros. La otra era el formateo (la forma como se muestra) y parseo (convertir unString a java.util.Date). Pero debido a las dificultades que presentaban estas funcionalidades a lahora de internacionalizar los programas, esos métodos ya está obsoletos y la clase

 java.util.Calendar se encargó de esto; así que en este momento esta clase, sólo hace lo que semencionó al principio: "representa un instante de tiempo específico, con precisión demilisegundos"; más adelante veremos como ampliar esta funcionalidad. Por ahora veamos lasconvenciones que sigue esta clase:* El año "y" está representado por un entero igual a ("y" - 1900). Por ejemplo el año 2004 serepresenta como 104 (2004 - 1900).* Los meses son representados por números entre 0 y 11, donde enero es 0 y diciembre es 11.* Los días y minutos se representan de forma corriente. Entre 1 - 31 y 0 - 59 respectivamente.* Las horas van entre 0 y 23, donde la medianoche es 0 y el medio día 12.* Los segundos van entre 0 y 61. 61 solo ocurre cuando se agrega el segundo adicional paraajustar la diferencia entre el reloj atómico y el tiempo de rotación de la tierra.No sobra mencionar que los métodos para obtener el año, mes y día de esta clase ya estánobsoletos y lo único que hacen es llamar a la clase java.util.Calendar para que esta se encargue dehacerlo (una delegación).

 java.sql.Date: Esta clase hereda de java.util.Date y es la representación de la fecha cuandotrabajamos con JDBC (Java DabaBase Connectivity), es decir, son los campos almacenados enuna base de datos cuyo tipo es una fecha que puede o no incluir la hora, aunque la clase

 java.sql.Date siempre lo hace. Al igual que su clase padre, tiene una precisión de milisegundos,con la excepción que al mostrarla en la salida estándar con el formato por defecto solo muestra eldía, mes y año. Hay que anotar también que para campos que almacenen solamente horas existenotras clases para manejarlos.En resumen ambas clases, sólo se encargan de almacenar la cantidad de milisegundos que hanpasado desde las 12 de la noche del primero de enero de 1970 en el meridiano de Greenwich.Aquí vienen dos puntos importantes:a) Si la fecha que almacena cualquiera de las clases es menor a las 00:00:00 enero 1 de 1970GMT, su valor el milisegundos será negativo.b) La fecha es susceptible a la zona horaria. Por ejemplo en Colombia los milisegundos no se

empiezan a contar desde enero 1 de 1970, sino a partir de las 19:00 de diciembre 31 de 1969. Estoes importante por que si transportamos una fecha relativa de una zona a otra, podemos llegar atener problemas al confiar en los milisegundos que se tienen; además como la clase intentarepresentar el "Tiempo Universal Coordinado" (UTC) suma 0.9 segundos cada año para ajustar ladiferencia entre el reloj atómico y la velocidad de rotación de la tierra. Esto se traduce en que muydificilmente podemos basarnos en valores como 0 o 60000 para realizar validaciones, pues esosmilisegundos no son controlables cuando creamos la instancia de una fecha, peor aún, losmilisegundos no son ni siquiera iguales para la misma fecha en la misma zona horaria.

Page 20: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 20/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 20 -

Ambas clases se pueden instanciar directamente mediante new(), pero la clase java.sql.Datenecesita un parámetro en el constructor: el tiempo en milisegundos, así que las siguientesinstrucciones son válidas:

 java.util.Date fechaActual = new java.util.Date(); //Fecha actual del sistema  java.sql.Date inicioLocal = new java.sql.Date(0); //Milisegundo cero 

 //también se puede crear una instancia de java.util.Date con parámetros iniciales  java.util.Date otraFecha = new java.util.Date(1000); //El primer segundo a partir del inicio Prueba a imprimir cada uno de estos valores y fíjate en la diferencia de formatos entre

 java.sql.Date y java.util.Date. Se puede pasar de java.sql.Date a java.util.Date de dos fomas, unade ellas es con una asignación simple:

 java.util.Date utilDate = null; java.sql.Date sqlDate = new java.sql.Date(0);utilDate = sqlDate;

 /* aunque es java.util.Date,si la imprimes tendrá el formato de java.sql.Date, recordemos que java.sql.Date hereda de

 java.util.Date */  System.out.println(utilDate);

También se pueden tomar los milisegundos de java.sql.Date y pasarlos al constructor de java.util.Date: java.util.Date utilDate = null; java.sql.Date sqlDate = new java.sql.Date(0);utilDate = new java.util.Date(sqlDate.getTime());

 //esta vez se mostrará con el formato de java.util.Date System.out.println(utilDate);Para pasar de java.util.Date a java.sql.Date se deben tomar los milisegundos de la primera ypasarlos al constructor de la segunda:

 java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

 //Con formato de java.sql.Date System.out.println(sqlDate);Para comparar fechas usamos el método compareTo() que internamente compara los milisegundosentre ellas usando directamente los métodos getTime() de ambas clases.

 java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());if (utilDate.compareTo(sqlDate) == 0){

System.out.println("IGUALES");}else{

System.out.println("DIFERENTES");}O lo que es equivalente:

 java.util.Date utilDate = new java.util.Date();

 java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());if (utilDate.getTime() == sqlDate.getTime()){System.out.println("IGUALES");

}else{System.out.println("DIFERENTES");

}

2. Las clases Time y Timestamp.Ambas clases pertenecen al API JDBC y son la encargadas de representar los campos de estostipos en una base de datos. Esto no quiere decir que no se puedan usar con otros fines. Al igual

Page 21: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 21/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 21 -

que java.sql.Date, son hijas (heredan) de java.util.Date, es decir, su núcleo son los milisegundos.La clase Time es un envoltorio de la clase java.util.Date para representar los datos que consistende horas, minutos, segundos y milisegundos, mientras Timestamp representa estos mísmos datosmás un atributo con nanosegundos, de acuerdo a las especificaciones del lenguaje SQL paracampos de tipo TIMESTAMP.Como ambas clases heredan del java.util.Date, es muy fácil pasar de un tipo de dato a otro; similara la clase java.sql.Date, tanto Time como Timestamp se pueden instanciar directamente y suconstructor tiene como parámetro el número de milisegundos; como es de imaginarse, cuando semuestra alguna de las clases mediante su método toString() se ven los datos que intentanrepresentar; La clase Time sólamente muestra la hora, minutos y segundo, mientras timestampagrega fracciones de segundo a la cadena.Para convertir entre tipos de datos diferentes debemos usar los milisegundos de una clase yasignarlos a las instancias de las otras, y como la clase java.util.Date es superclase de todas, auna instancia de esta podemos asignar cualquiera de las otras, manteniendo los métodos de laclase asignada, es decir, si asignamos un Time a una java.util.Date, al imprimir se verá el mismoformato de la clase Time.Con este código:

 java.util.Date utilDate = new java.util.Date(); //fecha actual long lnMilisegundos = utilDate.getTime();

 java.sql.Date sqlDate = new java.sql.Date(lnMilisegundos);

 java.sql.Time sqlTime = new java.sql.Time(lnMilisegundos); java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(lnMilisegundos);System.out.println("util.Date: "+utilDate);System.out.println("sql.Date: "+sqlDate);System.out.println("sql.Time: "+sqlTime);System.out.println("sql.Timestamp: "+sqlTimestamp);

Se obtiene la siguiente salida:util.Date: Thu May 20 19:01:46 GMT-05:00 2004sql.Date: 2004-05-20sql.Time: 19:01:46sql.Timestamp: 2004-05-20 19:01:46.593Note que aún cuando todos los objetos tienen los mismos milisegundos el formato con el que semuestran dependen de la clase que realmente los contiene. Es decir, no importa que a un objeto

del tipo java.util.Date se le asigne uno del tipo Time, al mostrar a través de la consola se invocaráel método toString() de la clase time:utilDate = sqlTime;System.out.println("util.Date apuntando a sql.Time: ["+sqlTime+"]");utilDate = sqlTimestamp;System.out.println("util.Date apuntando a sql.Timestamp: ["+sqlTimestamp+"]");

Arroja:util.Date apuntando a sql.Time: [19:29:47]util.Date apuntando a sql.Timestamp: [2004-05-20 19:29:47.468]Pero si en vez de solo apuntar, creamos nuevas instancias con los milisegundos los formatos conque se muestran son los mismos. Note que lo verdaderamente importante ocurre cuando creamosla instancia de java.util.Date usando los milisegundos del objeto sqlTime, pues aunque este último

únicamente muestra horas, minutos y segundos, siempre ha conservado todos los datos de lafecha con que se creó.

utilDate = new java.util.Date(sqlTime.getTime());System.out.println("util.Date con milisegundos de sql.Time: ["+utilDate+"]");utilDate = new java.util.Date(sqlTimestamp.getTime());System.out.println("util.Date con milisegundos de sql.Timestamp: ["+utilDate+"]");Fíjese en el formato de salida:util.Date con milisegundos de sql.Time: [Thu May 20 19:54:42 GMT-05:00 2004]util.Date con milisegundos de sql.Timestamp: [Thu May 20 19:54:42 GMT-05:00 2004]

Page 22: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 22/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 22 -

Para finalizar esta primera entrega veamos el código para mostrar la diferencia entre dos fechas enhoras, minutos y segundos. Esta no es la mejor forma para hacerlo, pero cabe bien para mostrarde forma práctica todos los conceptos anteriormente estudiados.import java.util.HashMap;import java.util.Map;public class Prueba {public static Map getDiferencia(java.util.Date fecha1, java.util.Date fecha2){ java.util.Date fechaMayor = null; java.util.Date fechaMenor = null;Map resultadoMap = new HashMap();

 /* Verificamos cual es la mayor de las dos fechas, para no tener sorpresas al momento* de realizar la resta.*/  if (fecha1.compareTo(fecha2) > 0){fechaMayor = fecha1;fechaMenor = fecha2;}else{fechaMayor = fecha2;fechaMenor = fecha1;

}

 //los milisegundos long diferenciaMils = fechaMayor.getTime() - fechaMenor.getTime();

 //obtenemos los segundos long segundos = diferenciaMils / 1000;

 //obtenemos las horas long horas = segundos / 3600;

 //restamos las horas para continuar con minutos segundos -= horas*3600;

 //igual que el paso anterior long minutos = segundos / 60;segundos -= minutos*60;

 //ponemos los resultados en un mapa :-) resultadoMap.put("horas",Long.toString(horas));resultadoMap.put("minutos",Long.toString(minutos));resultadoMap.put("segundos",Long.toString(segundos));return resultadoMap;

}

public static void main(String[] args) {

 //5:30:00 de Noviembre 10 - 1950 GMT-05:00  java.util.Date fecha1 = new java.util.Date(-604070999750L);

 //6:45:20 de Noviembre 10 - 1950 GMT-05:00  java.util.Date fecha2 = new java.util.Date(-604066478813L);

 //Luego vemos como obtuve esas fechas System.out.println(getDiferencia(fecha1, fecha2));

}}

Page 23: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 23/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 23 -

Diferencia entre fechas Fecha1: Fri Nov 10 05:30:00 GMT-05:00 1950Fecha2: Fri Nov 10 06:45:21 GMT-05:00 1950{segundos=20, horas=1, minutos=15}

Notas:1. Existe un error de un segundo, lo cual no sucede cuando trabajamos con fechas posteriores a1970, ¿Por qué?.2. Este procedimiento funciona igual para todos los hijos de java.util.Date: java.sql.Date,

 java.util.Time y java.util.Timestamp.3. Todos los ejemplos los hemos hecho creando nuevas instancias de las clases. He omitido eltraer información desde una base de datos para no complicar el código; pero todo lo que hemoshecho debe funcionar igual de ambas formas (con base de datos y usando constructores).En la próxima entrega veremos como realizar operaciones completas entre fechas utilizando lasclases Calendar y GregorianCalendar.

Funciones Matematicas (Clase Math) 

La clase Math representa la librería matemática de Java. Las funciones que contiene son las detodos los lenguajes, parece que se han metido en una clase solamente a propósito de agrupación,por eso se encapsulan en Math, y lo mismo sucede con las demás clases que corresponden aobjetos que tienen un tipo equivalente (Character, Float, etc.). El constructor de la clase es privado,por los que no se pueden crear instancias de la clase. Sin embargo, Math es public para que sepueda llamar desde cualquier sitio y static para que no haya que inicializarla.

Si se importa la clase, se tiene acceso al conjunto de funciones matemáticas estándar:Math.abs( x ) para int, long, float y doubleMath.sin( double )Math.cos( double )Math.tan( double )Math.asin( double )Math.acos( double )Math.atan( double )Math.atan2( double,double )Math.exp( double )Math.log( double )Math.sqrt( double )Math.ceil( double )Math.floor( double )Math.rint( double )Math.pow( a,b )Math.round( x ) para double y floatMath.random() devuelve un doubleMath.max( a,b ) para int, long, float y doubleMath.min( a,b ) para int, long, float y double

Math.E para la base exponencialMath.PI para PI

Page 24: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 24/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 24 -

He aquí un ejemplo, Mates.java, de uso de algunas funciones de la clase Math:

 

class Mates {public static void main( String args[] ) {

int x;double rand,y,z;float max;

rand = Math.random();x = Math.abs( -123 );y = Math.round( 123.567 );z = Math.pow( 2,4 );max = Math.max( (float)1e10,(float)3e9 );

System.out.println( rand );System.out.println( x );System.out.println( y );System.out.println( z );System.out.println( max );}

}

Page 25: Manual Estructura de Datos-Funciones y Metodos

5/14/2018 Manual Estructura de Datos-Funciones y Metodos - slidepdf.com

http://slidepdf.com/reader/full/manual-estructura-de-datos-funciones-y-metodos-55a8242820f94 25/25

 

Estructura de Datos Luis Arias HidalgoIDAT 

- 25 -

Laboratorio 4 : Funciones y Metodos

1. Construir una función que nos regrese el triple de cualquier número.

2. Construir un procedimiento que ordene ascendentemente 3 numeros y los muestre.

3. Escribir dos funciones Entrada() y Salida() que incluyan todas las operaciones de entrada dedatos y salida.

4. Escribir una función "EsMultiplo" que sirva para determinar si un número es múltiplo de otra.

5. Diseñar una función "aMayusculas()" que convierta una cadena de texto en mayúsculas.

6. Escribir una función que intercambie el valor de dos variables ingresadas por pantalla.

7. Escribir un programa que imprima los caracteres ascii del 32 al 127.

8. Escribir una función que calcule la potencia de los parámetros ingresados.

9. Haga un programa java que pida un número, visualice sus al divisores, la cantidad dedivisores y la suma de los mismos.

10. Construir una función que nos regrese la letra “I” o “P” si el número que recibió fue impar o par respectivamente.

11. Construir un programa que pida un número, calcule el factorial y muestre la suma de las cifrasdel factorial resultante.

12. Escribe una función llamada media2 que reciba dos reales y devuelva el real que representala media aritmética de ambos números. Escribe luego un programa utilizando la función delejercicio anterior que lea dos reales por teclado y devuelva la media aritmética de ambos.

13. Escribe un procedimiento que escriba en pantalla los n primeros números primos. Elprocedimiento recibe n como parámetro. Construye una función para ver si un número esprimo o no, y usa esa función para construir el procedimiento.

14. Escribe una función que reciba un número como parámetro y devuelva el número que seobtiene al invertir el orden de los dígitos del número original. Por ejemplo, si la función recibeel número 356 devolverá el número 653.

15. Construir un programa que emita una factura si el artículo es importado, una función lo grabacon el 20% de IGV si es nacional, la misma función lo graba con el 15% de IGV si no lo es.

16. Crear un programa que tenga el siguiente menú:

a. Ingrese nombreb. Ingrese sexo (M,F)c. Ingrese Edad.d. Saludo (Buenos días Señor o Señorita , según sea el caso )e. Salir

17. Crear las siguientes opciones en un menú

a. Matemáticai. Volumen de un cubo

ii. Volumen de una esferab. Lenguajei. Mostrar la longitud de una cadena ingresada.ii.  Agregar a la frase introducida la cadena “Hola como estas”  

c. Salir