Você está na página 1de 25

switch en Java (condicional de selección).

Diagrama de
flujo y ejemplo de aplicación

CONDICIONAL DE SELECCIÓN SWITCH EN JAVA. EJEMPLO DE APLICACIÓN.

La instrucción switch es una forma de expresión de un anidamiento múltiple de instrucciones if ... else. Su uso
no puede considerarse, por tanto, estrictamente necesario, puesto que siempre podrá ser sustituida por el uso
de if. No obstante, a veces nos resultará útil al introducir mayor claridad en el código.

La sintaxis será:

/* Ejemplo Switch - aprenderaprogramar.com


*/
switch (expresión) {

case valor1:
instrucciones;
break;

case valor2:
instrucciones;
break;
.
.
.
default:
sentencias;
break;

/* Ejemplo Switch - aprenderaprogramar.com


*/
switch (expresión) {

case valor1:
case valor2:
case valor3:

Vectores y matrices - Java -o-


instrucciones;
break;

case valor4:
instrucciones;
break;
.
.
.
default:
sentencias;
break;

Esquemáticamente en forma de diagrama de flujo:

La cláusula default es opcional y representa las instrucciones que se ejecutarán en caso de que no se verifique
ninguno de los casos evaluados. El último break dentro de un switch (en default si existe esta cláusula, o en
el último caso evaluado si no existe default) también es opcional, pero lo incluiremos siempre para ser
metódicos.

Switch solo se puede utilizar para evaluar ordinales (por ordinal entenderemos en general valores
numéricos enteros o datos que se puedan asimilar a valores numéricos enteros). Por tanto no podemos evaluar
cadenas (String) usando switch porque el compilador nos devolverá un error de tipo “found java.lang.String
but expected int”. Sí se permite evaluar caracteres y lo que se denominan tipos enumerados, que veremos
más adelante. Switch solo permite evaluar valores concretos de la expresión: no permite evaluar intervalos
(pertenencia de la expresión a un intervalo o rango) ni expresiones compuestas. Código de ejemplo:

/* Ejemplo método que usa switch - aprenderaprogramar.com */


public void dimeSiEdadEsCritica() {
switch (edad) {
case 0:
System.out.println ("Acaba de nacer hace poco. No ha cumplido el
año");
break;
case 18: System.out.println ("Está justo en la mayoría de edad"); break;
case 65: System.out.println ("Está en la edad de jubilación"); break;
default: System.out.println ("La edad no es crítica"); break;
}

Vectores y matrices - Java -o-


}

En algunos casos escribimos varias instrucciones en una línea y en otros una sola instrucción por línea. Ambas
posibilidades son válidas. Prueba a escribir, compilar e invocar este método o uno parecido usando switch.
Para ello crea primero una clase de nombre Persona cuyos atributos sean nombre y edad. Inicializa los atributos
a un valor por defecto en el constructor. Crea métodos para definir valor para los atributos (métodos setters)
y prueba el método dimeSiEdadEsCritica para comprobar que responde como es de esperar.

EJERCICIO

Considera estás desarrollando un programa Java donde necesitas trabajar con objetos de tipo Motor (que
representa el motor de una bomba para mover fluidos). Define una clase Motor considerando los siguientes
atributos de clase: tipoBomba (int), tipoFluido (String), combustible (String). Define un constructor asignando
unos valores de defecto a los atributos y los métodos para poder establecer y obtener los valores de los
atributos. Crea un método tipo procedimiento denominado dimeTipoMotor() donde a través de un
condicional switch hagas lo siguiente:

a) Si el tipo de motor es 0, mostrar un mensaje por consola indicando “No hay establecido un valor definido
para el tipo de bomba”.

b) Si el tipo de motor es 1, mostrar un mensaje por consola indicando “La bomba es una bomba de agua”.

c) Si el tipo de motor es 2, mostrar un mensaje por consola indicando “La bomba es una bomba de
gasolina”.

d) Si el tipo de motor es 3, mostrar un mensaje por consola indicando “La bomba es una bomba de
hormigón”.

e) Si el tipo de motor es 4,mostrar un mensaje por consola indicando “La bomba es una bomba de pasta
alimenticia”.

f) Si no se cumple ninguno de los valores anteriores mostrar el mensaje “No existe un valor válido para tipo
de bomba”.

Compila el código para comprobar que no presenta errores, crea un objeto, usa sus métodos y comprueba que
aparezcan correctamente los mensajes por consola. Para comprobar si es correcta tu solución puedes consultar
en los foros aprenderaprogramar.com.

Vectores y matrices - Java -o-


Vectores y matrices

Arrays
Declaración
Creación
Acceso a los elementos de un array
Manipulación de vectores y matrices

Algoritmos de ordenación
Ordenación por selección
Ordenación por inserción
Ordenación por intercambio directo (método de la burbuja)
Ordenación rápida (QuickSort)

Algoritmos de búsqueda
Búsqueda lineal
Búsqueda binaria

Apéndice: Cadenas de caracteres

Vectores y matrices - Java -o-


Arrays
Un array es una estructura de datos
que contiene una colección de datos del mismo tipo

Ejemplos

Temperaturas mínimas de los últimos treinta días

Valor de las acciones de una empresa durante la última semana

Propiedades de ios arrays

- Los arrays se utilizan como contenedores para almacenar datos


relacionados (en vez de declarar variables por separado para cada
uno de los elementos del array).

- Todos los datos incluidos en el array son del mismo tipo. Se


pueden crear arrays de enteros de tipo int o de reales de tipo
Vectores y matrices - Java -1
-
float, pero en un mismo array no se pueden mezclar datos de
tipo int y datos de tipo float.

- El tamaño del array se establece cuando se crea el array (con el


operador new, igual que cualquier otro objeto).

- A los elementos del array se accederá a través de la posición que


ocupan dentro del conjunto de elementos del array.

Terminoiogía
Los arrays unidimensionales se conocen con el nombre de vectores.
Los arrays bidimensionales se conocen con el nombre de matrices.

Vectores y matrices - Java -2


-
Dec(aración
Para declarar un array,
se utilizan corchetes para indicar que se trata de un array
y no de una simple variable del tipo especificado.

Vector (array unidimensiona():

tipo identificador[];

o bien

tipo[] identificador;

donde

tipo es el tipo de dato de los elementos del vector

identificador es el identificador de la variable.

Vectores y matrices - Java -3


-
Matriz (array 6idimensiona():

tipo identificador[][];

o bien

tipo[][] identificador;

NOTA: No es una buena idea que el identificador del array


termine en un dígito, p.ej. vector3

Vectores y matrices - Java -4


-
Creación
Los arrays se crean con el operador new.

Vector (array unidimensiona():

vector = new tipo[elementos];

Entre corchetes se indica el tamaño del vector.

tipo debe coincidir con el tipo con el que se haya declarado el vector.

vector debe ser una variable declarada como tipo[]

Ejemplos

float[] notas = new float[ALUMNOS];

Vectores y matrices - Java -5


-
int[] temperaturas = new int[7];

Matriz (array 6idimensiona():

matriz = new tipo[filas][columnas];

Ejemplo

int[][] temperaturas = new int[12][31];

Vectores y matrices - Java -6


-
Vso
Para acceder a los elementos de un array,
utilizamos índices
(para indicar la posición del elemento dentro del array)

Vector (array unidimensiona():

vector[índice]

- En Java, el índice de la primera componente


de un vector es siempre o.

- El tamaño del array puede obtenerse


utilizando la propiedad vector.length

- Por tanto, el índice de la última componente es


vector.length-1

Vectores y matrices - Java -7


-
Ejemplo
float[] notas = new float[3];

Vectores y matrices - Java -8


-
Matriz (array 6iíimensiona():

matriz[índice1][índice2]

Una matriz, en realidad, es un vector de vectores:

- En Java, el índice de la primera componente


de un vector es siempre o, por lo que matriz[O][O]
será el primer elemento de la matriz.

- El tamaño del array puede obtenerse


utilizando la propiedad array.length:

 matriz.lengthnos da el número de filas

 matriz[O].lengthnos da el número de columnas

- Por tanto, el último elemento de la matriz es


matriz[matriz.length-1][matriz[O].length-1]

Vectores y matrices - Java -9


-
Inicia(ización en (a íec(aración
Podemos asignarle un valor inicial
a los elementos de un array en la propia declaración

int vector[] = {1, 2, 3, 5, 7};


int matriz[][] = { {1,2,3}, {4,5,6} };

El compilador deduce automáticamente las dimensiones del array.

Vectores y matrices - Java -


10
-
Manipu(ación
de vectores y matrices
Las operaciones se realizan componente a componente

Ejemplo: Suma de los elementos de un vector

static float media (float datos[])


{
int i;
int n = datos.length;
float suma = O;

for (i=O; i<n; i++)


suma = suma + datos[i];

return suma/n;
}

No es necesario utilizar todos los elementos de un vector, por lo que,


al trabajar con ellos, se puede utilizar una variable entera adicional que
nos indique el número de datos que realmente estamos utilizando:

Vectores y matrices - Java -


11
-
El tamaño del vector nos dice cuánta memoria se ha reservado para
almacenar datos del mismo tipo, no cuántos datos del mismo tipo
tenemos realmente en el vector.

Ejemplo: Suma de los n primeros elementos de un vector

static float media (float datos[], int n)


{
int i;
float suma = O;

for (i=O; i<n; i++)


suma = suma + datos[i];

return suma/n;
}

Vectores y matrices - Java -


12
-
Ejemplo

public class Vectores


{
public static void main (String[] args)
{
int pares[] = { 2, 4, 6, 8, 1O };
int impares[] = { 1, 3, 5, 7, 9 };

mostrarVector(pares);
System.out.println("MEDIA="+media(pares));

mostrarVector(impares);
System.out.println("MEDIA="+media(impares));
}

static void mostrarVector (int datos[])


{
int i;

for (i=O; i<datos.length; i++)


System.out.println(datos[i]);
}

static float media (int datos[])


{
Vectores y matrices - Java -
13
-
int i;
int n = datos.length;
int suma = O;

for (i=O; i<n; i++)


suma = suma + datos[i];

return suma/n;
}
}

Vectores y matrices - Java -


14
-
static int[] leerVector (int datos)
{
int i;
int[] vector = new int[datos];

for (i=O; i<datos; i++)


vector[i] = leerValor();

return vector;
}

IMPORTANTE:

Cuando se pasa un array como parámetro,


se copia una referencia al array y no el conjunto de valores en sí.

Por tanto, tenemos que tener cuidado con los efectos colaterales
que se producen si, dentro de un módulo,
modificamos un vector que recibimos como parámetro.

Vectores y matrices - Java -


15
-
Ejemplo
El siguiente método lee los elementos de un vector ya creado

static void leerVector (int[] datos)


{
int i;

for (i=O; i<datos.length; i++)


datos[i] = leerValor();
}

Vectores y matrices - Java -


16
-
Copia de arrays

La siguiente asignación sólo copia las referencias,


no crea un nuevo array:

int[] datos = pares;

Para copiar los elementos de un array,


hemos de crear un nuevo array y copiar los elementos uno a uno

int[] datos = new int[pares.length];

for (i=O; i<pares.length; i++)


datos[i] = pares[i]

También podemos utilizar una función predefinida


en la biblioteca de clases estándar de Java:

System.arraycopy(from,fromindex,to,toindex,n);

int[] datos = new int[pares.length];


System.arraycopy(pares,O,datos,O,pares.length);
Vectores y matrices - Java -
17
-
EXTRA:
La biblioteca de clases de Java incluye una clase auxiliar llamada
java.util.Arrays que incluye como métodos algunas de las tareas
que se realizan más a menudo con vectores:
- Arrays.sort(v) ordena los elementos del vector.
- Arrays.equals(vl,v2) comprueba si dos vectores son iguales.
- Arrays.fill(v,val) rellena el vector v con el valor val.
- Arrays.toString(v) devuelve una cadena que representa
el contenido del vector.
- Arrays.binarySearch(v, k) busca el valor k dentro del vector
v (que previamente ha de estar ordenado).

Vectores y matrices - Java -


18
-
Ejemplos

Un programa que muestra los


parámetros que le indicamos en la
línea de comandos:

public class Eco


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

for (i=O; i<args.length; i++)


System.out.println(args[i
]);
}
}

Un método que muestra el contenido de una matriz:

public static void mostrarMatriz (double


matriz[][])
{
int i,j;
int filas = matriz.length;

Vectores y matrices - Java -


int columnas = matriz[O].length;

// Recorrido de las filas de la matriz

for (i=O; i<filas; i++) {

// Recorrido de las celdas de una fila

for (j=O; j<columnas; j++) {

System.out.println (
"matriz["+i+"]["+j+"]="
+ matriz[i][j] );
}
}
}

Vectores y matrices - Java - lo -

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este
link: Ver curso completo.

Vectores y matrices - Java -


Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona
independientemente de su nivel de conocimiento.

Vectores y matrices - Java -

Você também pode gostar