gravatar

01 Curso de Java OO. Conceptos Iniciales



Resumen: Se estudiara los elementos básicos del lenguaje Java, variables, operadores y control de flujo.

I. INTRODUCCION.

1.1. Características de Java

Simple
Reduce en un 50% los errores más comunes de programación en lenguajes como C y C++ al eliminar aritmética de punteros, referencias, necesidad de liberar memoria.

Robusto
Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo de ejecución.

Arquitectura neutral
El código compilado tiene un formato independiente de la arquitectura de la máquina en que se ejecutará.

Seguro
No usa punteros para prevenir el acceso ilegal a la memoria.

Interpretado
Requiere un runtime (JRE) para ser ejecutado, lo que lo hace 10 veces mas lento que un programa C compilado.

Orientado a objetos
Soporta las tres características propias del paradigma de la orientación a objetos: encapsulamiento, herencia y polimorfismo

Distribuido
Se ha construido con extensas capacidades de interconexión TCP/IP, presenta librerías con protocolos http y ftp para obtener información a través de la red.


1.2. Java en la empresa.
Java para aplicaciones corporativas
Allí donde la red sea algo crítico, Java facilita la programación corporativa.
Desarrollo rápido de aplicaciones
Java facilita la creación de entornos de desarrollo de aplicaciones mediante el uso de frameworks y patrones.
Aplicaciones efectivas y eficientes
Las grandes empresas prefieren programas que se desarrollen rápidamente y funcionen a que lo haga eficientemente.

Portabilidad para programador y programa

La empresa es una pléyade de computadores (PC, Mac, HP, Linux, Windows,...), pero el mismo programa funcionara en cualquier estación con el mismo programador.

Costos de desarrollo
La llegada de Java e Intranet ha reducido los costos de las aplicaciones, además es creciente el software gratuito por explotar.

1.3. Java en tu PC.
Los programas tienen extensión.java (Hola.java)
Usa el Java Developer Kit (JDK) para compilar el código fuente. (javac.exe)
Genera un compilado con extensión .class (Hola.class)
Usa el Java Virtual Machine (JVM) como interprete (java.exe)




Instalación del Java
1. Tanto el JDK como el JVM están disponibles en http://java.sun.com en un solo paquete conocido como J2SE.
2. En windows se puede instalar el exe por ejemplo en el directorio C:\j2sdk1.4.2
3. Adicionalmente se debe configurar la PC para que se reconozca su ubicación (Path); por ejemplo en Windows XP seria:
Mi PC/Ver informacion del Sistema/Propiedad del sistema
/Opciones Avanzadas/Variables de entorno
/Variables del sistema
/Path/Modificar
Nombre de variable=Path
Valor de la variable=;C:\j2sdk1.4.2\bin
/Aceptar/Aceptar/Aceptar

4. En Linux se debe realizar para instalarlo en un directorio como /usr/java/jdk1.3.1:
# rpm -ivh jdk-1.3.1.i386.rpm

5. Para cambiar el path debe realizar:
PATH=/usr/java/jdk1.3.1
export PATH

Características de un programa Java.
1. El nombre de la clase debe ser igual al nombre del archivo.
2. El nombre del archivo tiene extensión java.
3. Los comentarios se colocan entre /* y */ o se inician con //
4. La clase se encierra entre { y }
5. Los métodos también se encierran entre { y }, como el método main.
6. Las sentencias (acciones) se terminan con punto y coma.
7. Se usa el punto para evocar atributos o métodos de una clase.
8. Los argumentos de los métodos se colocan entre ( y ).
9. Se usa la identación para obtener un código mas legible.

C:\java> notepad Hola.java
/* Primer programa java */
public class Hola {

public static void main(String[] args) {
System.out.println("Hola desde java");
}
}


Ejecución de un programa Java

1. Para compilar un programa java se usa el javac.exe
C:\java>javac Hola.java
2. Para ejecutar el programa ya compilado (seudo compilado) se usa el java.exe
C:\java>java Hola
Hola desde java

3. Al ejecutar un programa java, el JVM empieza a buscar el método main de la clase principal para ejecutarlo.

4. Se debe respetar las mayúsculas y minúsculas puesto que es "case sensitive"

II. TIPOS DE DATOS
Variables
1. Es una unidad básica de almacenamiento.
2. En Java debe ser declarada antes de utilizarse.
3. Cada variable tiene un tipo y un identificador.
4. Es un nombre simbólico con un valor.
5. Las variables pueden ser iniciadas.
6. La plantilla de declaración de variables es:

tipo identificador = valor;
7. Ejemplos de declaración de variables:

int miEdad = 36;
boolean estaAprobado = true;
double costoMaximo = 17.98;

Estándares

1. Nombres de archivos fuente: Cliente.java, Hola.java, Producto.java
2. Nombres de programas, clases: Cliente, Hola, Producto.
3. Nombres de métodos, funciones: obtenerCliente, imprimirHola, alquilarProducto.
4. Nombres de variables: nombreCliente, limiteCreditoCliente.
5. Nombres de constantes: PI, MÁXIMO_NUMERO_ITEMS, ANCHO_MINIMO.
6. Java es “case-sensitive” por lo que:
“cliente” es diferente de “Cliente” y es diferente de “CLIENTE”.

Nombre de Variables

1. Deben empezar con una letra del alfabeto ingles o subrayado.
2. Los siguientes caracteres pueden ser dígitos.
3. No se deben usar palabras reservadas.
4. Las palabras reservadas son aquellas propias del lenguaje Java como:
public, void, static, boolean, float, int, class, true, false, null, for, if, else, extends ...
5. El estándar es iniciar con minúscula y usar mayúsculas para nuevos significados.
6. Ejemplos de nombre de variables. Identifica en esta lista, nombres estandares, no estandares e incorrectos.

costo
costoItem
costoItem2
costoItemFacturado
costo_Item
_costoItem
costoItemfacturado
costoitem
costo#item
class
2costoItem
costo-item

Tipos de Variables
1. Los principales tipos de variables son:

int Desde -2^31 hasta +2^31
long Desde -2^63 hasta +2^63
float Es un numero decimal de 32 bits.
double Es un numero decimal de 64 bits.
char Es un solo carácter, como letra o digito o carácter especial.
boolean Almacena valores de verdad como true o false.

2. Las cadenas no son un tipo de variable sino una Clase de tipo String

String Cadena de caracteres.

Declaración de Variables

1. La forma básica de declarar variables es:
tipo identificador = valor;
2. Las variables de instancia se pueden usar en cualquier lugar de la clase.
3. Las variables locales se pueden usar solo en el ámbito donde son declarados.

Ejercicio
C:\java>notepad Variables.java
public class Variables {
/* Variables instancia */
public static int peliculasAlquilados = 0;
public static void main(String[] args) {
/* Variables locales */
double tasaDeInteres = 0.15;
int peliculasEnStock = 50;
int numeroDeDias = 3;
char categoriaDePelicula = 'G';
System.out.println(peliculasAlquilados);
System.out.println(tasaDeInteres);
System.out.println(peliculasEnStock);
System.out.println(numeroDeDias);
System.out.println(categoriaDePelicula);
}
}

C:\java>javac Variables.java
C:\java>java Variables
0
0.15
50
3
G

III. OPERADORES
3.1. Operador de asignación

1. La expresión de la derecha se asigna a la variable de la izquierda.
2. La expresión de la derecha se evalúa antes de la asignación.

int costo = 0, total = 0;
costo = 50;
total = costo + 10;
total = total + 5;
int var1 = 0, var2 = 0;
var1 = var2 = total = 50;

3.2. Operadores aritméticos
1. Realizan las operaciones aritméticas básicas.
2. Trabajan sobre variables numéricas.


int a, b, c, d;
a = 2 + 2; // adicion
b = a * 3; // multiplicacion
c = b - 2; // substraccion
d = b / 2; // division
e = b % 2; // resto de la division (modulo)
a = a – 1;

Los datos byte, char y short se convierten en int después de una operación
Si un operando es long, el otro se convierte en long y la respuesta será long.

byte b1 = 1, b2 = 2, b3;
b3 = b1 + b2 // error el resultado es entero

3.3. Operadores Incremento y Decremento

1. El operador ++ incrementa en 1 la variable que acompaña.
2. El operador - - decrementa en 1 la variable que acompaña.

int var1 = 3;
var1 ++;
int var1 = 3, var2 = 0;
var2 = ++var1; // Se incrementa var1 y luego se asigna a var2;
var2 = var1++; // Se asigna a var2 y luego se incrementa var2;

int nota = 17, pendientes = 10;
nota++; // es idéntico a nota = nota + 1;
pendientes--; // es idéntico a pendientes = pendientes - 1;

3.4. Operadores de Comparación
1. Son relaciones de igualdad y desigualdad.
2. Se debe diferenciar el operador de comparación con el operador de asignación

boolean valor;
int a = 1, b = 2, c = 3, d = 4, e = 3;
valor = b > a; // mayor que
valor = b >= a; // mayor igual que
valor = c < d; // menor que
valor = c <= d; // menor igual que
valor = a != d; // diferente que
valor = c == e; // igual que

int nivelBuenCredito = 3;
int nivelCreditoCliente;
boolean esBuenCredito = false;
esBuenCredito = (nivelCreditoCliente == nivelBuenCredito);

3.5. Operadores Lógicos

1. Los resultados de las operaciones de comparación pueden combinarse con operadores lógicos.

boolean valor;
int a = 1, b = 2, c = 3;
valor = (b > a) || (a > b) ; // operación logica OR
valor = (b > a) && (c > b); // operación logica AND
valor = !(a > b); // operación logica NOT

3.6. Operadores Compuestos

1. La operación de asignación puede combinarse con operadores aritméticos como + y -

//
int total = 0, cantidad = 10;
total += cantidad; // asignación con incremento
total -= 3; // asignación con decremento
total *= 2; // asignación con multiplicación
//
int diasDeAlquiler;
diasDeAlquiler = diasDeAlquiler + 3;
diasDeAlquiler += 3;
//
double total = 0, num = 1;
double porcentaje = 0.50;
total = total + num;
total += num;
total -=num;
total *= porcentaje;

3.7. Operadores con Cadenas.

1. A la colección de caracteres se les llama cadenas.
2. Los datos de tipo String almacenan cadenas.
3. El operador + tambien puede encadenar dos datos de tipo String.

String nombre = "Isaac";
String apellido = "Asimov";
String nombreCompleto = nombre + apellido;
String letras = "Hola, soy una cadena";
char letrita = 'c';

3.8. Precedencia de operadores
operadores sufijo expr++ expr--
operadores unarios +expr -expr !
multiplicadores * / %
suma/resta + -
relacionales < > <= >=
igualdad == !=
AND lógico &&
OR lógico ||
condicional ? :
asignación = += -= *= /= %=

Determina el orden en el cual se ejecutan los operadores
Operadores con la misma precedencia se realizan de izquierda a derecha
Usa el paréntesis para cambiar este orden.

int var1 = 0;
var1 = 2 + 3 * 4;
var1 = 12 – 6 + 3;

3.9. EJERCICIOS

Ejercicio 1
Encuentre los errores en el siguiente código:

1. int class = 200;
2. short texto = 43;
3. short hola mundo;
4. int boolean3 = boolean + boolean + boolean;
5. long almuerzo = entrada + sopa + segundo // falta postre
6. double viejo = 78.3;
7. doble nuevo = 0.1;
8. boolean consecuezia = true;
9. boolean maximo = 7 > 3;
10. char calle = "Via expresa";
11. char rio = 'N';
12. boolean causa = 7;
13. boolean igualdad = "true";
14. double precio = S/.20.50;
15. int uno = 3;
16. long cinco = uno + uno + uno;
17. boolean comparacion = cinco > uno;

Ejercicio 2.

/* Ejercicio:
* Se pide calcular el costo del alquiler de dos peliculas
* por dos 2 dias.
* Odisea 2001 = 2.95 por dia
* El padrino = 3.50 por dia
* Impuesto = 17%
*
* Pero solo se tiene un billete de 10.
* Se pueden alquilar?
*/

public class Operadores {

public static void main(String[] args) {

// Declaracion de variables
double pelicula1;
double pelicula2;

// Asignacion de valores
pelicula1 = 2.95;
pelicula2 = 3.50;

// Estas 4 sentencias pueden ser combinadas en una sola:
// double pelicula1 = 2.95, pelicula2 = 3.50;

// Otras variables a usar en este programa
int numeroDeDias = 2;
boolean alquilar;
double totalAlquiler, total, porcentajeImpuesto = 1.17;

// Muestra el precio de los dos peliculas
System.out.println("Odisea 2001 : " + pelicula1);
System.out.println("El Padrino : " + pelicula2);

// Calcula el alquiler total
totalAlquiler =pelicula1*numeroDeDias + pelicula2*numeroDeDias;
System.out.println("Total Alquiler = " + totalAlquiler);

// Calcula el total de la venta aplicando el impuesto
total = totalAlquiler*porcentajeImpuesto;
System.out.println("Total Venta = " + total);

// Verifica si se pueden alquilar
alquilar = total < 10;
System.out.println("Puedo Alquilar? " + alquilar);

}
}


C:\java>javac Operadores.java
C:\java>java Operadores
Odisea 2001 : 2.95
El Padrino : 3.5
Total Alquiler = 12.9
Total Venta = 15.093
Puedo Alquilar? false


Ejercicio 2.1.
/* Ejercicio:
* Prueba de tipos
*/
public class TestTipos {
public static void main(String[] args) {
// Test de cast
int b=10;
short c=5;
int a = b + c;
char mas = '+';
System.out.print(b);
System.out.print(mas);
System.out.print(c);
System.out.print('=');
System.out.println(a);
int d = 1024; // cambie 1024 por 65535
short e = (short)d;
System.out.print(d + "\t");
System.out.println(e);
long g = 2048;
double f = g;
g = (long)f;
System.out.print(f + "\t");
System.out.println(g);

long p = (long) 12345.56;
int q = (int)p; // elimine (int)
System.out.print(p + "\t");
System.out.println(q);
char t = 't'; // cambie 't' por 65535
int j = t;
short k = (short) t; // elimine (short)
System.out.println(t);
System.out.println(j);
System.out.println(k);
float r = 12.35F; //quite la F final
System.out.println(r);

// Test infinito
System.out.println(1.0/0);
System.out.println( 1/0); //comente esta linea

// Lectura de teclado
String teclado = "";
int numero=0;
try{
System.out.print("Ingrese un entero:");
java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
teclado = br.readLine(); //ingrese diversos valores por teclado
numero = Integer.parseInt(teclado);
}catch(Exception ex){ ex.printStackTrace(System.out);}
System.out.println(teclado);
System.out.println(numero);
}
}

IV. CONTROL DE FLUJO

4.1 Bloques en Java
El código se ejecuta secuencialmente por defecto
Un conjunto de sentencias requieren de llaves { } para agruparse como un bloque.
El bloque entre llaves { } se conoce también como sentencia compuesta.
Una sentencia simple es una expresión que termina con punto y coma.
var1 += var2++ + 4;

Cada bloque se ejecuta como una única sentencia dentro del flujo.
{
int i = 0;
boolean termino = true;
System.out.println("i = " + i);
i++;
}

4.2. IF y ELSE

Esta sentencia provee una selección de procesos básico. Una expresión boleana controla que sentencia se ejecutara.
Si la expresión es true, se realizara la primera expresión es false se realizara la segunda.
La clausula else es opcional.

if ( i % 2 == 0 )
System.out.println("Es par");
else
System.out.println("Es impar");
//
if (diasDeAlquilerTranscurridos > diasAlquilerContratados )
System.out.println("Primero pagar moras por alquiler");
else
System.out.println("Puede alquilar nuevas peliculas");
//
if ( numero > 0 ) {
System.out.println("El numero es positivo");
}
//
if (mes <= 7)
System.out.println("El impuesto es 18%");
else
System.out.println("El impuesto es 19%");


4.3. IF anidados
Cuando se requieren muchas condiciones, se pueden anidar sentencias IF.
Debe tener cuidado en el correcto uso de la sentencia ELSE

//
if (velocidad >= 30)
if (velocidad > 100)
System.out.println("Vamos muy rapido");
else
System.out.println("Llegaremos a tiempo.");
else
System.out.println("Que lento vamos");

//
if (velocidad >= 100)
System.out.println("Vas muy rapido");
else if (velocidad > 30)
System.out.println("Vas manejando bien.");
else
System.out.println("Vas muy lento");
//

Este enfoque es utilizado poco, ya que se crea un código algo complicado de entender.
Es preferible usar las llaves { } para separar los bloques.

if (velocidad >= 25) {
if (velocidad > 100) {
System.out.println("Vamos muy rapido!");
}
else {
System.out.println("Llegaremos a tiempo");
}
}
else {
System.out.println("Que lento es la movilidad");
}

4.4. Errores comunes.
Encuentre los errores en los siguientes ejemplos.
//
int x = 3, y = 5;
if ( x >= 0)
if ( y < x )
System.out.println("y es menor que x");
else
System.out.println("x es negativo");
//
int x = 7;
if ( x = 0)
System.out.println("x es cero");
//
int x = 15, y = 24;
if ( x % 2 == 0 && y % 2 == 0 );
System.out.println("x e y son pares");

4.5. El operador condicional (?:)
Es una alternativa a la estructura if..else

if (mes <= 7)
impuesto = 0.18;
else
impuesto = 0.19;

Es una expresión que retorna un valor.
Si la expresión logica es verdadera se obtiene el primer valor.
Si la expresión logica es falsa se obtiene el segundo valor.

impuesto = ( mes <= 7 ) ? 0.18 : 0.19;

4.6. La sentencia SWITCH
Es usada cuando se requiere tomar una accion entre varias en base a una expresión.
La expresión debe ser byte, char, short o int.
No puede ser un long, double, float, String o cualquiere otro tipo.
Si la expresión se iguala a una condicion, esta se ejecuta.
Si no se iguala a ninguna condicion, se realiza la sentencia marcada con default.
Las condiciones deben ser constantes.
Use break para salir del switch
Siempre coloque una opcion default.

int dia
switch (dia) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("Tienes que ir a trabajar");
break;
case 6:
case 7:
System.out.println("Quedate en casa");
break;
default:
System.out.println("En que planeta vives?");

}

char letra='e';
switch(letra);
{
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U':
System.out.println("Es una vocal");
break;
default: System.out.println("Es una consonante");
}

4.6. EJERCICIOS

Ejercicio 1
Que es la Edad?

public class Edad {
public static void main (String [] arg)
{
int edad = 15;
if (edad <= 18)
System.out.println ("Eres un niño");
System.out.println ("La edad es un estado mental");
}
}

Ejercicio 2

Elegir la mejor Nota

public class Nota {
public static void main (String [] arg)
{
int tuNotaFinal = 17;
int miNotaFinal = 12;
int mejorNotaFinal ...

System.out.println ("La mejor nota es: " + mejorNotaFinal);
}
}


Ejercicio 3
En MegaPlaza se hace un 20% de descuento a los clientes
cuya compra supere los 300
¿Cual será la cantidad que pagara una persona por su compra?

C:\java>notepad Compra.java


public class Compra {

public static void main(String[] args) {
double compra, descuento, total;
compra = 410;
descuento = compra*0.20;
total = compra - descuento;
if (compra>300) {
System.out.println("El descuento es de: " + descuento);
System.out.println("El total a pagar es: " + total);
}
else
System.out.println("Sin descuentos, el total es:" + total);
}
}

C:\java>javac Compra.java
C:\java>java Compra
El descuento es de: 82.0
El total a pagar es: 328.0

Ejercicio 4

Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente manera:
Si trabaja 40 horas o menos se le paga $16 por hora
Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra.

C:\java>notepad Salario.java

public class Salario {

public static void main(String[] args) {

int horasTrabajadas, horasExtras, salarioSemanal;

horasTrabajadas = 47;

if ( horasTrabajadas > 40 ) {
horasExtras = horasTrabajadas - 40;
salarioSemanal = horasExtras * 20 + 40 * 16;
System.out.println("El salario con horas extras es de " +
salarioSemanal);

}
else {
salarioSemanal = horasTrabajadas * 16;
System.out.println("Su sueldo es de " + salarioSemanal);
}
}
}

Ejercicio 5
// Un año es bisiesto si es divisible por 4
// excepto aquellos divisibles por 100 pero no por 400
// Según el año determine la cantidad de dias de un mes.
//
public class Mes {
public static void main (String [] arg)
{
int anio = 1948;
int mes = 02;
int dias;
...
System.out.println ("Tiene "+dias+" dias");
}
}

V. LOS CICLOS REPETITIVOS

5.1. WHILE

El while es la forma mas simple de un bucle.
Tiene la siguiente forma:

int i = 1; // inicializacion
while (i<=10) { // condicion de repeticion
System.out.println(i*3.5); // cuerpo
i++; // iteracion
}

El cuerpo se realizara mientras la condición de repetición sea verdadera true

5.2. DO...WHILE

Realiza la condicion de repetición al finalizar el bloque.
Tiene la siguiente forma:

int i = 1; // inicializacion
do {
System.out.println(i*3.5); // cuerpo
i++; // iteracion
} while ( i <= 10 ) // condicion


5.3. EL CICLO FOR

Combina en una sentencia la definición de un ciclo repetitivo.
Para el caso del tipo de cambio, el código fuente será:

for (int i=1; i<=10; i++) {
System.out.println(i*3.5);
}

La inicialización y la iteración puede ser compuesta.

for (int i=0, j=10; i<j; i++, j--) {
System.out.println(j-i);
}

Se pueden crear bucles infinitos.

for (;;) {
System.out.println("Hola mundo!");
}

5.4. ERRORES COMUNES.

El transbordador espacial se encuentra a una altura de 10 Km y esta en fase de aterrizaje.

// Caso 1
int altura = 10;
while (altura > 0);
System.out.println(altura--);
System.out.println("Hemos aterrizado");// Caso 2

int altura = 10;
while (altura > 0)
System.out.println(altura);
altura--;
System.out.println("Hemos aterrizado");
// Caso 3
int altura = 10;
for (; altura > 0; altura--);
System.out.println(altura);
System.out.println("Hemos aterrizado");

5.5. LA SENTENCIA BREAK
En todo bucle, la sentencia BREAK transfiere el control fuera del bucle.
Son necesarias cuando se trata de bucles infinitos.
Un empleado ha llegado a su edad de jubilación (65) y ha trabajado desde los 25 años. Su CTS se deposita en un banco que le otorga interes por estos depositos. Un nuevo gobierno ha decretado que esta liquidación tendra un maximo de 250,000 soles

while (edad <= 65) {
liquidación = (liquidación + salario)*(1+interes);
if (liquidación >= 250000)
break;
edad++;
}

5.6. LA SENTENCIA CONTINUE
Se usa solo en ciclos FOR.
Abandona la ejecución del cuerpo y continua a la siguiente iteración.
Mostrar todos los años bisiestos del siglo XXI.

for ( int anio=2001; anio <= 3000; anio++ ) {
if ( (anio % 100 == 0) && (anio % 400 != 0) )
continue;
if (anio % 4 == 0)
System.out.println(anio);
}

5.7 EJERCICIOS
Ejercicio 1
Mostrar la conversión de 1 hasta 10 dólares en soles, dólar tras dólar, suponiendo que el tipo de cambio es 3.50 soles/dolar.

C:\java>notepad Cambio.java

public class Cambio {

public static void main(String[] args) {
int dolar = 1;
while (dolar<=10) {
System.out.println(dolar +" dolares = " + dolar*3.5 +" soles");
dolar++;
}
}
}


Ejercicio 2
Una persona desea invertir $1000.00 en un banco, el cual le otorga un 2% de interés mensual. Cual será la cantidad de dinero que esta persona tendrá al cabo de un año si todo el dinero lo reinvierte?.

public class Interes {

public static void main(String[] args) {

double dinero = 1000;
int mes = 1;

while (mes<=12) {
dinero = dinero * 1.02;
mes++;
}
System.out.println(dinero);
}
}

Ejercicio 3
Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un día desde las 00:00:00 horas hasta las 23:59:59 horas

public class Reloj {
public static void main(String[] args) {
for (int h=0; h <= 23; h++)
for (int m=0; m <= 59; m++)
for (int s=0; s <= 59; s++)
System.out.println(h +"h "+ m +"m "+ s+"s");
}
}

Ejercicio 4
Una persona desea invertir $1000.00 en un banco, el cual le otorga un 2% de interés mensual. En cuantos meses tendrá mas de $1500, si reinvierte cada mes todo su dinero?.

public class Dinero {
public static void main(String[] args) {
double dinero = 1000;
int mes = 1;
for (;;) {
dinero = dinero * 1.02;
if (dinero >= 1500) break;
mes++;
}
System.out.println(mes);
System.out.println(dinero);
}
}

6 PROBLEMAS

6.1 SOBRE VARIABLES

1. Ejercicio
Dada un cantidad en soles, obtenga la equivalencia en dólares, asumiendo que la unidad cambiaría esta en otra variable.

2. Ejercicio
Calcule la masa del aire; si la presión, el volumen y la temperatura de una masa de aire se relacionan por la formula:
masa = (presión * volumen)/(0.37 * (temperatura + 460))

3. Ejercicio
Calcular el numero de pulsaciones que una persona debe tener por cada 10 segundos de ejercicio, si la formula es:
numero de pulsaciones = (220 - edad)/10

4. Ejercicio
Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.

6.2 SOBRE CONDICIONALES

1. Ejercicio
Se tienen tres enteros positivos a, b y c. Determine si son los lados de un triangulo. Si es un triangulo clasifiquelo segun sus lados.

2. Ejercicio
Al comprar en peru.deremate.com mas de 100 DVD nos hacen un descuento de 37%, entre 25 y 100 el descuento es de 23%, entre 10 y 24 un 11%, si compras menos de 10 no hay descuento. Que importe debo pagar?

3. Ejercicio
En el bus le entregaron 9 soles en monedas. Una de ellas es falsa pues su peso es mayor. Las ocho verdaderas pesan lo mismo. Encuentre el sol falso usando dos veces una balanza.

4. Ejercicio
Realice un programa que encuentre el día de la semana correspondiente a una fecha dada por tres datos como año, mes y dia. Por ejemplo, el día de la semana para la fecha año=2004 mes=10 día=15 es martes.

C. PROBLEMAS SOBRE CICLOS

1. Ejercicio
Averigüe mediante un programa si su numero de DNI es un numero primo.


2. Ejercicio
Implemente el programa MCD que en base a dos positivos, muestre el máximo común divisor entre ellos. Algoritmo de Euclides:
* datos de entrada a y b positivos
* mientras b ≠ 0 repetir las tres instrucciones siguientes:

r ← resto de a entre b (dar a r el valor del resto de a por b)

a ← b (el nuevo valor de a es el antiguo valor de b)

b ← r (el nuevo valor de b es el valor de r)

* el resultado es el ultimo valor de a


Ejemplo:
Se busca el máximo común divisor de a = 945 y b = 651
945 = 1×651 + 294
651 = 2×294 + 63
294 = 4×63 + 42
63 = 1×42 + 21
42 = 2×21 + 0 entonces mcd(945; 651) = 21 (el último resto no nulo).

3. Ejercicio
Cree el programa EsPerfecto que determine si un numero es perfecto. Un número es perfecto cuando es igual a la suma de todos sus divisores excepto él mismo. Por ejemplo, el número 28 es perfecto (28 = 1 + 2 + 4 +7 + 14)

4. Ejercicio
Con un programa muestre la Tabla de Pitágoras (Tabla de Multiplicar del 1 al 10).

5. Ejercicio
Con un programa muestre los números de la Criba de Eratostenes (Tabla de números primos del 1 al 150)