You are on page 1of 13

EJERCICIOS PARA CALIFICAR EN GRUPO

CHIA, 6 DE NOVIEMBRE DE 2009


ESTRUCTURA BASICA DE UN PROGRAMA EN JAVA
Estructura bsica de un programa en Java
En Java, como en cualquier otro lenguaje orientado a objetos,
abandonamos el modo de entender un programa que utilizbamos
anteriormente para aproximarnos a un modo ms cercano a "la vida
misma".
Los programas ahora estarn divididos en clases. Una clase en si se
puede entender como un programa independiente, tiene sus propios
datos y tambin maneja esos datos "a su modo".
Imaginemos que dos clases "la clase mecnico" y la "clase panadero".
Cada una de estas clases tiene sus propias herramientas y sus propias
tareas, por ejemplo, el panadero tiene "harina" y una de sus tareas es
"amasar", mientras que el mecnico tiene "bujas" y una de sus tareas
es "limpiar bujas". Lo importante de todo esto es que cada uno hace
muy bien su tarea pero no tiene sentido "llevar el coche a la panadera
de la esquina" ni "pedir una baguette junto con un cambio de aceite".
Un ejemplo sencillo en Java
import java.lang.*;
class primerprograma {
public static void main (String args[]) {
System.out.println("Mi primer programa en Java");
System.out.println("Fin del programa");
}
}

Otro ejemplo de un programa sencillo en Java


import java.lang.String;
public class ejemplo1cs {
public static void main (String[] args) {
//String nomb1 = "Andrea del Pilar ";

//nomb1 = nomb1 + "Saavedra Moreno";


//nomb1.concat("Saavedra Moreno");
StringBuffer nombres = new StringBuffer("Andrea del Pilar");
nombres.append(" Saavedra Moreno");
System.out.print("Hola: " + nombres);
}
}

PARA CALIFICAR (1): Con base en los programitas anteriores haga uno
nuevo donde se d un saludo muy especial y en la siguiente lnea se
visualicen los nombres completos de los integrantes del grupo y por
ltimo que se visualice la fecha y la hora actual. Llame la clase
programa1.

Ejemplo es de un listado numrico


import java.lang.*;
// programa que lista los numeros de 1 a 10
public class listarnum1al10 {
public static void main (String args[]) {
double p = 1;
while (p <= 10)
{
System.out.println(p);
p++;
}
}
}

PARA CALIFICAR (2): Con base en la java.class anterior haga una nueva
donde se impriman los nmeros impares y otra que calcule los
nmeros primos entre 2 y 10000. Llame la clase programa2.

Ejemplo de Matricula de un Estudiante


class matriculaestudiante {
public static void main (String args[]) {
String nombre = "Andrea Saavedra";
int edad = 29;
boolean casada = false;
byte numerofav = 123;
double matricula = 1500000.00;
System.out.println("Nombre: " + nombre);
System.out.println("Edad: " + edad);
System.out.println("Estado Civil: " + casada);
System.out.println("Numero favorito: " + numerofav);
}
}

Ejemplo sobre Hallar el rea y el permetro de un rectngulo

import java.lang.*;
class rectangulo {
public static void main (String[] args) {
double area, perimetro;
double largo = 20.5;
double ancho = 20.0;
area = largo * ancho;
perimetro = (2* largo) + (2 * ancho);
System.out.println("El area del rectangulo es: " + area);
System.out.println("El
perimetro);

perimetro

del

rectangulo

es:

"

}
}

CICLO WHILE:
Generalmente esta estructura se utiliza en situaciones en donde
desconocemos la cantidad de ciclos que se deben ejecutar para
producir un resultado. Como no sabemos de antemano cuantas vueltas
debe dar, simplemente esperamos que el resultado de las divisiones
sucesivas sea igual a cero.
EJEMPLO
public class Dec2Bin{
public static void main(String args[]){
int decimal = 252222;
String binario = "";
while ( decimal > 0 ) {
binario = decimal % 2 + binario;
decimal /= 2;
}
System.out.println(binario);
}
}

PARA CALIFICAR (3): Que hace el java.class anterior. Pruebe con varios
numeros decimales diferentes. Haga la prueba de escritorio con uno de
los ejemplos para verificar como funciona este While. Llame la clase
programa3.

Tambin se pueden realizar ciclos con while en donde ya conocemos,


antes de entrar en la estructura, cuantas vueltas debe dar para
terminar. Para esto nos auxiliamos con un contador de vueltas.
Previamente tiene que inicializarse antes de ingresar al ciclo. Luego en
cada vuelta se modificara segn la lgica del algoritmo.
public class Cuadrado{

public static void main(String args[]){


int contador = 1;
while ( contador <= 5 ) {
System.out.println("* * * * * ");
contador++;
}
}
}

En este algoritmo, inicializamos el contador a 1 y luego en cada


ciclo se incrementa. La condicin de corte tiene como objetivo no
permitir ms vueltas si el contador super el valor 5.
PARA CALIFICAR (4): En el programa anterior el asterisco se imprime
uno a uno, para evitar esto utilice otro ciclo while y otra variable que
inicialice dentro del ciclo llamada "contador2" y optimice el cdigo.
Llame la clase programa4.

Leer y escribir datos primitivos


Los
flujos
de
datos
DataOutputStream

DataInputStream

La clase DataInputStream es til para leer datos del tipo primitivo de


una forma portable. Esta clase tiene un slo constructor que toma un
objeto de la clase InputStream o sus derivadas como parmetro.
Se crea un objeto de la clase DataInputStream vinculndolo a un objeto
FileInputStream para leer desde un archivo en disco denominado
pedido.txt..
FileInputStream fileIn=new FileInputStream("pedido.txt");
DataInputStream entrada=new DataInputStream(fileIn));
o en una sola lnea
DataInputStream
entrada=new
FileInputStream("pedido.txt"));

DataInputStream(new

La clase DataInputStream define diversos mtodos readXXX que son


variaciones del mtodo read de la clase base para leer datos de tipo
primitivo

boolean readBoolean();
byte readByte();
int readUnsignedByte();
short readShort();
int readUnsignedShort();
char readChar();
int readInt();
String readLine();
long readLong();
float readFloat();
double readDouble();
La clase DataOutputStream es til para escribir datos del tipo primitivo
de una forma portable. Esta clase tiene un slo constructor que toma
un objeto de la clase OutputStream o sus derivadas como parmetro.
Se crea un objeto de la clase DataOutputStream vinculndolo a un
objeto FileOutputStream para escribir en un archivo en disco
denominado pedido.txt..
FileOutputStream fileOut=new FileOutputStream("pedido.txt");
DataOutputStream salida=new DataOutputStream(fileOut));
o en una sola lnea
DataOutputStream salida=new DataOutputStream(new
FileOutputStream("pedido.txt"));

La clase DataOutputStream define diversos mtodos writeXXX que son


variaciones del mtodo write de la clase base para escribir datos de
tipo primitivo
void writeBoolean(boolean v);
void writeByte(int v);
void writeBytes(String s);
void writeShort(int v);
void writeChars(String s);
void writeChar(int v);

void writeInt(int v);


void writeLong(long v);
void writeFloat(float v);
void writeDouble(double v);

Ejemplo de un programa que suma 2 datos


// Debe importarse la librera o paquete java.io donde se encuentran
las clases que se usan para la captura de datos desde teclado.
import java.io.*;
// Este programa pide digitar dos numeros desde teclado y luego los
suma
public class sumadatos {
public static void main (String args[]) throws IOException {
// Creacion del flujo para la lectura de datos por teclado
InputStreamReader isr = new InputStreamReader (System.in);
// Creacion del filtro para optimizar la lectura de datos
BufferedReader br = new BufferedReader(isr);
// Lectura del primer numero
System.out.print("Por favor digite el primer numero a sumar: ");
// lectura del dato con el metodo readLine y almacenamiento en
variable de texto
String texto1 = br.readLine();
// conversion del contenido de la variable a numero entero
int num1 = Integer.parseInt(texto1);
// Lectura del segundo numero
System.out.print("Por favor digite el segundo numero a sumar: ");
// lectura del dato con el metodo readLine y almacenamiento en
variable de texto
String texto2 = br.readLine();
// conversion del contenido de la variable a numero entero

int num2 = Integer.parseInt(texto2);


// suma de los dos numeros
System.out.println("La suma de: " + num1 + " y " + num2 + " es " +
(num1+num2));
}
}

PARA CALIFICAR (5): Hacer el cdigo anterior para que tambin reste,
multiplique y divida los dos nmeros capturados por teclado. Llame la
clase programa5.

ARREGLOS EN JAVA:
Son objetos, demostrando el compromiso de java con la orientacin a
objetos. A continuacin veremos cmo inicializar un arreglo
unidimensional y multidimensional, como se manipulan, el proceso de
pasar arreglos a mtodos y las tcnicas elementales para ordenar y
realizar bsquedas.

Programa para inicializar un arreglo de diez elementos:


// Creacin de un arreglo.
import javax.swing.*;

// paquete para trabajar con arreglos

public class InicArreglo


{
public static void main( String args[] )
{
int arreglo[];

// declarar la referencia a un arreglo

arreglo = new int[ 10 ]; // crear el arreglo


String salida = "ndice\tValor\n";

// anexar el valor de cada elemento del arreglo al String


salida

for ( int contador = 0; contador < arreglo.length; contador+


+)
salida += contador + "\ t " + arreglo[ contador ] +
"\n";
JTextArea areaSalida = new JTextArea();
areaSalida.setText( salida );
JOptionPane.showMessageDialog( null, areaSalida,
"Inicializacin de un arreglo de valores int",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}

// fin de main

// fin de la clase InicArreglo

En la lnea 9 se declara el arreglo, una referencia capaz de referirse a


un arreglo de elementos int.
En la lnea 11 se crea el arreglo y se le asigna la referencia arreglo al
objeto arreglo resultando. (arreglo = new int [10 ];
El programa crea su salida en el objeto String llamado salida, que se
mostrara en un objeto JTextArea de un cuadro de dialogo de mensaje.
En la lnea 13 se asignan a salida los encabezados de las columnas que
mostrara el programa. La primera columna representa el ndice para
cada elemento del arreglo, y la segunda el valor de cada elemento del
arreglo. Indice\tValor\n
En las lneas 16 y 17 se utiliza una instruccin for para anexar a salida
el numero de ndice (representado por contador)
Y el valor de cada elemento del arreglo *representado por
arreglo(contador). Observe que el ciclo utiliza un contador basado en
cero (recuerde, los valores de los ndices empiezan en 0), de manera
que el ciclo pueda utilizar todos los elementos del arreglo.
Adems, en la condicin del for se utiliza la expresin arreglo.length
para determinar la longitud del arreglo. En este ejemplo la longitud del
arreglo es 10, por lo que el ciclo continua ejecutndose siempre y
cuando el valor de la variable de control contador sea menor que 10.
Para un arreglo de 10 elementos los valores de los ndices son del 0 al

9, por lo que al utilizar el operador menor se garantiza que el ciclo no


intente acceder a un elemento ms all del final del arreglo.
USO DEL INICIALIZADOR DE ARREGLO
Como alternativa a la expresin para crear un arreglo, un programa
puede crear un arreglo e inicializar sus elementos con un inicializador
de arreglo, que es una lista de expresiones separadas por comas (la
cual se conoce tambin como lista inicializadora. Por ejemplo, la
declaracin:
Int n[] = {10, 20, 30, 40, 50};
Crea un arreglo de cinco elementos con los valores de ndices 0, 1, 2, 3,
4. Esta declaracin no requiere de new para crear el objeto arreglo.
Cuando el compilador encuentra la declaracin de un arreglo que
incluye una lista inicializadora, el compilador cuenta el numero de
inicializadores en la lista para determinar el numero apropiado de
elementos del arreglo.
En el cdigo anterior se inicializa un arreglo de enteros con 10 valores
(lnea 11) y muestra el arreglo en formato JTextArea de un cuadro de
dialogo de mensaje.
PARA CALIFICAR (6): Hacer un programa en Java que inicialice un
arreglo con los nombres de los estudiantes de la clase en mencin.
Llame la clase programa6.

PARA CALIFICAR (7): Explique qu hace el siguiente arreglo, como sera


la salida del mismo? Llame el codigo programa7.

// Programa de votacin de los estudiantes.


import javax.swing.*;

public class VotacionEstudiantes {

public static void main( String args[] )


{
int respuestas[] = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6,
10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6,

4, 8, 6, 8, 10 };
int frecuencia[] = new int[ 11 ];

// para cada respuesta, seleccionar el elemento de respuestas y


usar ese valor
// como ndice en frecuencia para determinar el elemento a
incrementar
for ( int respuesta = 0; respuesta < respuestas.length; respuesta+
+)
++frecuencia[ respuestas[ respuesta ] ];

String salida = "Calificacin\tFrecuencia\n";

// anexar frecuencias al String salida


for ( int calificacion = 1; calificacion < frecuencia.length;
calificacion++ )
salida += calificacion + "\t" + frecuencia[ calificacion ] + "\n";

JTextArea areaSalida = new JTextArea();


areaSalida.setText( salida );

JOptionPane.showMessageDialog( null, areaSalida,


"Programa de
JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );

} // fin de main

} // fin de la clase VotacionEstudiantes

votacin

de

estudiantes",

PARA CALIFICAR (8): Explique qu hace el siguiente arreglo, como sera


la salida del mismo? Llame el codigo programa8.

// Tirar un dado de seis lados 6000 veces.


import javax.swing.*;

public class TirarDadoArr {

public static void main( String args[] )


{
int frecuencia[] = new int[ 7 ];

// tirar un dado 6000 veces; usar el valor del dado como ndice de
frecuencia
for ( int tiro = 1; tiro <= 6000; tiro++ )
++frecuencia[ 1 + ( int ) ( Math.random() * 6 ) ];

String salida = "Cara\tFrecuencia";

// anexar frecuencias al String salida


for ( int cara = 1; cara < frecuencia.length; cara++ )
salida += "\n" + cara + "\t" + frecuencia[ cara ];

JTextArea areaSalida = new JTextArea();


areaSalida.setText( salida );

JOptionPane.showMessageDialog( null, areaSalida,


"Tirar un dado 6000 veces", JOptionPane.INFORMATION_MESSAGE
);

System.exit( 0 );

} // fin de main

} // fin de la clase TirarDado

You might also like