0% encontró este documento útil (0 votos)
103 vistas

Java Tutorial

1. Java es un lenguaje de programación orientado a objetos que permite crear aplicaciones multiplataforma independientes de la arquitectura hardware. 2. El código Java se compila a bytecode que es ejecutado por la máquina virtual de Java en cualquier sistema. 3. El modelo de programación orientado a objetos de Java facilita la construcción de programas mediante la interacción de objetos.

Cargado por

Daniel Orozco
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
103 vistas

Java Tutorial

1. Java es un lenguaje de programación orientado a objetos que permite crear aplicaciones multiplataforma independientes de la arquitectura hardware. 2. El código Java se compila a bytecode que es ejecutado por la máquina virtual de Java en cualquier sistema. 3. El modelo de programación orientado a objetos de Java facilita la construcción de programas mediante la interacción de objetos.

Cargado por

Daniel Orozco
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 89

JAVA INTRODUCCION

En el mundo moderno, las necesidades de informacin se han incrementado bastante en la vida diaria de los individuos as como de las organizaciones. Esta nueva necesidad se est cubriendo con la integracin y participacin personal y de las empresas, hacia la red de redes, el Internet I, y esperen a internet2. Nuevos paradigmas de programacin se ocupan para la creacin de nuevos sistemas y necesidades creativas de informacin. Java un lenguaje de programacin moderno implementado por la compaa www.java.sun.com a finales de 1996, se ha convertido en el lenguaje estndar, para la construccin de aplicaciones basadas en internet. Los nuevos sistemas de informacin son costosos en tiempos y recursos, la solucin moderna de sistemas de informacin exigen nuevas herramientas y metodologas para resolver rpida, econmica y eficiente los problemas de informacin planteados por las organizaciones. Aun ms el pleno potencial del hardware no es aprovechado plenamente y existe un considerable retraso con el software y sus aplicaciones, generando lo que se conoce como crisis del software. En programacin tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para la solucin de un problema, es decir es un algoritmo. En programacin orientada a objetos ( OOP ) un programa es considerado como un sistema de objetos interactuando entre s, ambientes de desarrollo visuales facilitan aun ms la construccin de programas y solucin de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interface grfica) del problema, que constituye ms del 60% del cdigo normal de un programa. Es decir, en programacin modular o estructurada un problema sencillo de informacin es descompuesto en una serie de mdulos (llamados procedimientos o funciones) donde cada uno de ellos realiza una tarea especfica, por ejemplo uno de ellos captura los datos, otro resuelve operaciones, etc. En OOP todo problema aun aquellos sencillos de informacin, se consideran y resuelven como mdulos de cdigo gigante (clase) que contiene todo el cdigo necesario(variables, procedimientos, funciones, interfaces, etc.) para solucionar el problema. En programacin visual( que tambin es heredera de OOP ),la interface con el usuario( pantallas) son generadas por el propio compilador y el ingeniero de software solo se concentra en resolver el problema planteado. En programacin java bsica, se tiene la mezcla de lo mejor de estos tres mundos, es decir construimos programas, aplicaciones y sistemas de informacin usando tcnicas estructuradas, construyendo objetos

y diseando sistemas grficos, y todo orientado a la construccin de sistemas de informacin basados en redes de cualquier tipo o tamao.

Cmo trabaja JAVA? Java utiliza un compilador para generar cdigo ejecutable. A diferencia de los compiladores habituales que generan el cdigo para un procesador en particular, JAVA genera un cdigo binario independiente de la plataforma. Para ejecutar dichos cdigos se utiliza una Mquina Virtual Java, esto es, un programa/procesador de este cdigo binario. Es esta mquina virtual la que depender de la plataforma, pero el codigo binario es comn y compatible para todas ellas, el bytecode (cdigo binario) podr ejecutarse directamente en la mquina virtual de un PC, una mquina SUN, ALPHA, PPC, etc. Los ejecutables de Java se denominan ficheros de clases debido a que contienen clases. Dichas clases se obtienen directamente del programa, del disco o de la red. El kit de desarrollo JDK contiene una mquina virtual para ejecutar bytecodes y dispone a su vez de una mquina virtual especial que es un visor de applets ejecutables java que se incluyen en los ficheros HTML. Asimismo la mayora de navegadores contienen una mquina virtual Java para ejecutar dichos applets. Caractersticas de JAVA - El Java es un lenguaje de programacin completo orientado a objetos. - El Java se dise a partir del C++ con el propsito de: Ser reducido Sencillo Rpido Eficiente Transportable (en diversas plataformas y sistemas operativos) Con Java podemos crear dos tipos de programas: Aplicaciones Completas Applets Un applet (pequea aplicacin) es un programa java, que se ejecuta en una pgina web para generar animaciones, grficos con efectos interactivos, juegos, etc.

- La principal caracterstica del Java es su independencia de la plataforma:

En definitiva

Multihilo

Una aplicacin multihilo es una aplicacin que tiene varios subprogramas ejecutndose de forma independiente y simultanea. Gestin de Memoria y recoleccin de basura En C y C++ uno de las mayores fuentes de error y de problemas es el manejo y control temporal de memoria, siendo responsabilidad del programador el control adecuado de sta. En Java este problema queda relegado al lenguaje, para ello implementa un recolector de basura. ste es un proceso que se encarga de liberar de forma automtica toda la memoria temporal que no aparece referenciada por ninguna parte del programa.

MODELO DE SOLUCION JAVA

En general un problema de informacin es posible entenderlo, analizarlo y descomponerlo en todos sus componentes o partes que de una u otra manera intervienen tanto en su planteamiento como en su solucin. Una herramienta rpida que nos permite descomponer en partes un problema para su solucin, es el llamado modelo de solucin, este consiste de una pequea caja que contiene los tres elementos ms bsicos en que se puede descomponer cualquier problema sencillo de informacin, estas tres partes son: 1. LA PRIMERA PARTE son todos los datos que el computador ocupa para resolver el problema, estos datos son almacenados internamente en la memoria del computador en las llamadas variables de entrada. 2. LA SEGUNDA PARTE son todas las operaciones generalmente algebraicas necesarias para solucionar el problema, generalmente esta parte del modelo es una formula (o igualdad matemtica, ej. X= y + 5). 3. LA TERCERA PARTE es el resultado o solucin del problema que generalmente se obtiene de la parte de operaciones del modelo y dichos datos estn almacenados en las llamadas variables de salida. En resumen para todo problema sencillo de informacin es necesario plantearse las siguientes preguntas: * Que datos ocupa conocer el computador para resolver el problema y en cuales variables de entrada se van a almacenar? * Que procesos u operaciones debe realizar el computador para resolver el problema planteado?

* Que informacin o variables de salida se van a desplegar en pantalla para responder al problema planteado originalmente? Como nota importante no confundir los trminos datos, variables e informacin; Datos se refiere a informacin en bruto, no procesada ni catalogada, por ejemplo Tijuana, calle primera # 213,15 aos, $2,520.00, etc. Variables es el nombre de una localidad o direccin interna en la memoria del computador donde se almacenan los datos, ejemplo de variables para los casos del inciso anterior, CIUDAD, DIRECCION, EDAD, SUELDO, ETC. Informacin son datos ya procesados que resuelven un problema planteado.

EJEMPLO DE MODELO DE SOLUCION Construir un modelo de solucin que resuelva el problema de calcular el rea de un tringulo con la formula rea igual a base por altura sobre dos. ENTRADA Operacin Salida BASE AREA AREA= BASE * ALTURA / 2 AREA PROBLEMA 2.- CONVERTIR LA EDAD EN AOS DE UNA PERSONA A MESES. PROBLEMA 3.- CONVERTIR PESOS A DOLARES. PROBLEMA 4.- CALCULAR EL AREA DE UN CIRCULO CON LA FORMULA

PROBLEMA 5.- EVALUAR LA FUNCION

PARA CUALQUIER VALOR DE X.

Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como dato de entrada su valor, en cambio colocar directamente su valor dentro de la formula, en la parte de operaciones del problema. Pero recordar tambin que existirn problemas sencillos donde: No se ocupan entradas o no se ocupan operaciones, pero todos ocupan salida. Una formula grande o muy compleja puede ser ms segura y fcil de resolver, si es descompuesta y resuelta en partes, juntando al final los parciales para obtener el resultado final. Un problema puede tener ms de una solucin correcta.

El problema no est suficientemente explicado o enunciado, entonces, estudiarlo, analizarlo y construirlo de manera genrica. PROBLEMAS SUGERIDOS: Construir los modelos de solucin de los siguientes problemas: PROBLEMA 6.- Convertir millas a kilmetros(caso normal) PROBLEMA 7.- Convertir 125 metros a centmetros(no ocupa entradas) PROBLEMA 8.- Se calcula que en promedio hay 4.7 nidos en cada rbol en la UABC, tambin se calcula que en cada nido existen un promedio de 5.8 pjaros, se pide calcular la cantidad total de nidos y de pjaros en los 227 rboles que existen en la UABC. (no ocupa entradas) PROBLEMA 9.- La gorda Sra. Lpez y sus 8 hijos solo compran una vez al mes su mandado en conocido supermercado, en dicha tienda el kilogramo de frijol cuesta $8.75, el paquete de tortillas cuesta $3.55 y el frasco de caf vale $14.25, si solo compran de estos tres productos para su mandado, calcular su gasto total. ( problema no claro) PROBLEMA 10.- Capturar y desplegar los cinco datos mas importantes de un automvil(no ocupa operaciones) PROBLEMA 11.- La distancia Tijuana - Ensenada es de 110 kilmetros. Si un automvil la recorre a una velocidad constante de 30 millas por hora, cunto tiempo tarda en llegar. ( 1 milla = 1.609 Km.) (dos maneras correctas de Resolverlo). PROBLEMA 12.-Evaluar la funcin PROBLEMA 13.-Evaluar la funcin para cualquier valor de x.(caso normal). para cuando x vale 4 . (no ocupa entradas).

14.- Evaluar el factorial de cualquier numero usando la formula: n!=n!-1 15.-La distancia que recorre un auto es de 50 kms y su velocidad es de 30 millas por hora .Cunto tiempo tardara en llegar? 16.-Encontrar la derivada de x para cualquier valor con la formula (d/dx(x)=1) 17.-Calcular el inters que gana un capital de x pesos a una tasa de inters del 15% anual en un periodo de n aos. 18.-Que aceleracin tiene un tren que parte de Tijuana a 10 km/hr y pasa por ensenada una hora despus a 50 km/hr.

19.-Calcular el nmero de aulas en una escuela que tiene 10 edificios y cada edificio 3 pisos y cada piso 5 aulas, excepto un edificio que solo tiene dos pisos. 20.-Si en una escuela hay 30 maestros y 15 son hombres que atienden a 10 alumnos cada uno. Cuantas maestras hay? 21.-Calcular la corriente de un circuito con un voltaje de 15v y una resistencia de 6 ohms. Formula (I= V/R) 22.-Calcular la normal estndar (z) dados los datos por el usuario: X=dato, =media, d=desviacin. Formula (Z = X-M / d) 23.-Dado un numero(N) cualesquiera obtener su raz y potencia cuadrada . 24.-Determinar la media de 5 nmeros diferentes. 25.-Determinar la velocidad v requerida para recorrer una distancia d en un tiempo t . Formula (V = d * t) 26.-Determinar la pendiente de una recta. Formula (y = m x + b) 27.-Calcular la funcin de y= x + 8x + 3 para cualquier x 28.-Convertir minutos a horas. 29.-Aplicar la formula general para a=1, b=2, c=3. 30.-Se desea instalar un cable de red, el cliente pide 30 pies, considerando que se venden en metros, cuantos deber comprar. 31.-Un campesino siembra trigo en un rea cuadrada de 25 mts., cul es el largo del cerco frontal en cms.? 32.-Resolver x + 15x - 8 para cualquier variable (X). 33.-Convertir C a F. 34.-Si cada saln de la escuela tiene 40 alumnos y son 30 salones Cuantos alumnos son en toda la escuela? 35.-Si Juan trabaja 5 das a la semana y descansa 2 Cuantos das trabajo en 4 aos? 36.-Si en una oficina se procesan 20 facturas cada 10 minutos cuantas se procesaran si se trabajan 5 horas? 37.-Si una empresa tiene _ de activo y un pasivo de _ Cual es su capital?. Formula (C = A-P)

38.-Calcule el voltaje de un circuito dada una intensidad I y una resistencia R. Formula (V=IR) 39.-Calcule la frecuencia de una onda que circula con un tiempo t. Formula (F=1/t) 40.-Calcule la potencia de un circuito con un voltaje V y una intensidad I. Formula (f = VI) 41.-Calcule el total que tendr que pagar una persona que va al cine dependiendo del no. de boletos a comprar y el precio. 42.-Calcule las anualidades que tendr que pagar una persona que pidi un prstamo. Dependiendo del tiempo que el elija y el inters por ao. Formula (Anualidad=(Prstamo/Tiempo)+inters) 43.-Determinar cuanto ganara una persona en base a la horas trabajadas. Tomando en cuenta el pago por hora. 44.-Convertir horas a segundos. 45.-Calcular la fuerza. Formula (fuerza = trabajo / tiempo)

VARIABLES JAVA

En java un identificador es una palabra compuesta de letras y/o nmeros de hasta 32 caracteres significativos, empezando siempre con una letra. Una variable se define como un identificador que se utiliza para almacenar todos los datos generados durante la ejecucin de un programa. Existen ciertas reglas en cuanto a variables:

Claras y con referencia directa al problema. No espacios en blanco, ni smbolos extraos en ellas. Se pueden usar abreviaturas, pero solo de carcter general.

No deben ser palabras reservadas del lenguaje. Ejemplos de buenas variables: Nombre, Edad, SdoDiario, IngMensual, Permetro, Calif1, etc.

TIPOS DATOS JAVA

A toda variable que se use en un programa, se le debe asociar (generalmente al principio del programa) un tipo de dato especfico. Un tipo de dato define todo el posible rango de valores que una variable puede tomar al momento de ejecucin del programa y a lo largo de toda la vida til del propio programa. Los tipos de datos ms comunes en java son: Primitive Data Types Keyword Description (Enteros) byte Byte-length integer short Short integer int Integer long Long integer (Numeros Reales) float Single-precision floating point double Double-precision floating point (other types) char A single character boolean A boolean value (true or false)

Size/Format 8-bit two's complement 16-bit two's complement 32-bit two's complement 64-bit two's complement 32-bit IEEE 754 64-bit IEEE 754 16-bit Unicode character true or false

TABLA TOMADA DE JAVA.SUN.COM DOCUMENTATION

Para el caso de strings se deber usar la Clase String que tiene dos constructores, de momento entenderemos esto ltimo como dos maneras de crearse, ej; 1. String nombre= new String(); 2. String ciudad= new String(Tijuana); En este ltimo caso se crea la string y se inicializa con un dato o valor.

JAVA CLASES ESPECIALES

En java como lenguaje de programacin orientado a objetos existen aparte de la clase String vista en el tema anterior cuatro clases especiales descendientes de la clase numbers que contienen una serie de mtodos que facilitan la interaccin con los usuarios de nuestras aplicaciones en captura y despliegue de datos numricos. Sin embargo su caracterstica ms importante a tomar en cuenta es que objetos numricos derivados de estas clase no pueden entrar a operaciones DIRECTAMENTE ni recibir el resultado de operaciones.

Class Integer
public { final class java.lang.**Integer **extends java.lang.**Number**

// public public // public public // public public public public public public public public public public public public public public public public public public public

Fields final static int **MAX_VALUE**; final static int **MIN_VALUE**; Constructors **Integer**(int value); **Integer**(String s); Methods double **doubleValue**(); boolean **equals**(Object obj); float **floatValue**(); static Integer **getInteger**(String nm); static Integer **getInteger**(String nm, int val); static Integer **getInteger**(String nm, Integer val); int **hashCode**(); int **intValue**(); long **longValue**(); static int **parseInt**(String s); static int **parseInt**(String s, int radix); static String **toBinaryString**(int i); static String **toHexString**(int i); static String **toOctalString**(int i); String **toString**(); static String **toString**(int i); static String **toString**(int i, int radix); static Integer **valueOf**(String s); static Integer **valueOf**(String s, int radix);

} Esta clase convierte un dato de tipo int a un objeto. Este objeto contiene un solo campo de tipo int. Pero tambin el objeto contiene una serie de mtodos para convertir un valor int a una String y tambin para convertir una String a int. Adems de otros mtodos de igual utilidad.

OPERADORES ARITMETICOS PROGRAMACION JAVA

Un operador es un smbolo especial que indica al compilador que debe efectuar una operacin matemtica o lgica. Java reconoce los siguientes operadores aritmticos:

Operador Operacin + Suma - Resta * Multiplicacin / Divisin % Residuo o Mdulo

Como notas importantes a recordar siempre; En problemas de divisin entre enteros, java trunca la parte residual, ej; Desplegar> 13/5 > el resultado es 2 Ms adelante se dir como resolver este problema. Para resolver los problemas de potencias y races, se usan ciertas instrucciones especiales que proporciona el lenguaje, llamadas funciones matemticas, en java existe toda una librera de instrucciones o funciones matemticas. Recordar que todas las funciones reciben uno o ms datos o valores y regresan siempre un resultado, una de estas funciones matemticas es: import java.lang.math ; public static double pow(double a, double b); Esta funcin ocupa dos valores o datos( base y exp) ambos de tipo double, y regresa un resultado tambin de tipo double, ejemplo; resolver el problema de calcular

import java.io.*; import java.lang.Math; public class ejemplo1 { public static void main(String args[]) { double base =5; double exponente=3; double potencia =0; potencia = Math.pow(base, exponente); System.out.println("potencia =" +potencia); }// cerrar main } //cerrar clase

Ir al final Anexo
Capturando datos desde el teclado

Hasta ahora el programador ha aprendido a mandar a pantalla mensajes con el mtodo System.out.print, pero es importante que tambin aprenda a pedir datos al usuario, en este captulo se aprender a realizar dicho procedimiento. En java la entrada, al igual que la salida de realiza mediante flujos, por flujo se entiende a las secuencias de datos que provienen desde una fuente, como por ejemplo el teclado. Los flujos actan como intermediarios entre el programa y el origen o destino de la informacin que ste lee o escribe en el flujo y puede hacer abstraccin sobre la naturaleza de la fuente.

Para poder introducir datos mediante flujos utilizaremos la biblioteca java.io, esta ser declarada al principio antes de la clase, y la sintaxis es de la siguiente forma
import java.io.*;

La entrada de datos en Java se efecta mediante la lectura de bytes, la entrada bsica de suele realizarse mediante el mtodo readLine () que pertenece a la clase BufferedReader, el cual se encarga de leer una secuencia de caracteres y devuelve una cadena. Para esto se debe construir un objeto de la clase BufferedReader sobre otro de la clase InputStreamReader el cual debe de estar asociado a System.in, mismo que se va a encargar de convertir a cadena los bytes ledos desde el teclado. Nos quedar algo de la siguiente forma.
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

Para pedirle un String, se usa el mtodo readLine(). Este mtodo lee todos los caracteres tecleados (recibidos si fuera otro dispositivo de entrada) hasta que encuentra la pulsacin de la tecla <INTRO>, <RETURN> o como quieras llamarla.

String texto = br.readLine(); Convertila a entero int valor = Integer.parseInt(texto);

Esto intenta convertir texto en un int y si no hay problemas, guarda el resultado en una variable int llamada valor.
EXCEPCIONES Exception Y try-catch

Cuando en java puede fallar algo, por ejemplo, la conversin de la cadena en int, suele avisarnos. Esto lo hace "lanzando excepciones". Una excepcin es algo que lanza Java para avisarnos que ha habido un problema. En nuestro cdigo podemos "capturar" esas excepciones y hacer algo para tratar de arreglarlo. Por ejemplo, si le pedimos al usuario que meta un nmero, el usuario escribe "abc", lo leemos e intentamos convertirlo a int, nos salta una excepcin. Si capturamos esa excepcin, en el cdigo que hagamos para tratarla, podemos avisar al usuario que se ha equivocado un poco al teclear, que lo intente de nuevo y volver a pedirle el nmero. Para capturar una excepcin, tenemos que hacer el cdigo as

try { // Aqu el cdigo que puede fallar } catch (Exception e) { System.out.println(e); e.printStackTrace(); // Aqu el cdigo para tratar el fallo }

Lo habitual, al menos mientras estamos haciendo nuestro programa, es sacar por pantalla el error, para tener una pista de qu ha fallado. Eso se puede conseguir de las dos formas que he puesto arriba (y otras muchas) Por un lado, de la forma que ya conocemos, con System.out.println(e); Esto nos saca una lnea de texto con el error correspondiente en ingls del bueno. Por otro lado, llamando al mtodo printStackTrace() de la excepcin que se ha provocado. Esta llamada escribe la misma lnea de texto de error, pero adems nos dice exactamente en qu lnea de cdigo se produce el error. Esta informacin es muy til si nuestro programa todava est a medias y no acaba de hacer lo que queremos.

UN EJEMPLO: SUMAR DOS NMEROS Como ejemplo, vamos a ver un programa completo que pide dos nmeros al usuario, los suma y saca el resultado. El ejemplo es este
import java.io.*; public class suma { public static void main (String [] args) {

// //

InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader (isr);

BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); try { System.out.print("Sumando 1 : "); int s1 = Integer.parseInt(br.readLine()); System.out.print("Sumando 2 : "); int s2 = Integer.parseInt(br.readLine()); int suma=s1+s2; System.out.println ("La suma es " + s1 + "+" + s2 +"="+ suma); } catch (Exception e) { e.printStackTrace();

} } }

import java.util.Scanner; public class suma { public static void main (String [] args) { Scanner reader = new Scanner(System.in); try { //String ad = ""; System.out.print("Sumando 1 : "); // ad = reader.next(ad); int s1 = reader.nextInt(); //int s1 = Integer.parseInt(entrada.readLine()); System.out.print("Sumando 2 : "); int s2 = reader.nextInt(); int suma=s1+s2; System.out.println ("La suma es " + s1 + "+" + s2 +"="+ suma); } catch (Exception e) { e.printStackTrace(); } } } //van.java import java.util.Scanner;

public class van{ public static void main(String Args[]){ int edadJuan, edadPedro, edadMiguel; Scanner reader = new Scanner(System.in); System.out.print("Digite la edad de Juan"); edadJuan = reader.nextInt(); System.out.print("Digite la edad de Pedro"); edadPedro = reader.nextInt(); System.out.print("Digite la edad de Miguel"); edadMiguel = reader.nextInt(); if(edadJuan >= 18){ System.out.println("JUAN PUEDE ENTRAR A LA DISCO YA QUE TIENE"+edadJuan); } else { System.out.println("JUAN NO PUEDE ENTRAR A LA DISCO YA QUE TIENE"+edadJuan); } if(edadPedro >= 18){ System.out.println("PEDRO PUEDE ENTRAR A LA DISCO YA QUE TIENE"+edadPedro); } else { System.out.println("PEDRO NO PUEDE ENTRAR A LA DISCO YA QUE TIENE"+edadPedro); } if(edadMiguel >= 18){ System.out.println("MIGUEL PUEDE ENTRAR A LA DISCO YA QUE TIENE"+edadMiguel); } else {

System.out.println("Miguel NO PUEDE ENTRAR A LA DISCO YA QUE TIENE"+edadMiguel); } } }

OPERADOR CAST CONVERSIONES JAVA

Se puede forzar un dato, variable o una expresin a convertirse o cambiarse a un nuevo tipo de dato. El operador cast realiza este proceso, es decir convierte datos, variables o expresiones a un nuevo tipo de dato, su formato es: (nvotipo) dato , var, exp; Ejemplo:
// declaracin int alfa; // Asignacin alfa = 20; // Cambio de tipo (float) alfa;

Ejemplo: (int) 3.1416;


en este ejemplo se est convirtiendo un float a int, recordar que en este caso ya no se tendrn los decimales. Como nota importante se puede hacer cast solo con tipos de datos, no entre tipos de datos y objetos de una clase numerica.

Como nota importante este operador resuelve los dos problemas pendientes: 1. El de la divisin entre enteros.

2. El tipo de dato especifico que requieren las funciones. Ejemplos:


// Declaracin float alfa; // Operacin alfa = (float)23/5; // Pero en estos casos es preferible alfa=23/5.0;

En toda divisin recordar agregar a uno de los dos valores el (.0), solo que los dos elementos sean variables entonces usar el operador cast con una de ellas.

Declaracin double potencia; Operacin potencia = Math.pow ( (double)5, (double)3);

Como se observa en el ejemplo, se puede usar pow(), directamente con los datos, argumentos o parmetros requeridos , si estos son numricos, pero transformndolos con el operador cast. Esto tambin va a permitir evaluar expresiones matemticas de manera mas directa y sencilla, solo recordando usar un pow() por cada potencia y cada raz de la ecuacin, ejemplo: sea

Dentro de un programa esto se resuelve con;


// rea de declaracin de variables double y, x; // rea de captura de datos capturar el valor de x; // rea de operaciones

y = 3 * Math.pow(x, (double)3) - Math.pow(x, (1/3.0)) + 4 * Math.pow(x, (double)2)); // rea de despliegue de resultados desplegar x, y

Para convertir tipos de datos numricos a objetos numricos y viceversa se debern usar los mtodos que traen las clases numricas de manera apropiada, en general existen tres casos generales diferentes, considerando datos o variables numricas, objetos numricos y strings que es un caso especial y comn: a.1) Variable numrica a variable numrica Usar el operador cast ejemplo: var to var int alfa1=10; double alfa2=3.1416; alfa1= (int)alfa2; observar que valores decimales deben declararse como doubles a.2) variable numerica a string ejemplo; var to string int zeta=50; String alfa= String.valueOf(zeta); a.3) variable numerica a objeto numerico caso 1: usando constructor int zeta=80; Float alfa4 = new Float(zeta); caso 2: ya existe el objeto numerico Double alfa5 = new Double(0); Int zeta=30; alfa5=Double.valueOf(String.valueOf(zeta)); b.1) Objeto Numerico a Variable numerica todos los objetos numericos deben crearse inicializados aunque sea a (0) Integer alfa = new Integer(300); Int zeta = alfa.intValue(); b.2) Objeto numerico a String Float alfa = new Float(3.45); String beta = new String( ); Beta = alfa.toString(); B.3) Objeto Numerico a Objeto Numerico

Integer alfa=new Integer(50); Double beta=new Double(0); beta = beta.valueOf(alfa.toString()); c.1) String to variable numerica String alfa= new String(3.5); double beta= 0; beta= Double.parseDouble(alfa); c.2) String to Objeto Numerico String alfa8=new String(50); Double alfa9=new Double(0); alfa9 = alfa9.valueOf(alfa8); TAREAS PROGRAMACION JAVA POW(): 1. 2. 3.

TEMA 8: JERARQUIA DE OPERACIONES JAVA El problema de no tomar en cuenta la jerarqua u orden de los operadores al plantear y resolver una operacin casi siempre conduce a resultados muchas veces equivocados como estos: Ejemplos:

b) si calif1=60 y calif2=80 entonces en programa se usa promedio=calif1 + calif2/2 da como resultado promedio = 100

Recordar siempre que antes de plantear una formula en un programa se deber evaluar contra el siguiente: Orden de operaciones: 1.- Parntesis 2.- Potencias y races 3.- Multiplicaciones y divisiones 4.- Sumas y restas 5.- Dos o ms de la misma jerarqua u orden, entonces resolver de izquierda a derecha Nota: Si se quiere alterar el orden normal de operaciones, entonces usar parntesis. Nota: Tampoco es bueno usar parntesis de ms en una operacin, esto solo indica que no se evalo bien la formula, como en el siguiente ejemplo;

Aqu los parntesis estn de ms, porque por orden de operaciones, multiplicacin y divisin tienen la misma jerarqua y entonces se resuelven de izquierda a derecha, en otras palabras ni que falten parntesis ni que sobren parntesis.

TEMA 2: INSTRUCCIONES CONTROL PROGRAMA JAVA

Instrucciones de control de programa permiten alterar la secuencia normal de ejecucin de un programa. Estas instrucciones se dividen en tres grandes categoras: 1.- Instrucciones Condicionales que en java se implementan con las instrucciones if y switch. b) Instrucciones de ciclos con

for while dowhile

TEMA 3: INSTRUCCIONES CONDICIONALES JAVA

Una de las ms poderosas caractersticas de cualquier computador es la capacidad que tiene de tomar decisiones. Es decir al comparar dos alternativas diferentes el computador puede tomar una decisin basndose en la evaluacin que hace de alguna condicin. Ejemplo de instrucciones condicionales: si sueldo > 3000 desplegar rico si no desplegar pobre Fin-si si sexo = 'm' imprime mujer si no imprime hombre Fin-si

De los ejemplos observar que los caminos a seguir por el computador dependern de la evaluacin que el computador hace con y de la condicin. Todo lenguaje de programacin debe tener instrucciones que permitan formar condiciones e instrucciones que pueden evaluar esas condiciones. Pero recordar que lenguajes modernos y orientados a clientes-servidores de igual forma tienen componentes que permiten del mismo modo al usuario tomar decisiones incluso directamente en pantalla, es decir tambin existen los objetos, controles o componentes de seleccin y decisin en html. El formato general de una instruccin condicional es:

Como se observa, son cuatro partes bien diferenciadas entre si;

La propia instruccin condicional en si La condicin El grupo cierto de instrucciones El grupo falso de instrucciones

Cuando el computador evala una condicin el resultado de esa evaluacin solo es evaluado de dos maneras o la condicin es CIERTA o la condicin es FALSA. Esto depender del valor que tenga asignado o que se haya capturado para la variable que est en la condicin, por ejemplo si se capturo 6000 en sueldo en el ejemplo a) entonces el computador indicara que la condicin es CIERTA pero en otro caso si a la variable sueldo primero se le asigno un valor de 250 entonces el computador indicara que la condicin es FALSA. Ya dependiendo del resultado de la evaluacin, el computador ejecuta las instrucciones contenidas en el grupo de cierto o falso respectivamente. Empezaremos el anlisis por la CONDICIN TEMA 4: CONDICIONES SIMPLES JAVA

En general todas las condiciones se forman con: Variables Operadores Relacinales Constante o Variables sexo = m sueldo > 300,000 Una condicin simple se define como el conjunto de variables y/o constantes unidas por los llamados operadores relacinales. TEMA 5: OPERADORES RELACIONALES JAVA

Los operadores relacinales que reconoce java son: Operador Significado == Igual que > Mayor que < Menor que >= Mayor o igual que Menor o igual que != No es igual que o es diferente que

Tambin observar y tener cuidado sobre todo con el operador de igualdad ( de comparacin por igualdad (= es decir;

y el operador relacional

sueldo = 500, Se est pidiendo cargar o asignar la variable sueldo con el valor 500 sueldo == 500, Se est pidiendo que se compare el valor o dato que se encuentra en la variable sueldo, contra el numero 500. Solo este ltimo formato es vlido dentro de una condicin en una instruccin condicional. Para objetos derivados de la clase STRING se usara el mtodo str1.compareTo(str2) que regresa cero (0) si str1 es igual str2, regresa un positivo si str1 es mayor que str2 y regresa un negativo si str1 es menor que str2 TEMA 6: INSTRUCCIN IF JAVA

Es la instruccin condicional ms usada en los diversos lenguajes de programacin, su formato completo y de trabajo en java es:

cargar o asignar la variable de condicin; if (condicin) { grupo cierto de instrucciones;} else { grupo falso de instrucciones; };

Primus.- Observar donde van y donde no van los puntos y comas; Secundus.- La condicin va entre parntesis ; Tertius.- Si un if no ocupa un grupo falso de instrucciones entonces no se pone el else, y la llave antes del else si terminara con punto y coma. Ejemplo: Prog2.java

import java.lang.*; import java.io.*; class prog2 { public static void main(String[] args) { // declarando variables a usar int sueldo = 0; // creando un objeto llamado teclado especializado en capturas BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // capturando datos try{ System.out.println("dame sueldo: "); sueldo = Integer.parseInt(teclado.readLine()); } catch(IOException variablerror){System.out.println("errordeCaptura"); } if (sueldo >= 3000) { System.out.println("RICO ");} else { System.out.println("POBRE"); }; } // cierra main } // cierra clase

import java.lang.*; import java.io.*; class prog3 { public static void main(String[] args) { // declarando variables a usar String carrera=""; // creando un objeto llamado teclado especializado en capturas BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // capturando datos try { System.out.println("dame carrera: "); carrera = teclado.readLine(); } catch(IOException variablerror) {System.out.println("error de captura "); } if ( carrera.compareTo("informatica") == 0 ) { System.out.println("INTELIGENTE ");} else { System.out.println("NORMAL"); }; // cierra if } // cierra main

} // cierra clase

TAREAS PROGRAMACION JAVA 1.- Capturar un nmero cualesquiera e informar si es o no es mayor de 100. 2.- Capturar un numero entero cualesquiera e informar si es o no es mltiplo de 4 ( recordar el operador mod(%), analizado en el tema de operadores aritmticos). 3.- Capturar los cinco datos ms importantes de un Empleado, incluyendo el sueldo diario y los das trabajados desplegarle su cheque semanal solo si gan ms de $500.00 en la semana, en caso contrario desplegarle un bono de despensa semanal de $150.00. 4.- Capturar los datos ms importantes de un estudiante incluyendo tres calificaciones construir una boleta de calificaciones si el estudiante es de la carrera de medicina, en caso contrario construir una pantalla ms bonita todava que despliega un oficio citando a los padres del estudiante a una pltica amistosa con los maestros de la escuela. 5.- Capturar los datos ms importantes de un producto cualesquiera, incluyendo cantidad, precio, etc. desplegar una orden de compra, solo si el producto es de origen nacional, en caso contrario no hacer nada.

TEMA 7: CONDICIONES COMPUESTAS JAVA

En muchas ocasiones es necesario presentar ms de una condicin para su evaluacin al computador. Por ejemplo que el computador muestre la boleta de un alumno si este estudia la carrera de medicina y su promedio de calificaciones es mayor de 70. Una condicin compuesta se define como dos o ms condiciones simples unidas por los llamados operadores lgicos. Los operadores lgicos que java reconoce son; OPERADOR SIGNIFICADO && Y LOGICO

||

! Ejemplo:

O LOGICO NO NEGACION

if ( (sueldo > 1000 ) && ( sexo=='m') ) etc, etc, etc. Notas: Observar que cada condicin simple lleva sus propios parentesis. Si la variable es de tipo string el dato va entre comillas(), pero si la variable es de tipo char el dato va entre apostrofes('). Para que el computador evale como CIERTA una condicin compuesta que contiene el operador lgico &&, las dos condiciones simples deben ser ciertas. Para que el computador evale como CIERTA una condicin compuesta que contiene el operador lgico ||, basta con que una de las condiciones simples sea cierta. La cantidad total de casos posibles cuando se unen dos o ms condiciones simples est dada por la relacin donde n = cantidad de condiciones, la primera mitad de ellos empieza en cierto y la segunda mitad en falso. Ejemplo, si formamos una condicin compuesta con dos condiciones simples y el operador lgico y, la cantidad total de casos posibles serian Tabla de verdad con y IRA COND SIMPLE C C F F 2DA COND SIMPLE C F C F EVALUACION C F F F , y se puede construir la siguiente tabla de verdad.

La evaluacin final, se obtiene usando la regla anteriormente descrita para una condicin compuesta, que contiene el operador Y. Esta tabla significa lo siguiente; 1.- Cualquiera que sean la cantidad de datos procesados, siempre caer en uno de estos cuatro casos generales.

La tabla de verdad para una condicin compuesta con Or es la siguiente; IRA COND SIMPLE C C F F 2DA COND SIMPLE C F C F EVALUACION C C C F

Construir una tabla de verdad para una condicin compuesta de tres o ms condiciones simples, es tambin tarea sencilla, solo recordar que; 1.- La cantidad posible de casos es 2^n casos posibles, la mitad empiezan con Cierto y la otra mitad empiezan con Falso. 2.- Para evaluar esta condicin triple primero se evalan las dos primeras incluyendo su operador bajo las reglas ya descritas y luego se evala el resultado parcial contra la ltima condicin y ultimo operador para obtener la evaluacin final.

Ejemplo una condicin compuesta de tres condiciones simples, donde el primer operador lgico es el y y el segundo operador lgico es el O, dara la siguiente tabla de verdad. Ira cond C C C C F F F F 2da cond C C F F C C F F Eval 1a Y 2a C C F F F F F F 3ra cond C F C F C F C F Eval eval O 3ra C C C F C F C F

TAREAS PROGRAMACION JAVA 1.- Construir un programa que capture un nmero cualesquiera e informe si es o no es mayor de 50 y mltiplo de tres. ( solo escribir el mensaje de respuesta de manera muy clara y esto resuelve el problema ) 2.- Construir un programa que indique si un nmero es un par positivo.

3.- Capturar los datos de un producto incluyendo su cantidad en existencia, desplegar una orden de compra si la cantidad en existencia del producto es menor que el punto de reorden, o si el origen del producto es nacional. 4.- Construir un programa que capture los datos de un empleado, desplegar su cheque semanal si gana ms de $500.00 y si esta en el departamento de produccin, en caso contrario desplegarle un bono de despensa del 25% de su sueldo semanal TEMA 8: INSTRUCCIN SWITCH JAVA

Tambin existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos o se usa una condicin compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instruccin SWITCH. Esta instruccin es una instruccin de decisin mltiple donde el compilador prueba o busca el valor contenido en una variable ENTERA o CHARACTER contra una lista de constantes apropiadas, es decir enteras, character, cuando el computador encuentra el valor de igualdad entre variable y constante entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ltimo es opcional. El formato de esta instruccin es el siguiente;

capturar o asignar variable de condicin; switch(var OPCION) { case const1: instruccin(es); break; case const2: instruccin(es); break; case const3: instruccin(es); break; default: instruccin(es); }; prog4.java
import java.lang.*; import java.io.*; class prog4 { public static void main(String[] args) { // declarando variables a usar char letra=' '; // creando un objeto llamado teclado especializado en capturas

BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // capturando datos try { System.out.println("dame una letra : "); letra= teclado.readLine().charAt(0); } catch(IOException variablerror) {System.out.println("error de captura "); } switch(letra) { case 'a': System.out.println("aguila ");break; case 'b': case 'B': System.out.println("baca ");break; case 'c': System.out.println("caballo "); break; default: System.out.println("no hay "); }; } // cierra main } // cierra clase

Observar el caso b y como se pueden usar ms de dos case con un solo break sorry por lo de BACA pero el nico animalito que me acorde fue el BURRO y luego mis alumnos se sienten aludidos y ofendidos. TAREAS PROGRAMACION JAVA 1.- Construir un programa que capture un deporte cualesquiera y despliegue dos implementos deportivos apropiados. 2.- Evaluar cualquier funcin vista para cuando x =3,-4, 5

TEMA 9: MANEJO DE EXCEPCIONES JAVA

ERRORES Y EXCEPCIONES Estos problemas de errores y excepciones en java se producen tanto al tiempo de compilacin como de ejecucin del programa.

Los problemas normales de mal cdigo tan comunes en los programas se producen al tiempo de compilacin no al tiempo de ejecucin del programa este tema se refiere a errores y excepciones al tiempo de ejecucin del programa. Java tiene un mecanismo muy completo para el manejo de errores y excepciones un ERROR ocurre generalmente al tiempo de estarse ejecutndose un programa, por ejemplo una divisin entre cero. Una EXCEPCION es creada tambin al tiempo de ejecucin del programa cuando en alguna parte del programa se produce alguna condicin no contemplada en el programa, usaremos un programa para provocar algn error al tiempo de ejecucin por ejemplo crear una string, no cargarla y compararla para ver cmo responde java a este problema: Prog5.java
import java.lang.*; import java.io.*; class prog5 { public static void main(String[] args) { // declarando variables a usar int alfa = 100, beta =0; float x=50 ; // provocando el error o excepcion x = alfa / beta; System.out.println("x="+x); } // cierra main } // cierra clase

corrida: como se observa se genero la excepcin y el programa ya no pudo continuar. Esta excepcin ocurri al tiempo de ejecucin del programa y por el problema ya descrito y explicado. La diferencia entre una EXCEPCION y un ERROR es que una excepcion si es atrapada (catch) por el programa y el programador permite recuperar el programa y continuar con su ejecucin, mientras que un error aunque sea atrapado (catch) por el programa y el programador el programa suspender y terminara su ejecucin. Si errores o excepciones no son atrapadas(catch) el programa terminara su ejecucin y mandara el aviso al usuario como se demuestra en la pantallita de arriba. Es por esta razn que es conveniente y necesario atrapar (catch) errores o excepciones, as el programador podr incluir algn mecanismo de correccin de errores o al menos de avisarle al usuario en lugar de que sea el servidor quien le avise.

Este mecanismo de correccin de errores es la clausula o instruccin Try{ Instrucciones normales de java; } catch(tipo de error o excepcion var de error){ inst de aviso o correccin de error puede incluir la var de error ; }; Un try-catch puede encerrar una instruccin de java, un grupo de instrucciones de java o todo el programa completo. Construimos el mismo programa pero con un try-cath(); Prog6.java
import java.lang.*; import java.io.*; class prog6 { public static void main(String[] args) { // declarando variables a usar int alfa = 100, beta =0; float x=50 ; // provocando el error o excepcion try { x = alfa / beta; } catch(ArithmeticException variablerror) {System.out.println(" error= "+ variablerror +'\n'); }; System.out.println("x="+x); } // cierra main } // cierra clase

Como se observa se pudo atrapar la excepcin y continuar el programa, el catch() usa la excepcin ARITHMETIC que el programa5 original ya haba reportado, es decir despus que un programa les mande errores y excepciones lo tendrn que corregir y agregarles try-catcg. En resumen cuando en algn programa al tiempo de ejecucin les aparezca error o excepcion van a ocupar usar try-catch para atraparlo o corregirlo, el tipo de error o excepcion a cubrir se los va a estar indicando el propio servidor de paginas como lo muestra la pantallita ejemplo de excepcin y observar que la misma excepcion que apareci en dicha pantallita, se puso en la clausula catch. Si aparecen ms errores o excepciones en un programa es vlido que un try lleve ms de un catch.

TAREAS PROGRAMACION JAVA 1.- Evaluar la funcin TEMA 10: CICLO FOR JAVA para x = 2,-5, 8

Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa ms de una vez. Este ciclo es uno de los ms usados para repetir una secuencia de instrucciones sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instruccin simple o compuesta. Su formato general es: for (inicializacin; condicin; incremento) { instruccin(es); }; En su forma simple la inicializacin es una instruccin de asignacin que carga una variable de control de ciclo con un valor inicial. La condicin es una expresin relacional que evala la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo. El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite un ciclo. Se deben separar esos 3 argumentos con punto y coma ; EJEMPLO Cdigo prog7.java
import java.lang.*; import java.io.*; class prog7 { public static void main(String[] args) { // ciclo for for(int x=1; x<=5; x++) { System.out.println(x+" MAMA" + '\n'); }; } // cierra main } // cierra clase

corrida: prog7.class

Casos Particulares del ciclo for: 1.- El ciclo comienza en uno y se incrementa de uno en uno este es el caso ms general. 2.- Pero el valor inicial puede ser diferente de uno, ejemplo; for(x=5;x15;x=x+1){ etc.}; 3.- Incluso el valor inicial puede ser negativo, ejemplo; for (x = -3 ;x 8; x=x+1) { etc.}; 4.- Los incrementos tambin pueden ser diferentes al de uno en uno, ej.; for (x=1; x 20; x=x+3){ etc. }; 5.- Incluso pueden ser decrementos, solo que en este caso, recordar; 5.1.-el valor inicial de la variable debe ser mayor que el valor final. 5.2.-cambiar el sentido de la condicin. ejemplo;

for (x= 50 ; x >= 10; x= x-4 ) { etcetera };

6.- Solo para los casos de incrementos y decrementos de una en una unidad substituir en el for; el x = x + 1 por x++ el x = x - 1 por x TAREAS PROGRAMACION JAVA 1.- CONSTRUIR UN PROGRAMA QUE DESPLIEGUE LOS NMEROS DEL 20 AL 30. 2.- DESPLEGAR LOS ENTEROS ENTRE 50 Y 30 ACOMPAADOS DE SU POTENCIA CUADRADA Y RAZ CUBICA RESPECTIVA(revisar el tema de operadores aritmticos).

3.- DESPLEGAR LOS MLTIPLOS DE 5, ENTRE 10 Y 50, ACOMPAADOS DE SU FACTORIAL Y LOGARITMO RESPECTIVO(revisar el tema de operadores aritmticos tambin). 4.- DESPLEGAR LA TABLA DE MULTIPLICAR QUE EL USUARIO INDIQUE. 5.- EVALUAR LA FUNCION Y=5X^2 + 3X + 8 CUANDO X> -310 (RANGO DE -3 HASTA 10)

TEMA 11: CICLO WHILE JAVA

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condicin permanezca como verdadera en el momento en que la condicin se convierte en falsa el ciclo termina. Su formato general es : cargar o inicializar variable de condicin; while(condicin) { grupo cierto de instrucciones; instruccin(es) para salir del ciclo; }; Un error muy comn con el while, es poner un punto y coma(;) despus de la (condicin) ejemplo while(condicin); -esto es y causa un error. Prog8.java
import java.lang.*; import java.io.*; class prog8 { public static void main(String[] args) { // ciclo for int x=1; while ( x<=5 ) { System.out.println(x+" PAPA" + '\n'); x++; }; } // cierra main } // cierra clase

corrida prog8.class

While puede llevar dos condiciones en este caso inicializar 2 variables de condicin y cuidar que existan 2 de rompimiento o terminacin de ciclo. El grupo cierto de instrucciones puede ser una sola instruccin o todo un grupo de instrucciones. La condicin puede ser simple o compuesta. Los casos generales de for tambin se aplican a while. A este ciclo tambin se le conoce tambin como ciclo de condicin de entrada o prueba por arriba porque este ciclo evala primero la condicin y posteriormente ejecuta las instrucciones. TAREAS PROGRAMACION JAVA 1.- DESPLEGAR ENTEROS ENTRE 50 Y 80 2.- DESPLEGAR MULTIPLOS DE 4 ENTRE 60 Y 20 ACOMPAADOS DE SU LOGARITMOS DE BASE 10 Y BASE e RESPECTIVOS. 3.- CONSTRUIR LA TABLA DE DIVIDIR QUE EL USUARIO INDIQUE. 4.- Evaluar una funcin cualesquiera para el rango de valores de x de -3 a +5 TEMA 12: CICLO DO WHILE JAVA

Su diferencia bsica con el ciclo while es que la prueba de condicin es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final evala la condicin; Tambin se le conoce por esta razn como ciclo de condicin de salida.

Su formato general es : cargar o inicializar variable de condicin; do { grupo cierto de instruccin(es); instruccin(es) de rompimiento de ciclo; } while (condicin); prog9.java
import java.lang.*; import java.io.*; class prog9 { public static void main(String[] args) { // ciclo for int x=1; do { System.out.println(x+" HIJO" + '\n'); x++; } while (x<=5) ; } // cierra main } // cierra clase

Corrida prog9.java

Otra diferencia bsica con el ciclo while es que, aunque la condicin sea falsa desde un principio el cuerpo de instrucciones se ejecutara por lo menos una vez.

TAREAS PROGRAMACION JAVA

1.- tres del for 2.- tres del while

TEMA 13: CONCLUSIONES ACERCA DE CICLOS JAVA

El problema de dado un problema cualquiera cual ciclo se debe usar se resuelve con: 1. Si se conoce la cantidad exacta de veces que se quiere que se ejecute el ciclo o si el programa de alguna manera puede calcularla usar for. 2. Si se desconoce la cantidad de veces a repetir el ciclo o se quiere mayor control sobre la salida o terminacin del mismo entonces usar while. 3. Si se quiere que al menos una vez se ejecute el ciclo entonces usar do while. TEMA 1: INTRODUCCION PROGRAMACION JAVA

1. Uno de los problemas ms comunes en los diversos sistemas de informacin es el tratamiento o procesamiento de un gran volumen de datos o de informacin. 2. Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares, porque solo permiten almacenar o procesar un dato a la vez. 3. Por ejemplo si se quiere almacenar nombre y edad de 15 personas con el mtodo tradicional se ocuparan 30 variables y solo es nombre y edad de 15 personas, agreguen ms datos y ms personas y ya es tiempo de empezar a analizar otro tipo de variables. 4. Es decir, en problemas que exigen manejar mucha informacin o datos a la vez, variables escalares no son suficientes ya que su principal problema es que solo permiten almacenar y procesar un dato a la vez. 5. Se ocupan entonces variables que sean capaces de almacenar y manipular conjuntos de datos a la vez. 6. Variables de tipo arreglo si permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez. 7. Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa (captura, operacin, despliegue ) usando el nombre del arreglo respectivo y un subndice indicando la posicin relativa del elemento con respecto a los dems elementos del arreglo solo recordar que en java la primera posicin, elemento o rengln es el 0 (cero), ej. NOMBRES Juan nombres(0) Pedro nombres(1) Rosa nombres(2) Jose nombres(3)

4. Sin embargo sus problemas son similares a los de variables normales es decir hay que declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc.

TEMA 2: ARREGLOS JAVA

En programacin tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos; a) LISTAS EDAD 18 34 22 15 B) TABLAS CIA ACME ING MENS VTAS (MILES DE $) .ENE FEB MAR ABR MAY SUC A 10 20 30 40 SUC B 50 60 70 80 SUC D 90 100 110 120 Como se observa la diferencia principal entre un arreglo tipo lista y un arreglo tipo tabla son las cantidades de columnas que contienen. NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES FINANCIEROS ADMINISTRATIVOS. EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL. TEMA 3: JAVA ARREGLO TIPO LISTA

Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de datos del mismo tipo organizados en una sola columna y uno o ms renglones. Tambin reciben el nombre de vectores en lgebra o arreglos unidimensionales en programacin. Los procesos normales con una lista o con sus elementos, incluyen declarar toda la lista, capturar sus elementos, desplegarlos, realizar operaciones con ellos, desplegarlos, etc. Para declarar una lista se usa el siguiente formato; tipodato nomlista[]= new tipodato[cant elementos]; Es muy importante tener en cuenta que el primer elemento de la lista se almacenara y referenciara a lo largo del programa en la posicin 0. SORPRESA no existen en java arreglos o listas tradicionales lo que existe es un objeto por tanto se deber usar el operador new antes de empezar a procesar el arreglo las ventajas son: a) estas listas pueden usar el mtodo length (ejemplo nomlista.length;) para conocer el tamao de la misma.

int edades[]= new int[12]; float sueldos[]=new float[5]; String municipios[]={tijuana,tecate,ensenada}; en este ltimo caso, observar que tambin pueden crearse listas ya con tamao fijo e inicializadas o cargadas

notas: Recordar tambin que la primera posicin o rengln en una lista es la posicin o rengln 0 (cero). Prog10.java
import java.lang.*; import java.io.*; class prog10 { public static void main(String[] args) { // creando objeto teclado BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));

// creando arrreglo y variables int edad[]=new int[5], ren; // capturando arreglo try { for (int r=0; r<=4; r++) { System.out.println("Dame Edad :" ); edad[r] = Integer.parseInt(teclado.readLine()); }; } catch(IOException variablerror) {System.out.println("error de captura "); } // procesando for(int r=0; r<=4; r++) edad[r]=edad[r] * 12; //desplegando for (int r=0; r<=4;r++) System.out.println(" Edad ="+edad[r] + '\n'); } // cierra main } // cierra clase

corrida prog10.class

notas: Para el caso de Escrituras, operaciones y comparaciones con todos los elementos de la lista a la vez, se deber usar un ciclo for con una variable entera llamada rengln misma que tambin se usa como ndice de la lista.

Para inicializar una lista se debe usar el siguiente formato: tipodato nomlista[]={lista de valores}; ej; int edad[4]={15,16,17,18}; float sueldo[3]={40.85, 65.30, 33.33}; String *ciudad[]={tecate, tijuana, mexicali, rosarito, ensenada}; TAREAS PROGRAMACION JAVA 1.- Capturar y desplegar 5 precios de productos cualesquiera. 2.- Capturar 4 sueldos, desplegarlos aumentados en un 25%. 3.- Capturar los datos de 5 productos comprados en una tienda, incluyendo nombre, precio y cantidad en sus 3 listas respectivas( se vale inicializar los arreglos de nombre y precio) despus calcular una cuarta lista con el gasto total por cada producto desplegarlo todo e incluir tambin el gran total.

TEMA 4: ARREGLOS TIPO TABLA JAVA

Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados en dos o ms columnas y uno o ms renglones. Para procesar ( recordar solo operaciones y comparaciones) internamente todos los elementos de la tabla se ocupan dos ciclos for(), uno externo para controlar rengln y uno interno para controlar columna. Los elementos de la tabla se debern simbolizar con el nombre de la tabla y 2 subndices, el primer subndice referencia al rengln y el siguiente subndice referencia la columna los dos dentro del mismo corchete. La declaracin de una tabla ser de acuerdo a los siguientes formatos: 1) tipodato nomtabla[][]= new tipodato[reng][col]; ejemplo: int calif[][]=new int[3][4];

double ingresos[][]= new double[3][4]; 2) Clasenumerica objetotabla[][]= new constructor[ren][col]; ejemplo; Integer calif[][]= new Integer[2][3]; Double ingresos[][]=new Double[3][4]; Recordar que tambin el primer rengln y la primera columna de la tabla empezaran en la posicin 0. Para efectuar todos los procesos tales como capturas, operaciones despliegue con todos los elementos de la tabla se debern usar 2 ciclos un for externo para controlar rengln y un for interno para controlar columna. Prog11.java
import java.lang.*; import java.io.*; class prog11 { public static void main(String[] args) { // creando objeto teclado BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // creando arrreglo y variables int calif[][]=new int[3][4]; // capturando arreglo try { for(int r=0; r<=2; r++) for(int c=0; c<=3; c++) { System.out.println("Dame Calif:"+r+","+c ); calif[r][c] = Integer.parseInt(teclado.readLine()); }; } catch(IOException variablerror) {System.out.println("error de captura "); } // procesando regalando 10 puntos for(int r=0; r<=2; r++) for(int c=0; c<=3; c++) calif[r][c]=calif[r][c] +10; //desplegando for(int r=0; r<=2;r++) { for(int c=0; c<=3;c++) { System.out.println(" calif="+calif[r][c]+" " ); }; System.out.println('\n'); }; } // cierra main } // cierra clase

Corrida prog11.class

Para inicializar tablas, se deber usar el siguiente formato: tipodato nomtabla[2][3]={1,2,3,4,5,6 }; TAREAS PROGRAMACION JAVA 1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA. 2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL AO DE CUATRO SUCURSALES DE UNA CADENA DE AUTO REFACCIONES, AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL(2 programas uno capturado y otro inicializado). 3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES, DE LOS 5 TIPOS DE LINEA BLANCA DE CONOCIDA MUEBLERIA, ADEMAS LISTAS DE COMISIONES TOTALES Y PROMEDIOS GANADAS POR LOS VENDEDORES, ASI

COMO LISTAS DE COMISIONES TOTALES Y PROMEDIOS POR TIPO DE LINEA BLANCA(inicializado). ANALIZAR ESTE CODIGO:
' PARA TOTALES Y PROMEDIOS POR RENGLON FOR R = 0 TO 3 FOR C = 0 TO 2 TOTRENG(R) = TOTRENG(R) + TABLA(R,C) NEXT C PROMRENG(R) = TOTRENG(R)/3 NEXT R 'PARA TOTALES Y PROMEDIOS POR COLUMNA FOR C = 0 TO 2 FOR R = 0 TO 3 TOTCOL(C)=TOTCOL(C) + TABLA(R,C) NEXT R PROMCOL(C) = TOTCOL(C) / 4 NEXT C

SUGERENCIA: CONSTRUIR PRIMERO LOS CUADROS EN PAPEL.

UNIDAD 4: JAVA PROGRAMACION ORIENTADA OBJETOS TEMA 1: DECLARACION PROCEDIMIENTOS JAVA

Recordar que un objeto presenta tres aspectos, propiedades, mtodos y eventos, en esta unidad se analizan algunos elementos que intervienen en la definicin de un mtodo.

Estamos hablando de los llamados procedimientos y funciones, que quede claro que procedimientos y funciones son solo algunos aspectos (importantes) de la definicin de un mtodo, pero que existen elementos tan o ms importantes que los analizados en esta unidad. Un procedimiento es un grupo de instrucciones, variables, constantes, etc, que estn diseados con un propsito particular y tiene su nombre propio. Es decir un procedimiento es un modulo de un programa que realiza tareas especificas y que no puede regresar valores al programa principal u a otro procedimiento que lo est invocando. Despus de escribir un procedimiento se usa su propio nombre como una sola instruccin o llamada al procedimiento. Su formato es static void NomProc(){instrucciones;}; Un programa puede tener tantos procedimientos como se deseen, para hacer una llamada o invocacin al procedimiento durante la ejecucin de un programa se deber escribir el nombre de la misma y los parentesis en blanco. Prog12.java
import java.lang.*; import java.io.*; class prog12 { public static void main(String[] args) { // llamando procedimiento1 proc1(); }; // cierra main public static void proc1() { System.out.println("soy procedimiento uno "); //enlazando proc2() proc2(); }; // cierra proc1 public static void proc2() { System.out.println(" y yo soy procedimiento 2 "); }; //cierra proc2 } // cierra clase

Observar que los procedimientos se construyen como parte de la clase (prog12) pero fuera de main(){}; Corrida:

TAREA PROGRAMACION JAVA Construir un programa que contenga puras llamadas a procedimientos dentro de un men. Men. a) Pesos a dolares. b) rea de un triangulo. c) Emitir Boleta. d) Fin de men.

TEMA 2: PARAMETROS JAVA

Un parmetro es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algn proceso. Estos valores que se pasan del cuerpo principal del programa al procedimiento se llaman parmetros. Entonces una declaracin completa es: Static void NomProc(lista de parmetros) { cuerpo de instrucciones; };

prog13.java
import java.lang.*; import java.io.*; class prog13 { public static void main(String[] args) { // llamando procedimiento1 y pasando algunos parmetros double beta=3.1416; proc1(8+4 , beta, "juan" ); }; // cierra main public static void proc1(int a, double b, String nom ) { double c = a + b; System.out.println(nom+ " la suma fue =" + c); }; // cierra proc1 } // cierra clase

CORRIDA:

REGLAS PARA EL USO DE PARAMETROS 1.- Cuando se usan variables como parmetros, la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se est enviando. 2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre. 3.- La cantidad de variables que se envan deben ser igual en cantidad, orden y tipo a las variables que reciben. 4.- La variable que recibe tiene un mbito local dentro del procedimiento, es decir solo la puede usar ese procedimiento. Y se pueden mandar datos, valores (excepto decimales), expresiones algebraicas, pero siempre se recibe en variables. TAREAS PROGRAMACION JAVA

Capturar el nombre y las 3 calificaciones en un procedimiento, calcular promedio en un segundo, imprimir nombre y promedio en principal Construir una tabla de multiplicar que el usuario indique captura y control de ciclo en el principal, calculo en un procedimiento. Construir un procedimiento que reciba un nmero entero y que mande llamar a un segundo procedimiento pasando el letrero PAR O IMPAR. TEMA 3: VARIABLES LOCALES GLOBALES JAVA

El lugar donde sea declarada una variable afectara el uso que el programa quiera hacer de esa variable. Las reglas bsicas que determinan como una variable puede ser usada dependen de 3 lugares donde se puede declarar una variable. En primer lugar es dentro de cualquier funcin o procedimiento incluyendo main, a estas se les llama variables locales y solo pueden ser usadas por instrucciones que estn dentro de esa funcin o procedimiento. En segundo lugar es como parmetro de una funcin o procedimiento, donde despus de haber recibido el valor, podr actuar como variable local en esa funcin o procedimiento. En escancia una variable local solo es conocida por el cdigo de esa funcin o procedimiento y es desconocida por otras funciones o procedimientos. En tercer lugar es fuera de todas las funciones incluyendo main(), pero dentro de la clase global) etc, a este tipo de variables se les llama variables globales y podrn ser usadas por cualquier funcin o procedimiento del programa. Prog14.java
import java.lang.*; import java.io.*; class prog14 { // variable global static int varglobaluno=100; public static void main(String[] args) { // llamando procedimiento1 y pasando algunos parmetros // todo lo declarado dentro de un proc es var local double beta=3.1416; proc1(beta); }; // cierra main //todo parmetro es tambin var local public static void proc1(double b) {

b = b + varglobaluno; System.out.println(" la suma fue =" + b); }; // cierra proc1 } // cierra clase

corrida:

TAREAS PROGRAMACION JAVA 1.- BOLETA DE CALIFICAIONES Y SOLO USAR DOS VARIABLES GLOBALES 2.- UNA TABLA DE MULTIPLICAR Y SOLO USAR UNA VARIABLE GLOBAL

TEMA 4: FUNCIONES JAVA

Una funcin es un modulo de un programa separado del cuerpo principal, que realiza una tarea especfica y que puede regresar un valor a la parte principal del programa u otra funcin o procedimiento que la invoque. La forma general de una funcin es: tipodatoregresa Nom_fun(parmetros) { cuerpo de instrucciones; intruccion return; }; El tipo especifica el tipo de valor que la funcin regresara utilizando la instruccin return. Si no se especifica un tipo se asume de default que el tipo regresado es int.

La lista de parmetros formales es una lista de variables separadas por comas (,) que almacenaran los valores que reciba la funcin, estas variables actan como locales dentro del cuerpo de la funcin. Aunque no se ocupen parmetros los parntesis son requeridos. La declaracin de parmetros es la especificacin de cada tipo de parmetro recibido. INSTRUCCION RETURN Dentro del cuerpo de la funcin deber haber una instruccin return cuando menos para regresar el valor, es esta instruccin quien regresa el dato. Prog15.java
import java.lang.*; import java.io.*; class prog15 { // variable global static int varglobaluno=100; public static void main(String[] args) { // llamando a funcion1 y pasando algunos parmetros double beta = funcion1(5+8); System.out.println(" la suma fue =" + beta ); }; // cierra main public static double funcion1 (int a ) { return a + 2.345; }; // cierra funcion1 } // cierra clase

corrida:

Es permitido poner ms de un return en el cuerpo de instrucciones sobre todo en condiciones pero solo un return se ejecutara. Ejemplo; if (suma >= 10)

{ return 10; } else { return 20; } EXISTEN 3 CLASES USUALES DE FUNCIONES. Las primeras son de tipo computacional que son diseadas para realizar operaciones con los argumentos y regresa un valor basado en el resultado de esa operacin. Las segundas funciones son aquellas que manipulan informacin y regresan un valor que indican la terminacin o la falla de esa manipulacin. Las terceras son aquellas que no regresan ningn valor, es decir son estrictamenta procedurales. TAREAS PROGRAMACION JAVA una cuenta e instrucciones de uso apropiadas. 1 Imprimir nombre y promedio de un alumno, capturar 3 calificaciones y nombre en un procedimiento, calcular promedio en una funcin y desplegar 2 Crear una tabla de multiplicar, captura y control de ciclo en el principal, operaciones en una funcin, despliegue en el principal. 3 Construir una funcin que nos regrese el triple de cualquier nmero. 4 Construir un programa que emita una factura si el artculo es importado, una funcin lo graba con el 20% de iva si es nacional, la misma funcin lo graba con el 15% de iva si no lo es. 5 Construir una funcin que nos regrese la letra I o P si el nmero que recibi fue impar o par respectivamente.

TEMA 5: ARREGLOS COMO PARAMETROS JAVA PROGRAMACION

Para pasar un arreglo completo como parmetro a un procedimiento a una funcin solo se manda el nombre del arreglo sin corchetes e ndices, en el procedimiento o funcin que recibe solo se declara un arreglo del mismo tipo y se puede usar el mismo o diferente nombre del arreglo sin corchetes e ndices. Sin embargo es conveniente aclarar, que a diferencia de variables escalares normales, java no genera una nueva variable en memoria ni tampoco copia los datos al arreglo que recibe, en su lugar java sigue

usando los datos que estn en el arreglo original, es por esta razn que cambios que se le hagan a los datos del arreglo que recibe realmente se est haciendo al arreglo original como lo muestra el siguiente ejemplo: Prog16.java
import java.lang.*; import java.io.*; class prog16 { public static void main(String[] args) { //creando y cargando un arreglo local int lista[]={3,4,5}; // pasandolo a proc1 no lleva parentesis proc1(lista); // desplegando y que saldra ??? for( int r=0; r<=2; r++) System.out.println("lista["+r+"]="+lista[r]+'\n' ); }; // cierra main public static void proc1(int vector[] ) { // agregandole 10 a vector for( int r=0; r<=2; r++) vector[r]= vector[r] + 10; }; } // cierra clase

corrida prog16.class

Es de recordar que los cambios que le hagan al arreglo dentro de la funcin se reflejaran en el arreglo original es por esto que si se quiere modificar un arreglo en una funcin no hay necesidad de regresar ningn valor. TAREAS PROGRAMACION JAVA 1 Inicializar 10 edades en el principal mandar la lista a un procedimiento que la convierte a meses, desplegar en principal.

2 Capturar un arreglo de 7 ciudades en principal, sortear u ordenar o alfabetizar (sorteo burbuja) en un procedimiento y desplegar en principal tanto la lista original como la lista ordenada. TEMA 6: JAVA CLASES PAQUETES

Construyamos un ejemplo, donde se crea un clase propia (llamada formulas) que contiene varios mtodos( pesos-dllrs, areatriangulo, etc). Existen varias maneras de incorporar una nueva clase a un programa normal, de tipo consola, gui, applet, etc. - Ponerla dentro del propio programa: Prog17.java
import public public //para java.io.*; class prog17 { static void main(String[] args) { usar clase y mtodos usar notacion clase.metodo

double area=formulas.areatriangulo((double)10,(double)20); System.out.println("area="+area); int prom=formulas.promedio(10,20); System.out.println("promedio="+prom); } // cierra main } // cierra clase // solo poner abajo las clases propias class formulas{ // no se me ocurri ninguna propiedad solo mtodos y constructor void formulas(){}; static double areatriangulo( double base, double altura) { return base* altura /2.0 ;}; static double pesosdolares (int pesos, double tipocambio) { return pesos/tipocambio; }; static int promedio (int calif1, int calif2) {return (calif1+calif2)/2 ;};}

corrida:

B) Similar al ejemplo anterior pero ahora se crea un objeto hijo, derivado de nuestra clase: Prog18.java
import java.io.*; public class prog18 { public static void main(String[] args) { // tambin es valido crea objetos derivados de clase propia formulas formhija=new formulas(); //para usar clase y mtodos usar notacion clase.metodo double area=formhija.areatriangulo((double)10,(double)20); System.out.println("area="+area); int prom=formhija.promedio(10,20); System.out.println("promedio="+prom); } // cierra main } // cierra clase // solo poner abajo las clases propias class formulas{ // no se me ocurri ninguna propiedad solo mtodos y constructor void formulas(){}; static double areatriangulo( double base, double altura) { return base* altura /2.0 ;}; static double pesosdolares (int pesos, double tipocambio) { return pesos/tipocambio; }; static int promedio (int calif1, int calif2) {return (calif1+calif2)/2 ;}; }

corrida:

c) Tambin es valido, crearlas y compilarlas por separado, tanto la clase propia, como la clase principal, solo tener cuidado de poner las dos clases en el mismo nivel de directorio, para que javac pueda hallarlas y no olvidar que en caso de problemas usar set classpath=.; antes de usar javac. Prog19.java
import java.io.*; import formulas.*; public class prog19 { public static void main(String[] args) { double area=formulas.areatriangulo((double)10,(double)20); System.out.println("area="+area); int prom=formulas.promedio(10,20); System.out.println("promedio="+prom); } // cierra main } // cierra clase

formulas.java
import java.io.*; class formulas { // no se me ocurri ninguna propiedad solo mtodos y constructor void formulas(){}; static double areatriangulo( double base, double altura) { return base* altura /2.0 ;}; static double pesosdolares (int pesos, double tipocambio) { return pesos/tipocambio; }; static int promedio (int calif1, int calif2) {return (calif1+calif2)/2 ;}; } // termina clase

corrida prog19.java

E) Tambin es vlido crear un paquete(que es tambin un folder o subdirectorio) donde se pueden poner todas nuestras clases, pero la clase propia debe llevar una instruccin especial que indica que pertenece a dicho paquete o folder: Formula.class
//ver la instruccin y recordar crear el folder y renombrarlo con // el nombre de paquete, esta clase propia se debe poner dentro de //este folder paquete package paquete; public class formulas{ // no se me ocurri ninguna propiedad solo mtodos y constructor public static void formulas(){}; public static double areatriangulo( double base, double altura) { return base* altura /2.0 ;}; public static double pesosdolares (int pesos, double tipocambio) { return pesos/tipocambio; }; public static int promedio (int calif1, int calif2) {return (calif1+calif2)/2 ;}; }

El folder que tiene adentro nuestra clase propia, se debe poner en un nivel abajo de donde se encuentra la clase principal ver siguiente grafico:

El programa que llama nuestro paquete y nuestra clase es: Prog20.java


import java.io.*; import paquete.*; public class prog20 { public static void main(String[] args) { double area=formulas.areatriangulo((double)10,(double)20); System.out.println("area="+area); int prom=formulas.promedio(10,20); System.out.println("promedio="+prom); } // cierra main } // cierra clase

corrida:

TAREA PROGRAMACION JAVA generar dos clases propias y usarlas en algn programa.

UNIDAD 5: JAVA REGISTROS Y ARCHIVOS SECUENCIALES

TEMA 1: INTRODUCCION JAVA

Antes de empezar a programar en serio se estudian en esta unidad dos problemas. Problema A: Variables que puedan almacenar un conjunto de valores y no necesariamente del mismo tipo. Problema B: Resolver el problema de almacenar en forma permanente los datos que se generan dentro de un programa ya sea por captura, proceso, etc; El problema (A) se resuelve usando el concepto de estructuras o registros el problema (B) se resuelve usando el concepto de archivos. UNIDAD 5: JAVA REGISTROS Y ARCHIVOS SECUENCIALES TEMA 2: REGISTROS JAVA

Ya se ha visto como variables simples pueden almacenar una sola pieza de informacin y como arreglos pueden almacenar un conjunto de ellas del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones, pero a menudo se necesita trabajar sobre datos de diversos tipos, en este caso ni variables escalares ni arreglos son adecuados. Para resolver estos problemas los lenguajes de programacin proveen de un tipo de dato especial llamado registros. Un registro es una variable especial que tiene la capacidad de almacenar datos de diferentes tipos. Sin embargo JAVA usa en su lugar una CLASE. Este mtodo tiene la ventaja de que adems de incluir los campos tradicionales de un registro (en forma de atributos) tambin puede incorporar una serie de mtodos que permiten procesar de manera mas fcil los campos o atributos de la clase. Ejemplo; class alumno{ void alumno(){}; static String nombre= new String(); static int edad; void inicializar(){

alumno.nombre=pepe el toro; alumno.edad=18; }; void desplegar(){ System.out.println(alumno.nombre); System.out.println(alumno.edad); }; } termina la clase Programa 21.java ; <code> import java.io.*; class prog21{ public static void main(String[] args) { alumno.inicializar(); alumno.desplegar(); } cierra main } cierra clase class alumno { void alumno(){}; static String nombre= new String(); static int edad; static void inicializar() { alumno.nombre=pepe el toro; alumno.edad=18; }; static void desplegar(){ System.out.println(alumno.nombre); System.out.println(alumno.edad); }; } temina la clase </code> corrida:

Para indicar a java durante cualquier proceso que la variable a utilizar es un campo de una clase se deber utilizar el siguiente formato.

nomclase.nombredelcampo TAREAS PROGRAMACION JAVA 1.-Crear una clase de alumno que incluya un mtodo que capture 3 calefacciones. 2.-Declarar una clase o registro de empleado, capturarlo y desplegarlo un nmero indeterminado de veces. 3.- Capturar una clase o registro de empleados, aumentar sueldo en 25% y desplegar. 4.-Capturar una clase o registro de cuentas por cobrar, mandar imprimir un aviso si el saldo esta atrasado. UNIDAD 5: JAVA REGISTROS Y ARCHIVOS SECUENCIALES TEMA 3: JAVA ARCHIVOS (INTRODUCCION)

Si bien es cierto que ya se pueden manejar gran cantidad de datos del mismo y diferente tipo al mismo tiempo, el problema es que al terminar de ejecutarse el programa los datos se pierden. De esta situacin nace el concepto de archivos que son medios que facilita el lenguaje para almacenar los datos en forma permanente normalmente en los dispositivos de almacenamiento estndar. En general es necesario entender algunos conceptos elementales de sistemas de archivos tradicionales. Como nota a tomar en cuenta los datos que se van almacenando en un archivo de disco se almacenan en renglones consecutivos y cada rengln en disco se conoce como registro del archivo favor de no confundir el concepto de registro de archivo y registro o estructura como variable ya analizada son dos cosas totalmente diferentes aunque se llamen igual. Operaciones basicas con archivos: 1. ESCRIBIR O GRABAR: Es la operacin mas elemental con un archivo consiste en tomar un o unos datos en variables de cualquier tipo (escalar, mezcla de datos, arreglo, estructuras) y almacenarlas en un archivo de datos en disco. 2. LEER: Operacin consistente en sacar los datos del archivo en disco y mandarlo o cargar la variable respectiva Organizacin de archivos: En general existen dos tipos de archivos:

1. Archivos Secuenciales.- En este caso los datos se almacenan en forma consecutiva y no es posible leer (recuerdan que significa esta operacin) ningn registro (recuerdan la nota de arriba) directamente es decir para leer el registro n, se deber recorrer o accesar los n-1 registros anteriores. 2. Archivos Directos o Random.- Para este caso si se puede acceder o leer un rengln n cualquiera. Tipo de archivos: A) En general, existen tantos tipos de archivos como tipos de datos existen es decir existen archivos de bytes, de chars, de ints, de floats, etc. ATENCION: Ya que se decide utilizar algn archivo especifico de datos (caracteres, strings, formateados, registros o arreglos) solo utilizar las funciones de escritura y lectura de ese tipo de archivo por ningn motivo mezcle funciones de lectura y escritura de otro tipo de archivos. Almacenamiento en arhivos: 1. Modo Texto: en este caso los datos son almacenados usando cdigo ascii y por tanto son plenamente visibles usando cualquier editor. 2. Modo Binario: en este caso los datos son almacenados en notacin hexadecimal y por tanto se ocupa un editor binario para reconocerlos sin embargo un archivo binario es ms compacto que un archivo texto.

UNIDAD 5: JAVA REGISTROS Y ARCHIVOS SECUENCIALES TEMA 4: JAVA ARCHIVOS SECUENCIALES Existen adems muchas otras operaciones asociadas a archivos las ms elementales son: 1.- Creacin de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco, con su nombre, tipo y especialidad de almacenamiento de datos apropiado. 2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo, ya sea cargar o grabar datos en sus registros, o leer algn registro en especial para mandarlo a una variable de cualquier tipo. No confundir creacin con apertura creacin es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura siempre se est realizando por los programas especializados en algn proceso. 3.-Cierre de archivos: Es la operacin ms importante en cualquier programa que maneje archivos o se cierra el archivo como ltima instruccin del programa o se ver el anuncio ABORT,RETRY,FAIL. 98, /s, scandisk 4.-Altas en archivo.- En este proceso se carga una clase en memoria con sus datos pertinentes y se graba la clase en el archivo en disco. 5.-Lectura de archivo.- En este proceso, se abre el archivo y se manda el registro de disco, a una clase en memoria para su procesamiento. 6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla ya sea consola o mejor an, a una pagina html

7.-Busqueda en archivos: Una de las operaciones ms comunes, consiste en que el usuario pide toda la informacin de algn rengln en disco, proporcionando la informacin de algn campo, generalmente el campo clave de la clase. 8.- Filtros.- En este proceso el usuario est interesado en algn conjunto de renglones con caractersticas comunes (condicin), por ejemplo todos los alumnos de sistemas, o todos los empleados que ganen ms de $500.00 pesos, o todos los clientes que sean de tijuana, etc 9.-Modificaciones de registros o archivos: Problema muy comn, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era juan es juana, o la calificacin no es 100 es 20, etc. 10.- Bajas de registros: tambin muy comn este proceso por ejemplo el alumno ya egreso, el cliente huyo, etc.

TEMA 5: GRABACION ARCHIVO SECUENCIAL JAVA

Grabacin y lectura son los dos procesos ms comunes con archivos en cualquier lenguaje de programacin. Cdigo de grabacin: Prog22.java
import java.lang.*; import java.io.*; class prog22 { public static void main(String[] args) { // crear un objeto de tipo archivo DataOutputStream archivo = null; // creando e inicializando los campos del registro // observar que se debe usar clases numericas apropiadas int clave=0; String nombre=new String(""); int edad=0; // creando objeto teclado BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // abriendo archivo, capturando y grabando datos try { //* Creando y grabando a un archivo, esta larga la instruccin*/ archivo = new DataOutputStream( new FileOutputStream("c:\\pfacil\\archivo1.dat",true) ); System.out.println("dame clave: "); clave = Integer.parseInt(teclado.readLine()); System.out.println("dame nombre: "); nombre=teclado.readLine(); System.out.println("dame edad: ");

edad = Integer.parseInt(teclado.readLine()); //grabando al archivo archivo.writeInt(clave); archivo.writeUTF(nombre); archivo.writeInt(edad); archivo.close(); } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } } // cierra main } // cierra clase

corrida:

Se usa una clase llamada FileOutputStream, especializada en archivos con muchos mtodos y constructores para crear, manipular y procesar archivos el constructor usado solo lleva dos parmetros, el primero todo la ruta o path a donde quedara el archivo(cuidado con no poner la doble diagonal \\) y el segundo parmetro es la palabra true, esto es para que el archivo se abra en modo llamado APPEND, es decir que cada nuevo registro se vaya escribiendo al final del archivo, si no se pone este parmetro(true), un nuevo registro se sobreescribiria sobre el registro anterior. Sin embargo en el programa no se uso solo FILEOUTPUSTREAM ( solo para crear el archivo), tambin se usa DATAOUTPUTSTREAM, esta segunda clase es derivada de la anterior y comparte muchos de sus mtodos, la diferencia es que fileoutputstream est especializada en grabar y leer bytes, mientras que dataoutputstream est especializada en grabar y leer datos formateados, observar que los mtodos que uso el objeto archivo para grabar o almacenar datos se especializan en algn tipo de dato en especial, sus otros mtodos son: Method Summary void flush() Flushes this data output stream. size() Returns the current value of the counter written, the number of bytes written to this int data output stream so far. write(byte[] b, int off, int len) void Writes len bytes from the specified byte array starting at offset off to the underlying output stream. write(int b) Writes the specified byte (the low eight bits of the argument b) to the underlying void output stream. void writeBoolean(boolean v) Writes a boolean to the underlying output stream as a 1-byte value. writeByte(int v) void Writes out a byte to the underlying output stream as a 1-byte value. WriteBytes (String s) Writes out the string to the underlying output stream as a sequence of void bytes. void writeChar(int v) Writes a char to the underlying output stream as a 2-byte value, high byte

first. void WriteChars (String s) writes a string to the underlying output stream as a sequence of characters. writeDouble(double v) Converts the double argument to a long using the doubleToLongBits method in class void Double, and then writes that long value to the underlying output stream as an 8-byte quantity, high byte first. writeFloat(float v) Converts the float argument to an int using the floatToIntBits method in void class Float, and then writes that int value to the underlying output stream as a 4-byte quantity, high byte first. writeInt(int v) void Writes an int to the underlying output stream as four bytes, high byte first. writeLong(long v) void Writes a long to the underlying output stream as eight bytes, high byte first. writeShort(int v) void Writes a short to the underlying output stream as two bytes, high byte first. writeUTF (String str) writes a string to the underlying output stream using UTF-8 encoding in a void machine-independent manner. TABLA TOMADA DEL API DE JAVA Observar que la grabacin lleva un try-catch filenotfound y ioexception, que son obligatorios o no compila el programa. No olvidar cerrar el archivo, con la instruccin archivo.close TAREAS PROGRAMACION JAVA 1.- crear y cargar un archivo2.dat que contenga registros de empleados. 2.- crear y cargar un archivo3.dat que contenga registros de productos

TEMA 6: LECTURA ARCHIVO SECUENCIAL

El proceso de lectura de los registros de un archivo secuencial es realmente sencillo, como lo muestra el siguiente cdigo ejemplo; Prog23.java:

import java.lang.*; import java.io.*; class prog23 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; // creando e inicializando los campos del registro // observar que se debe usar clases numericas apropiadas int clave=0; String nombre=new String(""); int edad=0; try{ //* abriendo archivo para lectura */ archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); System.out.println(clave+" "); nombre=archivo.readUTF(); System.out.println(nombre+" "); edad=archivo.readInt(); System.out.println(edad+" "); System.out.println('\n'); } } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } // cerrar archivo archivo.close(); } // cierra main } // cierra clase

Corrida:

Notas:

Observar en cdigo que ahora se usan FILEINPUTSTREAM Y DATAINPUTSTREAM como clases. En fileinputstream solo se uso el parmetro de abrir archivo(no el true de append) como ya se menciono estas clases se especializan en archivos secuenciales. El ciclo de lectura se realiza con un while(true) los mtodos de DATAINPUTSTREAM SON: Method Summary read(byte[] b) int See the general contract of the read method of DataInput. read(byte[] b, int off, int len) int See the general contract of the read method of DataInput. readBoolean() boolean See the general contract of the readBoolean method of DataInput. readByte() byte See the general contract of the readByte method of DataInput. readChar() char See the general contract of the readChar method of DataInput. readDouble() double See the general contract of the readDouble method of DataInput. readFloat() float See the general contract of the readFloat method of DataInput. readFully(byte[] b) void See the general contract of the readFully method of DataInput. readFully(byte[] b, int off, int len) void See the general contract of the readFully method of DataInput. readInt() int See the general contract of the readInt method of DataInput. String with: BufferedReader d
= new BufferedReader(new InputStreamReader(in)); |

| long | readLong() See the general contract of the readLong method of DataInput. | short int readShort() See the general contract of the readShort method of DataInput. readUnsignedByte() See the general contract of the readUnsignedByte method of DataInput.

int String static String int

readUnsignedShort() See the general contract of the readUnsignedShort method of DataInput. readUTF() See the general contract of the readUTF method of DataInput. readUTF(DataInput in) Reads from the stream in a representation of a Unicode character string encoded in Java modified UTF-8 format; this string of characters is then returned as a String. skipBytes(int n) See the general contract of the skipBytes method of DataInput.

TAREAS PROGRAMACION JAVA 1.- Leer y desplegar los archivos creados en el tema anterior.

TEMA 7: JAVA BUSQUEDA ARCHIVOS SECUENCIALES

Recordar que existe una serie de procesos bsicos con archivos el famoso y antiguo ABC (altas, bajas, consultas y modificaciones) con ellos. Actualmente estos procesos o similares a ellos se llaman insertar, eliminar, editar, etc, en las modernas bases de datos pero esto lo analizaremos ms adelante. El primer proceso para un archivo secuencial es agregar una cantidad indefinida de registros al archivo este proceso se resuelve o ejecutando una cantidad indeterminada de veces el programa de grabacin ya hecho o incluir un ciclo while en el mismo programa. Un segundo proceso tambin comn, llamado consulta es desplegar todos los registros del archivo a la vez problema tambin resuelto en el programa de lectura. El tercer Proceso que resolvemos en este tema es la bsqueda de un registro determinado, en este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin, proporcionando un dato de bsqueda, generalmente la clave del registro. La solucin es sencilla, solo tenemos que abrir el archivo para lectura, hacer un ciclo while(true) condicionar y solo desplegar el registro cuando se cumpla la condicin. Cdigo prog24.Java:
import java.lang.*;

import java.io.*; class prog24 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; //variables int clave=0; int clavebuscar=0; String nombre=""; int edad=0; // capturando clave a buscar // creando un objeto llamado teclado especializado en capturas BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // capturando datos try { System.out.println("dame Clave a buscar: "); clavebuscar = Integer.parseInt(teclado.readLine()); } catch(IOException variablerror) {System.out.println("error de captura "); } //* abriendo archivo para lectura */ try{ archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); nombre=archivo.readUTF(); edad=archivo.readInt(); if (clavebuscar==clave){ System.out.println(clave+" "); System.out.println(nombre+" "); System.out.println(edad+" "); System.out.println('\n');}; }; } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } // cerrar archivo archivo.close(); } // cierra main } // cierra clase

Corrida programa java:

TAREAS PROGRAMACION JAVA 1.- Hacer programas de bsquedas para los archivos hechos.

TEMA 8: FILTROS o CONDICIONES JAVA

Como su nombre lo indica en este proceso se pretende desplegar todo un conjunto de renglones que cumplan con la condicin por ejemplo se pide desplegar todos los alumnos de sistemas o todos los empleados que sean de sinaloa, etc. Filtros se usan para obtener informacin acerca de un subconjunto de renglones del archivo. Cdigo prog25.Java
import java.lang.*; import java.io.*; class prog25 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; //variables int clave=0; String nombre=""; int edad=0; int edadfiltro=0; // capturando condicin // creando un objeto llamado teclado especializado en capturas BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // capturando datos try { System.out.print("EDAD >= : "); edadfiltro = Integer.parseInt(teclado.readLine()); } catch(IOException variablerror) {System.out.println("error de captura "); } //* abriendo archivo para lectura */ try{ archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); nombre=archivo.readUTF(); edad=archivo.readInt(); if (edad >= edadfiltro){

System.out.print(clave+" "); System.out.print(nombre+" "); System.out.print(edad+" "); System.out.print('\n');}; }; } catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ } catch (IOException ioe) { /* Error al escribir */ } // cerrar archivo archivo.close(); } // cierra main } // cierra clase

Corrida filtro:

1.- TAREA PROGRAMACION JAVA Filtrar el archivo de alumnos por carrera. 2.- TAREA PROGRAMACION JAVA Filtrar el archivo de productos por origen o por costo.

TEMA 9: BAJA ELIMINACION ARCHIVO SECUENCIAL JAVA

Eliminar o dar de baja en un archivo secuencial, implica tener que estar procesando dos archivos a la vez, el segundo de ellos es un archivo temporal, un algoritmo de eliminacin fsica quedara como: Procedimiento : 1.- Abrir el archivo original en modo lectura. 2.- Abrir un archivo llamado temporal en modo escritura. 3.- Iniciar un ciclo de lectura del archivo original. 3a.- Dentro del ciclo leer el primer registro. 3b.- Validar el registro si no es eliminable, se escribe al

archivo temporal. 3c.- Fin de ciclo (cerrar el ciclo). 4.- Cerrar ambos archivos. 5.- eliminar el archivo original. 6.- renombrar el archivo temporal con el nombre de archivo original. Una segunda tcnica, consiste en agregar un campo de estado (status) al registro, tal como se vio en el curso anterior: Sin embargo el proceso de baja se tiene que realizar en un sistema de informacin, para resolver este problema la respuesta es agregar un campo especial llamado status que puede ser de tipo char, con algunos caracteres de control que se puedan cargar en el por ejemplo una 'a' significa que est en alta, una 'b' significa que est en baja, etc. Lo nico que se tiene que hacer, es que cuando se agrega o manda el registro por primera vez a disco, mandarlo cargado el campo de status con 'a' y estar validando con if siempre este campo en cualquier proceso de bsqueda o condicin o despliegue, si se encuentra cargado con 'b' entonces solo avisar al usuario que est de baja dicho registro. TAREAS PROGRAMACION JAVA 1.- Agregar un modulo de eliminacin o baja, a los archivos ya construidos, servlets.

TEMA 10: OPERACIONES CON CAMPOS JAVA

Este es tambin un caso comn con los elementos de un archivo, sin embargo es tambin fcil de resolver. Solo usar los dos archivos el original y el temporal y antes de grabarse al temporal hacer la operacin correspondiente, como lo muestra el siguiente ejemplo. Prog27.java
import java.lang.*; import java.io.*; class prog27 { public static void main(String[] args) { // crear un objeto de tipo archivo

DataInputStream archivo = null; DataOutputStream archtemp = null; //variables int clave=0; String nombre=""; int edad=0; try { //creando archivo temporal archtemp = new DataOutputStream( new FileOutputStream("c:\\pfacil\\temporal.dat",true) ); archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); nombre=archivo.readUTF(); edad=archivo.readInt(); // sumando +10 a las edades edad=edad+10; //grabando al archivo temporal archtemp.writeInt(clave); archtemp.writeUTF(nombre); archtemp.writeInt(edad); } } catch(IOException variablerror) { } try { // cerrar archivos archivo.close(); archtemp.close(); // eliminando original renombrando temporal File file1 = new File("c:\\pfacil\\archivo1.dat"); File file2 = new File("c:\\pfacil\\temporal.dat"); if (file1.exists()) {file1.delete();}; file2.renameTo(file1); // avisando System.out.println("EDADES + 10"); } catch(IOException variablerror) {System.out.println("ERROR "); } } // cierra main } // cierra clase

corrida:

1.- TAREAS PROGRAMACION JAVA construir un archivo que traiga matricula, nombre, calif1, calif2, calif3 y promedio, cargar unos 5 renglones de alumnos, no cargar promedio, el promedio lo debern calcular con un programa.

TEMA 11: EDICION REGISTROS JAVA

Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacin o para corregir algn error de captura original o para agregar alguna columna que no exista por modificacin de la tabla o la base de datos. La solucin es similar a los temas anteriores, es decir se ocupan los dos archivos el original y el temporal y ya sea que se modifique una sola clave o se modifiquen todos los registros, el ejemplo que se construye va mostrando los registros del archivo y pregunta y modifica o edita el registro pedido. Prog28.java
import java.lang.*; import java.io.*; class prog28 { public static void main(String[] args) { // crear un objeto de tipo archivo DataInputStream archivo = null; DataOutputStream archtemp = null; //variables int clave=0; String nombre=""; int edad=0;

char opcion ='n'; // creando objeto teclado BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); try { //creando archivo temporal archtemp = new DataOutputStream( new FileOutputStream("c:\\pfacil\\temporal.dat",true) ); archivo = new DataInputStream( new FileInputStream("c:\\pfacil\\archivo1.dat") ); //leyendo archivo while (true) { clave=archivo.readInt(); System.out.print(clave+" "); nombre=archivo.readUTF(); System.out.print(nombre+" "); edad=archivo.readInt(); System.out.print(edad+" "); System.out.print('\n'); System.out.print("editar s/n :"); opcion=(teclado.readLine()).charAt(0); if(opcion=='s'){ System.out.print("dame nuevo nombre: "); nombre=teclado.readLine(); System.out.print("dame nueva edad: "); edad = Integer.parseInt(teclado.readLine()); }; //grabando al archivo temporal archtemp.writeInt(clave); archtemp.writeUTF(nombre); archtemp.writeInt(edad); } } catch(IOException variablerror) { } try { // cerrar archivos archivo.close(); archtemp.close(); // eliminando original renombrando temporal File file1 = new File("c:\\pfacil\\archivo1.dat"); File file2 = new File("c:\\pfacil\\temporal.dat"); if (file1.exists()) {file1.delete();}; file2.renameTo(file1); // avisando System.out.println("YA SE EDITO"); } catch(IOException variablerror) {System.out.println("ERROR "); } } // cierra main } // cierra clase

corrida:

TAREAS PROGRAMACION JAVA 1.- construir programas de edicin para sus archivos UNIDAD 6:PROGRAMACION JAVA REGISTROS Y ARCHIVOS DIRECTOS TEMA 1: JAVA INTRODUCCION ARCHIVOS DISCOS

SE DICE QUE UN ARCHIVO ES DE ACCESO U ORGANIZACION DIRECTA CUANDO PARA ACCEDER A UN REGISTRO N CUALESQUIERA NO SE TIENE QUE PASAR POR LOS N-1 REGISTROS ANTERIIORES. Como se observa de esta definicin los archivos directos tienen una gran ventaja( son mucho ms rpidos) cuando se comparan con los archivos de acceso u organizacin secuencial estudiados en la unidad anterior. Aunque lo anterior no quiere decir que son mejores que los secuenciales, es decir es el propio problema planteado quien exigir una solucin u otra, por ejemplo si se quiere construir un archivo para almacenar los datos de un guestbook, si se construye de manera directa sera muy rpido pero si lo construimos de manera secuencial, se podrn almacenar datos con cantidades de informacin ms adecuados al problema.

Es decir un archivo de acceso directo tiene que tener sus registros o renglones de un tamao fijo o predeterminado de antemano. En java archivos de acceso directo pertenecen a la clase RANDOMACCESSFILE esta clase contiene muchas propiedades algunas de las cuales se muestran aqu, estas propiedades se estarn usando mucho en esta unidad. Un archivo de acceso directo permite posicionar el apuntador de interno de registros, a cualquier registro determinado sin necesidad de pasar por todos los registros anteriores, usando las siguientes funciones. Constructor Summary RandomAccessFile(File file, String mode) Creates a random access file stream to read from, and optionally to write to, the file specified by the File argument. RandomAccessFile(String name, String mode) Creates a random access file stream to read from, and optionally to write to, a file with the specified name. Method Summary close() void Closes this random access file stream and releases any system resources associated with the stream. getFD() FileDescriptor Returns the opaque file descriptor object associated with this stream. getFilePointer() long Returns the current offset in this file. length() long Returns the length of this file. read() int Reads a byte of data from this file. read(byte[] b) int Reads up to b.length bytes of data from this file into an array of bytes. read(byte[] b, int off, int len) int Reads up to len bytes of data from this file into an array of bytes. readBoolean() boolean Reads a boolean from this file. readByte() byte Reads a signed eight-bit value from this file. readChar() char Reads a Unicode character from this file. readDouble() double Reads a double from this file. readFloat() float

void

void int String long short int int String void void int void void void void void void void

Reads a float from this file. readFully(byte[] b) Reads b.length bytes from this file into the byte array, starting at the current file pointer. readFully(byte[] b, int off, int len) Reads exactly len bytes from this file into the byte array, starting at the current file pointer. readInt() Reads a signed 32-bit integer from this file. readLine() Reads the next line of text from this file. readLong() Reads a signed 64-bit integer from this file. readShort() Reads a signed 16-bit number from this file. readUnsignedByte() Reads an unsigned eight-bit number from this file. readUnsignedShort() Reads an unsigned 16-bit number from this file. readUTF() Reads in a string from this file. seek(long pos) Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs. setLength(long newLength) Sets the length of this file. skipBytes(int n) Attempts to skip over n bytes of input discarding the skipped bytes. write(byte[] b) Writes b.length bytes from the specified byte array to this file, starting at the current file pointer. write(byte[] b, int off, int len) Writes len bytes from the specified byte array starting at offset off to this file. write(int b) Writes the specified byte to this file. writeBoolean(boolean v) Writes a boolean to the file as a one-byte value. writeByte(int v) Writes a byte to the file as a one-byte value. writeBytes(String s) Writes the string to the file as a sequence of bytes. writeChar(int v)

void

void

void void void void void

Writes a char to the file as a two-byte value, high byte first. writeChars(String s) Writes a string to the file as a sequence of characters. writeDouble(double v) Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the file as an eight-byte quantity, high byte first. writeFloat(float v) Converts the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the file as a four-byte quantity, high byte first. writeInt(int v) Writes an int to the file as four bytes, high byte first. writeLong(long v) Writes a long to the file as eight bytes, high byte first. writeShort(int v) Writes a short to the file as two bytes, high byte first. writeUTF(String str) Writes a string to the file using UTF-8 encoding in a machine-independent manner

Falta agregar mas

Modificadores de acceso: public, private, protected y default


Los modificadores de acceso, como su nombre indica, determinan desde qu clases se puede acceder a un determinado elemento. En Java tenemos 4 tipos: public, private, protected y el tipo por defecto, que no tiene ninguna palabra clave asociada, pero se suele conocer como default o package-private. Si no especificamos ningn modificador de acceso se utiliza el nivel de acceso por defecto, que consiste en que el elemento puede ser accedido slo desde las clases que pertenezcan al mismo paquete. El nivel de acceso public permite a acceder al elemento desde cualquier clase, independientemente de que esta pertenezca o no al paquete en que se encuentra el elemento.
private,

por otro lado, es el modificador ms restrictivo y especifica que los elementos que lo utilizan slo pueden ser accedidos desde la clase en la que se encuentran. Este modificador slo puede utilizarse sobre los miembros de una clase y sobre interfaces y clases internas, no sobre clases o interfaces de primer nivel, dado que esto no tendra sentido.

Es importante destacar tambin que private convierte los elementos en privados para otras clases, no para otras instancias de la clase. Es decir, un objeto de una determinada clase puede acceder a los miembros privados de otro objeto de la misma clase, por lo que algo como lo siguiente sera perfectamente vlido:

1. class MiObjeto { 2. private short valor = 0; 3. 4. MiObjeto(MiObjeto otro) { 5. valor = otro.valor; 6. } 7. } El modificador protected, por ltimo, indica que los elementos slo pueden ser accedidos desde su mismo paquete (como el acceso por defecto) y desde cualquier clase que extienda la clase en que se encuentra, independientemente de si esta se encuentra en el mismo paquete o no. Este modificador, como private, no tiene sentido a nivel de clases o interfaces no internas. Los distintos modificadores de acceso quedan resumidos en la siguiente tabla: Modificadores de acceso La misma clase X X X X Otra clase del mismo paquete X X X Subclase de otro paquete X X Otra clase de otro paquete X

public protected default private

static
A pesar de lo que podra parecer por su nombre, heredado de la terminologa de C++, el modificador static no sirve para crear constantes, sino para crear miembros que pertenecen a la clase, y no a una instancia de la clase. Esto implica, entre otras cosas, que no es necesario crear un objeto de la clase para poder acceder a estos atributos y mtodos. Este es el motivo por el cual es obligatorio que main se declare como static; de esta forma no tenemos que ofrecer un constructor vaco para la clase que contiene el mtodo, o indicar de alguna forma a la mquina virtual cmo instanciar la clase. Un uso del modificador static sera, por ejemplo, crear un contador de los objetos de la clase que se han creado, incrementando la variable esttica en el constructor: view plaincopy to clipboardprint?

1. class Usuario { 2. static int usuarios = 0; 3. 4. Usuario() { 5. usuarios++; 6. } 7. } Como es de esperar, dado que tenemos acceso a los atributos sin necesidad de crear un objeto, los atributos estticos como usuarios no se inicializan al crear el objeto, sino al cargar la clase. Podemos acceder a estos mtodos y atributos bien desde la propia clase view plaincopy to clipboardprint? 1. public class Ejemplo { 2. public static void main(String[] args) { 3. Usuario raul = new Usuario(); 4. Usuario juan = new Usuario(); 5. System.out.println("Hay " + Usuario.usuarios + " usuarios"); 6. } 7. } o bien desde una instancia cualquiera de la clase: view plaincopy to clipboardprint? 1. public class Ejemplo { 2. public static void main(String[] args) { 3. Usuario raul = new Usuario(); 4. Usuario juan = new Usuario(); 5. System.out.println("Hay " + raul.usuarios + " usuarios"); 6. } 7. } Otro uso sera el de crear una recopilacin de mtodos y atributos relacionados a los que poder acceder sin necesidad de crear un objeto asociado, que podra no tener sentido o no ser conveniente, como es el caso de la clase Math. view plaincopy to clipboardprint? 1. public class Ejemplo { 2. public static void main(String[] args) { 3. System.out.println("PI es " + Math.PI); 4. System.out.println("El coseno de 120 es " + Math.cos(120)); 5. }

6. } Una caracterstica no muy conocida que se introdujo en Java 1.5 son los static imports, una sentencia similar al import habitual, con la salvedad de que esta importa miembros estticos de las clases, en lugar de clases de los paquetes, permitiendo utilizar estos miembros sin indicar el espacio de nombres en el que se encuentran. El ejemplo anterior podra haberse escrito tambin de la siguiente forma utilizando esta caracterstica: view plaincopy to clipboardprint? 1. import static java.lang.Math.*; 2. 3. public class Ejemplo { 4. public static void main(String[] args) { 5. System.out.println("PI es " + Math.PI); 6. System.out.println("El coseno de 120 es " + Math.cos(120)); 7. } 8. } Si por algn motivo requerimos cualquier tipo de computacin para inicializar nuestras variables estticas, utilizaremos lo que se conoce como bloque esttico o inicializador esttico, el cul se ejecuta una sola vez, cuando se carga la clase. view plaincopy to clipboardprint? 1. public class Reunion { 2. static { 3. int zona_horaria = Calendar.getInstance().get(Calendar.ZONE_OFFSET) 4. / (60 * 60 * 1000); 5. } 6. } Por ltimo, una curiosidad relacionada que podis utilizar para romper el hielo con una programadora Java es que podemos utilizar un bloque static para escribir un programa sencillo sin necesidad de un main, aadiendo una llamada a System.exit para que el programa termine tras cargar la clase sin intentar llamar al mtodo main view plaincopy to clipboardprint? 1. public class Ejemplo { 2. static { 3. System.out.println("Hola mundo"); 4. System.exit(0); 5. } 6. }

strictfp
strictfp

es un modificador de lo ms esotrico, muy poco utilizado y conocido cuyo nombre procede de strict floating point, o punto flotante estricto. Su uso sobre una clase, interfaz o mtodo sirve para mejorar su portabilidad haciendo que los clculos con nmeros flotantes se restrinjan a los tamaos definidos por el estndar de punto flotante de la IEEE (float y double), en lugar de aprovechar toda la precisin que la plataforma en la que estemos corriendo el programa pudiera ofrecernos. No es aconsejable su uso a menos que sea estrictamente necesario.

native
native

es un modificador utilizado cuando un determinado mtodo est escrito en un lenguaje distinto a Java, normalmente C, C++ o ensamblador para mejorar el rendimiento. La forma ms comn de implementar estos mtodos es utilizar JNI (Java Native Interface).

transient
Utilizado para indicar que los atributos de un objeto no son parte persistente del objeto o bien que estos no deben guardarse y restaurarse utilizando el mecanismo de serializacin estndar.

volatile y synchronized
volatile

es, junto con synchronized, uno de los mecanismos de sincronizacin bsicos de Java.

Se utiliza este modificador sobre los atributos de los objetos para indicar al compilador que es posible que dicho atributo vaya a ser modificado por varios threads de forma simultanea y asncrona, y que no queremos guardar una copia local del valor para cada thread a modo de cach, sino que queremos que los valores de todos los threads estn sincronizados en todo momento, asegurando as la visibilidad del valor actualizado a costa de un pequeo impacto en el rendimiento.
volatile

es ms simple y ms sencillo que synchronized, lo que implica tambin un mejor rendimiento. Sin embargo volatile, a diferencia de synchronized, no proporciona atomicidad, lo que puede hacer que sea ms complicado de utilizar. Una operacin como el incremento, por ejemplo, no es atmica. El operador de incremento se divide en realidad en 3 instrucciones distintas (primero se lee la variable, despus se incrementa, y por ltimo se actualiza el valor) por lo que algo como lo siguiente podra causarnos problemas a pesar de que la variable sea volatile: view plaincopy to clipboardprint?

1. volatile int contador; 2. 3. public void aumentar() { 4. contador++; 5. } En caso de que necesitemos atomicidad podemos recurrir a synchronized o a cosas ms avanzadas, como las clases del API java.util.concurrent de Java 5.
synchronized

se diferencia de volatile entre otras cosas en que este modificador se utiliza sobre bloques de cdigo y mtodos, y no sobre variables. Al utilizar synchronized sobre un bloque se aade entre parntesis una referencia a un objeto que utilizaremos a modo de lock. view plaincopy to clipboardprint? 1. int contador; 2. 3. public void aumentar() { 4. synchronized(this) { 5. contador++; 6. } 7. } view plaincopy to clipboardprint? 1. int contador; 2. 3. public void synchronized aumentar() { 4. contador++; 5. }

abstract
Un viejo conocido para la mayora de los programadores Java. La palabra clave abstract indica que no se provee una implementacin para un cierto mtodo, sino que la implementacin vendr dada por las clases que extiendan la clase actual. Una clase que tenga uno o ms mtodos abstract debe declararse como abstract a su vez.

final
Indica que una variable, mtodo o clase no se va a modificar, lo cul puede ser til para aadir ms semntica, por cuestiones de rendimiento, y para detectar errores.

Si una variable se marca como final, no se podr asignar un nuevo valor a la variable. Si una clase se marca como final, no se podr extender la clase. Si es un mtodo el que se declara como final, no se podr sobreescribir. Algo muy a tener en cuenta a la hora de utilizar este modificador es que si es un objeto lo que hemos marcado como final, esto no nos impedir modificar el objeto en s, sino tan slo usar el operador de asignacin para cambiar la referencia. Por lo tanto el siguiente cdigo no funcionara: view plaincopy to clipboardprint? 1. public class Ejemplo { 2. public static void main(String[] args) { 3. final String cadena = "Hola"; 4. cadena = new String("Adios"); 5. } 6. } pero sin embargo, este si: view plaincopy to clipboardprint? 1. public class Ejemplo { 2. public static void main(String[] args) { 3. final String cadena = "Hola"; 4. cadena.concat(" mundo"); 5. } 6. } Una variable con modificadores static y final sera lo ms cercano en Java a las constantes de otros lenguajes de programacin.

Anexo Fundamentos de la Programacin Orientada a Objetos - La programacin orientada a objetos POO es una forma de programar que se basa en el uso de clases. - Un programa Java consta de una o ms clases. Las clases son lo ms simple de Java. Todo en Java forma parte de una clase. El conocimiento de las clases es fundamental para poder entender los programas Java. Todas las acciones de los programas Java se colocan dentro del bloque de una clase o un objeto. Todos los mtodos se definen dentro del bloque de la clase. Todos los datos bsicos, como los enteros, se deben declarar en las clases antes de hacer uso de ellos.

Una clase consta de miembros: Propiedades = campos o variables Funciones = mtodos o habilidades Ejemplo: Clase: Arboles Miembros de Arboles: propiedades (color, altura etc.) y funciones (crecimiento, etc) A partir de la clase Arboles podemos definir una serie de objetos (elementos o ejemplares): pino, palmera, acacia, roble, etc. - Creacin de objetos: Sea Arboles una clase Arboles pino = new Arboles(); Acabamos de crear un objeto de la clase Arboles de nombre pino

Analicemos el programa j004.java: class j004 { public static void main(String [] args) { System.out.println("Bienvenido a Java!"); } } Definimos una clase de nombre j004 (el fichero debe grabarse con el mismo nombre) Que consta de un nico mtodo = main System es una clase ya definida en Java que contiene todas las posibles propiedades y mtodos de entrada-salida out es un objeto de la clase System que contiene las propiedades y mtodos de salida.

println es un mtodo del objeto out que imprime en pantalla el mensaje y a continuacin hace un [Return] print es otro mtodo del objeto out que imprime en pantalla el mensaje. Una clase en Java puede contener variables y mtodos. Las variables pueden ser tipos primitivos como int, char, etc. Los mtodos son funciones public MiClase { int i; public MiClase() { i = 10; } public void Suma( int j ) { i = i + j; } } La clase MiClase contiene una variable (i) y dos mtodos, MiClase que es el constructor de la clase y Suma( int j ). Los mtodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo especfico de mtodo que siempre tiene el mismo nombre que la clase. Cuando se declara una clase en Java, se pueden declarar uno o ms constructores opcionales que realizan la inicializacin cuando se instancia (se crea una ocurrencia) un objeto de dicha clase. //package arboles; // @author lea public class arboles { int altura=3; int edad=4; String Variedad="Dorado"; arboles( ) { }

public static void main(String[] args) { arboles pino = new arboles() ; System.out.println("tipo "+pino.Variedad+" Tamao "+pino.altura+" Edad "+pino.edad); // TODO code application logic here } }

Las clases en Java


Bueno, antes que nada conviene saber que en Java hay un montn de clases ya definidas y utilizables. stas vienen en las bibliotecas estndar: java.lang - clases esenciales, nmeros, strings, objetos, compilador, runtime, seguridad y threads (es el nico paquete que se incluye automticamente en todo programa Java) java.io - clases que manejan entradas y salidas java.util - clases tiles, como estructuras genricas, manejo de fecha, hora y strings, nmero aleatorios, etc. java.net - clases para soportar redes: URL, TCP, UDP, IP, etc. java.awt - clases para manejo de interface grfica, ventanas, etc. java.awt.image - clases para manejo de imgenes java.awt.peer - clases que conectan la interface grfica a implementaciones dependientes de la plataforma (motif, windows) java.applet - clases para la creacin de applets y recursos para reproduccin de audio.

También podría gustarte