Actividade 01 Resumen Unidad 03 - Rra
Actividade 01 Resumen Unidad 03 - Rra
Actividade 01 Resumen Unidad 03 - Rra
TAMAZUNCHALE
Semestre: 1º
Turno: MATUTINO 3
Para resolver este problema, primero obtenemos el resto que se origina al dividir v
por 2. Luego preguntamos si este resto es igual a cero. Notemos que el operador
para com-parar es == (igual igual). Java (como C) utiliza == como operador de
comparación ya que el operador = (igual) se utiliza para la asignación.El if in-line
tiene la siguiente estructura:condicion ? retornoPorTrue : retornoPorFalse;Lo
anterior debe leerse de la siguiente manera: si se verifi ca la condicion entonces se
retorna la expresión ubicada entre el ? (signo de interrogación) y los : (dos pun-tos).
Si la condicion resulta falsa entonces se retorna la expresión ubicada después de
los : (dos puntos).Ejemplo: ¿es par o impar? (utilizando if in-line)
Como vemos, el switch permite decidir entre diferentes opciones (siempre deben
ser numéricas). Dependiendo de cuál sea el valor ingresado por el usuario el
programa optará por elcase correspondiente. En caso de que el usuario haya
ingresado un valor para el cual no hemos definido ningún case entonces el
programa ingresará por default. Notemos también que utilizamos la sentencia break
para finalizar cada case. Esto es muy importante ya que si no la utilizamos el
programa, luego de entrar al case corres-pondiente, seguirá secuencialmente
ejecutando todas las sentencias posteriores. Si el lector conoce algo de lenguaje
C, esto no le llamará la atención ya que funciona exacta-mente igual.
Este ciclo también itera mientras se verifi que la condicion, pero a diferencia del ciclo
anterior en este caso la entrada al ciclo no está condicionada; por lo tanto, las
acciones encerradas entre el do y el while se ejecutarán al menos una vez.
ejemplo: muestra números naturales (utilizando do-while).
Para resolver este problema, primero obtenemos el resto que se origina al dividir v
por 2. Luego preguntamos si este resto es igual a cero. Notemos que el operador
para com-parar es (igual igual). Java (como C) utiliza como operador de
== ==
la siguiente estructura:
condicion ? retornoPorTrue : retornoPorFalse;
Lo anterior debe leerse de la siguiente manera: si se verifi ca la condicion entonces
se retorna la expresión ubicada entre el ? (signo de interrogación) y los : (dos pun-
tos). Si la condicion resulta falsa entonces se retorna la expresión ubicada después
de los : (dos puntos)
Ejemplo: ¿es par o impar? (utilizando if in-line)
ser numéricas).
Dependiendo de cuál sea el valor ingresado por el usuario el programa optará
por el case correspondiente. En caso de que el usuario haya ingresado un valor
para el cual no hemos definido ningún case entonces el programa ingresará por
default. Notemos también que utilizamos la sentencia break para finalizar cada case.
Esto es muy importante ya que si no la utilizamos el programa, luego de entrar al
case correspondiente, seguirá secuencialmente ejecutando todas las sentencias
posteriores. Si el lector conoce algo de lenguaje C, esto no le llamará la atención
ya que funciona exacta-mente igual.
Vemos que el ciclo while itera mientras que el valor de i sea menor o igual que el
valor de n (que fue ingresado por teclado). Por cada iteración mostramos el valor de
la variable i y luego la incrementamos.
Analicemos el ciclo do-while cuya estructura es la siguiente:
Este ciclo tiene tres secciones separadas por ; (punto y coma). En la primera
sección, se define e inicializa una variable entera que llamaremos variable de
control. En la segunda sección, se especifica una condición lógica que
(frecuentemente) estará en función de esta variable. En la tercera sección, se
define el incremento de la variable de control.
El for de Java es exactamente el mismo for de C++.
Ejemplo: muestra números naturales (utilizando for).
En esta sección estudiaremos otros elementos del lenguaje Java tales como
tipos de datos, definición de constantes, arrays, etcétera.
Java provee los siguientes tipos de datos:
Si el lector conoce algo de lenguaje C, podrá observar que en ambos lenguajes los
tipos de datos son prácticamente los mismos. En otros lenguajes las longitudes de
los tipos de datos pueden variar dependiendo de la arquitectura y del compilador
que se esté utilizando. Es decir: en C (por ejemplo) no siempre se reservará la
misma cantidad de memoria para una variable de tipo int. En Java (dado que los
programas Java corren dentro de una máquina virtual) las longitudes siempre serán
las expresadas en la tabla anterior. Este tema será tratado en detalle más adelante.
Para aquellos lectores que tienen conocimientos de estos lenguajes, voy a marcar
algunos puntos que les resultarán útiles. A quien no conozca nada de C o C++,
considero que también podrá resultarle de utilidad leer esta sección, pero si el lector
nota que esta lectura le resulta algo confusa entonces le recomiendo directamente
pasarla por alto. El modificador unsigned no existe en Java. Los tipos enteros tienen
o no tienen bit de signo (según la tabla anterior) y esto no puede alterarse. El tipo
de datos boolean: en Java existe este tipo de datos que admite los valores true y false.
En C y C++, se utiliza el tipo int como booleano aceptando que el valor cero es false
y cualquier otro valor distinto de cero es true. Esto en Java no es aceptado. Los int
no tienen valor de verdad.
Operadores unarios y binarios son los mismos que en C, por lo tanto, las siguientes
sentencias son válidas tanto en C como en Java:
Debe quedar claro que el array es estático. Una vez definido su tamaño este será
fijo. No se pueden agregar ni eliminar elementos en un array.
Ejemplo: almacena valores en un array. En el siguiente ejemplo,
Definimos un array de 10 enteros. Luego pedimos al usuario que ingrese valores
numéricos (no más de diez) y los guardamos en el array. Por último, recorremos el
array para mostrar su contenido.
La lógica del ejemplo es bastante simple, pero utilizamos algunos recursos que no
fueron explicados hasta ahora.
Es decir que el while itera mientras v sea distinto de cero y mientras i sea menor que
10.
Si conocemos de antemano los valores que vamos a almacenar en el array
entonces podemos definirlo “por extensión”. Esto crea el array con la dimensión
necesaria para contener el conjunto de valores y asigna cada elemento del conjunto
en la posición relativa del array.
En Java los arrays son objetos y tienen un atributo length que indica su dimensión.
Nuevamente, debo recordarle al lector que no debe preocuparse por los términos
“objeto” y “atributo”. Estos temas los estudiaremos en el capítulo correspondiente.
Notemos también que no es lo mismo “definir” un array que “crear (o instanciar)” el
array.
1.4.5 Matrices
Dijimos que una matriz es un array de dos dimensiones, pero también podríamos
decir que una matriz es un array de arrays. Viéndolo de esta manera entonces
podemos conocer la cantidad define las y columnas de una matriz a través del
atributo length.
Se puede inicializar una matriz definiendo sus valores por extensión como veremos
en el siguiente ejemplo.
Esto dimensiona la matriz mat con 4 filas y 3 columnas y además asigna los valores
en las celdas correspondientes.
En cambio, los caracteres (al igual que en C) son valores numéricos enteros. Por
ejemplo, ‘A' es, en realidad, el valor 65 ya que este es el código ASCII de dicho
carácter.
Notemos además que no es lo mismo "A" que 'A'. El primero es una cadena de
caracteres que contiene un único carácter; es un objeto. El segundo es un char; un
valor numérico.
Java concatena al valor numérico de i la cadena "A" entonces la salida de este pro-
grama será la siguiente:
Para asignar i (tipo int) a c (tipo char) debemos “castear” su valor. Esto no es otra
cosa que “asegurarle al compilador” que el valor del entero i podrá ser contenido en
la variable c (de tipo char). Recordemos que un int se representa en 4 bytes con
bit de signo mientras que unchar se representa en dos bytes sin bit de signo. Por lo
tanto, no siempre se podría asignar un int a un char ya que el char no puede
almacenar valores negativos ni valores superiores a 2 -1 (máximo valor que se
16
En Java (igual que enC) existen caracteres especiales. Estos caracteres se pueden
utilizar anteponiendo la barra \ (léase “barra” o carácter de “escape”). Algunos de
estos son:
Como vemos, para representarlos es necesario utilizar dos caracteres (la barra
más el carácter especial en sí mismo), pero esto no ocasiona ningún inconveniente.
La salida de este programa es la siguiente:
Una cadena representa una secuencia finita de cero o más caracteres numerados
a partir de cero. Es decir que la cadena "Hola" tiene 4 caracteres numerados entre
0 y 3. El método charAt retorna al carácter (tipo char) ubicado en una posición
determinada. El método length retorna la cantidad de caracteres que tiene la
cadena. No debemos confundir el atributo length de los arrays con el método length
de los
strings. En el caso de los arrays, por tratarse de un atributo se lo utiliza sin
paréntesis.
En cambio, en el caso de los strings está implementado como un método, por lo
tanto,
siempre debe invocarse con paréntesis.
package libro.cap01.cadenas;
public class Cadenas1
{
public static void main(String[] args)
{
String s = "Esto Es Una Cadena de caracteres";
String sMayus = s.toUpperCase();
String sMinus = s.toLowerCase();
System.out.println("Original: "+s);
System.out.println("Mayusculas: "+sMayus);
System.out.println("Minusculas: "+sMinus);
}
}
Recordemos que s es un objeto. Contiene información (la cadena en sí misma) y
los métodos necesarios para manipularla. Entre otros, los métodos toUpperCase y
toLowerCase que utilizamos en este ejemplo para pasar la cadena original a
mayúsculas
y a minúsculas respectivamente.
package libro.cap01.cadenas;
public class Cadenas2
{
public static void main(String[] args)
{
String s = "Esto Es Una Cadena de caracteres";
int pos1 = s.indexOf('C');
int pos2 = s.lastIndexOf('C');
int pos3 = s.indexOf('x');
System.out.println(pos1);
System.out.println(pos2);
System.out.println(pos3);
}
}
El método indexOf retorna la posición de la primera ocurrencia de un carácter dentro
del string. Si la cadena no contiene ese carácter entonces retorna un valor negativo.
Análogamente, el método lastIndexOf retorna la posición de la última ocurrencia del
carácter dentro del string o un valor negativo en caso de que el carácter no esté
contenido dentro de la cadena.
1.5.4 Subcadenas
package libro.cap01.cadenas;
public class Cadenas3
{
public static void main(String[] args)
{
String s = "Esto Es Una Cadena de caracteres";
String s1 = s.substring(0,7);
String s2 = s.substring(8,11);
// toma desde el caracter 8 hasta el fi nal
String s3 = s.substring(8);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
La salida de este programa es la siguiente:
Esto Es Una Una Cadena de caracteres El método substring puede invocarse con
dos argumentos o con un único argumento. Si lo invocamos con dos argumentos,
estaremos indicando las posiciones desde (inclusive) y hasta (no inclusive) que
delimitarán la subcadena que queremos extraer. En cambio,
si lo invocamos con un solo argumento estaremos indicando que la subcadena a
extraer
comienza en la posición especifi cada (inclusive) y se extenderá hasta el fi nal del
string. Decimos que un método está “sobrecargado” cuando podemos invocarlo con
diferentes cantidades y/o diferentes tipos de argumentos. Este es el caso del
método substring.
“Sobrecarga de métodos” es uno de los temas que estudiaremos en el capítulo de
programación
orientada a objetos.
Con los métodos startWith y endsWith, podemos verificar muy fácilmente si una
cadena comienza con un determinado prefijo o termina con algún sufijo.
package libro.cap01.cadenas;
public class Cadenas4
{
public static void main(String[] args)
{
String s = "Un buen libro de Java";
boolean b1 = s.startsWith("Un buen"); // true
boolean b2 = s.startsWith("A"); // false
boolean b3 = s.endsWith("Java"); // true
boolean b4 = s.endsWith("Chau"); // false
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
}
}
Los métodos indexOf y lastIndexOf están sobrecargados de forma tal que permiten
detectar la primera y la última ocurrencia (respectivamente) de un substring dentro
de
la cadena en cuestión.
package libro.cap01.cadenas;
public class Cadenas5
{
public static void main(String[] args)
{
String s = "Un buen libro de Java, un buen material";
int pos1 = s.indexOf("buen"); // retorna 3
int
pos2 = s.lastIndexOf("buen"); // returna 26
System.out.println(pos1);
System.out.println(pos2);
}
}
1.5.7 Concatenar cadenas