Вы находитесь на странице: 1из 8

Sentencias de Control de Java

Las sentencias son las instrucciones de las que est formado un programa. Las sentencias en un
programa en Java se encuentran en el cuerpo de los mtodos, incluyendo los constructores de las
clases.

Las sentencias en Java se clasifican de la siguiente manera:

Sentencia de expresin o simple


Sentencia compuesta o bloque
Sentencias de seleccin o condicionales
Sentencias de iteracin o repetitivas
Sentencias de salto

Sentencia de Expresin o Simple

La mayora de las sentencias de un programa en Java son sentencias de expresin. Una


sentencia de expresin tiene la siguiente sintaxis:

[expresin];

Esto es, una expresin seguida de un punto y coma (;). La mayora de las sentencias de expresin son
asignaciones o invocaciones a mtodos. Si expresin se omite, la construccin se llama sentencia nula.

El punto y coma (;) es un terminador de sentencia. Algunos ejemplos

de sentencias expresin son:

y = x + 3; n++;
this.titulo = ttulo; System.out.println("\nHola");
; // sentencia nula

Sentencia compuesta o bloque

Una sentencia compuesta o bloque son construcciones que contienen otras sentencias las cuales se
debern ejecutar en secuencia. La sintaxis de una sentencia compuesta es:

{
[Declaracin local] ...

sentencia ...
}

Una sentencia compuesta est formada de declaraciones locales y sentencias. Los objetos declarados
localmente son slo conocidos dentro de la sentencia compuesta en que fueron declarados. Las sentencias
dentro de una sentencia compuesta pueden se de cualquier tipo: sentencias de expresin, sentencias
compuesta, sentencias de seleccin, sentencias repetitivas, sentencias de salto. Note que dentro de una
sentencia compuesta podemos tener anidadas sentencias compuestas.

Una sentencia compuesta va encerrada entre llaves { y }.

Una sentencia compuesta es sintcticamente equivalente a una sentencia simple, esto es, donde puede ir
una sentencia simple podemos poner una sentencia compuesta y viceversa.

Un ejemplo de una sentencia compuesta es el cuerpo de un mtodo.


Ejemplo sobre la sentencia Compuesta

Como un ejemplo de una sentencia compuesta, considere el procedimiento pedir datos de la clase
Cancin, del problema sobre el amante de la msica y el cine, que recibe como parmetros los valores para
inicializar los atributos de la clase:

public void setDatos(String titulo, Genero genero,String interprete, String


autor) {
this.titulo = titulo;
this.genero = genero;
this.interprete = interprete;
this.autor = autor;
}

Cada una de las lneas de cdigo del cuerpo del constructor es una sentencia simple y todas juntas
constituyen una sentencia compuesta.

Sentencias de Seleccin o Condicionales

Hay ocasiones en las que deseamos que, dependiendo del valor de una expresin, la computadora ejecute
una de dos o ms sentencias compuestas. Las sentencias que nos permiten realizar tal tarea se conocen
como sentencias de seleccin o condicionales. En Java existen dos sentencias condicionales: La
sentencia if y la sentencia switch.

Sentencia if

La sentencia if nos permite seleccionar entre ejecutar una de dos sentencias compuestas, dependiendo del
resultado de una expresin. La sintaxis de la sentencia if es la siguiente:

if (expresin) {
sentencia1;
}
else {
sentencia2;
}

expresin debe ser de tipo booleano. sentencia1 y sentencia2 son sentencias compuestas.

Primero se evala expresin, si su valor es verdadero, se ejecuta sentencia1 y despus el programa


contina con la sentencia que sigue a la sentencia if; si el valor de expresines falso se ejecuta sentencia2
y luego contina con la sentencia despus de la sentencia if.

Si else sentencia2 no aparece y expresin es verdadera se ejecuta sentencia1y el programa contina con la
sentencia despus de la sentencia if. De otro modo no se ejecuta sentencia1 y el programa salta a ejecutar
la sentencia despus de la sentencia if.
Una sentencia if puede estar anidada dentro de otra sentencia if, por ejemplo:

If (expresin1) {
if (expresin2) {
sentencia1 ;
}
else {
sentencia2;
}
else {
if (expresin3) {
sentencia3
}
else {
sentencia4;
}
}
}

escalonados como en el siguiente ejemplo:

if(expresin1){
sentencia1;
}
else {
if (expresin2) {
sentencia2 ;
}
else {
if (expresin3) {
sentencia3;
}
else {
sentencia4;

Esta ltima construccin se acostumbra escribir de la siguiente manera para que los sangrados no
crezcan demasiado:

if(expresin1) sentencia1 else


if(expresin2) sentencia2 else
if(expresin3) sentencia3 else
sentencia4

En los casos donde tenemos sentencias if anidadas podra surgir la pregunta de a qu if le corresponde
cul else. La regla en estos casos es que un else se asocia con el if anterior ms cercano si es que no
est ya asociado con un else.

Ejemplo sobre la sentencia if


El costo de un telegrama ordinario es de $25.00 si el nmero de palabras es hasta 10, por cada palabra
adicional se cobra $2.50. Si el telegrama es urgente los costos son de $40,00 y $4.00 respectivamente.
Escribir una clase permita crear telegramas y determine su costo.

El cdigo de la clase Telegrama es la siguiente:


public class telegrama
{
// instance variables - replace the example below with your own
private
final double cto_ord = 25; // la declaro como constante
final double cto_urg = 40.0;
final double cto_Adi_Ord = 2.5;
final double cto_Adi_Urg = 4.0;
String tipoTelegrama;
int numPalabras;

/**
* Constructor for objects of class telegrama
*/
public telegrama()
{
tipoTelegrama = " ";
numPalabras = 0;
}

public void setDatos(String tt, int np)


{ this.tipoTelegrama = tt;
this.numPalabras = np;
}

public String getTipoT(){


return this.tipoTelegrama;
}

public int getNP(){


return this.numPalabras;
}

public double calcCosto() {


double costo = 0;
if ((getTipoT()== "O")||(getTipoT()== "o"))
{ if (getNP() <= 10)
{ costo = cto_ord;
}
else{
costo = cto_ord + (cto_Adi_Ord * (getNP() -10));
}
}
else {
if ((getTipoT()== "U")||(getTipoT()== "u"))
{ if (getNP() <= 10)
{ costo = cto_urg;
}
else{
costo = cto_urg + (cto_Adi_Urg * (getNP() -10));
}
}
}
return costo;
}

public String toString() {


return getTipoT() + ", " + getNP() + ", " + calcCosto();
}

}
Sentencia switch

Un caso especial de una construccin con varios if escalonados y que aparece con bastante frecuencia en
los programas, tiene la siguiente forma:

if(expresin == cte1) sentencia1


else if(expresin == cte2) sentencia2
else if(expresin == cte3) sentencia3
...
else sentencia

donde expresines una expresin de tipo entero, cte1, cte2, cte3, ... son constantes de tipo entero y
sentencia1, sentencia2, ... , sentencia son sentencias compuestas. La construccin anterior puede
simplificarse utilizando la sentencia switch. La sintaxis de una sentencia switch es la siguiente:

switch (expresin) {
case cte1: {
sentencia1;
break; }
case cte2: { sentencia2;
break; } ...

default: { sentencia]
break; }
}

expresines una expresin de tipo char, byte, short, o int, y se conoce como el selector del switch.
cte1, cte2, ... son constantes de tipo char, byte, short, o int. En una sentencia switch no puede haber dos
constantes iguales.

Primero se evala expresin y luego se ejecuta la sentencia compuesta que est asociada a la constante que
es igual al valor de expresin. Despus de ejecutar esa sentencia, se ejecutan en secuencia todas las
sentencias que le siguen hasta encontrar una sentencia break. Al encontrarse con una sentencia break, el
programa contina con la sentencia despus de la sentencia switch.

Si ninguna constante coincide con el valor de expresin entonces se ejecuta la sentencia asociado con la
etiqueta default. Si sta no existe, el programa contina con la sentencia despus del switch.

La sentencia asociada a la etiqueta default no tiene que ser la ltima sentencia dentro de una sentencia
switch. Puede ir en cualquier lugar, por ejemplo:

Switch (expression) {
case cte1: { sentencia1
break; }
case cte2: { sentencia2
break; }
default: { sentencia
break; }
case cte3: { sentencia3
break; }
case cte4: { sentencia4;
break; }

switch (expresin) {
default: { sentencia]
break; }
case cte1: { sentencia1
break; }
case cte2: { sentencia2
break; }
case cte3: { sentencia3
break; }
case cte4: { sentencia4:
break;
}
}

Ejemplo sobre la sentencia switch


El siguiente cdigo es una modificacin de la clase telegrama para que el mtodo calcCosto() emplee una
sentencia switch en lugar de ifs anidados.

public class telegrama1


{
// instance variables - replace the example below with your own
private
final double cto_ord = 25;
final double cto_urg = 40.0;
final double cto_Adi_Ord = 2.5;
final double cto_Adi_Urg = 4.0;
String tipoTelegrama;
int numPalabras;

/**
* Constructor for objects of class telegrama
*/
public telegrama1()
{
tipoTelegrama = " ";
numPalabras = 0;
}

public void setDatos(String tt, int np)


{ this.tipoTelegrama = tt;
this.numPalabras = np;
}

public String getTipoT(){


return this.tipoTelegrama;
}

public int getNP(){


return this.numPalabras;
}
public double calculaCosto() {
double csto=0;
switch(getTipoT()) {
case "O":
case "o":
if (getNP() <= 10)
{ csto = cto_ord;
break;
}
else{
csto = cto_ord + (cto_Adi_Ord * (getNP() -10));
break;
}

case "U":
case "u":{
{ if (getNP() <= 10)
{ csto = cto_urg;
break;
}
else{
csto = cto_urg + (cto_Adi_Urg * (getNP() -10));
break;
}
}
}
}
return csto;
}

public String toString() {


return getTipoT() + ", " + getNP() + ", " + calculaCosto();
}

Вам также может понравиться