entradas_salidas

Anuncio
Entradas (System.in)
La clase System define un objeto de la clase BufferedInputStream, cuya
referencia viene dada por in. El objeto esta asociado al flujo estándar de entrada
que por defecto es el teclado entre los métodos de la clase se encuentra read,
que devuelve el carácter actual en el buffer de entrada.
Char c;
C=(char) System.in.read():
import java.io.*;
class Letras
{
public static void main(String [] args)
{
char primero, ultimo;
System.out.print("Introduzca su primera y ultima inicial");
System.out.flush();
primero = (char) System.in.read();
ultimo = (char) System.in.read();
System.out.print("Hola, " + primero + "." + ultimo + ".");
}
}
Para
leer
línea
por
línea
utilizamos
primero
la
clase
InputStreamReader(System.in), que permite captar líneas de caracteres del
teclado con el método readLine();
InputStreamReader en = new InputStreamReader(System.in);
Ejemplo Dada la base y la atura de un triangulo calcular su área
import java.io.*;
class Area
{
public static void main(String ar[ ] ) throws IOException
{
Double base, altura;
Double d;
String cd;
BufferedReader entrada = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Base del trinagulo : ");
System.out.flush();
cd = entrada.readLine();
d=Double.valueOf(cd);
base= d.doubleValue();
System.out.print("Altura del trinagulo : ");
System.out.flush();
cd = entrada.readLine();
d=Double.valueOf(cd);
altura= d.doubleValue();
System.out.println("El area = " + base*altura/2);
}
}
Operadores y Expresiones
Operador de asignación =
Operadores aritméticos +, -, *, /, y % (modulo)
Operadores de Incremento y decremento ++, -- (variables enteras)
Operadores relacionales ==, ¡=, >,<, >=, <=
Operadores lógicos ¡ (negación), ^ (o exclusiva), && (y), || (o logica)
Operadores de manipulación de bits & (and), | (or), ^ (xor), ~ (complemento a
uno), << (desplazamiento de bits a izquierda), >> desplazamiento de bits
derecha
Operadores especiales (), [], . ,
Operador instanceof
Estructuras de control
Son aquellas que controlan el comportamiento de un método.
Estructuras de Selección
Sentencia if
Simple
if ( a!=0 )
{ resultado + a/b; }
doble
if (a >=0 )
{ System.out.println( a + “es positiveo); }
else
{ System.out.println( a + “es negativo”); }
Multiple
switch (sig_car)
{
Case ‘a’ :
System.out.println(“Sobresaliente”);
Break;
Case ‘ab :
System.out.println(“Notable”);
Break;
default :
System.out.println(“nota no valida”);
Break;
}
Ejemplo escriba un programa que determine si un numero n1 es mayor o menor
que un numero n2
import java.io.*;
class Mayormenor {
public static void main(String [] args) throws IOException
{
float n1, n2;
BufferedReader entrada = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("Introduzca dos numeros reales ");
Float f = Float.valueOf(entrada.readLine());
n1 = f.floatValue();
f = Float.valueOf(entrada.readLine());
n2 = f.floatValue();
if (n1 > n2)
System.out.println(n1 + " es mayor");
else
System.out.println(n2 + " es mayor");
}
}
Estructuras de control
Son aquellas que controlan el comportamiento de un método.
Sentencia While
Int x=10;
While (x<10)
{
System.out.println(“X: “ + x++);
}
// Programa calculo de calorias uso del while
import java.io.*;
class Calorias {
public static void main(String [] a) throws IOException
{
int calorias_por_alimento, cuenta, numero_de_elementos,
calorias_total;
BufferedReader entrada = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("Cuantos Alimentos has comido hoy ");
System.out.flush();
numero_de_elementos = Integer.parseInt(entrada.readLine());
System.out.println("Introducir el numero de calorias de " +
"cada uno de los " + " " + numero_de_elementos +
"Alimentos comidos hoy ");
calorias_total = 0;
cuenta=1;
while (cuenta++ <= numero_de_elementos)
{
calorias_por_alimento=Integer.parseInt(entrada.readLine());
calorias_total += calorias_por_alimento;
}
System.out.println("Las calorias comidas hoy son : " +
calorias_total);
}
}
Bucles controlados pos centinelas
centinela = -1;
while (nota !=centinela)
Bucles controlados pos banderas
digito_leido = false;
while ( !digito_leido)
La sentencia break en los bucles
Int clave = -9;
boolean activo = true;
while (activo)
{
Int dato;
dato=Integer.parseInt(entrada.readLine());
if (dato ¡= clave)
System.out.println(dato);
else
break;
//listado while true
import java.io.*;
class Buclesinfin
{
public static void main(String [] args)
{
boolean flag = true; int contador=0;
while (flag)
{
contador ++;
if (contador > 10)
break;
}
System.out.print("Contador : " + contador);
}
}
La sentencia break con etiqueta
Bucle for
for (Inicializacion; Condicion; Incremento)
//Ejemplo ciclo for
// valores de funcion
import java.io.*;
class Valorfuncion
{
public static void main(String [] args) throws IOException
{
final int veces = 15;
BufferedReader entrada = new BufferedReader (
new InputStreamReader(System.in));
for (int i = 1; i<=veces; i++)
{
double x,f;
System.out.println("Valor de X : ");
System.out.flush();
x = Double.valueOf(entrada.readLine()).doubleValue();
f = Math.exp(2*x) - x;
System.out.println("f(" + x + " ) = " + f);
}
}
}
For anidados
//Ejemplo ciclo for
// Imprime una tabla de m filas por n columnas con un caracter prefijado
import java.io.*;
class Tabla
{
public static void main(String [] args) throws IOException
{
int filas, columnas, elcar;
BufferedReader entrada = new BufferedReader (
new InputStreamReader(System.in));
System.out.println("Cuantas filas: ");
System.out.flush();
filas = Integer.parseInt(entrada.readLine());
System.out.println("Cuantas columnas: ");
System.out.flush();
columnas = Integer.parseInt(entrada.readLine());
System.out.println("Que Caracter: ");
System.out.flush();
elcar = System.in.read();
for (int i = 0; i<=filas; i++)
{
for (int j = 0; j<=columnas; j++)
{
System.out.print((char) elcar);
}
System.out.println();
}
}
}
Métodos
Un método es un mini programa dentro de un programa. Los métodos contienen
varias sentencias bajo un mismo nombre que un programa puede utilizar una o
mas veces para ejecutar dichas sentencias.
Sintaxis
tipo nombre (lista parámetros)
{
Declaracion variables locales;
I1;
In;
}
Nota….. una sentencia en el interior de un método puede ser la llamada a otro
método
Metodo main()
public class Parrafo
{
public static void main(String [] ar)
{
System.out.println("Este es el verbo " + ar[0]);
}
}
Devolución de variables de un método
La sentencia return se utiliza para salir del metido actual y devolver elvalor
especificado por el tipo de retorno del método, si el método es tipo void la
palabra return se utiliza sola.
Sintaxis
return;
return objeto;
public class Pruebaretorno
{
public static void main(String [] ar)
{
Rectangulo r = new Rectangulo(3.0, 7.0);
System.out.println("El área es " + r.calcularArea());
}
}
class Rectangulo
{
private double base, altura;
//Constructor explicito
public Rectangulo(double b, double h)
{
base=b;
altura=h;
}
public double calcularArea()
{
return base*altura;
}
}
Nota Validar variables private.
Nota un método declarado como
void marco() {…}
Es un método que no devuelve ninguna valor.
Los métodos se pueden sobrecargar … dos métodos con diferentes listas de
paramentos pueden tener el mismo nombre.
Llamada a un método
Los métodos para ser ejecutados han de ser llamados o invocados.
Normalmente la llamada a un metido se realizara desde un método de otra clase
o del main().
class Matem
{
static long factorial (int m)
{
long p=1;
for (int i=2; i<=m; i++)
{
p*=i;
}
return p;
}
}
class CalculoFact
{
public static void main(String [] a)
{
final int M=15;
for (int i=1; i<=M; i++)
{
System.out.println(i + "! = " + Matem.factorial(i));
}
}
}
Acceso a métodos
Cada método tiene un tipo asociado que se utiliza para controlar el acceso al
método. El tipo de acceso puede estar ausente (no se especifica), public,
private, protected.
Un metido public puede ser llamado por cualquier código que tenga acceso a la
clase. El metido main(), por ejemplo se declara public ya que se llama por el
sistema en tiempo de ejecución.
Un método private solo se puede llamar desde otro método de la clase en que
el método esta definido.
Un metodo protected, se puede llamar desde otro método de la clase en que el
método esta definido y de cualquier otro metodo de la clase que heredan de la
clase en que esta definido el metodo. También esta disponible en cualquier
objeto de las clases pertenecientes al mismo paquete que la clase en que esta
definido el metodo.
Si no se especifica ningún tipo de acceso, se utiliza el acceso por defecto, que
significa que el metodo es accesible a todas las clases contenidas en el mismo
paquete, pero no es accesible fuera del paquete.
Crear un Subdirectorio del nombre del paquete (md suma)
Crear la clase Sumatoria con nombre Sumatoria.java dentro del subdirectorio
Crear la clase Resta con nombre Resta.java dentro del subdirectorio
Crear el progrma principal con las declaraciones import
package suma;
public class Sumatoria
{
int n,p;
public int sumar()
{
int k,e;
k=10;
n=71;
p=e=5;
return n+k+e+p;
}
}
package suma;
public class Resta
{
int n,p;
public int restar()
{
int k,e;
k=10;
n=71;
p=e=5;
return n-k-e-p;
}
}
import suma.Sumatoria;
import suma.Resta;
class Principal
{
//public int res;
public static void main(String [] args)
{Sumatoria s = new Sumatoria();
System.out.println(s.sumar());
Resta r = new Resta();
System.out.println(r.restar());}
}
Validar restricciones de public, private, protected
Paso de argumentos a métodos
Paso por valor
class PasoPorValor
{
public static void main(String [] args)
{
int n=10;
System.out.println("\n\n\n\nAntes de LLamar a metodoLocal n = " +
n);
metodoLocal(n);
System.out.println("Despues de LLamar a metodoLocal n = " + n);
}
static void metodoLocal(int valor)
{
System.out.println("Dentro de metodoLocal valor = " + valor);
valor=999;
System.out.println("Dentro de metodoLocal con nueva asignacion
valor = " + valor);
}
Paso por Valor Objeto
class PaPorValObjeto
{
public static void main(String [] args)
{
Tecnologico tec = new Tecnologico();
System.out.println("\n\n\n\n Propiedades del Objeto de creacion ");
tec.mostrar();
modifica(tec);
System.out.println("Propiedades del objeto Modificado ");
tec.mostrar();
}
static void modifica(Tecnologico obj)
{
obj.fecha="01-Octubre-2005";
obj.dias = 2;
}
class Tecnologico
{
String fecha;
int dias;
public Tecnologico()
{
fecha = "01-octurbre-1975";
dias = 1;
}
void mostrar()
{
System.out.println("Fecha de Actual = " + fecha + “ “ + dias + “
dias”);
}
}
Modificadores de acceso
Dentro del cuerpo del metodo el parámetro o argumento se utiliza como
cualquier variable, de modo que el valor pasado a la variable no cambie será
preciso que en la declaración de parámetros al nombre del mismo se anteceda
la palabra final.
double polinomio(final double x)
{
return x*x + x*2 – 5.0
}
Metodos abstractos
Los métodos abstractos se utilizan en clases abstractas para imponer una cierta
funcionalidad a las subclases de las clases abstractas. Los métodos abstractos
se designan por la palabra reservada abstract y no tienen cuerpo.
Sobrecarga de Métodos (implementación del polimorfismo)
En java es posible definir dos o más métodos dentro de una misma clase con el
mismo nombre pero con diferentes declaraciones de parámetros, a lo que se
conoce como sobrecarga de métodos. La sobrecarga es uno de los
procedimientos mediante el cual java implementa el polimorfismo.
En las llamadas a los métodos sobrecargados, el compilador determina cual es
el metodo invocado en base al número de parámetros o el tipo de los
parámetros (argumentos pasados).
Regla
La llamada a un metodo sobrecargado no debe ser ambigua, para que el
compilador decida inequívocamente cual es el metodo llamado.
class SobreCarga{
public void demo()
{
System.out.println("Metodo Sin Argumentos ");
}
//Sobre Carga demo() con un tipo int
public void demo(int x)
{
System.out.print("Metodo Con un Argumento ");
System.out.println("x = " + x);
}
public void demo(int x, int y)
{
System.out.print("Metodo Con dos Argumento ");
System.out.println("x = " + x + " y = " + y);
}
public void demo(double x, double y)
{
System.out.print("Metodo Con dos tip double Argumento ");
System.out.println("x = " + x + " y = " + y);
}
}
class DemoSobrecarga{
public static void main(String [] arg)
{
SobreCarga objeto = new SobreCarga();
objeto.demo();
objeto.demo(10);
objeto.demo(20, 30);
objeto.demo(2.8, 4.5);
}
}
Sobrecarga de Constructores
La clase describe un conjunto de objetos con las mismas propiedades y
comportamientos. El objeto cuando es creado se inicializa con unos valores por
defecto o bien con unos valores transmitidos al momento de la instanciacion. El
metodo que realiza la inicialización del objeto es el metodo constructor. Este
debe tener el mismo nombre que la clase y no tiene tipo de retorno.
class Racional
{
int private numerador, denominador;
public Racional()
{
numerador = 0;
denominador = 1;
}
public Racional(int numerador, int denominador)
{
this.numerador = numerador;
this.denominador = denominador;
}
public Racional(Racional r)
{
numerador = r.numerador;
denominador = r.denominador;
}
public Racional sumar(Racional r2)
{
Racional suma = new Racional(numerador + r2.numerador,
denominador + r2.denominador);
return suma;
}
public void mostrar()
{
System.out.println(numerador + "/" + denominador);
}
}
Al crear objetos Racional se puede hacer uso de cualquier constructor según
como se desee inicializar.
class DemoRacional
{
public static void main(String[] arg)
{
Racional r1, r2, r3;
r1 = new Racional();
r2 = new Racional(1, 5);
r1 = new Racional(r2);
r3 = r2.sumar(r1);
System.out.print("r1 = "); r1.mostrar();
System.out.print("r2 = "); r2.mostrar();
System.out.print("r1 + r2 = "); r3.mostrar();
}
}
Objeto que envía un mensaje. Comando this
Un metodo de una clase referencia a un miembro, variable o metodo,
simplemente escribiendo su identificador, no es cualificado con el selector (.)
AMBITO (ALCANCE)
El ámbito o alcance de una variable determina cuales son los métodos que
reconocen ciertas variables. Si un metodo reconoce una variable, la variable es
visible en ese metodo. Java reconoce tres tipos de ámbitos.
Ámbito de la clase.
Las variables instancia (atributos de los objetos)
declaradas en una clase tienen como ámbito todos los métodos de la clase.
Class Radio
{
Int potencia;
Int numsintonia;
{
Metodo1(){}
Metodo2(){}
Metodon(){}
}
Las variables instancia de una clase se inicializan por defecto; las de tipo
numérico a 0, las de tipo bolean a false y las referencias a null.
Se recomienda utilizar constructores para inicialización explicita.
Ámbito de Metodo. Las variables que tienen ámbito de metodo pueden
reverenciarse desde cualquier parte del metodo. Las variables de metodo no
pueden ser utilizadas fuera del ambito del metodo en que están definidas.
Public class MIxto
{
Private int n;
Public double valor(itn y)
{
Float n = 12.0f; /* oculta la variable int n en el ámbito de clase
}
}
Las variables de metodo no son inicializadas por el complilador de java. Es un
error acceder al valor de una variable sin haberla inicializado.
Ambito de Bloque. Un bloque es una agrupación de sentencias por {}. Dentro
de un bloque se pueden declarar variables y su ambito queda circunscrito al
bloque.
Los identificadores definidos en un bloque deben ser distinto a de los
identificadores definidos en el bloque que los contiene. El compilador genera un
error. Identificador ya definido.
{
bolean sw;
itni = 0
while (i>0)
{
string sw; i++;
}
}
Recursividad
Un metodo recursivo es un metodo que se llama así mismo directa o
indirectamente, la recursividad directa es el proceso por el cual un metodo se
llama así mismo desde el propio cuerpo del metodo. La recursividad indirecta
implica más de un metodo.
Para poder aplicar la recursividad es importante que el proceso sea
recursivo y tenga una condición de terminación.
Ejemplo de recursividad directa
import entradas.LeeEntero;
import java.io.*;
class Factorial
{
public static void main(String [] args) throws IOException
{
int n;
LeeEntero l = new LeeEntero();
do {
System.out.print("Introduzca un Numero n: ");
n=l.lee();
}while (n < 0);
System.out.println("\n\t" + n + "!= " + factorial(n));
}
static long factorial(int n)
{
if (n<= 0)
return 1;
else
{
long resultado = n * factorial(n-1);
return resultado;
}
}
}
Recursividad indirecta: métodos mutuamente recursivos
public class Alfabeto
{
public static void main(String a[])
{
System.out.println();
metodoA('z');
System.out.println();
}
static void metodoA(char c)
{
if (c > 'A')
metodoB(c);
System.out.print(c);
}
static void metodoB(char c)
{
metodoA(--c);
}
}
Arreglos
Un array lista o tabla) es una secuencia de datos del mismo tipo, los datos se
llaman elementos del array y se numeran consecutivamente 0, 1, 2 .. el tipo de
elemento almacenado en el array puede ser de cualquier tipo de dato simple o
de tipo previamente declarado.
Un array puede por ejemplo contener las edades de los alumnos de una clase,
sus calificaciones, la temperatura de los días de un mes en una ciudad, etc.
Los subíndices localizan la posición exacta del elemento dentro del array
proporcionando acceso directo al array. Si el nombre del array es a entonces
a[0] es el nombre del elemento que esta en la posición 0 y así sucesivamente
a
25.1
0
a[0] contiene 25.1
a[1] contiene 34.2
34.2
1
5.25
2
7.45
3
6.09
4
Declaración de un array
Int [ ]v;
Flota w[ ];
El primer formato indica que todos los identificadores son arrays del tipo
El segundo formato es array sole el identificador al que le siguen los [ ]
Char cad[ ], p;
Int [ ] w, x;
Nota: la declaración int notas[10]: produce un error.
Los array son un objeto y por tal motivo para indicar el numero de elementos se
utiliza el operador new.
float notas[ ];
notas = new float[10];
Se puede escribir en la misma sentencia
float [ ] notas = new float [10];
char letras [] new char [30];
Los arrays de caracteres funcionan igual que los numéricos
char nombre[] = {‘A’, ‘n’, ‘a’};
El tamaño de los arrays : Atributo length
double [] v = new double[15];
System.out.print(v.length); // escribe 15, números de elementos de v
class Longitud{
public static void main(String a[])
{
double d[] = {4.6, 3.4, 4.5};
System.out.print(suma (d));
}
static double suma(double w[] )
{
double s=0.0;
for (int i=0; i< w.length; i++)
s+=w[i];
return s;
}
}
Verificación del rango de un array
Java al contrario de c verifica el valor del índice de la variable que representa
al array si se tiene v[5], el acceso a v[6]; produce un error.
Protección frente a errores en el intervalo (rango) de los valores de una variable
índice que representa un array.
import entradas.LeeEntero;
import java.io.*;
class Proteccion{
public static void main(String a[])throws IOException
{
double d[];
d = new double[5];
if (datos(d)==0)
System.out.print("Rango incorrecto");
else
System.out.print("Rango correcto");
}
static int datos(double w []) throws IOException
{
int l;
LeeEntero n = new LeeEntero();
System.out.println("Cuantos datos : ");
l=n.lee();
if (l > w.length)
return 0;
// se leerian los valores
return 1;
}
}
Inicializacion de un array
Se deben asignar los valores a los elementos de un array antes de utilizarlos
como se asignan valores a las variables
P/E precios[0] =10;
precios[1]=20;
precios[2]=30;
se puede inicializar el array de la siguiente forma
int numeros[] = {10, 20, 30, 50, 50};
char tecnologico[] = {‘I’, ’T’, ’H’};
se pueden asignar valores numéricos representados mediante variables
protegidas con la cláusula final
final int ENE =33, FEB=28, MAR =31, ABR = 30, MAY = 31, JUN = 30,
JUL = 31, AGO=31. SEP = 30, OCT = 31, NOV =30, DIC = 31;
Int meses[ ]= {ENE, FEB, MAR, ABR, MAY, JUN, JUL, AGO, SEP, OCT,
NOV, DIC};
se pueden asiganr utilizando un bucle, for o while/do while.
Los arrays en java se inicializan a 0 por defecto
class Cero{
public static void main(String a[])
{
int lista[] = new int[5];
for (int i=0; i < lista.length; i++)
System.out.print(lista[i]);
}
}
se pueden asiganr utilizando un bucle, for o while/do while.
for (i=0; i< numeros.length; i++)
numeros[1] = -1;
import java.io.*;
import entradas.LeeEntero;
class Inicial{
public static void main(String a[]) throws IOException
{
final int NUM=10;
int nums[] = new int[NUM];
int total = 1;
LeeEntero l = new LeeEntero();
System.out.println("Por Favor Introduzca " + NUM + " datos");
for (int i=0; i < NUM; i++)
{
nums[i]=l.lee();
}
System.out.print("\nLista de numeros : ");
for (int i=0; i < NUM; i++)
{
System.out.print(" " +nums[i]);
total *= nums[i];
}
System.out.print("\nEl producto de los numeros es : " + total);
}
}
ARRAYS DE CARACTERES Y CADENAS DE TEXTO
Una cadena de texto es un conjunto de caracteres como “ABCDEF”. Java
soporta cadenas de texto utilizando la clase String y StringBuffer implementadas
en el paquete Java.ang.
String cadena = “ABCDEF”;
Es importante comprender la diferencia entre un array de caracteres y
una cadena de caracteres. Los string son objetos donde se almacenan las
cadenas, tienen diversos constructores y métodos. Los arrays de tipo char son
una secuencia de caracteres, con las mismas características que los arrays de
otros tipos.
String datos = “Archivo”;
crea objeto cadena
char datos1[] = {‘A’, ‘r’, ‘c’, ‘h’, ‘i’, ‘v’, ‘o’};
define array de 7 elementos
String datos2 = new String(datos1);
crea un objeto tipo cadena con el constructor que tiene como
argumento un array de caracteres.
System.out.println(datos2);
System.out.println(datos1);
muestra la cadena datos1: Fichero
es un error, datos no es una cadena
Las cadenas definidas con String no se pueden modificar
Las cadenas definidas con StringBuffer pueden cambiar longitud de la cadena y
contenido.
StringBuffer cc = new StringBuffer(“cadena variable”):
cc.replace(‘c’, ‘C’);
Para concatenar cadenas se utilize el operador
String c1 = “Mi pueblo es “;
String c2 = “San Antonio de la Huerta”;
System.out.println(c1 + c2);
System.out.println(c1.concat(c2));
+
o el metodo concat
La longitud de una cadena se obtiene con el metodo length() de la clase String
String cadena = “Cama de piedra”
char cadena1[] = new char[6];
System.out.println(“Longitud de cadena : “ + cadena.length( ));
System.out.println(“Longitud de cadena1 : “ + cadena.length);
Elaborar un programa que crea un array de cadenas con líneas de textos leídas
desde teclado.
import entradas.LeeCadena;
import java.lang.String;
import java.io.*;
class Cadena{
public static void main (String [] a) throws IOException
{
final int NUM = 3;
LeeCadena l = new LeeCadena();
String [] cads = new String[NUM];
System.out.println("\n Escriba " + NUM + " lineas");
for (int i=0; i<NUM; i++)
cads[i]=l.lee();
System.out.println("\nLineas tecleadas");
for(int i=0; i<NUM; i++)
System.out.println(i + ": " + cads[i]);
}
}
Copia de arreglos
Metodo de la clase System arrayCopy()
System.arrayCopy(v1, posinicial, v2, posicioninicio, numeroelementos)
Arrays multidimensionales
Son aquellos que tienen mas de una dimensión y en consecuencia mas de un
índice. Los array mas usuales son los de 2 dimensiones, conocidos también con
el nombre de tablas o matrices.
Int equipo [ ] [ ] = new int[3] [4];
Inicialización de arrays
Int tabla [ ] [ ] = { {14, 15, 16},{4,6,8}};
Int tablas [ ] [ ] = { {2,4,5}, {2,1}
Ordenación de listas (arreglos)
Algoritmo de la burbuja
import java.io.*;
class Burbuja {
public static void main(String [] ar)
{
int a [] = {25, 34, 27, 15, 3, 5, 6, 4, 11, 18, 20};
imprime(a);
ordena(a);
imprime(a);
}
static void imprime(int a[])
{
int i=0;
System.out.println("\n\tElementos del vector");
for(; i<a.length; i++)
System.out.println(a[i]);
}
static void ordena(int a[])
{
int i,j;
for (i=a.length-1; i>0; i--)
for (j=0; j<i; j++)
if (a[j] > a[j+1])
{
int aux;
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
}
Búsqueda en listas
Búsqueda secuencial
Archivos y flujos
Flujos
Un flujo (stream) es una abstracción que se refiere a un flujo o corriente de datos
que fluyen entre un origen o fuente (productor) y un destino o sumidero
(consumidor). Entre el origen y el destino debe existir una conexión o canal
(pipe) por la que circulen los datos. La apertura de un archivo supone establecer
la conexión del programa con el dispositivo que contiene el archivo; el canal que
comunica el archivo con el programa va a fluir la secuencia de datos. Abrir un
archivo supone crear un objeto y quedar asociado con un flujo.
En java se generan automáticamente 3 canales que quedan abiertos. Estos son
objetos definidos en la clase system.
System.in; System.out; System.err.
Los flujos de datos de caracteres de caracteres, de bytes se pueden clasificar en
flujos de entradas (InputStream) y en flujos de salida (OutputStream).
InputStream
FileInputStream
ByteArrayInputStream
PipeInputStream
SequenceInputStream
StringBufferInputStream
FilterInputStream
OutputStream
FileOutputStream
ByteArrayOutputStream
PipeOutputStream
FilterOutputStream
La clase FileInputStream se utiliza para leer bytes desde un archivo.
Proporciona operaciones básicas para leer bytes o una secuencia de bytes.
Los métodos más importantes de esta clase son:
FileInputStream(String nombre) throws FileNotFoundException;
Crea un objeto inicializado con el nombre de archivo que se pasa como
argumento
FileInputStream(File nombre) throws FileNotFoundException;
Crea un objeto inicializado con el objeto archive pasado como argumento
int read() throws IOException;
Lee un byte del flujo asociado. Devuelve -1 si alcanza el fin del archivo
int read(byte [] s) throws IOException;
Lee una secuencia de bytes del flujo y lo almacena en el array s. devuelve
–1 si alcanza el fin del archivo.
int read(byte [] s, int org, int len) throws IOException;
Lee una secuencia de bytes del flujo y lo almacena en el array s desde la
posición org y un máximo de len bytes. Devuelve –1 si alcanza el fin del archivo.
La clase FileOutputStream
Con esta clase se pueden escribir bytes en un flujo de salida asociado a
un archivo. Los constructores y métodos mas comunes son:
FileOutputStream(String nombre) throws FileNotFoundException;
Crea un objeto inicializado con el nombre de archivo que se pasa como
argumento
FileOutputStream(File nombre) throws FileNotFoundException;
Crea un objeto inicializado con el objeto archivo pasado como argumento
void write (byte arg) throws IOException;
Escribe el byte arg en el flujo asociado
void write (byte [] arg) throws IOException;
Escribe el array de byte en el flujo asociado
void write (byte [] arg, int org, int len) throws IOException;
Escribe el array arg desde la posición org y un máximo de len bytes en el
flujo asociado.
Ejemplo:
Crear un archivo con los caracteres de una cadena.
Descargar