Descargar

Manual de Java (página 3)


Partes: 1, 2, 3, 4, 5

Descubre el Error

A continuación se muestran, algunas líeas de código, las cuales poseen algunos errores, los que usted tendrá que identificar y corregir:

1. import java.swing.*

2. JOptionPane.showMessageDialog("Bienvenido!!!!");

3. g.drawstring("Hola", 25,25);

4. g.drawOval(60,30,45,);

5. g.drawrect(60,50);

6. g.setColor(White);

7. setbackground(Green);

Capítulo IV: Cadenas de Caracteres, Métodos Matemáticos y Excepciones

4.1 Variables

Como ya lo hemos dicho, una variable, es aquella que, tiene la propiedad o capacidad de cambiar de valor, durante al ejecución del programa. Supongamos que se necesitan dos variables de tipo double, la declaración de ellas, sería:

double x, y;

Cuando, realizamos ésta acción (o la declaración de cualquier otro tipo de variables), estamos asignando espacio en memoria (el tamaño viene dado por el tipo de dato, del cual se está declarando. Ver tabla 2.2). En dicho espacio, se guardará el valor, que almacenará dicha variable.

Por tanto, una variable tiene tres propiedades básicas:

  1. Una posición de memoria para almacenar el valor
  2. El tipo de datos almacenado en la posición de memoria.
  3. Y el identificar (nombre) asociado a ésa posición de memoria.

Ahora bien, el lector se preguntará, el por qué, pareciera una redundancia, al hablar de las variables, ya que, esto lo hemos tratado con anterioridad.

Pues bien, es importante saber esto, ya que iniciaremos hablando de lo que es la esencia de Java:

4.2 Los Objetos

Un Objeto, es una colección de datos y operaciones, que utilizan esos datos.

Declarar un Objeto

Al declarar un objeto, lo único que hacemos es declarar una variable, de ése tipo, la cual hará referencia a ése objeto. Por tanto, dicha variable contendrá una dirección de memoria (Algo similar a lo que eran los punteros en C).

Un objeto se crea, a partir del operador new y el constructor correspondiente a la clase, de la cual se está creando el objeto.

Por ejemplo, si deseamos crear, un objeto de la Clase Datos, sería así:

Datos Jefe; //Declaración del Objeto Jefe=new Datos();//Creación del Objeto

Pero También podemos hacerlo en una sola línea: Datos Jefe=new Datos();//Declaración y Creación del Objeto

Puesto que, de la misma manera que, se puede declarar e inicializar una variable; un objeto puede ser declarado y creado al mismo tiempo.

4.3 Uso de Las Cadenas de Caracteres

Las clases String y StringBuffer están orientadas a manejar cadenas de caracteres. La clase String está orientada a manejar cadenas de caracteres constantes, es decir, que no pueden cambiar. La clase StringBuffer permite que el programador cambie la cadena insertando, borrando, etc. La primera es más

eficiente, mientras que la segunda permite más posibilidades.

Ambas clases pertenecen al package java.lang, y por lo tanto no hay que importarlas. Hay que indicar que el operador de concatenación (+) entre objetos de tipo String utiliza internamente objetos de la clase StringBuffer y el método append().

Los métodos de String se pueden utilizar directamente sobre literales (cadenas entre comillas), como por ejemplo: "Hola".length().

Por ejemplo, si deseamos crear una cadena de caracteres del tipo String:

String nombre;

String Direccion= "San Salvador, El Salvador";

A continuación, veamos algunos métodos de la Clase String:

Método

Descripción

String("…")

Constructor para crear el objeto. Casi nunca se utiliza, ya que no es tan eficiente.

CharAt(int)

Devuelve el carácter en la posición especificada.

getChars(int, int,char[], int)

Copia los caracteres indicados en la posición indicada de un array de

Caracteres.

indexOf(String, [int])

Devuelve la posición en la que aparece por primera vez un String en otro

String, a partir de una posición dada (opcional)

length()

Devuelve el número de caracteres de la cadena

replace(char, char)

Sustituye un carácter por otro en un String

startsWith(String)

Indica si un String comienza con otro String o no

substring(int, int)

Devuelve un String extraído de otro

toLowerCase()

Convierte en minúsculas (puede tener en cuenta el locale)

toUpperCase()

Convierte en mayúsculas (puede tener en cuenta el locale)

trim()

Elimina los espacios en blanco al comienzo y final de la cadena

valueOf()

Devuelve la representación como String de sus argumento. Admite

Object, arrays de caracteres y los tipos primitivos

Tabla 4.1

Ejemplo 4.1

Diseñe un Programa que, lea una cadena de Caracteres, y luego, muestre esa misma cadena en minúsculas, mayúsculas y la longitud de la misma.

1 import javax.swing.*; 2 public class UsoCadenas { 3 public static void main (String args []) { 4 String cadena, aux; 5 cadena=JOptionPane.showInputDialog("Ingrese la Cadena"); 6 /*En la variable aux, guardamos la nueva cadena 7 Note la forma en la que llamamos los métodos: 8 Variable.Nombre_del_Metodo();*/ 9 aux=cadena.toLowerCase();10 JOptionPane.showMessageDialog(null, "Cadena en Minúsculas: "+aux);11 aux=cadena.toUpperCase();12 JOptionPane.showMessageDialog(null, "Cadena en Mayúsculas: "+aux);13 JOptionPane.showMessageDialog(null, "La longuitud de la cadena es: "+cadena.length());14 }15 }

Explicación

Declaramos dos referencias a objetos de la clase String, una de ellas es identificada por "cadena", la cual guardamos, la cadena que, el usuario ha ingresado. La otra referencia (aux), nos sirve para guardar, el resultado que devuelven los métodos que hemos llamado.

En las líneas 9,10 y 11, puede observar, la forma en la que se llaman a los métodos correspondientes, para las operaciones que deseamos realizar. La sintaxis es la siguiente:

Nombre_de_la_refencia_de_objeto . Nombre_del_metodo();

Existen, algunos métodos que, reciben parámetros, los cuales, deben especificarse, dentro de los paréntesis del mismo. Pero, en el ejemplo anterior no es el caso.

La clase StringBuffer se utiliza prácticamente siempre que se desee modificar una cadena de caracteres.

Completa los métodos de la clase String ya que éstos realizan sólo operaciones sobre el texto que no conllevan un aumento o disminución del número de letras del String.

Recuérdese que hay muchos métodos cuyos argumentos deben ser objetos String, que antes de pasar esos argumentos habrá que realizar la conversión correspondiente. La Tabla 4.2 muestra los métodos más importantes de la clase StringBuffer.

Nombre del Método

Descripción

StringBuffer()

Constructores del Objeto.

capacity()

Devuelve el espacio disponible del Objeto StringBuffer

charAt(int)

Devuelve el carácter que ocupa la posición especificada.

getChars(int, int, char[], int)

Copia los caracteres indicados en la posición indicada de un array de caracteres

insert(int)

Inserta un String ( o cualquier otro tipo de dato primitive), en la posición que se especifica.

length()

Devuelve la longitud de la cadena.

reverse()

Devuelve una cadena invertida.

setCharAt(int, char)

Cambia el carácter char, el la posición int.

toString()

Convierte en Objeto del tipo String.

Tabla 4.2

Ejemplo 4.2

Escriba un Applet que, lea una cadena de caracteres y luego, la imprima tal cual fue digitada, y luego la dibuje de al revés.

1 import javax.swing.*; 2 import java.awt.*; 3 public class UsaBuffer extends JApplet 4 { 5 String aux; 6 StringBuffer cadena;//Declaración del objeto 7 public void init() 8 { 9 //Realizamos la lectura10 aux=JOptionPane.showInputDialog("Ingrese la Cadena");11 cadena=new StringBuffer(aux);// al constructor del objeto le enviamos el valor de aux12 }13 public void paint (Graphics g)14 {15 super.paint(g);16 g.drawString("La cadena Original es: "+cadena, 25,25);17 cadena.reverse();18 g.drawString("La cadena invertida es: "+cadena, 25,50);19 }20 21 }

4.4 Métodos Matemáticos

La biblioteca de clases de Java incluye una clase Math en su paquete java.lang, la cual define un conjunto de operaciones matemáticas de uso común que pueden ser utilizadas en cualquier programa. Veamos la siguiente tabla:

Método

Descripción

static double E

Valor del número e, base del logaritmo natural.

double PI

Valor del número PI (3.1416…..)

Tipo abs(tipo a)

Valor absoluto de a.

Tipo max(tipo a, tipo b)

Valor mayor entre a y b

Tipo min(tipo a, tipo b)

Valor menor entre a y b

double random()

Valor aleatorio, comprendido entre 0.0 y 1.0

double rint(double a)

Redondeo de a

double sqrt (double a)

Devuelve la raíz cuadrada de a

double exp(double a)

Devuelve el avlor de ea

double log (double a)

Devuelve el logaritmo a de a

double pow(double a, double b)

Devuelve el valor de ab

double acos(double a)

Devuelve el arco coseno de a

double asin(double a)

Devuelve el arco seno de a

double atan(double a)

Devuelve el arco tangente de a

double sin(double a)

Devuelve el seno de a

double cos(double a)

Devuelve el coseno de a

double tan(double a)

Tangente de a

Tabla 4.3

Ejemplo 4.3

Diseñe una aplicación en Java que dado el valor de un ángulo, encuentre su seno, coseno, tangente. Luego, le permita ingresar un dato al usuario, con el cual, pueda calcular su raíz cuadrada.

1 import javax. swing.*; 2 class UsaMetodos 3 { 4 public static void main(String args []) 5 { 6 String leer; 7 double angulo, valor; 8 leer=JOptionPane.showInputDialog("Ingrese el valor del ángulo: "); 9 angulo=Double.parseDouble(leer);10 JOptionPane.showMessageDialog(null, "El valor del seno es: "+Math.sin(angulo)+"nEl Valor del Coseno del angulo es: "+Math.cos(angulo)+"nY la tangente es: "+Math.tan(angulo));11 leer=JOptionPane.showInputDialog("Ingrese el valor, al cual le desea calcular la raíz cuadrada:");12 valor=Double.parseDouble(leer);13 JOptionPane.showMessageDialog(null, "La raíz cuadrada de: "+valor+" es: "+Math.sqrt(valor));14 }15 }

Explicación:

Recuerde que, le método showInputDialog, devuelve un tipo de dato String, es por esa razón que, siempre debemos realizar el cambio al tipo de dato que deseamos usar, en nuestro caso double. Además que, para llamar los diferentes métodos matemáticos, lo hacemos de la siguiente forma:

Math.nombre_de_metodo(parámetro);

Además que, en vez de realizar el cálculo y la impresión en la misma línea (en el método showMessageDialog), podríamos haber calculado los respectivos valores por separado, asignarlos a tres variables auxiliares, y mandar a impresión esas variables.

4.5 Excepciones

Una excepción es una condición anormal que surge en una secuencia de código durante la ejecución. La gestión de excepciones lleva a la gestión de errores en tiempo de ejecución. Cuando surge una condición excepcional se crea un objeto Exception.

El trabajo con excepciones se realiza mediante las siguientes palabras clave:

try Tiene el código de ejecución, si se produce un error lanza (throw) una excepción que será capturada.

catch Captura la excepción lanzada por try que le precede. Puede capturar más de una excepción, es decir que se pueden añadir.

finally La excepción es tratada en un gestor por omisión.

SINTAXIS DE EXCEPCIONES:

try{ Bloque de código; }catch(TipoExcepcion1 e){ gestión de la excepción; }catch(TipoExcepcion2 e){ gestión de la excepción;throw(e); }finally{}

Ejemplo 4.4

Supongamos que, una persona, desea realizar una división entre cero:

1 public class EjemploExcep{ 2 public static void main (String args[]){ 3 try{ 4 double resul; 5 6 resul=27/0; 7 System.out.println("Resultado es: "+resul); 8 }//fin del try 9 catch (ArithmeticException e){10 System.out.println("Java, lanza una excepción, ya que no puede realizar una división entre cero");11 }12 }13 }

A continuación mostramos una lista de las excepciones lanzadas por Java:

Preguntas:

  1. ¿Cuáles son las diferencias entre un objeto y una variable?____________________________________________________________________________________________________________________________________
  2. ¿En que se diferencian las clases String y StringBuffer?_____________________________________________________________________________________________________________________
  3. ¿Los métodos matemáticos, sólo pueden utilizarse con el tipo de dato double?¿Por qué?____________________________________________________________________________________________________________________________
  4. ¿Por qué Java lanza una Excepción?______________________________________________________________________________________________________________________
  5. try y finally. ¿Tienen la misma Función?________________________________________________________________________________________________________________________

Descubre el error

  1. string b;
  2. StringBuffer str= StringBuffer("Hola");
  3. sqrt(g);
  4. try{

}

catch{

}

Ejercicios

  1. Cree un Applet que indique si una frase ingresada por el usuario, es palíndromos. Es decir que se lee de igual manera al derecho que al revés.
  2. Se desea una aplicación en Java, que muestre la posición exacta que ocupa una letra, en una cadena que haya ingresado anteriormente.
  3. Cree un Applet, en el cual, el usuario ingrese una cadena, con espacios en blanco, y luego se dibuje en el Applet, esa misma cadena pero sin espacios en Blanco.
  4. Diseñe un programa que muestre diez números aleatorios, que se encuentren en el rango de 1 a 10
  5. Escriba un programa en Java, que dadas 5 notas de un alumno, muestre en pantalla, el promedio del alumno, pero redondeando la nota al entero más cercano.
  6. Cree un Applet, que reciba dos números (a y b), y que muestre, cual de ellos es mayor, cual es menor, y ab y ba
  7. En un banco, se desea calcular el interés que, recibirá un cliente al final del período por sus ahorros. La fórmula para determinar el interés es la siguiente: I=C*i*t. donde C, es el monto de los ahorros, i es la tasa de interés y t es el período te tiempo en días.

Capítulo V: Sentencias de Control

Todo lenguaje de programación cuenta (o al menos debería contar), con una serie de iunstrucciones que, le permitan controlar el flujo de ejecución de las instrucciones. Afortunadamente Java posee dos grandes rubros de dichas sentencias:

à Estructuras Selectivas, en las cuales encontramos el if, elseif y switch.

à Estructuras Repetitivas o Cilclos, entre las cuales están: while, do… while y for.

  1. 5.1 Estructuras Selectivas

En la vida, muchas veces, nos toca elegir entre un camino y otro a seguir. En muchas de las actividades que realizamos día con día, nos enfrentamos a decisiones que debemos tomar y que, de una u otra forma, alteran el cause normal de nuestra vida (o de nuestro programa).

Sentencia if

La sentencia if (o si condicional), le permite a un programa decidir, mediante la evaluación de una condición, ejecutar una u otra acción o acciones.

La sintaxis General es La siguiente:

if(condicion1)

Accion1;

En donde:

Condición 1: Representa una expresión que puede ser del tipo booleana.

Acción 1: es la acción que, al evaluar la condición como verdadera, se ejecutará.

Si son varias acciones, van entre llaves.

Ejemplo 5.1

Diseñe un programa en Java, que calcule, los descuentos a un trabajador, sabiendo que, son aplicables, un 6.25% del salario en AFP, sólo si éste es superior a $300.00; Además que, si es un trabajador hombre, se le descuenta, aparte del AFP, el 3% sobre el sueldo en concepto de ISSS y 10% en concepto de Renta.

1 import javax.swing.*; 2 class Descuentos{ 3 public static void main (String args []) { 4 String datos; 5 int sexo; 6 double sueldo, afp=0, isss, totalre, nsueldo, renta; 7 datos=JOptionPane.showInputDialog("Ingrese el sueldo del empleado (a)"); 8 sueldo=Double.parseDouble(datos); 9 if(sueldo>300)//Preuntamos si el sueldo es mayor a 30010 afp=sueldo*0.0625;// si es mayor, aplicamos descuento11 JOptionPane.showMessageDialog(null, "Este empleado tiene un sueldo de: "+sueldo+" y El descuento del AFP es: "+afp); 12 datos=JOptionPane.showInputDialog("Ingrese el Sexo: nSi es Masculino (1)nSi es Femenino (2)");13 sexo=Integer.parseInt(datos);14 if(sexo==1)//Si es de sexo masculino15 {16 isss=sueldo*0.03;//aplicamos las otras retenciones17 renta=sueldo*0.10;18 totalre=afp+isss+renta;19 nsueldo=sueldo-totalre;20 JOptionPane.showMessageDialog(null, "A este empleado, se le retiene: "+isss+" En concepto de ISSSnAdemás Se le retiene: "+renta+" En Concepto de RentanLo que hace un total de: "+totalre+"nY su nuevo sueldo es: "+nsueldo);21 }//del if22 23 }//del main24 }// de la clase

En las sentencias if, podemos agregar la sentencia else, la cual indica que, si al evaluar la condición, ésta es falsa, entonces, realizará las acciones, que estén después del else. La sintaxis es la siguiente:

if(condición1)

{

Acciones;

}

else

{

Condiciones;

}

Ejemplo 5.2

Al ingresar la nota de un alumno, se desea saber si éste aprobó o no, una materia en el colegio. Se sabe que para aprobar, se necesita una nota mayor o igual a 7.0. Diseñe una aplicación en Java que, al ingresar la nota, muestre con un mensaje, si el alumno, aprobó o no. Además se sabe que si la nota está entre 6.50 y 6.99, tiene la posibilidad de realizar un examen de suficiencia para aprobar.

1 import javax.swing.*; 2 public class NotaAlum{ 3 public static void main (String args []){ 4 String leer; 5 double Nota; 6 leer=JOptionPane.showInputDialog("Ingrese la nota del alumno"); 7 Nota=Double.parseDouble(leer); 8 if(Nota>=7.0) 9 JOptionPane.showMessageDialog(null, "El alumno APROBÓ!!!!!!");10 else11 {12 JOptionPane.showMessageDialog(null, "El alumno reprobó");13 if(Nota>=6.5 && Nota<=6.99)14 JOptionPane.showMessageDialog(null, "Pero tiene la posibilidad de realizar el examen de suficiencia");15 }//del else16 }//del main17 }//de la clase

Explicación:

En la línea 13, colocamos una condición compuesta, es decir que, si el alumno alcanza una nota mayor o igual a 6.5, pero menor a 7.0 (es decir 6.99), tiene la posibilidad de realizar el examen.

Note además que, una estructura, puede estar dentro de otra, lo que llamamos Anidamiento, para el caso, el if de la línea 13, está dentro del else, que inicia en la línea 10.

Sentencia elseif

Esta estructura, es una consecuencia c�de las estructuras if anidadas, sus formato es el siguiente:

if(condicion1)

Sentencia 1;

elseif(condicion2)

Sentencia 2;

elseif(condicion3)

Sentencia 3;

else

Sentencia n;

Funciona de la siguiente manera:

Se evalúa la primera condición, si resulta verdadera se ejecuta la sentencia 1, y se continúa con la ejecución del programa; de lo contrario, de evalúa la condición 2, si resulta verdadera, se ejecuta la sentencia 2, de lo contrario se evalúa la condición 3 y así sucesivamente. Si al evaluar todas las condiciones, ninguna resulta verdadera, se ejecuta el bloque del else.

Ejemplo 5.3

Cree un Applet que, reciba como ingreso la nota de un alumno y la clasifique, según la siguiente tabla:

  1. Excelente
  1. Muy Bueno
  1. Bueno
  1. Regular
  1. Necesita Mejorar

Cabe recalcar que dicha escuela, maneja solamente notas cerradas, es decir, sin decimales.

1 import javax.swing.*; 2 import java.awt.*; 3 public class NotasAlumno extends JApplet 4 { //declaracion de variables 5 String leer; 6 double nota; 7 public void init() 8 { 9 leer=JOptionPane.showInputDialog("Ingrese La Nota:");10

nota=Double.parseDouble(leer);11 }12 public void paint(Graphics g)13 {14 super.paint(g);15 16 if(nota<=10 && nota>=9)17 g.drawString("Excelente!!!!", 50,50);18 else if(nota<=8 && nota>=7)19 g.drawString("Muy Bueno!!!!", 50,50);20 else if(nota<=6 && nota>=5)21 g.drawString("Bueno", 50,50);22 else if(nota<=4 && nota>=3)23 g.drawString("Regular", 50,50);24 else if(nota<=2 && nota>=1)25 g.drawString("Necesita Mejorar…", 50,50);26 else27 g.drawString("Nota Incorrecta!!!", 50,50);28 }//del paint29 }// de la clase

Sentencia switch

Esta sentencia, permite ejecutar, una u otra u otra acción, al evaluar una condición, cuyo resultado es el que indica que bloque (o bloques) de instrucciones se van a ejecutar.

Su sintaxis es la siguiente:

switch(expresión)

{

case 1:

Sentecia 1;

break;

case 2:

Sentecia 2;

break;

. . .

default:

Sentencias;

break;

}

En donde, expresión es una condición que, al evaluarla, nos indicará que camino debemos seguir. Además ésta puede ser, una expresión entera char, byte, int y short. Además que, la expresión constante que acompaña a la palabra reservada case debe ser del mismo tipo que expresión. La cláusula default es opcional y puede omitirse en los programas que desarrollemos.

Ejemplo 5.4

En una tienda, se realizan diferentes descuentos, a sus clientes al momento de cancelar en caja. Ya que, cuando se disponen a cancelar tienen la oportunidad de sacar una bolita, y dependiendo del color de la misma, se le aplica su respectivo descuento. Si la bolita es roja, se le aplica un 10% de descuento sobre la compra; si la bola es verde, se le aplica un 5% de descuento, y si la bolita es blanca, no se le aplica descuento alguno. Diseñe una aplicación que de soporte a ésta actividad en el súper mercado.

1 import javax. swing.*; 2 public class SuperMercado 3 { 4 public static void main (String args []) 5 { 6 String aux; 7 int bolita; 8 double compra, descuento=0, monto; 9 //leemos el import de la compra10 aux=JOptionPane.showInputDialog("Ingrese el importe de la compra: ");11 compra=Double.parseDouble(aux);12 //leemos el color de la bolita13 aux=JOptionPane.showInputDialog("Ingrese el color de la Bolita:nSi es Roja, ingrese 1nSi fue Verde, Ingrese 2nSi fue Blanca, ingrese 3");14 bolita=Integer.parseInt(aux);15 switch(bolita)16 {17 case 1:18 {19 descuento=compra*.10;20 monto=compra-descuento;21 22 }23 break;24 case 2:25 {26 descuento=compra*.05;27 monto=compra-descuento;28 29 }30 break;31 case 3:32 monto=compra;33 break;34 default:35 monto=compra;36 break;37 }//del switch38 JOptionPane.showMessageDialog(null, "El cliente había consumido: "+compra+" Pero sacó una bolita color: "+bolita+"nPor lo que se aplicó un descuento de: "+descuento+"nAhora el saldo a cancelar es: "+monto);39 }//del main40 }// de la clase

  1. Estructuras Iterativas

Introducción

Es muy común encontrar en los programas operaciones que se deben ejecutar un número repetido de veces en períodos más o menos espaciados. Si bien las instrucciones son las mismas, los datos sobre los que operan varían. A nuestro alrededor, encontramos problemas que presentan esas características, por ejemplo: el cálculo de la nota final de los estudiantes de Programación III, se realizará tantas veces como alumnos hayan inscritos en dicha asignatura, el cálculo del salario de los empleados de una empresa, etc. En estos casos la solución que se diseñe para un solo grupo de datos se debe repetir tantas veces como sea necesario (de acuerdo al número de estudiantes y de empleados para los ejemplos anteriores).

Los cálculos simples o la manipulación de pequeños conjuntos de datos se pueden realizar fácilmente a mano, pero las tareas grandes o repetitivas son realizadas con mayor eficacia por una computadora, ya que estas están especialmente preparadas para ello.

Para repetir varias veces un proceso determinado haremos uso de los ciclos repetitivos, a los cuales se les conoce con el nombre de estructura repetitiva, estructura iterativa, lazo o bucle.

En C, al igual que en Java podemos encontrar tres tipos de ciclos:

  • Entrada Asegurada (while)
  • Ciclo Controlado Por Contador (for)
  • Hacer Mientras (do.. while)

Funcionamiento de Un Ciclo

Un ciclo, funciona de la siguiente manera: Evalúa una condición de resultar cierta, realiza una acción o bloque de acciones, luego vuelve a evaluar la condición y si nuevamente resulta cierta, realiza la (s) acción (es). Cuando la condición de cómo resultado falso, se sale del ciclo y continúa con la ejecución normal del programa.

Acumulador:

Es una variable, que , como su nombre lo indica se encarga de acumular valores. Esto se vuelve muy útil, por ejemplo, cuando queremos encontrar la suma de los números del 0 al 9, en el acumulador, vamos guardando los valores de dichas cifras. Puede ser tanto real como entera. Su valor inicial, en la mayoría de los casos es cero.

Contador:

Es una variable de tipo entero, que nos ayuda, en el programa a contabilizar el número de ejecuciones de una misma acción, de un grupo de alumnos etc. Un acumulador tiene tres valores distintos:

  • Valor Inicial: es el valor con el cual iniciamos nuestro contador. Generalmente es cero. Esta asignación puede hacerse cuando se declara la variable.
  • Valor Final: después de la ejecución del ciclo, el valor del contador, será distinto a su valor inicial, este puede ser mayo o menor que el mismo, todo depende si fue una cuenta creciente o decreciente.
  • Valor de Cambio: Es el valor Constante, en el cual se irá incrementando nuestro contador, este puede ser positivo o negativo; es decir, si la cuanta se realiza de manera ascendente o descendente.

Bandera:

Las variables tipo bandera son aquellas que sólo admiten dos valores: cierto o falso, true o false, hombre o mujer… etc

Ciclo de Entrada Asegurada

La sintaxis es la siguiente:

while(condición)

Acción;

Funciona de la siguiente manera: primero evalúa la condición, si da como resultado cierta realiza la acción, luego vuelve a evaluar la condición, si su resultado es falso, se sale del ciclo y continúa con la ejecución del programa. Hay que tener mucho cuidado, cuando trabajamos con ciclos, ya que podemos caer en un ciclo infinito, es decir que nunca se sale de él. Por lo cual en las acciones debemos siempre colocar algo que haga que se modifique el resultado de la condición, lo cual puede ser una bandera, un contador o un acumulador.

Ejemplo 5.5

En una empresa, se desea se tienen datos correspondientes a los sueldos de 10 empleados, de los cuales, se desea saber, quien goza del sueldo mayor, quien goza del sueldo menor y cuantos poseen un sueldo mayor a $300.00

1 import javax.swing.*; 2 class UsaWhile{ 3 public static void main (String args []){ 4 String leer; 5 double sueldo, mayor=0, menor=10000; 6 int i=1, contador=0; 7 while(i<=10) 8 { 9 leer=JOptionPane.showInputDialog("Ingrese el sueldo del empleado: "+i);10 sueldo=Double.parseDouble(leer);11 while(sueldo<0)//si el sueldo es negativo12 {13 leer=JOptionPane.showInputDialog("ERROR, el sueldo no puede ser NegativonIngrese el sueldo del empleado: "+i);14 sueldo=Double.parseDouble(leer);15 } 16 if(sueldo>300)17 contador=contador+1;18 if(sueldo>mayor)19 mayor=sueldo;20 if(sueldo<menor)21 menor=sueldo;22 i=i+1;23 }24 JOptionPane.showMessageDialog(null, "El sueldo mayor es de: "+mayor+"nEl sueldo menor es: "+menor+"n"+contador+" Empleados tienen un sueldo mayor a $300");25 }26 }

Ciclo Controlado por contador.

En algunas ocasiones, sabemos a ciencia cierta el número de veces que se tiene que repetir una misma acción o bloque de acciones. Y para ello es que nos sirve, esta estructura. Su sintaxis es la siguiente:

for( valor inicial; condición; incremento)

accion;

Donde:

Valor inicial: es el valor con el cual inicializamos nuestra variable de control.

Condición: si la cumple, ejecuta la acción o acciones e incrementa o decrementa la variable de control, sino la cumple la condición, se sale del ciclo.

Incremento; que puede ser positivo o negativo (decremento).

Ejemplo 5.6

Escriba un Applet que dibuje un rectángulo, unas líneas u óvalos en base a la entrada del usuario. (Tomado de cómo Programar en Java)

1 import java.awt.*; 2 import javax.swing.*; 3 public class PruebaFor extends JApplet{ 4 int opcion; //la opcion del usuario 5 public void init () 6 { 7 String entrada; 8 //obtener la opcion del usuario 9 entrada=JOptionPane.showInputDialog("Escriba 1 para dibujer LineasnEscriba 2 para dibujar rectangulosnEscriba 3 pàra dibujar Ovalos");10 opcion=Integer.parseInt(entrada);11 }//fin del metodo init12 //dibujer figuras en el fondo el Applet13 public void paint (Graphics g)14 {15 super.paint(g);16 for(int i=0; i<10; i++)17 {18 switch(opcion)19 {20 case 1://dibujar lineas21 g.drawLine(10,10,250,10+i*10);22 break;23 case 2://dibujar rectangulos24 g.drawRect(10+i*10,10+i*10,50+i*10, 50+i*10);25 break;26 case 3: //dibujar un Ovalo27 g.drawOval(10+i*10, 10+i*10, 50+i*10, 50+i*10);28 break;29 default: //Valor Incorrecto30 g.drawString("Se escribió un valor Incorrecto", 10,20+i*15);31 }//fin del switch32 }//fin del for33 }//fin del paint34 }//fin de la clase

Ciclo Do… while

Es te ciclo funciona de la siguiente manera, realiza la acción o conjunto de acciones, luego evalúa una condición de resultar cierta vuelve a realizar la/s accion/es. Cuando sea falsa, se sale del ciclo.

Formato :

do {

sentencia;

.

.

} while(<expL>);

La diferencia fundamental, entre el ciclo while y do…while, es que en este ultimo, las sentencias se realizarán por lo menos una vez, en cambio, con while, solo se cumplirán mientras se cumpla la condición, lo cual puede ser nunca.

Ejemplo 5.7

Programa que suma los valores de n1, mientras estos no sean mayores que 100

1 class fibo{ 2 public static void main(String args[]){3 int n1=0;4 do{ n1++; 5 System.out.println(n1+" ");6 }while(n1<100);7 }8 }

Preguntas

  1. ¿Qué es, y cuales son los tipos de estructuras que Java soporta?_________________________________________________________________________________________________________________________
  2. ¿Cuál es la diferencia entre la estructura while y do..while?_______________________________________________________________________________________________________________________
  3. ¿Para que nos sirven las estructuras repetitivas en Java?____________________________________________________________________________________________________________________________
  4. ¿En que se diferencian las variables de tipo acumulador con las de tipo contador?________________________________________________________________________________________________________________________
  5. ¿Cuándo una condición se convierte en compuesta?_____________________________________________________________________________________________________________________

Ejercicios.

  1. Diseñe Un Applet que dibuje tantas veces, como el usuario el usuario lo desee, un rectángulo.
  2. Se necesita crear una aplicación en Java que le permita al usuario ingresar tantos dígitos, como éste quiera, para luego, imprimir el valor mayor, el valor menor, y el promedio de todos los valores que se introdujeron.

    *

    * *

    * * *

  3. Se desea crear una aplicación (ya sea Applet o Windows) que permita visualizar la construcción de un triángulo, en pantalla. El usuario, deberá ingresar la cantidad de niveles que desea y el programa, mostrará el resultado. Ejemplo: 3 niveles

    -Listado de Niños que están aptos para jugar Basketball

    -Listado de Niñas que están aptas para jugar Basketball

    Los requisitos para ello, son los siguientes:

    Los niños deben tener un estatura mayor que 1.70mts y pesar más de 150 lbs. Y las niñas deben ser mayores de 1.60 mts y pesar más de 145lbs.

  4. Diseñe Un programa, que, dados el peso, edad, nombre y estatura de un grupo de 30 alumnos, muestre los siguientes datos:
  5. Diseñe un Applet que, muestre si un número es primo o no. Si es primo, se indicará dibujando una leyenda en el fondo del Applet, de lo contrario, se dibujarán todos los divisores de ese número.
  6. El valor del seno de un ángulo x se puede aproximar sumando n términos de la serie: sin(x) = x – x^3/3! + x^5/5! – x^7/7! + … Escribir un programa que solicite n y un ángulo x e informe del valor aproximado de su seno.
  7. En una empresa de telefonía local, se tiene la siguiente política: si el consumo mensual, de una determina familia, excede los 300 minutos, se le cobra $0.03 por cada minuto. Si excede los 500 minutos, se le cobran los primeros 300 minutos a precio normal y los restantes a $0.02. Pero si el consumo mensual, es superior a $800 minutos, se aplica la regla de asignación anterior, además que se le realiza un descuento de 1.25% del total. Diseñe una Aplicación en Java que de soporte a dicha política de cobro.
  8. Escribir un programa en Java, que le permita al usuario ingresar las notas de cierta cantidad de alumnos, y que luego muestre la cantidad de aprobados (notas mayores o iguales a 6.00), la cantidad de reprobados, y las notas extremas. Así como los nombres de los alumnos que obtuvieron dichas notas.
  9. Abarrotes, S.A. de C.V., desea tener un mayor control, sobre las venta sy las respectivas ganancias que realizan por día. Para lo cual, se le soliciota que escriba un programa en Java, que le permita contabilizar las ventas diarias, los importes totales de cada venta, la ganancia neta ( que es de 10% de cada venta).
Partes: 1, 2, 3, 4, 5
 Página anterior Volver al principio del trabajoPágina siguiente