Programacion en JAVA

Post on 31-Jul-2015

61 views 5 download

Transcript of Programacion en JAVA

Programación en JAVA (Modulo I)

Ing. Eddy Salazar

CONTENIDO

1. Introduccion1.1. Caracteristicas1.2. Estructura de una clase1.3. Tipo de datos1.4. Estructuras de control

2. Metodos2.1. Funciones2.2. Procedimientos2.3. Recursividad

3. Estructuras de datos3.1. Vectores3.2. Matrices

4. Entrada de datos por consola5. Excepciones

Practica final no examen

CARACTERISTICAS

POO Código neutral: en diferentes SO

Compilar: para validar errores de sintaxis

Interpretar: es lo mismo que ejecutar el programa

ESTRUCTURA DE UNA CLASE EN JAVA

Modificador:

Public: la clase es publica y puedo acceder a ella sin restriccion Private: clase privado, no se puede acceder desde otras clases Protected: se utiliza en herencia de clase

NombreClase: es el nombre el cual siempre debe iniciar con mayúscula y en singularAtributos: Características de la claseMètodos: acciones que puedo realizar

Método Principal: Public static void main (String arg[]){}

Static: es aquel que para poder ser llamado no necesito un objetoVoid: dice que es un procedimiento

TIPOS DE DATOS

char boolean byte 2 8 = 256 = -128---------------0-----------------127 short 2 16

int 2 32 long 2 64

float double: es aconsejable por la precisión String: es la clase string

ESTRUCTURAS DE CONTROL

IF

.java .class resultadocompilar interpretar

Modificador class NombreClase{

AtributosMétodos

}

if (condicion){…………..}else{…….}

FORfor (valor inicial; condición; incremento/decremento){…………….}

WHILEwhile (condicion){……………….}

DOdo{……………} while (condicion);

Ejercicio 1:

Guardar el archivo:

Para ejecutar:

public class Saludo{

public static void main (String arg [])

{System.out.print("HOLA MUNDO");

}}

Se genera el archive .class

Para interpretar:

Genera el mensaje:

JDEVELOPER

Primero crear aplicacionDentro aplicación proyectos

New Aplicattion:

Paquete: conjunto o colección de clases, por ejemplo: java.sql es un paquete para trabajar con base de datos

En la carpeta src: se almacenan los .javaEn la carpeta clases: se almacenan las clases .class

Java.lang es el paquete de java y object es la clase, heredamos esta clase para

El botón de arriba ejecuta todo el proyecto, no solo la clase

Ejercicio1: Serie de Fibonacci

Ejercicio2: serie

Clase 28 de Julio

Crear la clase Metodos

Crear clase PrincipalMetodos , con el metodo principal, done se crearan los objetos que llamen a las clases de Metodos.java

Metodos.java PrincipalMetodos.java

package proyecto1;public class Metodos { public int contarDig (int n) { int c=0; while (n>0) { n=n/10; c++; } return c; } public boolean primo (int n){ int i; if(n==2) return true; if (n<2 || n%2==0) return false; for (i=3; i< n/2; i=i+2) { if (n%i==0) return false; } return true; }} public String seriePrimos() { String s="2"; //String s="";inicializa una cadena vacia int i; for(i=3; i<=100;i=i+2) if (primo(i)) s=s+" "+i; return s; }

package proyecto1;public class PrincipalMetodos { public static void main(String[] args) { Metodos A=new Metodos(); System.out.println(A.contarDig(2134465)); System.out.println(A.primo(125)); System.out.println(A.seriePrimos()); }}

Casting:

Conversiones en Java

(tipoDato)valor

Math.pow(a,b) variables de tipo double

Clase 04 de Agosto

PROCEDIMIENTOS

- Admiten 0 o mas parámetros de entrada- Devuelven 0 o más parámetros de salida, se los define como atributos de la

clase.Con tres tipos de comportamientos: públicos, privados y protegidos

Sintaxispublic void nombre( , , ){…………..}

Cuando un procedimiento no tiene parametros de salida y un print dentro solo se llama asi:

A.contarDigP(55555);Cuando un procedimiento tiene uno o mas procedimientos

System.out.println(A.c);

Recursividad

Función recursivan! =n*(n-1)

Criterio baseSi n=0 devolver 1

Estructura de datos

Es la forma de almacenar coleccionar o agrupar varios valores, simples o complejos y manipularlos.

Lineales: son aquellas que siguen un orden, por ejemplo: vectores, Matrices No Lineales: cambio su lógica en la manipulación de datos, puede o no

seguir un orden, por ejemplo: Pilas, colas, listas, árboles, grafos

a. Vectores:

Declaración y creación del vector:

tipoDato vector [] = new tipoDato[dimension]; declaración = creación, porque le digo cuánto va almacenar

Ej:int A[] = new int [10];

Declaración e inicialización:

tipoDato vector [] ={elemento1, elemento2, elemento3, …………….., elemento n}ej:int B[] = {20,2,3,45,90}

Dimensión del vector

Vector.length()Ej:A.length () -- el cual devuelve en este caso 10 porque asi estaba inicializado

Ejercicio: Dado un vector, devolver en otro vector la cantidad de elementos primos, la sumatoria de los elementos pares y el promedio de los elementos impares

public int[] ejercicio(int V[], int n){ int R[]= new int [3]; Metodos F= new Metodos(); int cpr=0, sp=0, si=0, i, a=0; for(i=0;i<n;i++){ if(F.primo(V[i])) cpr++; if (V[i]%2==0) sp= sp+V[i]; else{ si= si+V[i]; a++; } } si=si/a; R[0]=cpr; R[1]=sp; R[2]=si; return R; }

Para mostrar la función desde el método principal:

int X[]= new int[3]; X=P.ejercicio(B, B.length); P.mostrarV(X, X.length);

P.mostrarV(P.ejercicio(B, B.length), 3);

b. Matrices:

Declaraciòn y creación

tipoDato nombre [][] = new tipoDAto[# filas][# columnas];

ejemplo:int A[][]= new int [10][20];

Declaración e inicialización

tipoDato nombre [][]= {{el1, el2}, {op1, op2, op3}};

ejemplo:int B[][]= {{1,2},{3,6,5}};

Ejercicio 1-M:Dada una matriz, devolver en un vector la sumatoria de los elementos pares de cada columna de la matriz

Por ejemplo:

1 4 3015 20 1124 3 19 10 8

24 34 38

Ejercicio 2-M:Generar la siguiente matriz:

1 9 16

8

2 10

15

7

3 11

14

6

4 12

13

5

Cadenas (Clase String)

Dimensión de la cadena Int cadena.length()

“Programación” = 13Extracción de un carácter

char cadena.charAT (n) int =2

“Java” = v

Convertir a mayúsculas y minúsculascadena.toUpperCase () Mayúsculacadena.toLowerCase () Minúscula

Comparación de cadenas

int cadena.compareTo(cadena)0 si son iguales

Comparación estricta

hola no es igual a Hola

boolean cadena.equals (cadena)true= verdadero y false = falso

boolean cadena.equalsIgnoreCase (cadena)true= verdadero y false = falso

Posición de un carácter o cadena

int cadena.indexOf(c) el parametro puede ser char o string (cadena),

Por ejemplo: busca la ‘o’ de izquierda a derecha y devuelve su posición

int cadena.lastIndexOf(c) el parametro puede ser char o string (cadena)

Por ejemplo: buscar la posicion de la letra o en la palabra: “Programacion”

cadena.indexOf(‘o’) = 2 busca la ‘o’ de izquierda a derecha y devuelve su posición

cadena.lastIndexOf(‘o’) = 10 busca la ‘o’ de derecha a izquierda y devuelve su posición

Extracción de subcadenas

String cadena.substring(a, b) a<b, donde a y b deben ser de tipo int Extrae b-a caráteresa partir de la posición ‘a’

Ejemplo: “Tecnologia”cadena.substring(3,7)= ‘nolo’

Conversión de valores numéricos a cadena

String cadena.valueOf(n) el n puede ser de tipo: int, long, byte, short, float, double

Ejemplo: cadena.valueOf(7)= “7”

Ejercicio:Dada una cadena que almacena el nombre y la extensión de un determinado archivo, cambiar la extensión del archivo a: “.html”

ANEXO

Las cadenas de texto.

Comparación no estricta

hola es igual a Hola

Una cadena de texto (en inglés, "string") es un bloque de letras, que usaremos para poder almacenar palabras y frases. En algunos lenguajes, podríamos utilizar un "array" de "chars" para este fin, pero en Java no es necesario, porque tenemos un tipo "cadena" específico ya incorporado en el lenguaje.

Realmente en Java hay dos "variantes" de las cadenas de texto: existe una clase llamada "String" y otra clase llamada "StringBuffer". Un "String" será una cadena de caracteres constante, que no se podrá modificar (podremos leer su valor, extraer parte de él, etc.; para cualquier modificación, realmente Java creará una nueva cadena), mientras que un "StringBuffer" se podrá modificar "con más facilidad" (podremos insertar letras, dar la vuelta a su contenido, etc) a cambio de ser ligeramente menos eficiente (más lento).

Vamos a ver las principales posibilidades de cada uno de estos dos tipos de cadena de texto y luego lo aplicaremos en un ejemplo.

Podemos "concatenar" cadenas (juntar dos cadenas para dar lugar a una nueva) con el signo +, igual que sumamos números. Por otra parte, los métodos de la clase String son:

Método Cometido

length() Devuelve la longitud (número de caracteres) de la cadena

charAt (int pos) Devuelve el carácter que hay en una cierta posición

toLowerCase() Devuelve la cadena convertida a minúsculas

toUpperCase() Devuelve la cadena convertida a mayúsculas

substring(int desde, int cuantos)

Devuelve una subcadena: varias letras a partir de una posición dada

replace(char antiguo, char nuevo)

Devuelve una cadena conun carácter reemplazado por otro

trim() Devuelve una cadena sin espacios de blanco iniciales ni finales

startsWith(String subcadena)

Indica si la cadena empieza con una cierta subcadena

endsWith(String subcadena)

Indica si la cadena termina con una cierta subcadena

indexOf(String subcadena, [int desde])

Indica la posición en que se encuentra una cierta subcadena (buscando desde el principio, a partir de una posición opcional)

lastIndexOf(String subcadena, [int desde])

Indica la posición en que se encuentra una cierta subcadena (buscando desde el final, a partir de una posición opcional)

valueOf( objeto )Devuelve un String que es la representación como texto del objeto que se le indique (número, boolean, etc.)

concat(String cadena) Devuelve la cadena con otra añadida a su final (concatenada)

También se pueden concatenar cadenas con "+"

equals(String cadena) Mira si las dos cadenas son iguales (lo mismo que "= =")

equals-IgnoreCase( String cadena)

Comprueba si dos cadenas son iguales, pero despreciando las diferencias entre mayúsculas y minúsculas

compareTo(String cadena2)Compara una cadena con la otra (devuelve 0 si son iguales, negativo si la cadena es "menor" que cadena2 y positivo si es "mayor").

Como se ve, en ningún momento estamos modificando el String de partida. Eso sí, en muchos de los casos creamos un String modificado a partir del original.

El método "compareTo" se basa en el órden lexicográfico: una cadena que empiece por "A" se considerará "menor" que otra que empiece por la letra "B"; si la primera letra es igual en ambas cadenas, se pasa a comparar la segunda, y así sucesivamente. Las mayúsculas y minúsculas se consideran diferentes.

Hay alguna otra posibilidad, de uso menos sencillo, que no veremos (al menos por ahora), como la de volcar parte del String en un array de chars o de bytes.

Los métodos de la clase StringBuffer son: 

 

Método Cometido

length() Devuelve la longitud (número de caracteres) de la cadena

setLength() Modifica la longitud de la cadena (la trunca si hace falta)

charAt (int pos) Devuelve el carácter que hay en una cierta posición

setCharAt(int pos, char letra)

Cambia el carácter que hay en una cierta posición

toString() Devuelve el StringBuffer convertido en String

reverse() Cambia el orden de los caracteres que forman la cadena

append( objeto ) Añade otra cadena, un número, etc. al final de la cadena

insert(int pos, objeto) Añade otra cadena, un número, etc. en una cierta posición

Al igual que ocurre con los strings, existe alguna otra posibilidad más avanzada, que no he comentado, como la de volcar parte del String en un array de chars, o de comprobar la capacidad (tamaño máximo) que tiene un StringBuffer o fijar dicha capacidad.

   

Un comentario extra sobre los Strings: Java convertirá a String todo aquello que indiquemos entre comillas dobles. Así, son válidas expresiones como "Prueba".length() y también podemos concatenar varias expresiones dentro de una orden System.out.println:

            System.out.println( "Texto: " + texto1 + 5  + 23.5 );    

Vamos a ver un ejemplo que aplique la mayoría de todo esto:

         // Strings1.java          // Aplicación de ejemplo con Strings          // Introducción a Java,  

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

                String texto1 = "Hola";                 // Forma "sencilla"                 String texto2 = new String("Prueba");   // Usando un constructor

                System.out.println( "La primera cadena de texto es :" );                 System.out.println( texto1 );

                System.out.println( "Concatenamos las dos: " + texto1 + texto2 );                 System.out.println( "Concatenamos varios: " + texto1 + 5 + " " + 23.5 );                 System.out.println( "La longitud de la segunda es: " + texto2.length() );                 System.out.println( "La segunda letra de texto2 es: "                   + texto2.charAt(1) );                 System.out.println( "La cadena texto2 en mayúsculas: "                   + texto2.toUpperCase() );                 System.out.println( "Tres letras desde la posición 1: "                   + texto2.substring(1,3) );                 System.out.println( "Comparamos texto1 y texto2: "                   + texto1.compareTo(texto2) );

                if (texto1.compareTo(texto2) < 0)                   System.out.println( "Texto1 es menor que texto2" );

                StringBuffer texto3 = new StringBuffer("Otra prueba");

                texto3.append(" mas");                 System.out.println( "Texto 3 ahora es: " + texto3 );                 texto3.insert(2, "1");                 System.out.println( "Y ahora es: " + texto3 );                 texto3.reverse();                 System.out.println( "Y ahora: " + texto3 );  

             }          }  

El resultado de este programa sería el siguiente:

La primera cadena de texto es : Hola Concatenamos las dos: HolaPrueba Concatenamos varios: Hola5 23.5 La longitud de la segunda es: 6 La segunda letra de texto2 es: r La cadena texto2 en mayúsculas: PRUEBA Tres letras desde la posición 1: ru Comparamos texto1 y texto2: -8 Texto1 es menor que texto2 Texto 3 ahora es: Otra prueba mas Y ahora es: Ot1ra prueba mas Y ahora: sam abeurp ar1tO