Está en la página 1de 28

MODULO 1 PROGRAMACIÓN BÁSICA EN JAVA

Origen y definiciones

Internet

En 1969 surge de la red de comunicación informática entre las universidades UCLA,


Standford, California y Utah. El departamento de la defensa requería de una red de
información resistente a algún ataque nuclear; en donde la destrucción de algunas
computadoras no cortaría la comunicaición con el resto de la red. Esto dió a lugar
una red descentralizada.

El número de computadora conectadas en 1985 fue de 1024, en 1987 de 28,174, y


en 1992 aproximadamente un millón. Actualmente hay 10 millones de
computadoras conectadas para dar servicio a 60 millones de usuarios, con un
tráfico de 40 trillones de bytes por mes. Se esperaba que en 1973 se tendrían tan
sólo 256 computadoras en la red....

WWW

Los orígenes de la Word Wide Web (WWW) aparecen en 1989 como un proyecto
para manejar el concepto de hipermedia en computadoras geográficamente
distribuídas. El concepto de hipermedia es la combinación de texto, gráficos,
animación y sonido dentro de un documento, y ya había sido implementado en las
computadoras Apple, en la década de los ochenta, con el sistema Hypercard. Un
hipertexto puede contener ligas a recursos en otras computadoras, lo que
conocemos como páginas Web.

Para visualizar y navegar en el Web se requiere de un programa que pueda


presentar correctamente estas páginas. A este programa se le denomina,
genéricamente, browser o navegador. Los browsers nos permiten la visualización
de documentos hipertexto en otras computadoras en Internet, gracias a un
protocolo de comunicación conocido como http (Hyper Text Transfer Protocol).

En 1993 nació el World Wide Web con más de 50 sitios soportando hipertexto.
Es importante recalcar que Internet es la red de computadoras en el mundo. Una
Intranet es una red local (por ejemplo, la de la comunidad de la UDLA) y WWW es
el concepto que se utiliza para referenciar documentos dentro de una red.

HTML

Para escribir una página y ponerla en el Web es necesario tener un editor de texto
que genere archivos en el formato de HTML (HyperText Markup Language).
Generalmente, los desarrolladores de software escriben sus propias páginas en este
lenguaje, usando un simple editor de texto. Los elementos de HTML que indican el
formato del documento y algunas acciones del nevagador son conocidos como
etiquetas (tags), que consisten de palabras claves e información adicional. Las
etiquetas están siempre delimitadas por los símbolos < >. Cualquier texto que no
esté delimitado el navegador lo considerará como texto que se visualizará como tal
en la página. El lenguaje HTML no es complicado, basta con conocer algunas
etiquetas(tags) básicas.
Por ejemplo, para indicar el formato en negritas se utiliza la etiqueta <B> para
indoicar el inicio del texto y la etiqueta </B> para indicar el final del mismo.

Si tenemos el siguiente texto en nuestro documento HTML:

Escribir una <B>página</B> es muy sencillo.

El navegador lo presentará así:

Escribir una página es muy sencillo.

¿Qué sucede cuando se logra acceso a una dirección en el Web?

Supongamos la siguiente dirección de un recurso en el Web:

http://mailweb.udlap.mx/~sainzmar

Una dirección, conocida también como URL (Uniform Resource Locator), es única
para cualquier recurso de la Web.

El navegador envía un mensaje al servidor Web localizado en el dominio


mailweb.udlap.mx (la computadora mailweb que da el servicio en el área de la
udlap, en México) en el directorio sainzmar. Como no se especifica el documento
html asume el documento index.html por omisión y entonces envía una copia a la
computadora que requirió esa dirección.

Ver el texto de alguna página en el Web.

Ahora el programar es más sencillo para entenderlo, pero es más complejo para la
computadora. Un programa debe pasar por el proceso de compilación para que la
computadora pueda ejecutar el programa.

Intérprete: traduce el código fuente línea por línea es un equivalente de código de


máquina, para que se ejecute.

Compilador: traduce el código fuente completo y crea un código objeto que se


podrá ejecutar posteriormente.

Java --> requiere de compilar para entonces sea interpretado el programa


y obtener resultados.

Java requiere que su compilador (conocido como javac) traduzca el programa del
lenguaje Java a un código que pueda ser interpretado por cualquier computadora,
independiente del modelo. A este código se le denomina bytecode.

Posteriormente, el intérprete de Java para el modelo de computadora (plataforma)


ejecuta el programa. Para cada plataforma existe entonces una JVM (Java Virtual
Machine) para que los programas con extensión .class pueden ser ejecutados.

Este intérprete es conocido simplemente como java, e interpretará el bytecode,


generando las instrucciones de la computadora en particular (código de máquina).
El navegador también tiene la capacidad de interpretar bytecode.

Asi pues, un programa en java, por ejemplo MiPrograma.java, será analizado


gramaticalmente y traducido a bytecode por parte del compilador, geneando el
archivo MiPrograma.class, el cual será interpretado para su ejecución.

Asimismo, podemos generar un programa, por ejemplo MiApplet.java, compilarlo


para obtener el programa MiApplet.class, relacionarlo a un documento HTML y
solicitar al navegador que lo interprete y ejecute.
Aparece Java

Un documento HTML en un navegador tiene funcionalidad limitada. No es fácil


desarrollar documentos en HTML para qe los usuarios interactúen dinámicamente
con ellos.

En 1990, Sun Microsystems en California trabajó en un lenguaje que pudiera


trabajar en cualquier computadora, independientemente de su marca y
arquitectura. Para ello, diseñaron una "máquina virtual". Se quería que el lenguaje
fuese rápido, sencillo y robusto y, porque no, interretable por un navegador
relacionándolo a una página Web. Sin tener que agregar el código en la página
Web, Java proporcionaría al navegador el intérprete que ejecutara el código. Así
apareció el lenguaje Java.

Aplicaciones y Applets

Estructura de una aplicación Java

Los programas en Java se desarrollan según su uso. Una aplicación es un


programa que se ejecuta a nivel e terminal, para ser compilado y ejecutado, como
el siguiente ejemplo:

public class Hello{


//un programa simple
public static void main(String[] args)
{
System.out.println("Hi!");
}
}

En otros lenguajes:

program Hello(output);
{ un programa simple escrito en Pascal}
begin
writeln("Hi!");
end.

main()
/* un programa simple escrito en C*/
{
printf("Hi!");
}

Estructura de un applet Java

Un Applet es un programa que requiere de relacionarse a una página Web, para


que el navegador lo ejecute. Los applets permiten que nuestros programas puedan
ejecutarse por cualquier persona en el mundo. No son muy complejos, pero
requieren de algunas indicaciones para la visualización de nuestro programa. El
siguiente applet hace lo mismo que la anterior aplicación.

import java.applet.*;
import java.awt.*;

public class Hello extends Applet{


//un simple applet
public void paint(Graphics g)
{
g.drawString("Hi!", 20,10);
}
}

Breve explicación del applet:

Indicadores de importación

import java.applet.*;
import java.awt.*;

necesarios para que el compilador considere lo referente a los applets (applet) y a


los componentes para interfaces gráficas (awt).

Extensión de un applet

public class Hello extends Applet

Nuestro programa se llama Hello, es una clase (tendrá un archivo con el sufijo
.class) , es de acceso público y además es un tipo particular de Applet (una
extensión de lo que es un Applet en general).

Definición del método paint

public void paint(Graphics g)


{
g.drawString("Hi!", 20,10);
}

Indicamos que, cuando al applet tenga que presentarse (pintarse) se dibuje la


palabra "Hi". Esto gracias a un componente gráfico (Graphics) al cual denominamos
"g" en nuestro programa.

Para poder ejecutar este applet dentro de una página Web necesitamos realizar 2
tareas:

• compilar el código fuente del applet (.java) para obtener el programa en


bytecode (.class)
• prepara un documento HTML y agregar el tag para indicar la ejecución del
applet

El código del método paint generaría la siguiente secuencia de numeración con sus
mnemónicos correspondientes:

43 aload_1 (load the Graphics


object g)

18,1 ldc 1 (load the first


constant "Hi!")

16,20 bipush 20 (load the value 20)

16,10 bipush 10 (load the value 10)


182,0,6 invokevirtual (call the
"drawString"
method)

177 return (leave the "paint"


method)

El archivo Hello.java contiene al programa en lenguaje java, mientras que el


archivo Hello.class es el programa traducido, en bytecode. Los archivos que
contienen bytecode siempre deberán tener la extensión .class del mismo nombre
del código fuente.

El siguiente código HTML se usará para hacer referencia al applet.

<html>
<head>
<title>
Mi página con applet
</title>
</head>
<body>
Aquí esta mi applet
<hr>

<applet code = "Hello.class" width =100 height =60>


</applet>

<hr>
</body>
</html>

De esta manera indicamos cuál es el código del applet (Hello.class) así como el
ancho y la altura que tendrá, para su presentación en el navegador del Web.

El JDK y el IDE, instalación y pruebas

Durantre el curso estaremos utilizando las siguientes herramientas gratuitas::

1.- El SDK de java que puedes descargar aquí y la documentación (API) también
de aquí

2.- Un IDE como jcreator, el cual puedes descargarlo aquí (la versión gratuita
"freeware").

Si no quieres o puedes bajar la documentación de Java (el API), la puedes consultar


en Internet aquí
Ahora realizaremos la instalación y pruebas de este software.

Un Vistazo a Java

Java es un lenguaje muy sencillo de aprender. En sus estructuras de programación


es parecido a Pascal, C y C++.

Sintáxis

Su sintáxis (colección de reglas gramaticales) es muy parecida a C++.

El compilador de java hace un análisis de que nuestro programa, de acuerdo a esta


s reglas gramaticales.

Características del Lenguaje

Java manipula información que puede estar representada en diferentes tipos de


datos. Existen unos tipos llamados tipos primitivos, entre ellos los siguientes:

• int: enteros (como -1, 567, o 45674)


• double: números reales con punto flotante (3.14.15975, -3452.5675)
• boolean: booleanos (true y false)
• char: caracteres ( 'A', '7', '*')
• String: cuerda de caracteres ("hola", maria ortiz")

También es posible manipular estructuras de datos más complejos, referentes a


clases (como el objeto g de la clase Graphics en el applet veremos más adelante).

La información en Java en un programas puede estar expresada de manera literal,


como "hola", 20, 45.673, 'e'

La indicación del tipo de variable se hace indicando el tipo y el nombre de la


variable. Por ejemplo, si queremos indicar que celsius es una variable entera y que
fahrenheit es una variable referente a un número real, tendríamos:

int celsius:

double fahrenheit;

Se puede asignar variables , literales y combinar operadores dentro de una


expresión, como:

fahrenheit = (9.0 / 5.0) * celsius + 32

Estatutos de Java
Un programa en Java puede verse como una secuencia de estatutos. Un estatuto es
la unidad básica de ejecución.

// un estatuto de asignación: evalua la expresión


// el cual incrementa el valor almacenado counter en 1

counter = counter +1;

// un estatuto de condición if: si la condición dentro de los paréntesis es verdadera,


// se ejecuta su expresión , de lo contrario avanza al siguiente estatuto

if (number>0)
average = sum / number;

// el llamado de un método: ejecuta el método drawString(), permitiendo al objeto


g
// dibujar una cuerda de caracteres en cierta localización.

g.drawString("Hi!", 20,30);

// un estatuto de declaración: establece una nueva variable de un tipo entero


// llamada mySum, e inicializándola con el valor 0

int mySum = 0;

// declaración de un método: este método toma dos valores p y q y regresa


// el valor mayor de los dos

int maxValue(int p, int q)


{
if (p>q)
return p;
else
return q;
}

Instrucción Simple
Una instrucción simple es la unidad de ejecución mínima dentro de un programa en
Java. Puede ser cualquier instrucción de Java como; for, while, if, llamado a un
método, expresión lógica o aritmética o declaración.

• Cualquier instrucción termina con un punto y como(;)


• Se pueden escribir varias instrucciones en una misma línea, separada por
punto y coma(;)
• Instrucción nula que es simplemente un punto y coma(;) en una línea. Esto
podrá utilizarse dentro de una instrucción de ciclo.

Instrucción compuesta o bloque


Una instrucción compuesta o bloque, es un conjunto de instrucciones simples que
se encuentran delimitadas por llaves ( { } ).
Un bloque puede contener otros bloques.

Declaración de una constante

Java permite declarar constantes cuyo propósito es facilitar y modificar un


programa. Al declarar una constante dentro de un programa como final [static]
double FACTOR=5.26 y que posteriormente se deseé modificar ese valor, solo se
tendrá que modificar una única línea. Por convensión una constante se deberá
escribir con MAYÚSCULAS. Una constante no puede ser modificada en el
programa.

class Circle{
final static double PI=3.141592645;
...

Circle.PI=3.2; //error, no se puede modificar una variable declarada como final

Instrucciones de entrada / salida


Las instrucciones de salida en una aplicación son las siguientes:

System.out.println ( cadena ) ;

System.out.print ( cadena ) ;

Cuando desarrollemos applets veremos que se utilizan diversos "widgets" para


crear las GUI's.

Para hacer entradas utilizaremos la clase Leer la cual será proporcionada por tu
profesor y cuyos métodos permten leer desde el teclado valores que pueden ser
almacenados en variables de tipos primitivos, por ejemplo:

int x:

x= Leer.datoInt("Dame un valo entero --> ");

Primer applet

Si se tiene alguna experiencia en lenguajes de programación como Pascal, C, C++,


Basic, aprender Java será muy sencillo porque la sintáxis es similar. Tenemos que
tener en cuenta que Java es un lenguaje orientado a objetos y esto significa que un
programa en Java será una colección de objetos colaborando. Entonces como Java
tiene una colección de clases(API's) que se pueden utilizar para hacer un programa
visual más interesante. Veremos como realizaremos estos programas, que se
llaman Applets.

Un applet es un programa que es cargado y ejecutado por otro programa como es


un navegador Web o un ejecutor de applets.

* Hola.java

* Hola.html

Un applet es estático y no hace nada (excepto consumir recursos de la


computadora) que nosotros no hagamos con el código HTML.

Comentarios y el formato de un programa en Java

Código Descripción

import Informan al compilador que serán usadas clases de esos


java.applet.*; paquetes: java.awt y java.applet
import El paquete java.applet tiene la clase Applet.
java.awt.*; El * indica que se podrán hacer referencia a todas las clases de
ese paquete, se pudo haber escrito
import java.applet.Applet; y esto indica que solo se hará uso de
la clase Applet del paquete

Código Descripción

public class Hola Es el inicio de la declaración de la clase Hello, el resto del


extends Applet código deberá estar entre llaves{}
La palabra public permite el acceso a esta clase desde
afuera.
class Hello indica que la clase se llama Hello
extends hace referencia a que la clase Hello heredará las
caracteríticas de la clase Applet

Por ejemplo,limiteValor, opcion37,rango_superior son nombres válidos de


identificadores mientras que 37menor, linea 2, %&3#$23, no lo son.
Los identificadores en Java difieren las minúsculas de las mayúsculas, como:
limiteValor a LIMITEVALOR o LIMITEvalor y todas sus posibles combinaciones.

Código Descripción

//un programa Es un comentario. El compilador de Java ignora cualquier texto


sencillo que inicie con // o
/* y finaliza con */
También los comentarios pueden estar al final de un estaturo:
medida= 3.67; //relación de medida

Primera aplicación

Una aplicación Java tiene interfaz modo texto y es muy útil para programación por
lotes o para hacer pruebas rápidas de segmentos de código.
/*
* Hola.java
*
* Mi primera aplicacion en Java.
* Lo que unico que hace es mandar
* un mensaje a la pantalla
*
*/

public class Hola


{

// Este es el metodo que inicia el programa


public static void main(String[] args)
{

System.out.println("\n\t\tHola a todos!");

System.out.println();
System.out.println();
}

Secuencia

declaración de variables y constantes

Los nombres de variables, métodos, clases y paquetes son conocidos como


identificadores. Su sintaxis es:

Identificadores válidos Identificadores no


válidos

x sum average button2 the_message mixMax 2fold my Panel final


Int

Palabras Reservadas
abstract default goto null synchronized

boolean do if package this

break double implements private throw

byte else import protected throws

case extends instanceof public transient

catch false int return true

char final interface short try

class finally long static void

const float native super volatile

continue for new switch while

Variables

Una variable es usada para almacenar información para después ser usada. Existen
dos clases de variables, variables de instancia y variables locales.

Las variables de instancia son declaradas a nivel de la clase y representan los datos
que pertencen al objeto de la clase. Las variables locales son declaradas en el
método y solo serán usadas en el método.

La siguiente aplicación hace el calculo de una formula:

public class Faren


{
public static void main(String args[])
{
int centigrados;
double f;
centigrados=25;
f=9/5.0*centigrados+32;
System.out.println("El resultado es "+f);
}
}

Los 8 tipos de datos primitivos de Java

En Java, como en otros lenguajes de progrmación, cada pieza de información tiene asociado un tipo.
determina que tanto espacio del objeto ocupará en memoria y como será usado. Cada tipo de dato es
proporciona ocho tipos de datos primitivos:

Tipo bits rango


boolean 1 true o false
char 16 "\u0000" a "uFFFF" conj.caract.ISO
byte 8 -128 a +127
short 16 -32768 a +32767
int 32 -2,147,483,648 a +2,147,483,647
long 64 -9,223,372,036,854,775,808 a +9,223,372,036,854,775,807
-3.40292347E+38 a
float 32
+3.40292347E+38
-1,79769313486231570E+308 a
double 64
+1,79769313486231570E+308

Tipo Valor de
Primitivo inicialización

boolean false

char '\0'

byte 0

short 0

int 0

long 0L

float 0.0f
double 0.0

asignación

expresiones aritméticas

Operadores y Expresiones

Operadores Ariméticos

operación símbolo expresión en Java


suma + f+7
resta - a-c
multiplicación * a*c
división / w/t
residuo % r%s

Nivel Tipo de Operador Operador

1 paréntesis ()

2 operadores postfijo [] . (params) expr++ expr--


3 operadores unarios +expr -expr !expr ~expr ++expr --expr
prefijo
4
creación o casting new (type)expr

5 multiplicativos * / %
6 sumas + -
7 corrimiento >> >> >>>
+= -= *= /= %= >>= <<= <<<=
16 asignación
&= ^= |=

Si n=3, m=-1;

n //valor de 3
2 +n //valor de 5
4 * n +m // valor de 11
4 * (n + m) //valor de 8
2 -n-4 // valor de -5

La expresión:
2*4-3+5*4

se evalua así:
(2 * 4) - 3 + (5 * 4)
(((2 * 4) - 3) + (5 * 4))
(( 8 - 3) + (5 * 4))
( 5 + (5 * 4))
( 5 + 20)
25

Las siguientes aplicaciones utilizan expresiones aritméticas:

//Calcula el promedio de 3 variables


public class Promedio
{
public static void main(String args[])
{
int a,b,c;
double suma,prom;
a=7;
b=10;
c=9;
suma=a+b+c;
prom=suma/3;
System.out.println(prom);
}
}

Casting explicito e implicito


Cuando en una expresión se tienen diferente tipos de datos, domina el que tenga
mayor precisión:

Uso del casting, para devolver un diferente tipo de dato.

double amount;
(int) (255 * amount)

Uso de métodos de la clase Math, se encuentra en el paquete java.lang

expresiones lógicas

Las expresiones lógicas o "booleanas" obtienen como resultado un valor de verdad


: verdadero o falso. En java : true o false

Las expresiones booleanas incluyen operadores de relación y operadores lógicos los


cuales se enlistan en las tablas siguientes:

Operadores de Igualdas y
Relación

== x == y

x !=
!=
y

> x>y

< x<y

x >=
>=
y
x <=
<=
y
Operadores
lógicos
AND && (sexo=='F') &&(edad>25)
(prom > 78 ) || (final ==
OR ||
80)
NOT ! !(valor == 50)
(val1 == val2)^ (val1 ==
XOR ^
val3)

relacionales > > >= <= instanceof


igualdad == !=
AND (bit) &
XOR(bit) ^
OR( bit) |
AND lógico &&
OR lógico ||
condicional ?:

Ejemplo de expresiones lógicas:

a > b && x <=5

c == 3 | | c >= 2

Condiciones

instrucción if else

Dentro de un applet que se intenta responder a acciones, es necesario probar


eventos y conocer en que componente ocurrió. Se necesita evaluar una expresión
lógica para tomar cierta decisión. Para esto se utiliza el estatuto if.
Que permite dentro del orden del programa se tome una decisión para ejecutar una
u otra acción, dependiendo del resultado de la expresión lógica dentro de la
instrucción if, dando como resultado verdadero o falso. Su sintáxis es la siguiente:

if (condición)
instrucción1;
[else
instrucción2;]

La manera de ejecutar la instrucción if es la siguiente:


1. Se evalúa la expresión lógica dando como resultado verdadero o falso(true o
false).
2. Si el resultado es verdadero ejecutará la instrucción1 y terminará de
ejecutar la instrucción if
3. Si el resultado es falso ejecutara el bloque del else junto con la instrucción2
y finalizará la instrucción if
4. En ambos casos al terminar de ejecutarse la instrucción if continuará con la
siguiente instrucción.
5. La instrucción1 o la instrucción2 podrán ser simple o compuesta

if(exp.lógica) if(exp.lógica)
estatuto1; estatuto1;
else
estatuto2;

if(exp.lógica) if(source== order)


{ displayFields.setText("Button order
secuencia de estatutos clicked");
}
else
{
secuencia de estatutos
}

if (source== colorButton1) if( a.getSource()==redButton)


currentColor=Color.red; {
else setColor(Color.red);
currentColor=Color.blank; repaint();
}

instrucción if anidada

Cuando dentro de un if se tiene otro estatuto if se maneja una anidación de if's y


sirve para hacer pruebas consecutivas.

if(source==colorButton1) if(source==colorButton1)
currentColor=Color.red; currentColor=Color.red;
else else
if( source==colorButton2) if( source==colorButton2)
currentColor=Color.blue; currentColor=Color.blue;
else else
if( source==colorButton3) if( source==colorButton3)
currentColor=Color.orange; currentColor=Color.orange;
else else
currentColor=Color.black; currentColor=Color.black;

Es importante que cuando se tienen if's anidados se tiene que indentar cada if para
que el programa implícitamente este documentado

//versión 1 //versión
2
if ( x>0) if (y >0) t=1;
else t=2;
if ( x>0)
if (y
>0)
t=1;
else
t=2;

//versión 3(mal indentado) //versión


if (x>0) 4
if (y>0) if (x>0)
t=1; { if
(y>0)
else t=1;
t=2; }
else
t=2;

Diferentes maneras de usar if's:

Se desea obtener el impuesto si cumple:


si la compra está entre 0 y 19450 se aplica un 15%
si la compra está entre >19450 pero <= 47050 se aplica un 28%
si la compra está entre >47050 pero <= 97620 se aplica un 33%
si la compra es mayor >97620 se aplica el 50%

public double public double


taxOn(double income) taxOn(double income) //esta versión no funciona
{ { verificar porqué
double tax; double tax;
if (income <= 19450) if (income <= 19450) public double taxOn(double
tax=0.15 * return 0.15 * income)
income; income; { double tax;
else if (income <= else if (income <= if (income <= 19450)
47050) 47050) tax=0.15 * income;
tax=0.28 return 0.28 if (income <= 47050)
*income; *income; tax=0.28 *income;
else if (income < else if (income < if (income < 97620)
97620) 97620) tax=0.33 * income;
tax=0.33 * return 0.33 * else
income; income; tax=0.50 * income;
else else
tax=0.50 * return 0.50 *
income; income; return tax;

return tax; }

} }

instrucción switch

Permite realizar diferentes acciones dependiendo de una valor dentro de una


expresión, este valor siempre deberá ser un numérico entero. Su sintáxis es la
siguiente:

switch( expresión )
{
case constante1: [estatutos1;]
case constante2: [estatutos2;]
case constante1: [estatutos1;]
.
.
.
[default: estatutos n;]

}
la expresión deberá ser tipo char, byte, short o int. La manera en como se ejecuta
la instrucciónswitch es la siguiente:

1. evalúa la expresión y compara el valor con los valores que tiene cada case y
cuando coincide, ejecuta el estatuto correspondiente. Al ejecutar el bloque
de estatutos deberá estar presente el estatuto break para que se salga del
estatuo switch.
2. si no existe un valor que coincida entonces ejecutará el estatuto default si
estuviera presente, de lo contrario se saldrá del estatuto switch.
int x;
switch (x){

case 1: g.setColor(Color.red);
break;

case 2: g.setColor(Color.green);
break;

case 3: g.setColor(Color.blue);
break;

default: g.setColor(Color.black);

Repetición

Cuando se desea repetir una secuencia de estatutos es necesario utilizar cualquiera


de los estatutos de ciclo para poder lograrlo.

Problema:
Si se invirtiera una cantidad de dinero dado un interés anual , cuantos años
tendrían que pasar para obtener el doble de dinero invertido. Si comenzamos con
una cantidad a y al final del año se tendría la cantidad original más el interés, ar
entonces se tendría : a + ar, lo cual es a(1 + r). Pero esto solo es para un año
como sabemos cuantos años lo tenemos que aplicar para obtener el doble de lo
invertido.

// asumir lo siguiente: rate=0.05 para 5%, years=0 , amount=1000

double capital=1000, amount=1000;


int years=0;
double rate=0.05;

//calcular la cantidad al final del primer año


amount= (1 + rate) * amount;
years++;
if (amount >= capital*2)
System.out.println("se necesitan " + years + "para obtener el doble de la
cantidad ");
else
{
//calcular la cantidad al final del segundo año
amount= (1 + rate) * amount;
years++;
if (amount >= capital*2)
System.out.println("se necesitan " + years + "para obtener el doble de la
cantidad ");
else
{
//calcular la cantidad al final del tercer año
amount= (1 + rate) * amount;
years++;
if (amount >= capital*2)
System.out.println("se necesitan " + years + "para obtener el doble
de la cantidad ");
else
//. . . hasta obtenerlo

Lo que podemos ver es que los estatutos se repiten.

double capital=1000, amount=1000;


int years=0;
double rate=0.05;

//ejecutar esto
{
amount= (1 + rate) *amount;
years++;
}
hasta cuando cumpla (amount >= capital*2)

System.out.println("se necesitan " + years + "para obtener el doble de la cantidad


");

instrucción for

La estructura for ejecuta una instrucción simple o compuesta, repetidas veces


controlada por un contador. Su sintaxis es:

for ( [v1= e1[, v2=e2] ...]; [condición] ; [progresión] )


instrucción;

Se ejecuta de la siguiente manera:

1. v1, v2,... representan variables de control que serán inicializadas con los
valores de las expresiones e1, e2, ..., respectivamente;
2. condición es una expresión lógica , que si se omite, se supone verdadera;
3. progresión es una o más expresiones separadas por coma cuyos valores
incrementan o decrementan el valor de las variables de control para
continuar o finalizar la estructura for;
4. la instrucción podrá ser simple o compuesta.

La solución del problema sería:


for( int y=1; y<= numYears; y++)
{
amount= (1 + rate) *amount;
System.out.println("año " + y + " la candidad es = " + aount);
}
//no se aplica tan bien como los anteriores

instrucción while

La estructura while ejecuta una instrucción simple o compuesta, ninguna o varias


veces dependiendo de la condición. Su sintáxis es:
while (condición)
instrucción;

donde condición es una expresión lógica y la instrucción podrá ser simple o


compuesta. La manera como se ejecuta la instruccuón while es la siguiente:

1. Se evalúa la condición.
2. Si el resultado de la evaluación es verdadero, se ejecuta la instrucción que
se encuentra dentro de la estructura while.
3. Si el resultado de la evaluación es falso, se pasa el control a la siguiente
instrucción fuera del ciclo.

La solución del problema sería:


while (amount < capital *2)
{
amount= (1 + rate) *amount;
years++;
}

System.out.println("se necesitan " + years + "para obtener el doble de la cantidad


");

instrucción do - while

La estructura do - while ejecuta una instrucción simple o compuesta, uno o varias


veces dependiendo de su expresión lógica. Su sintáxis es:
do
instrucción(es);
while (condición);

donde condición es una expresión lógica y la instrucción podrá ser simple o


compuesta. La manera como se ejecuta la instruccuón do - while es la siguiente:
1. Se ejecuta la(s) instrucción(es) una vez.
2. Se evalúa la condición.
3. Si el resultado de la evaluación es verdadero, se ejecuta la instrucción que
se encuentra dentro de la estructura do/while.
4. Si el resultado de la evaluación es falso, se pasa el control a la siguiente
instrucción fuera del ciclo

La solución del problema sería:


do
{
amount= (1 + rate) *amount;
years++;
}
while(amount < capital*2);

System.out.println("se necesitan " + years + "para obtener el doble de la cantidad


");

Las tres estructuras de repetición se caracterizan cada una en:

1. for
*se caracteriza porque se debe de conocer el valor inicial y final donde
comienza y finaliza el ciclo(existen excepciones), así como también el
incremento. Se conoce el número de iteraciones .
2. while
*la ejecución de la instrucción o bloque del ciclo, depende de la evaluación
de la expresión lógica. No se conoce el número de iteraciones.
3. do/while
*se ejecuta la instrucción o bloque del ciclo por lo menos una vez. Y
posteriormente la ejecución de la instrucción o bloque del ciclo, dependerá
de la evaluación de la expresión lógica. No se conoce el número de
iteraciones.

Problemas comunes con ciclos


Concidere el siguiente segmento de código

// ejecutar para obtener las suma de 1 + 2 + 3 + 4 + .... + n


int sum=0;
for(int i=1; i<= n ; i++);
sum += i;

¿Cual es el valor de sum al final del ciclo?


Existen dos problemas:
1.- el colocar ; después del paréntesis del for eso indica que no hay ningún estatuto
que se ejecute, pero si se ejecuta el for.
2.- la variable de control i solo está declarada para el bloque del for por lo tanto
cuando sale o concluye el ciclo, en el estatuto sum +=i, i no se concoce.

Otro ejemplo:
do
{
amount= (1 + rate) *amount;
years++;
}
while(amount != capital*2);

System.out.println("se necesitan " + years + " para obtener el doble de la cantidad


");

Nunca se saldría del ciclo, se debe de escribir la expresión lógica correcta.

También podría gustarte