Download - Clases Completas 1era parte (Vanny Smith)
![Page 1: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/1.jpg)
11
Introducción
Clase Principal{ Método Principal ()
{....} Método1() {....} Método2() {....} :
}
Clase1{ Variables Clase1 Constructores Clase1 Métodos Clase1
}
Clase2{ Variables Clase2 Constructores Clase2 Métodos Clase2
}
Etc...
![Page 2: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/2.jpg)
22
Introducción
Clase Principal{ Método principal () {....} Método1() {....} Método2() {....} :}
![Page 3: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/3.jpg)
33
Primer Programa en Java
class Saludo{ //Este programa imprime Bienvenidos a ING1310
public static void main(String[] args){
System.out.println("Bienvenidos a ING1310!");}
}
![Page 4: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/4.jpg)
44
Primer Programa en Java
class Saludo{ public static void main(String[] args)
{System.out.println("Bienvenidos a
ING1310!");}
}
Clase Principal{ Método Principal () {....} Método1() {....}
}
...
![Page 5: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/5.jpg)
55
Primer Programa en Java
class
Todos las instrucciones en Java deben estar contenidas en una clase.
Todo programa Java consiste en al menos una declaración de clase definida por el programador.
![Page 6: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/6.jpg)
66
Primer Programa en Java
Saludo Este es el nombre de la clase. Se estila que los
nombres de las clases empiecen con mayúscula.
Debe consistir en letras, dígitos, underscores (_) y el signo $.
No debe comenzar con un dígito y no debe contener espacios.
Java distingue entre mayúsculas y minúsculas. Por ejemplo, no es lo mismo “Saludo” que ‘saludo’.
![Page 7: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/7.jpg)
77
Primer Programa en Java
{}
El principio y el fin de cualquier sección en Java deben estar indicados por llaves.
En este caso tenemos dos secciones. La primera es la clase y la segunda es el método principal.class Saludo{ public static void main(String[] args)
{System.out.println("Bienvenidos a ING1310!");
}}
![Page 8: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/8.jpg)
88
Primer Programa en Java
// Este programa..... Indica un comentario. Los comentarios son ignorados por el compilador. Usamos // si el largo del comentario es de menos de una línea. De lo contrario
podemos usar /* para indicar el principio del comentario y */ para indicar el final.
class Saludo{ /* Este programa imprime en pantalla el mensaje: Bienvenidos a ING1310 */
public static void main(String[] args){
System.out.println("Bienvenidos a ING1310!");}
}
![Page 9: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/9.jpg)
99
Primer Programa en Java
public static void main(String[] args)
Este es el método principal. Este es el método que guía la ejecución del programa.
Típicamente, (el cuerpo de) un método está compuesto por una o más oraciones que son las que efectivamente ejecutan la tarea del método.
Más adelante veremos lo que significan las palabras y símbolos que forman el encabezado de este método.
![Page 10: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/10.jpg)
1010
Primer Programa en Java
System.out.println("Bienvenidos a ING1310!"); Toda esta línea (hasta el punto y coma) es una oración.
println es un método que imprime en cualquier tipo de salida. Por ejemplo la pantalla del computador, una impresora etc. En este caso en pantalla aparecerá:
Bienvenidos a ING1310
Todas las oraciones en Java deben terminar con punto y coma, de lo contrario el programa tendrá un error y no podrá ser ejecutado.
![Page 11: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/11.jpg)
1111
Primer Programa en Java
Veamos que pasa si :• Agregamos o quitamos espacios.
• Cambiamos mayúsculas por minúsculas.
• Cambiamos el nombre de la clase principal.
• Eliminamos el punto y coma.
![Page 12: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/12.jpg)
1212
Como Imprimir en Pantalla
System.out.print(“...”); Imprime lo que está contenido entre “”.
System.out.print("Rojo");
System.out.print("Amarillo");
System.out.println(“...”); Imprime lo que está contenido entre “” y luego se posiciona en la siguiente línea.
System.out.println("Rojo");
System.out.println("Amarillo");
Qué imprime?
Qué imprime?
![Page 13: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/13.jpg)
1313
Como Imprimir en Pantalla
Concatenar + Para escribir una oración que ocupa más de una línea podemos concatenar.
System.out.println( "Para imprimir una oración" +
" que ocupa más de una línea podemos concatenar");
![Page 14: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/14.jpg)
1414
Como Imprimir en Pantalla
\n Para posicionarse en la siguiente línea de la pantalla
System.out.println("Hola,\nEnvíame la tarea.\n\n" + "Atte,\nVanny Smith");
Hola,Envíame la tarea.
Atte,Vanny Smith
![Page 15: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/15.jpg)
1515
Como Imprimir en Pantalla
Escriban un programa que imprima en pantalla:
Hola a todos, Hoy no habrá clases.
Atte. Jorge Salas.
![Page 16: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/16.jpg)
1616
Identificadores
Nombres que identifican a los elementos del programa:• Métodos
• Clases
• Variables
Los identificadores se construyen con:
• Letras (mayúsculas y minúsculas).
• Dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
• Símbolos de subrayado ( _ ) o peso ($)
• Sin embargo, el primer caracter no puede ser un dígito.
![Page 17: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/17.jpg)
1717
Buenos identificadores
Auto explicativos. Ni muy cortos, ni muy largos. No pueden ser palabras reservadas del lenguaje:
abstract continue for new switch
boolean default goto null synchronized
break do if package this
byte double implements private threadsafe
byvalue else import protected throw
case extends instanceof public transient
catch false int return true
char final interface short try
class finally long static void
const float native super while
![Page 18: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/18.jpg)
1818
Buenos identificadores
El lenguaje Java es case-sensitive.• Maximo y maximo son dos identificadores distintos.
El símbolo de subrayado (_) se emplea para dar mayor legibilidad a nombres compuestos por varias palabras.
Se acostumbra emplear letras minúsculas para nombrar a las variables.
![Page 19: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/19.jpg)
1919
Identificadores: Ejemplos
Los siguientes son identificadores válidos en Java:
puntero EdadEmpleado
nombre_empleado i
TAMANO_STRING While
potencia10 Nombre
For nombre
iF Telefono
area Telefono_100
![Page 20: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/20.jpg)
2020
Identificadores: Ejemplos
Los siguientes son identificadores inválidos:
1texto
nombre-empleado
while
![Page 21: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/21.jpg)
2121
Tipos de datos en Java
Tipo Rango aprox.
int 2.000.000.000
short 30.000
long 9x1018
Tipo Rango Aprox.
float 3.4 x 1038
double 1.8 x 10308
Ocuparemos estos
•Enteros:
•Reales:
![Page 22: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/22.jpg)
2222
Tipos de datos en Java
Caracteres:
char: ‘a’,‘z’,‘?’,‘$’,‘@’,‘G’,´7’, …; Los caracteres del código Unicode.
Booleano: boolean: true o false
![Page 23: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/23.jpg)
2323
Variables
Los programas que hemos hecho hasta ahora sólo imprimen mensajes en pantalla. Pero
cuando programamos queremos ser capaces de almacenar datos, manipular datos, etc. Por
este motivo necesitamos variables.
![Page 24: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/24.jpg)
2424
Variables
Propósito: poder almacenar datos.
Tienen un identificador asociado.
Debe tener un tipo de dato asociado.• Clase de dato que se almacenará en ella. Por
ejemplo, el dato puede ser de tipo int, double, char, etc.
Debe ser declarada previamente a su uso.
En resumen: Una variable es un objeto que almacena un dato, y tiene asociados un identificador y un tipo.
![Page 25: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/25.jpg)
2525
Variables
¡Usa variables! Hace cálculos
intermedios.
class Doble{ public static void main(String[] args) { int numero; int doble;
numero = 4; doble = 2*numero;
System.out.println("El doble del número " + numero + " es: " + doble ); }}
![Page 26: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/26.jpg)
2626
Variables
En el programa anterior introducimos tres conceptos nuevos:
1. Variables.2. Imprimir el valor de variables en
pantalla.3. Cálculos.
El doble del número 4 es: 8
![Page 27: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/27.jpg)
2727
Variables
Forma genérica para declarar una variable:
<tipo> <identificador> [= <valorInicial>];
<tipo>: Tipo estándar (int, float, char, boolean, etc.).
<valor_inicial>: Puede corresponder a una constante del tipo entero, real, caracter, etc.
[]: significa opcional.
![Page 28: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/28.jpg)
2828
Variables
Ejemplos de declaraciones de variables:
• int numero;
• char inicial;
Ejemplos de declaraciones de variables asociadas a un dato:
• int numero = 10;
• char inicial = ‘G';
![Page 29: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/29.jpg)
2929
Variables
int num_alumnos;
Crea la variable num_alumos.
int num_alumnos = 55;
Crea la variable num_alumos y le asigna un valor. Se dice que estamos inicializando esta variable pues es la primera vez que le asignamos un valor.
El símbolo ‘=’ es el operador de asignación; no es una ecuación algebraica.
![Page 30: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/30.jpg)
3030
Variables
int num_alumnos, num_salas;
Crea las variables num_alumnos y num_salas.
int num_alumnos = 55, num_salas = 20;
Crea las variables num_alumnos y num_salas y les asigna un valor.
![Page 31: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/31.jpg)
3131
Variables
class Doble{
public static void main(String[] args) {
int numero; int doble;
numero = 4; doble = 2*numero;
System.out.println("El doble del número " + numero + " es: " + doble ); }}
Creamos variables
Les asignamos un valor
![Page 32: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/32.jpg)
3232
Variables
Podemos cambiar el tipo de dato que almacena una variable siempre y cuando este cambio sea consistente.
Sin embargo si tenemos: double a = 2.5 ; int b = a;
Esto es ilegal en Java y produciría un error. El problema es cómo interpretar un número que tiene decimales como un entero.
![Page 33: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/33.jpg)
3333
Variables
Pero si tenemos: int a = 2; double b = a;
Es válido, pues cualquier número que es int (número entero) puede ser interpretado también como double (número real). En este caso b= 2.0 .
![Page 34: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/34.jpg)
3434
Variables
En Java las siguientes conversiones son válidas:
De a
short int, long, float, double
int long, float, double
long float, double
float double
![Page 35: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/35.jpg)
3535
Variables
Si queremos hacer una conversión no válida en Java debemos anteponer paréntesis al valor o variable que vamos a convertir.
Ejemplo: int a = (int) 12.8 ; En este caso la variable a almacenará el valor
12. Ejemplo: double a = 2.4; int b = (int) a;
En este caso la variable b almacenará el valor 2, pero la variable a sigue teniendo el mismo valor 2.4.
![Page 36: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/36.jpg)
3636
Variables
class Doble{
public static void main(String[] args) {
int numero; int doble;
numero = 4; doble = 2*numero;
System.out.println("El doble del número " + numero + " es: " + doble ); }}
1. Variables.2. Imprimir el valor de variables en pantalla.3. Cálculos.
![Page 37: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/37.jpg)
3737
Variables: Imprimir
Para imprimir variables usamos los mismos métodos que usábamos para imprimir una oración:
System.out.print()
System.out.println()
![Page 38: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/38.jpg)
3838
Variables: Imprimir
class Imprimir{ public static void main(String[] args) { int numero; System.out.println(numero); }}
Ejemplo: Imprimir una variable en pantalla
¿Cúal es el error aquí?
![Page 39: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/39.jpg)
3939
Variables: Imprimir
class Imprimir{ public static void main(String[] args) { int peso = 50; double estatura= 1.70; System.out.println(“El paciente pesa ” + peso + “ kilos y mide ” + estatura + “ m.”); }}
Ejemplo: Imprimir una combinación de variables y oraciones.
![Page 40: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/40.jpg)
4040
Variables: Imprimir
Hagan un programa que imprima en pantalla su edad.
Yo tengo 20 años
![Page 41: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/41.jpg)
4141
Variables
class Doble{
public static void main(String[] args) {
int numero; int doble;
numero = 4; doble = 2*numero;
System.out.println(“El doble del número ” + numero + “ es: ” + doble ); }}
1. Variables.2. Imprimir el valor de variables en pantalla.3. Cálculos.
![Page 42: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/42.jpg)
4242
Expresiones Aritméticas
Operadores binarios+ Suma- Resta* Multiplicación/ División
Operadores unitarios- Signo negativo+ Signo positivo
![Page 43: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/43.jpg)
4343
Expresiones Aritméticas
Precedencia igual a la que conocemos:
•*, / antes que +,-
•De izquierda a derecha
•Para cambiar la precedencia usamos paréntesis.
•Los operadores unitarios +,- antes que todas las operaciones aritméticas
![Page 44: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/44.jpg)
4444
Expresiones Aritméticas
Si tenemos +5*8 - (4 - 3). El orden sería:5*8 – (4 - 3)5*8 – 140 – 139
Recomendación: Siempre usen paréntesis.
Por ejemplo: ¿Cómo se interpreta 3/4*2?
![Page 45: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/45.jpg)
4545
Expresiones Aritméticas
2 + 3 * 2 15 * 6
(2 + 3) * 2 -4
-2 / 3 3 * 4 * 5
3 / 4 – 7 3 * (4 - 5 )
5-7 1 + 15 - 6
2 - 1 + 3 1 + (2 - 7)
![Page 46: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/46.jpg)
4646
Expresiones Aritméticas
Cuando tengo una expresión aritmética si no uso puntuación Java asume (y lo almacena) que el dato es de tipo int, de lo contrario asume que es de tipo double.
Ejemplo: 7 + 3.0
Asume y lo almacena como int
Asume y lo almacena como double
![Page 47: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/47.jpg)
4747
Expresiones Aritméticas
Si hacemos operaciones con datos del mismo tipo el resultado va a ser del tipo de estos datos. Por ejemplo, si divido dos datos de tipo int el resultado va a ser de tipo int.Ejemplo: 7/3 = 2
Si combino enteros (por lo tanto int) con reales (por lo tanto double) el resultado será de tipo double.Ejemplo: 7.0/3 = 2.3333
![Page 48: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/48.jpg)
4848
Expresiones Aritméticas
Ejemplos:7/4 = ?7/4 = ?
7/2.0 = ?7/2.0 = ?
-7 + 4 = ? -7 + 4 = ?
3.0 + 4 = ?3.0 + 4 = ?
(-3)/(-4) = ?(-3)/(-4) = ?
6/18 = ?6/18 = ?
![Page 49: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/49.jpg)
4949
Expresiones Aritméticas
¿Qué pasa si tenemos una expresión más larga?Por ejemplo: 3/2 + 4.0*(5 - 4.3)
Java hace las conversiones paso a paso según corresponda.
![Page 50: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/50.jpg)
5050
Expresiones Aritméticas
En el ejemplo: 3/2 + 4.0*(5 - 4.3)
3/2 + 4.0*0.7
1 + 4.0*0.7
1 + 2.8
3.8
![Page 51: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/51.jpg)
5151
Expresiones Aritméticas
4 + 5/2.0 = ?
4.0 + 5/2 = ?
8 + 7/2*5.0 = ?
5/6-6*2/15 = ?
![Page 52: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/52.jpg)
5252
Expresiones Aritméticas
También podemos usar un cast, el cual tiene mayor precedencia que *, / .
Se le aplica al valor que está a la derecha. Si queremos que el cast se aplique a más de
un valor podemos usar paréntesis.
Ejemplos:(int)4.5 + 3 = ?(double)(1/2) = ?(double)(3/2 + 1) + 1 = ?
![Page 53: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/53.jpg)
5353
Expresiones Aritméticas
Módulo m%n• Es el resto de la división de m divido por n.
• Útil para cuando queremos saber si un número es divisible por otro, pues el resto es cero.
• Tiene la misma precedencia que *, /
• Si m o n son negativos entonces se calcula l m l % l n l y se conserva el signo de m.
Ejemplos7%3 = 1
4%2 = 0 -13%7 = -6
13%-7 = 6
![Page 54: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/54.jpg)
5454
Expresiones Aritméticas
Precedencia hasta ahora( ) cast * / % + -
Le podemos asignar el valor de una expresión aritmética a una variable.
¿Qué pasa si declaramos a la variable a como un int?
class Ejemplo{ public static void main(String[] args) { double a; a = 6 + 4.0*3; System.out.println(a); }}
![Page 55: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/55.jpg)
5555
Expresiones Aritméticas
En una expresión aritmética también podemos usar otras variables.
El valor de las variables que están en el lado derecho del signo = no cambiarán su valor.
Ejemplos:• a = b*3;
• a = b;
• a = (int)*12.2 – c*b;
• b = a*5-4;
![Page 56: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/56.jpg)
5656
Expresiones Aritméticas
1. Variables 2. Imprimir el valor de variables en pantalla.3. Cálculos.
class Doble{
public static void main(String[] args) {
int numero; int doble;
numero = 4; doble = 2*numero;
System.out.println(“El doble del número ” + numero + “ es: ” + doble ); }}
![Page 57: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/57.jpg)
5757
Expresiones Aritméticas
Finalmente, tomemos el ejemplo y veamos que pasa con las variables y las expresiones aritméticas.
int numero; ?
int doble; ?
numero = 4; ?
doble = 2*numero; ?
![Page 58: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/58.jpg)
5858
Expresiones Aritméticas: char
Los char son tipos de datos que nos permiten representar los caracteres que conocemos: las letras (mayúsculas y minúsculas), los dígitos, los símbolos etc.
Estos se representan con bits. Usamos 16 bits para representar cada carácter (216= 65536).
Por ejemplo ‘B’ se representa como:0000 0000 0100 0010 = ?
![Page 59: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/59.jpg)
5959
Expresiones Aritméticas: char
Si tenemos int a= ‘B’ ;Java guardará el valor numérico correspondiente a ‘B’ en la variable a.
Lo contrario también es posible. Pero, ¿Qué creen que pasará si: char c = 70; ? char c = ‘7’; ?
Podemos ir de char a int, long , float y double, pero no podemos tratar de asignarle un valor numérico a una variable de tipo char.
char c = ‘B’; c = c+1;
a ?
Esto produce un error
![Page 60: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/60.jpg)
6060
Expresiones Aritméticas: char
En Unicode, los códigos de las letras del alfabeto son sequenciales tanto para mayúsculas como para minúsculas.
También son sequenciales los códigos de los dígitos.
Por ejemplo:• El valor numérico de ‘A’ es 65, de ‘B’ es 66, de ‘C’ es
67 etc.
• El valor numérico de ‘a’ es 97, de ‘b’ es 98, de ‘c’ es 99 etc.
![Page 61: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/61.jpg)
6161
Expresiones Aritméticas: char
char c = ‘a’ + 1; ?
char c = (char)(‘a’ + 1); ?
int a;char c;c= ‘9’;a = c – ‘1’; a = c – 1 ;
a = ‘A’ – ‘B’;
?
?
?
![Page 62: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/62.jpg)
6262
Expresiones Aritméticas: char
Char
Dec
blank
32
! 33
” 34
# 35
$ 36
% 37
& 38
’ 39
( 40
) 41
* 42
Char
Dec
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
: 58
Char
Dec
@ 64
A 65
B 66
C 67
D 68
E 69
F 70
G 71
H 72
I 73
Z 90
Char
Dec
a 97
b 98
c 99
d 100
e 101
f 102
g 103
h 104
i 105
z 122
{ 123
![Page 63: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/63.jpg)
6363
Ejemplo: De millas a kilómetros
Hagan un programa que:1. Cree dos variables, una llamada millas y otra
llamada kilómetros.2. Asignenle el valor 2 a la variable millas.3. kms = millas * 1.609.4. Finalmente impriman en pantalla el equivalente a
kilómetros usando las variables como argumentos de System.out.println()
![Page 64: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/64.jpg)
6464
Ejemplo: De millas a kilómetros
class OperacionesBasicas0{
public static void main(String[] args) {
double millas, kms;millas = 2;
kms = millas * 1.609;System.out.println( millas + “ millas equivalen a ”
+ kms + “ kilómetros.”); }}
![Page 65: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/65.jpg)
6565
Ejemplo: Area de un círculo
class Ejemplo {
public static void main(String[] args) {
double pi = 3.1415;double radio, area;
radio = 2;
area = pi * radio * radio; System.out.println("El area de un circulo de radio " +radio+ ": es " + area); }}
![Page 66: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/66.jpg)
6666
Métodos Math
En Java existe una clase llamada Math que tiene una serie de métodos que nos sirven para calcular la raíz cuadrada, el valor absoluto etc.
Estos métodos reciben un argumento y devuelven un valor.
Por ejemplo: a = Math.abs(-3);• El argumento es -3.
• Retorna 3, este valor es almacenado en la variable a.
![Page 67: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/67.jpg)
6767
Métodos Math
Math.abs• Retorna el valor absoluto de una expresión.
• El tipo de valor que retorna es el mismo tipo que el del argumento, el cual puede ser de cualquier tipo.
• Por ejemplo, si el argumento es de tipo double el valor que retorna también es de tipo double.
• Si el argumento es de un rango menor que int (por ejemplo short), retornará un valor de tipo int.
class Ejemplo { public static void main(String[] args) { double b =-3; int a = Math.abs(b); System.out.println(a); }}
¿Qué pasara?
![Page 68: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/68.jpg)
6868
Métodos Math
Math.sqrt• Retorna la raíz cuadrada positiva del argumento, el
cual puede ser de cualquier tipo.
• Siempre retorna un valor de tipo double.
• Si el argumento es negativo retornará NaN (not a number)
• Ejemplo : Math.sqrt(4) 2.0
![Page 69: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/69.jpg)
6969
Métodos Math
Math.pow• Calcula ab, donde a y b son los argumentos.
• Ejemplo: Math.pow(4,10).
• Siempre retorna un valor de tipo double.
int a = Math.pow(2,4); ¿Problema? double b = Math.pow(-5, 0.5);¿Problema?
![Page 70: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/70.jpg)
7070
Métodos Math
class Ejemplo
{
public static void main(String[] args)
{
double a = 3, b = -0.5;
double c = Math.abs(b);
System.out.println(“ El valor absoluto de ”+b+ “es ”+c);
double d = Math.sqrt(a);
System.out.println(“La raiz cuadrada de ”+a+ “es ”+d);
double e = Math.pow(a,b);
System.out.println(a + “elevado a ”+b+ “es igual a ”+e);
}
}
![Page 71: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/71.jpg)
7171
Expresiones lógicas (booleanas)
Se emplea para dirigir al programa por un determinado flujo de ejecución, dependiendo de si la evaluación de una expresión lógica da verdadero o falso.
Una expresión lógica puede ser verdadera o falsa. Tenemos tipos de datos llamados boolean que pueden ser true o false.
Operadores relacionales o de comparación:
== Igual ( No es lo mismo que =)!= Distinto< Menor<= Menor o igual> Mayor>= Mayor o igual
![Page 72: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/72.jpg)
7272
Expresiones lógicas (booleanas)
5 > 6 ?
7 == 8 ?
15 <= 6 ?
Pero recuerden que podemos crear variables de tipo boolean y por lo tanto podemos asignarle el valor de una expresión lógica a una variable de tipo boolean.
![Page 73: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/73.jpg)
7373
Expresiones lógicas (booleanas)
class Ejemplo {
public static void main(String[] args) {
boolean a = 3 > 5;System.out.println(a);
}}
![Page 74: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/74.jpg)
7474
Expresiones lógicas (booleanas)
Conectivos lógicos binarios:&& Conjunción (y)|| Disyunción (o)
Conectivos lógico unario:! Negación (no)
Precedencia: ! && ||
¿Cúando a && b es verdadero?¿Cúando a || b es verdadero?
![Page 75: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/75.jpg)
7575
Expresiones lógicas (booleanas)
class Ejemplo {
public static void main(String[] args) {
boolean a = 3 > 5;boolean b = 4 < 7;boolean c = a && b;boolean d = a || b;
System.out.println("c: " +c + "\nd: " + d);
}}
![Page 76: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/76.jpg)
7676
Expresiones lógicas (booleanas)
Precedencia:< <= >= >== !=
!&&||
Asociatividad: De izquierda a derecha.
![Page 77: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/77.jpg)
7777
Ejemplos: Expresiones booleanas
x (numero > 5) && !y
true (numero == 1)
!x 5 == 6
true || x 4 >= 2
false (4 % 2 == 0) && false
false && x && 3>4 !(1< 2)
![Page 78: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/78.jpg)
7878
Expresiones lógicas (booleanas)
Si tenemos una mezcla de expresiones lógicas y aritméticas en una expresión, los operadores aritméticos siempre tienen precedencia.
Por ejemplo: 2.0 + 3 > 4.5*1 2.0 +3 > 4.5 5.0 > 4.5
true
![Page 79: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/79.jpg)
7979
Expresiones lógicas (booleanas)
La precedencia de todos los operadores
( )
! -
* / %
+ -
< <= >= >
== !=
&&
||
=
Lo mejor es SIEMPRE usar paréntesis
![Page 80: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/80.jpg)
8080
Expresiones lógicas (booleanas)
class Ejemplo
{
public static void main(String[] args)
{
boolean a =((3+7) >= (1/2 + 2*20/4)) && (true || !((3<5)==(4!=3)));
System.out.println(a);
}
}
¿Qué imprime?
![Page 81: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/81.jpg)
8181
Expresiones lógicas (booleanas)
Del ejemplo anterior podemos ver que:• Valores de cualquier tipo pueden ser comparados,
excepto por los de tipo boolean. Booleans sólo se pueden comparar con booleans.
En el ejemplo teníamos: (3<5)==(4!=3)También podríamos tener: 1/2== 3/4Pero no podemos tener: 1/2== 4!=3
![Page 82: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/82.jpg)
8282
Expresiones lógicas (booleanas)
También podemos incluir datos de tipo char en expresiones lógicas.
Cuando comparamos dos char, lo que vamos a comparar es si un char precede a otro según el código que tenga en Unicode.
Por lo tanto, según lo que ya hemos visto:‘A’ < ‘B’ < ‘C’ < ‘D’....‘a’ < ‘b’ < ‘c’ < ‘d’ ...‘0’ < ‘1’ < ‘2’ < ‘3’ ....
![Page 83: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/83.jpg)
8383
Expresiones lógicas (booleanas)
También podemos mezclar datos de tipo char con tipos de datos numéricos (por ejemplo int o double).
Por ejemplo, podemos decirboolean a = 3 < ‘b’;
![Page 84: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/84.jpg)
8484
Leer desde la pantalla
Hasta ahora los programas que hacíamos no interactuaban con un posible usuario del programa.
Por ejemplo en el programa:class OperacionesBasicas0{ public static void main(String[] args) { double millas, kms; millas = 2; kms = millas * 1.609; System.out.println( millas + “ millas equivalen a ”
+ kms + “ kilómetros.”); }}
![Page 85: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/85.jpg)
8585
Leer
Si queremos saber a cuantos kilómetros equivalen 5 millas tendríamos que cambiar directamente el programa y decir millas = 5;
Sin embargo el usuario del programa no debería tener que él/ella cambiar el código, sino que deberíamos ser capaces de preguntarle a él/ella que es lo que quiere saber. En este caso, a cuantos kilómetros equivalen x millas, donde x va a ser proporcionado por el usuario.
![Page 86: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/86.jpg)
8686
Leer
Leer valores directamente con las herramientas que ofrece Java es muy complicado, por lo que vamos a crear una clase llamada In (está basada en la del profesor John Carter) y la vamos a usar para leer los datos que entregue el usuario.
Esta clase tiene los siguientes métodos:readInt In.readIntreadDouble In.readDoublereadChar In.readCharreadLine In.readLinereadFloat In.readFloat
In.readInt
Indica la clase
Indica el métodode la clase
![Page 87: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/87.jpg)
8787
Leer
class Ejemplo{ public static void main(String[] args) { double millas, kms;
System.out.println("Ingrese el número de millas");
millas = In.readDouble(); kms = millas * 1.609;
System.out.println( millas + " millas equivalen a " + kms + " kilómetros."); }}
![Page 88: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/88.jpg)
8888
Comando if
if ( expresión-booleana ) { Bloque de instrucciones}
Si la expresión es verdadera, se lleva a cabo el bloque de instrucciones.
Si el bloque de instrucciones es sólo una línea podemos omitir {}.
if ( expresión-booleana ) Instrucción
![Page 89: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/89.jpg)
8989
Comando if
class Ejemplo {
public static void main(String[] args) {
int numero; System.out.println("Dime un número: "); numero = In.readInt();
if (numero < 0){
numero = -numero;} System.out.println("Valor absoluto: " +
numero); } }
![Page 90: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/90.jpg)
9090
Comando if
if ( expresión-booleana ) {
Primer bloque de instrucciones} else { Segundo bloque de instrucciones}
Si la expresión es verdadera, se lleva a cabo el primer bloque de instrucciones, y si no es verdadera entonces se lleva a cabo el segundo.
![Page 91: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/91.jpg)
9191
Ejemplo: Par o impar
class Ejemplo {
public static void main(String[] args) {
int numero;
System.out.println("Dime un número: "); numero = In.readInt();
if (numero%2 == 0)System.out.println(“Es par");
else System.out.println ("Es impar");
} }
![Page 92: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/92.jpg)
9292
Comando if
Hagan un programa que diga si un alumno aprobó un curso basado en las siguientes reglas:• Debe tener nota mayor o igual que 3.0 en el examen.
• El promedio entre el promedio de pruebas y el examen debe ser mayor que 4.0.
• Debe tener nota sobre 4.0 en (por separado):
- - promedio de las tareaspromedio de las tareas
- - promedio de los laboratoriospromedio de los laboratorios
- - promedio de las pruebaspromedio de las pruebas.. El programa debería pedirle al usuario que
ingrese lo que está en negrita.
![Page 93: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/93.jpg)
9393
Comando if
class Ejemplo{ public static void main(String[] args) { double examen, prom_pruebas; double prom_tareas, prom_lab; System.out.println("Ingrese la nota del examen"); examen = In.readDouble(); System.out.println("Ingrese el promedio de las pruebas"); prom_pruebas = In.readDouble(); System.out.println("Ingrese el promedio de las tareas"); prom_tareas = In.readDouble(); System.out.println("Ingrese el promedio de los laboratorios"); prom_lab = In.readDouble();
![Page 94: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/94.jpg)
9494
Comando if
double prueb_examen = (prom_pruebas + examen)/2; if (( examen >= 3.0) && (prom_pruebas > 4.0)&& (prom_tareas > 4.0) && (prom_lab > 4.0) && (prueb_examen > 4.0)) { System.out.println ("El alumno aprobó el curso"); }
else { System.out.println ("El alumno no aprobó el curso"); } }}
![Page 95: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/95.jpg)
9595
Variación: if/else if/else
A veces tenemos más de dos opciones:
if ( expresión-booleana ) { Bloque de instrucciones} else if ( expresión-booleana ) { Bloque de instrucciones} else { Bloque de instrucciones}
Permite escoger entre varias ramas. Esta opción nos permite ser más eficientes y hacer menos
comparaciones (cada if representa una comparación).
![Page 96: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/96.jpg)
9696
Variación: if/else if/else
class Ejemplo { public static void main(String[] args) {
//El siguiente programa pide la nota de un
//alumno y le dice si aprobó(>=4.0), aprobó destacado(>=5.5),
//reprobó(<4.0) o reprobó con derecho a examen recuperativo (>=3.8) double nota; System.out.println("Ingrese la nota");
nota= In.readDouble();
if (nota >= 5.5) System.out.println("El alumno aprobo en forma destacada");
else if (nota >= 4.0) System.out.println("El alumno aprobo"); else if (nota >= 3.8) System.out.println("El alumno reprobo con derecho al recuperativo");
else System.out.println("El alumno reprobo");
} }
![Page 97: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/97.jpg)
9797
Variación: if/else if/else
class Ejemplo {
public static void main(String[] args) {
//El siguiente programa le pregunta a un//usuario cual es el numero de la rifa que compro//y le dice si se gano alguno de los tres premios//donde el premio mayor se lo lleva el que compro//el numero 123, el segundo el que compro el 326 // y el tercero el que compro el 784
int num_rifa;int premio_mayor = 123;
int segundo_premio = 326; int tercer_premio = 784;
![Page 98: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/98.jpg)
9898
Variación: if/else if/else
System.out.println("Ingrese su numero de la rifa");num_rifa= In.readInt();
if (num_rifa == premio_mayor) System.out.println("Usted gano el premio mayor: un mercedes");
if (num_rifa == segundo_premio) System.out.println("Usted gano el segundo premio: un viaje a Europa");
if (num_rifa == tercer_premio) System.out.println("Usted gano el tercer premio: 100.000 pesos");
if (num_rifa != 123 && num_rifa != 326 && num_rifa != 784) System.out.println("Lo siento, no gano esta vez");
} }
![Page 99: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/99.jpg)
9999
Variación: if/else if/else
Escriban nuevamente este programa de una forma más eficiente
class Ejemplo { public static void main(String[] args) { //El siguiente programa le pregunta a un //usuario cual es el numero de la rifa que compro //y le dice si se gano alguno de los tres premios //donde el premio mayor se lo lleva el que compro //el numero 123, el segundo el que compro el 326 // y el tercero el que compro el 784
int num_rifa; int premio_mayor = 123; int segundo_premio = 326; int tercer_premio = 784;
![Page 100: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/100.jpg)
100100
Variación: if/else if/else
System.out.println("Ingrese su numero de la rifa"); num_rifa= In.readInt();
if (num_rifa == premio_mayor) System.out.println("Usted gano el premio mayor: un mercedes");
else if (num_rifa == segundo_premio) System.out.println("Usted gano el segundo premio: un viaje a Europa");
else if (num_rifa == tercer_premio) System.out.println("Usted gano el tercer premio: 100.000 pesos"); else System.out.println("Lo siento, no gano esta vez");
} }
![Page 101: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/101.jpg)
101101
Variación: if/else if/else
IMPORTANTE: un else siempre se asocia con el último if, a menos que usemos llaves {}.
La indentación no cambia el hecho de que un else siempre se asocia al último if. En este ejemplo, la indentación que usamos hace parecer que el else se está asociando al primer if.
if ( a < 5) if (a < 3) System.out.println (“Si”);else System.out.println(“No”);
Si a = 6¿Qué imprime esteprograma?
![Page 102: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/102.jpg)
102102
Variación: if/else if/else
if ( a < 5){ if (a < 3) System.out.println (“Si”);}else System.out.println(“No”);
Si a = 6¿Qué imprime esteprograma?
![Page 103: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/103.jpg)
103103
Variación: if/else if/else
En el primer ejemplo, podríamos haber usado {} para quede más claro a que if el else está haciendo referencia:
if ( a < 5) if (a < 3) System.out.println (“Si”);else System.out.println(“No”);
es equivalente
a
if ( a < 5){ if (a < 3) System.out.println (“Si”); else System.out.println(“No”); }
Pero también podemos indentarpara que visualmente quede claroa que if hace referencia el else.
(Estos 3 ejemplos son equivalentes)
if ( a < 5) if (a < 3) System.out.println (“Si”); else System.out.println(“No”);
![Page 104: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/104.jpg)
104104
Strings
Hasta ahora hemos usado los tipos primitivos de datos (int, short, long, double, char etc) que en total son 8. Sin embargo, existen también tipos de objetos.
Java nos permite crear objetos de tipo String.
Un objeto String representa una cadena alfanumérica.
¿Para qué sirve?• Para hacer programas que manipulen texto.
![Page 105: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/105.jpg)
105105
Strings
Declaración de un string: String s;
Declaración e inicialización de un string: String s = "Este es el valor inicial";
Crear un string a partir de otros: String s1 = "Hola, "; String s2 = " ¿qué tal?"; String s3 = s1 + s2;
![Page 106: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/106.jpg)
106106
Strings
Cuando creamos una variable de tipo String lo que estamos creando es una referencia.
String s;
Cuando le asignamos un valor a una variable String estamos creando (recién) un objeto de tipo String, la variable s es una referencia al objeto que creamos.
s = “Hola”;
s
s“Hola”
![Page 107: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/107.jpg)
107107
String
Con referencia queremos decir que s está apuntando a la ubicación en la memoria en la que se encuentra el objeto “Hola”.
En cambio cuando una variable es de uno de los tipos primitivos en la variable guardamos el valor que le asignamos.
int a = 3;
String s = “Hola”;
a3
s“Hola”
![Page 108: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/108.jpg)
108108
Strings
Si tenemos:String s1 = “Hola”;
String s2 = s1;
Lo que estamos diciendo con = es que los dos hacen referencia al mismo objeto, es decir, ambos apuntan al mismo objeto.
s1“Hola”
s2
![Page 109: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/109.jpg)
109109
Strings
¿Qué imprime esto?
String s1 = "Blanco";String s2 = "Azul";s1 = s2;s2 = "Rojo";System.out.println(s1 + " " + s2);
¿Qué imprime esto?
int a = 1;int b = 2;a = b;b = 4;System.out.println(a + " " + b);
![Page 110: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/110.jpg)
110110
Strings
Tomando en cuenta que las variables de tipo String son referencias, debemos entender a que nos referimos si preguntamos si:
s1 == s2
En este caso el valor de la expresión va a ser true si ambas apuntan (o hacen referencia) al mismo objeto, y false en caso contrario.
s1“Hola”
s2
![Page 111: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/111.jpg)
111111
Strings
¿Cúal es el valor de a?String s1 = “Rojo”;
String s2 = “Rojo”;String s2 = “Rojo”;
boolean a = (s1==s2boolean a = (s1==s2););
Ambas variables s1 y s2 apuntan a objetos que son idénticos en su contenido pero eso no quiere decir que apunten al mismo objeto. En este caso:s s
“Rojo” “Rojo”Por lo tantoa es false
![Page 112: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/112.jpg)
112112
Strings
Para comparar si dos objetos de tipo String son iguales en contenido Java provee el método equals.
Este método compara si dos Strings son iguales y retorna true si lo son y false si son diferentes.
La forma de llamar al método es la siguiente:s1.equals(s2)
Donde s1 y s2 son Strings.
![Page 113: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/113.jpg)
113113
Strings
class EjemploString{ public static void main(String[] args) { String s1 = "Sol", s2 = "Luna";
boolean a;
a = s1.equals(s2); System.out.println(a); a = s2.equals("luna"); System.out.println(a);
a = s2.equals("Luna"); System.out.println(a);
a = s2.equals(" Luna"); System.out.println(a);
}}
falsefalsetruefalse
![Page 114: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/114.jpg)
114114
Strings
Para comparar el orden lexicográfico (orden en el diccionario) de dos objetos de tipo String Java provee el método compareTo.
La forma de llamar al método es la siguiente:s1.compareTo(s2)
Donde s1 y s2 son Strings.
Este método compara cada carácter de ambos Strings, de izquierda a derecha. Se detiene cuando alguno de los dos Strings tiene un carácter diferente al otro o uno (o ambos) de ellos se termina.
![Page 115: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/115.jpg)
115115
Strings
Para determinar el orden lexicográfico, las reglas son:• Mayúsculas antes que minúsculas (por ejemplo, ‘A’
antes que ‘a’)
• Espacio antes que las letras (por ejemplo tala antes que talar)
• ‘A’ antes que ‘B’ antes que ‘C’ antes que ‘D’ ….
s1.compareTo(s2)• Retorna 0 si ambos Strings son idénticos.
• Un número negativo si s1 está antes de s2.
• Un número positivo si s1 está después de s2
![Page 116: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/116.jpg)
116116
Stringsclass Ejemplo{ public static void main(String[] args) { String s1 = "Luna", s2 = "Lunas";
int a; a = s1.compareTo(s2); System.out.println(a);
a = s1.compareTo("luna"); System.out.println(a); a = s1.compareTo(" Luna"); System.out.println(a); a = s1.compareTo("Lun"); System.out.println(a); a = s1.compareTo("Luce"); System.out.println(a);
}}
-1-3244111
Imprime
![Page 117: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/117.jpg)
117117
Instrucción while
while ( expresión-booleana ) { ... Bloque de instrucciones ...}
Realiza una tarea mientras ocurre una cierta condición.
Podemos hacer un programa que itere.
![Page 118: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/118.jpg)
118118
Instrucción while
class Contar{
public static void main(String[] args) {
//Este programa cuenta de 1 a n//donde n es dado por el usuarioint n, max;
System.out.println("Hasta que numero quiere contar? ");max = In.readInt();n=1;while ( n <= max ) {
System.out.println(n);n=n+1;
}}
}
![Page 119: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/119.jpg)
119119
Instrucción while
Al ejecutarse la instrucción while, se evalua la expresión booleana en paréntesis, y si su valor es true, se ejecuta la o las sentencias subordinadas.
Una vez hecho esto, la condición es reevaluada y se procede de la misma manera.
Cuando la condición se vuelve false, en la siguiente evaluación se dará la instrucción while por terminada.
Las instrucciones subordinadas al while pueden ser compuestas, es decir, otras instrucciones while, if, etc.
![Page 120: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/120.jpg)
120120
Instrucción while
Cuando usamos esta instrucción es útil saber que:n=n+1 es equivalente a n++n=n-1 es equivalente a n--
En el ejemplo anterior, podríamos haber escrito el while de la siguiente forma
while ( n <= max ) {
System.out.println(n);n++;
}
![Page 121: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/121.jpg)
121121
Instrucción while
class Ejemplo {
public static void main(String[] args) {
int numero; System.out.println("Dime un número: "); numero = In.readInt();
if (numero < 0){
numero = -numero;} System.out.println("Valor absoluto: " + numero);
} }
¿Cómo lo podemos mejorar para que el usuariopregunte cuantas veces quiera?
![Page 122: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/122.jpg)
122122
Instrucción while
class Ejemplo { public static void main(String[] args) { int numero = 1;
while (numero != 0) { System.out.println("Dime un número, para terminar ingrese 0 "); numero = In.readInt(); if (numero!=0) { if (numero < 0) { numero = -numero; } System.out.println("Valor absoluto: " + numero); } } System.out.println("Adios"); } }
![Page 123: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/123.jpg)
123123
Instrucción while
¿Por qué debemos inicializar numero? Cuidado con los ciclos infinitos. Ver ventajas de usar indentación.
class Ejemplo {public static void main(String[] args) {int numero = 1;while (numero != 0){System.out.println("Dime un número, para terminar ingrese 0 ");numero = In.readInt();if (numero!=0){if (numero < 0){numero = -numero;}System.out.println("Valor absoluto: " + numero);} System.out.println("Adios");} }
•¿Cúal llave falta?•¿Qué instrucciones están dentro del while?
![Page 124: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/124.jpg)
124124
Instrucción while
Calculadora de promedios(Guía): recibe una lista de notas (para terminar escribir “-1”) e imprime su promedio.
A veces usamos ciclos anidados. Por ejemplo un while dentro de un while.• Números Pitagóricos: Escribir un programa que
determine si para un número cualquiera (a) existen otros dos números (b y c) tales que: a2 = b2 + c2
![Page 125: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/125.jpg)
125125
Ejemplo: Números Pitagóricos
class Pitagoricos
{
public static void main(String[] args)
{
int a, b, c;
boolean solucion = false;
System.out.println("Ingrese a");
a=In.readInt();
b=1;
c=1;
![Page 126: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/126.jpg)
126126
Ejemplo: Números Pitagóricos
while (b < a && solucion == false){
c=1;while(c<a && solucion == false){
if(a*a == b*b + c*c ){
System.out.println("b = "+b+" y c = "+c);
solucion = true;}c=c+1;
}b=b+1;
}
if (solucion==false)System.out.println("No existe descomposicion");
}
}
![Page 127: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/127.jpg)
127127
Instrucción for
Ocurre algo al inicio (inicialización). Mientras ocurre algo (expresión-booleana)
ejecuta el bloque de instrucciones. Al final de cada ciclo realiza una acción
(actualización).
for ( inicialización ; expresión-booleana ; actualización )
{ ... Bloque de instrucciones ...}
![Page 128: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/128.jpg)
128128
Instrucción for
int i=0;
while (i<10)
{
System.out.println(i);
i++;
}
for(int i=0; i<10; i++)System.out.println(i);
int i;for(i=0; i<10; i++)
System.out.println(i);
![Page 129: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/129.jpg)
129129
Instrucción for
Útil en ciclos en que se conoce de antemano el número de iteraciones a realizar.
Contar de 0 a 99:
¿Contar de 100 a 1?
for (int i = 0 ; i < 100 ; i++) System.out.println("i = " + i);
![Page 130: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/130.jpg)
130130
Instrucción for: Ejemplo1
class Ejemplo{
public static void main(String[] args) {
int i;//Cuenta hasta 10for (i = 0 ; i < 10 ; i++)
System.out.println("i = " + i);
int rep;//multiplos de 5 en forma ascendente//hasta 100System.out.println("Estos son los multiplos de 5 hasta 100 ");for (rep=0 ; rep<=100 ; rep=rep+5)
System.out.println(rep);
//Multiplos de 5 en forma descendente//desde 100System.out.println("Estos son los multiplos de 5 desde 100 ");for (rep=100 ; rep>=0 ; rep=rep-5)
System.out.println(rep); }}
![Page 131: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/131.jpg)
131131
Instrucción for: Ejemplo2
class Ejemplo{
public static void main(String[] args) {
double base, resultado;int i,exponente;
System.out.println("Ingrese el valor de x: ");base = In.readDouble();System.out.println("Ingrese el valor de n: ");exponente = In.readInt();
resultado = 1;for(i = 1; i <= exponente ; i++)
resultado = resultado*base;
System.out.println("Resultado de " + base + "^" + exponente + " : " + resultado);
}}
![Page 132: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/132.jpg)
132132
Instrucción for
Puedo crear expresiones más complejas.Por ejemplo:
for(i=2, j=3; i<=20 && j <=30; i=i+2, j=j+3)System.out.println(i + “ ” + j);
Esto imprime:2 3
4 6
6 9
8 12
10 15
12 18
14 21
16 24
18 27
20 30
![Page 133: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/133.jpg)
133133
Instrucción for
for ( inicialización ; expresión-booleana ; actualización )
Por ejemplo:for(i=1, j=0, k=3; i<=2 && j<=5 && k<10; i++, j++, k++)
System.out.println(i+ “ ”+ j + “ ” + k);
Imprime1 0 32 1 4
Aquí puedo agregar las expresiones que quiera pero debo separar con comas.
![Page 134: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/134.jpg)
134134
Arreglos
Los arreglos son estructuras de datos complejas (en el sentido de que no son atómicas)
Agrupan datos de un mismo tipo en particular, llamado el tipo base del arreglo.• El tipo base de un arreglo puede ser cualquiera de
los tipos primitivos de Java (int, double, float etc), incluso algunos tipos complejos (clases) como los String u otros arreglos.
![Page 135: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/135.jpg)
135135
Arreglos: Declaración y Construcción
Declaración<tipo>[] <identificador>;
int[] a;
Construcción<identificador> = new <tipo>[<número-elementos>];
a = new int[20];
nombre
Arreglo
![Page 136: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/136.jpg)
136136
Arreglos
La cantidad de elementos del tipo base que contiene el arreglo es fija: Debe especificarse al construirlo.
La sintaxis del lenguaje permite referirse a cada uno de los elementos que constituyen el arreglo empleando índices.
Los elementos del arreglo están numerados en forma jerárquica y consecutiva, empezando en 0.
10 21 32 83 23
0 1 2 3 n-1
Arreglo
valores
posición
![Page 137: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/137.jpg)
137137
Arreglos: Declaración y Construcción
Declaración y Construcción<tipo>[] <identificador> = new <tipo>[<número-elementos>];
int[] a = new int[20];
Declaración y Construcción (con asignación)<tipo>[] <identificador> = {valor1, valor2, ...};
int[] edades = {17,19,21,20,18};
![Page 138: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/138.jpg)
138138
Arreglos
La siguiente declaración:
String[] nombres = {"Juan","Pepe","Pedro","Maria"};
es equivalente a:
String[] nombres;
nombres = new String[4];
nombres[0] = "Juan";
nombres[1] = "Pepe";
nombres[2] = "Pedro";
nombres[3] = "Maria";
![Page 139: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/139.jpg)
139139
Arreglos
Declaración de un arreglo de 100 caracteres:
char[] B = new char[100];
Declaración e inicialización de un arreglo de 10 enteros:int[] C = { 2, 5, 8, 100, 1, 2, 100, 5, 5, 5 };
• Declaración e inicialización de un arreglo de 10 caracteres:char[] D = {'a','z','E','e',65,‘7','@','U','*',‘u'};
Asignando un valor a la sexta posición de un arreglo de enteros:A[5] = 200;
![Page 140: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/140.jpg)
140140
Arreglos
Como dijimos antes, una vez que creamos un arreglo su cantidad de elementos (o tamaño) es fijo.
Para obtener el tamaño de un arreglo escribimos:
<identificador>.length
Por ejemplo, si tenemos:double[] peso = new double[25];int a = peso.length;
En a guardamos el valor 25.
![Page 141: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/141.jpg)
141141
Arreglos
Leyendo del usuario el contenido de un arreglo, mediante un ciclo for:
double[] A = new double[10]; int i;
for (i=0; i< A.length; i++) {
System.out.println("Dime un número?");A[i] = In.readDouble();
}
Noten que el contador i comienza en 0 y llega sólo hasta 9 (A.length – 1), dado que en los arreglos comezamos a contar desde 0. En este caso los 10 índices del arreglo van de 0 a 9.
![Page 142: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/142.jpg)
142142
Arreglos
Mostrando un arreglo mediante un ciclo for:
for (i=0; i<A.length; i++)
System.out.println(A[i]);
Sumando dos elementos de un arreglodouble a = A[1] + A[3];
![Page 143: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/143.jpg)
143143
Arreglos
Guía 3: Crear un arreglo con cinco elementos dados por el usuario. Luego intercambiar el primer elemento con el último. Finalmente, imprimir en pantalla los elementos del arreglo.
Escriba un programa que reciba las notas de un curso que tiene como máximo 40 alumnos. Una vez recibidas las notas debe dar la siguiente información:• La nota máxima
• El número de notas bajo 4
• El promedio
• La diferencia entre la nota máxima y la mínima
![Page 144: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/144.jpg)
144144
Arreglos
La solución para el segundo ejercicio que se dará a continuación no es la mejor, pues todo lo que se pide hacer (promedio, notas bajo 4, etc) se podría hacer de una sola vez, cuando el usuario ingresa los datos.
![Page 145: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/145.jpg)
145145
Arreglos
class Ejemplo
{
public static void main(String[]args)
{
double[] notas = new double[40];
double max=0, min=7.0, suma=0, prom, diferencia;
int i=0;
int bajo_4=0, num_notas=0;
boolean terminar = false;
![Page 146: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/146.jpg)
146146
Arreglos
while(terminar == false){
if(i == 40) { System.out.println("Ya no puede ingresar mas notas"+
" el maximo es 40"); terminar = true; } else {
System.out.println("Ingrese nota, para terminar ingrese -1"); notas[i]= In.readDouble();
if (notas[i] == -1) terminar = true;
else i++;
} } num_notas=i;
![Page 147: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/147.jpg)
147147
Arreglos
//Ahora buscamos la nota máxima y la mínima //Fíjense que nuevamente usamos el contador i //por lo que debemos nuevamente inicializarlo en 0 for(i=0; i< num_notas; i++) { if (notas[i] < min) min = notas[i]; //Acá no usamos else pues puede ser //que todas las notas sean iguales en //cuyo caso min=max if (notas [i] > max) max = notas[i]; }
diferencia = max-min;
![Page 148: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/148.jpg)
148148
Arreglos
//Notas bajo 4.0for(i=0; i< num_notas; i++){ if (notas[i] < 4.0) bajo_4++;}
//Promediofor(i=0; i< num_notas; i++){
suma= suma+notas[i];} prom= suma/num_notas;
![Page 149: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/149.jpg)
149149
Arreglos
//Finalmente imprimimos todo, siempre y cuando se haya ingresado//al menos una notaif(notas[0]!=-1){
System.out.println("La nota maxima fue un "+ max);System.out.println("El promedio fue: "+ prom);System.out.println(bajo_4 + " notas estuvieron bajo 4.0");System.out.println("La diferencia entre la nota "+ "maxima y la minima fue: "+ diferencia);
}
else System.out.println("Adios");
}}
![Page 150: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/150.jpg)
150150
Arreglos: Importante
El lenguaje Java controla la validez de los índices que se emplean para referenciar un arreglo.• La siguiente porción de código compila sin problemas (es
decir, sin errores sintácticos), pero se producirá un error en tiempo de ejecución al referenciar posiciones inexistentes del arreglo.
// Ejemplo de error por acceso fuera de rango a un arreglo// Posiciones con índices del 20 al 29 son inválidas.
int[] arreglo = new int[20]; for (i=0; i<30; i++) arreglo[i] = 0;
Mensaje ArrayIndexOutOfBoundsException
También es común cometer estos errores olvidando que las posiciones de los arreglos están numeradas a partir del índice cero.• En un arreglo de tamaño N, las posiciones van de 0 a N-1.
![Page 151: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/151.jpg)
151151
Arreglos: Importante
Las dos siguientes notaciones son válidas y equivalentes para declarar un arreglo:
• int[] arreglo;
• int arreglo[];
No obstante, privilegiaremos utilizar la primera.
![Page 152: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/152.jpg)
152152
Arreglos
Al igual que los Strings, los arreglos son objetos, por lo tanto cuando declaramos un arreglo
int[] peso;int[] peso;
Estamos creando la variable peso la cual es una referencia (apunta) a un arreglo de enteros. Sin embargo, hasta este momento no hemos creado un arreglo de enteros. peso
![Page 153: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/153.jpg)
153153
Arreglos
Para crear un arreglo de 10 enteros necesitamos escribir:
peso = new int[10];
A diferencia de las variables primitivas (int, double etc) los arreglos se inicializan automáticamente cuando los creamos. • Tipos númericos se inicializan con 0 (ó 0.0 en los double)
• char se inicializan con el carácter nulo
• boolean se inicializan con false
peso
0 0 0 0 00 0 0 00
![Page 154: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/154.jpg)
154154
Arreglos
Por lo tanto, que pasa si tenemos:
double[] A = new double[10];double[] B;B=A;A[4]= 4.5;System.out.println(B[4]);double[] C = {1.0,2.0,3.0};B=C;int i;for(i=0; i < B.length; i++)
System.out.println(B[i]);
Veamos paso a paso lo que hace este programa
![Page 155: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/155.jpg)
155155
Arreglos
double[] A = new double[10];
Creamos una variable A que es una referencia a un arreglo (que también creamos) de 10 elementos de tipo double, cada elemento Java lo inicializa en 0.0.
double[] B;
Creamos una variable B que es una referencia a un arreglo de elementos de tipo double pero aún no creamos ningún arreglo al que apunte B.
B
A
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0 1 2 3 4 5 6 7 8 9
![Page 156: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/156.jpg)
156156
Arreglos
B=A;
A y B harán referencia al mismo arreglo
A[4]= 4.5;
Cambiamos de 0.0 a 4.5 el 5to elemento del arreglo A.
A
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0 1 2 3 4 5 6 7 8 9 B
A
0.0
0.0
0.0
0.0
4.5 0.0 0.0 0.0 0.0 0.0
0 1 2 3 4 5 6 7 8 9 B
![Page 157: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/157.jpg)
157157
Arreglos
System.out.println(B[4]);
¿Qué se imprime en pantalla?
double[] C = {1.0,2.0,3.0};Creamos una variable C que apunta a un arreglo de 3 elementos de tipo double.
4.5
C
1.0
2.0
3.0
0 1 2
![Page 158: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/158.jpg)
158158
Arreglos
B=C;
B deja de hacer referencia al mismo arreglo que hace referencia A y ahora hace referencia al mismo arreglo que hace referencia C. Por lo tanto ahora B hace referencia a un arreglo de 3 elementos. Antes habíamos dicho que un arreglo tiene tamaño fijo, es decir, una vez asignado el tamaño este no puede cambiar. Sin embargo, aquí estamos cambiando a B, que es una variable que apunta a un arreglo, no estamos cambiando un arreglo.
A0.00.00.00.00.04.50.
00.0
0.0
0.0
0 1 2 3 4 5 6 7 8 9
B
C3.02.01.0
0 1 2
![Page 159: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/159.jpg)
159159
Arreglos
int i;
for(i=0; i < B.length; i++)
System.out.println(B[i]);
¿Qué imprime esto?
En resumen el programa completo imprime
1.02.03.0
4.51.02.03.0
![Page 160: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/160.jpg)
160160
Arreglos
Si tenemos:double[] B;
int [] C = {1,2,3};
B=C;
¿Qué pasa en este caso?Produciría un error
pues B puede hacer referencia sólo a un arreglo
de doubles
![Page 161: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/161.jpg)
161161
Arreglos bidimensionales
Algunos datos vienen en dos dimensiones.• Tableros, mapas, áreas, imágenes (dibujos),
matrices, planillas de cálculo, etc.
Arreglos bidimensionales.• Dos índices en lugar de uno.
• Dimensión: n x m
• Fila, Columna: [x][y]
Ejemplo: Notas de alumnos
![Page 162: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/162.jpg)
162162
Ejemplo: Notas de alumnos
Diaz, Bruno
Doe, John
Perez, Juan
Quiroz, Ana
Rios, Luis
Salas, Marco
Tapia, Jorge
Yang, Li
I1 I2 I3 I4 PromedioAlumnos
0
1
2
3
4
5
6
0 1 2 3 4
0 3.5
4.3
5.3
5.8
4.72
1 4.3
5.2
5.1
4.3
4.72
2 5.2
4.5
3.4
6.2
4.82
3 6.2
4.1
3.4
5.6
4.82
4 5.4
3.2
6.5
4.8
4.97
5 5.8
4.9
6.2
5.8
5.67
6 5.3
4.4
6.4
3.2
4.82
[4][2] 6.5
![Page 163: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/163.jpg)
163163
Arreglos bidimensionales
Declaración• String[][] tablero;
Construcción• tablero = new String[16][16];
Podemos declarar y construir al mismo tiempo• String[][] tablero = new String[20][30];
Inicialización 2 x 3 • int[][] numero = {{1,3,5}, {3,6,7}};
Fila 1 Fila 2
![Page 164: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/164.jpg)
164164
Arreglos bidimensionales
Leyendo del usuario el contenido de una matriz de 3X3:
class LeerMatriz {
public static void main(String[] args){
double[][] A = new double[3][3];int i,j;i=0;while ( i< 3){
j=0;while(j< 3){
System.out.println("Dime un número?");A[i][j] = In.readDouble();j++;
}i++;
}
}}
![Page 165: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/165.jpg)
165165
Arreglos bidimensionales
Mostrando una matriz de 3X3:i=0;while ( i< 3){
j=0;
while(j< 3){ System.out.println(A[i][j]); j++;}
i++;}
![Page 166: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/166.jpg)
166166
Arreglos bidimesionales
Recuerden que tanto en arreglos unidimensionales como en matrices podemos ver a cada elemento como una variable. La diferencia está en que cuando creamos un matriz:
double[][] altura = new double[20][30];
Estamos creando 20x30 elementos (que podemos ver como variables) de una sola vez.
Por lo tanto podemos tratar a cada elemento igual como tratamos a una variable. double a,b;a = A[1][2] + A[0][0] + 3;b = A[1][2]*A[0][0];
![Page 167: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/167.jpg)
167167
Operaciones de matrices
A B
B
+ = C
A =
i,j i,j i,j
32* C 1 2 34
5
6
1*4 + 2*5 + 3*6 = 32i
j
jk
![Page 168: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/168.jpg)
168168
Ejemplo: Suma de matrices
class Suma{
public static void main(String[] args){
int[][] A ={{1,2,3,4}, {5,6,7,8}};int[][] B ={{1,4,5,6}, {4,8,9,7}};int[][] C = new int[2][4];int i,j;
for(i = 0; i < 2 ; i++){
for(j = 0; j < 4 ; j++)C[i][j] = A[i][j] + B[i][j];
}//Ahora imprimos cada fila de Cfor(i = 0; i < 2 ; i++){
for(j = 0; j < 4 ; j++){
System.out.print(C[i][j]+" ");}System.out.println();
}
}}
![Page 169: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/169.jpg)
169169
Ejemplo: Multiplicación de Matrices
class MultMatrices
{
public static void main(String[] args)
{
int[][] A = {{2,3,8},{9,5,4},{7,8,3}};
int[][] B = {{1,4,7},{2,5,8},{3,6,9}};
int[][] C = new int[3][3];
int i,j,k,suma=0;
![Page 170: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/170.jpg)
170170
Ejemplo: Multiplicación de Matrices
for(i=0; i< 3; i++){
for(j=0; j< 3; j++){
for(k=0, suma=0; k< 3; k++)suma = suma + A[i][k]*B[k][j];
C[i][j]= suma;}
}
for(i=0; i< 3; i++){
for(j=0; j< 3; j++)System.out.print(C[i][j]+ " ");
//Despues que terminamos con una fila nos//saltamos a la siguiente lineaSystem.out.println();
}
}}
![Page 171: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/171.jpg)
171171
Arreglos multidimesionales
Hasta ahora hemos visto arreglos unidimensionales y bidimensionales. Sin embargo, podemos tener arreglos con las dimensiones que uno desee.
Por ejemplo, podemos tener arreglos de 3, 4 ó 5 dimensiones.
Por ejemplo:boolean[][][] A = new boolean[2][3][6];
Aquí hemos creado 2X3X6 elementos de tipo boolean.
int[][][][] B = new int[2][2][2][2];
Aquí hemos creado 2x2x2x2 elementos de tipo int.
![Page 172: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/172.jpg)
172172
Strings: más métodos
Los métodos que veremos a continuación pueden ser útiles para hacer la tarea 1. Esto no quiere decir que necesiten cada uno de ellos, todo depende de cómo implementen su solución.
length()• Para obtener la longitud de un String
• Forma de usarlo s1.length()Donde s1 es un String
• Devuelve el largo del String (devuelve un int)
![Page 173: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/173.jpg)
173173
Strings: más métodos
• Por ejemplo:String s1 = “hola”;
int a = s1.length();
En a guardamos el valor 4.
• Importante: No confundir con “length” de los arreglos, donde para llamarlo usamos notas.length, sin paréntesis. En los Strings usamos paréntesis.
esto devuelve 4
![Page 174: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/174.jpg)
174174
Strings: más métodos
charAt()• Para obtener el carácter que se encuentra en una posición
cualquiera. Los índices van de 0 a length-1, igual que en los arreglos.
H o l a
• Forma de usarlo s1.charAt(índice)Donde s1 es un String e índice indica la posición del caracter que queremos obtener. En el caso del String “Hola” índice puede ser 0,1,2 ó 3.
• Devuelve el carácter en la posición indicada (devuelve un char).
índice 0 índice 3
![Page 175: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/175.jpg)
175175
Strings: más métodos
• Por ejemplo:String s1 = “hola”;
char c = s1.charAt(1);
En c guardamos el char ‘o’.
esto devuelve ‘o’
![Page 176: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/176.jpg)
176176
Strings: más métodos
class Ejemplo{
public static void main(String[] args)
{
String s = "Hola, ¿como estas?";
int i;
for (i=0; i<s.length(); i++)
System.out.println("caracter= " + s.charAt(i));
}
}
Imprime:
caracter= Hcaracter= ocaracter= lcaracter= acaracter= ,caracter= caracter= ¿caracter= ccaracter= ocaracter= mcaracter= ocaracter= caracter= ecaracter= scaracter= tcaracter= acaracter= scaracter= ?
![Page 177: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/177.jpg)
177177
Strings: más métodos
equalsIgnoreCase()• Lo mismo que equals() pero no tiene en cuenta
mayúsculas o minúsculas.
• Devuelve true o false.
• Por ejemplo:
String s1= “Estrella”;
String s2 = “estrella”;
boolean a = s1.equalsIgnoreCase(s2);
En a guardaremos true.
![Page 178: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/178.jpg)
178178
Strings: más métodos
indexOf() • Para saber la posición de un caracter particular en
un String.
• Forma de usarlo:s1.indexOf(caracter)
Donde s1 es un String y caracter es el caracter que estamos buscando en s1.
• Retorna la primera posición (el índice) en la cual se encuentra caracter en s1. Si caracter no se encuentra en s1 el método retorna -1
![Page 179: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/179.jpg)
179179
Strings: más métodos
• Por ejemplo:String s = "Camarada";
int indice1 = s.indexOf('a');
int indice2 = s.indexOf('e');
En indice1 guardamos el valor 1 y en indice2 el valor -1.
![Page 180: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/180.jpg)
180180
Strings: más métodos
indexOf() 2da version • Para saber la posición de un caracter particular en
un String, a partir de cierta posición.
• Forma de usarlo:s1.indexOf(caracter, índice)
Donde s1 es un String, caracter es el caracter que estamos buscando en s1 y índice es la posición desde la cual buscamos (de izquierda a derecha) a caracter.
• Retorna la primera posición (el índice) en la cual se encuentra caracter en s1 a partir de la posición indicada. Si caracter no se encuentra el método retorna -1.
![Page 181: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/181.jpg)
181181
Strings: más métodos
• Por ejemplo:String s = "Camarada";
int indice1 = s.indexOf('a',3);
int indice2 = s.indexOf('e',1);
En indice1 guardamos el valor 3 y en indice2 el valor -1.
![Page 182: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/182.jpg)
182182
Strings: más métodos
• Como pueden ver, este método se llama igual que el anterior, la única diferencia es que le damos dos argumentos. El primer argumento es el char que estamos buscando y el segundo argumento es la posición desde la cual queremos empezar a buscar.
s.indexOf('a',3);
• Si llaman a este método con dos argumentos Java sabe que se refieren a esta segunda versión del método indexOf().
argumento1 argumento2
![Page 183: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/183.jpg)
183183
Strings: más métodos
• Por ejemplo:String s = "Mi alfombra";
int indice1 = s.indexOf('a',4);
int indice2 = s.indexOf('a');
int indice3 = s.indexOf('f',7);
int indice4 = s.indexOf('f');
System.out.println(indice1 + " " + indice2 + " "+
indice3 + " "+
indice4);
Esto imprime: 10 3 -1 5
![Page 184: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/184.jpg)
184184
Java
Java Sun provee las especificaciones de Java a través de la Web.
Por ejemplo, las especificaciones de todos los métodos de la clase de los Strings se puede encontrar en:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html
![Page 185: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/185.jpg)
185185
Java
![Page 186: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/186.jpg)
186186
Java
Cuando quieran conocer las especificaciones de los métodos de alguna clase vayan a Google y escriban:
Nombre de la clase + java 1.4
Hagan click en el primer link que les aparezca.
Por ejemplo, lo pueden hacer para la clase Math, para la clase de los arreglos (Array) etc.
![Page 187: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/187.jpg)
187187
Métodos
Clase Principal{ Método principal () {....} Método1() {....} Método2() {....} :}
![Page 188: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/188.jpg)
188188
Métodos
Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases.
• Reciben datos de entrada
• Generan datos de salida
Entrada Salida
Dos números X1,X2
SUMA
Método que suma dos números
X1+X2
![Page 189: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/189.jpg)
189189
Métodos: Sintaxis
<ámbito> <tipo_retorno> <nombre_método> ( <lista_parámetros> ) {
<declaración_de_variables_locales> ;
<cuerpo_del_método> ;
return(<valor_retorno>) ;
}
En general, podemos clasificar los métodos en:• Aquellos que retornan un valor.
• Aquellos que no retornan nada.En estos casos se utiliza como tipo de retorno la palabra reservada void.
![Page 190: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/190.jpg)
190190
Métodos
<ámbito> <tipo_retorno> <nombre_método> ( <lista_parámetros> )
<lista_paramétros>
• Valores que se entregan como entrada al método.
• Deben corresponder en cuanto a cantidad, posición y tipos a las variables que se definieron como parámetros de entrada en la definición del método.
• Si en la definición del método no se usó parámetro alguno, entonces en la llamada tampoco debe escribirse ninguna expresión o variable, pero los paréntesis deben aparecer.
![Page 191: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/191.jpg)
191191
Métodos
Parámetros de entrada.• Materia prima con la que trabajará el método.
Valor de retorno• Resultado del procesamiento llevado a cabo por el
método.
Tanto los parámetros de entrada como el valor de retorno tienen un tipo de datos asociado.
![Page 192: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/192.jpg)
192192
Métodos
Ejemplo de un método que no retorna nada:
public static voidpublic static void ImprimeSaludo ImprimeSaludo() ()
{{
System.out.println(“Hola”)System.out.println(“Hola”);;
}}
Instruccionesdel método
No tieneparámetros
NombreNo retorna nada,sólo imprime “Hola”en pantalla
![Page 193: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/193.jpg)
193193
Métodos
Ejemplo de un método que retorna un valor:
public static public static doubledouble Area(double radio) Area(double radio)
{{
double area;double area;
area = 3.14 * radio * radio;area = 3.14 * radio * radio;
returnreturn area;area;
}}
retorna un valor de tipo double
Nombre
Tiene 1parámetrode tipo double llamado radio
Retorna el valor de area
![Page 194: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/194.jpg)
194194
Métodos
Cuando creamos un método este debe estar dentro de una clase.
Por ejemplo, hasta ahora el tipo de clase que hemos usado es aquella donde tenemos al método principal.
Podemos incluir los métodos que creamos ya sea antes o después del método principal. El orden no importa.
Sólo podemos tener 1 método principal pues este es el que ordena la ejecución del programa.
![Page 195: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/195.jpg)
195195
Métodos
class Ejemplo{
public static void main(String[] args){
....................
....................ImprimeSaludo();....................ImprimeSaludo();
}
public static void ImprimeSaludo() { System.out.println(“Hola”);}
}
![Page 196: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/196.jpg)
196196
Métodos
Dependiendo de si el método retorna algo o no es como lo llamamos.
Con llamamos queremos decir que lo usamos. Si el método no retorna nada para llamarlo
simplemente escribimos el nombre del método seguido de paréntesis, como en el ejemplo anterior.
ImprimeSaludo();
![Page 197: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/197.jpg)
197197
Métodos
class Ejemplo{
public static void main(String[] args){
ImprimeSaludo();ImprimeSaludo();
}
public static void ImprimeSaludo() { System.out.println(“Hola”);}
}
Hola
HolaImprime
![Page 198: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/198.jpg)
198198
Métodos
Si el método retorna un valor lo podemos usar igual como usamos un valor o variable.
Por ejemplo:Le podemos asignar su valor a una variable:a= Area(2);
Podemos hacer operaciones:b= Area(2) + Area(3);
Podemos Imprimir:System.out.println(Area(5));
![Page 199: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/199.jpg)
199199
Métodos
class Ejemplo{
public static void main(String[] args){
ImprimeSaludo();double a= Area(2);System.out.println(a);double b= Area(2) + Area(3);System.out.println(b);System.out.println(Area(5));
}
public static void ImprimeSaludo() { System.out.println("Hola");}
public static double Area(double radio) { double area; area = 3.14 * radio * radio; return area;}
}
Hola12.5640.8278.5
Imprime
![Page 200: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/200.jpg)
200200
Métodos
public static double Celsius(double fahrenheit) {
double resultado;resultado= (fahrenheit-32.0)*(5.0/9.0);
return resultado;} public static double Fahrenheit(double celsius) { return((celsius*9.0/5.0)+32.0);}
![Page 201: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/201.jpg)
201201
Ejemplos: Llamadas a métodos
double grados_celsius;
grados_celsius = Celsius(68) ; /* llamada */
double grados_farenheit ;
grados_farenheit = Fahrenheit(31) ; /* llamada */
double radio = 5.56 ;
double calculo_area ;
calculo_area = Area(5.56) ; /* llamada */
calculo_area = Area(radio) ; /* llamada */
![Page 202: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/202.jpg)
202202
¿Para qué sirven los métodos?
No repetir lo mismo varias veces en el código.
Ordenar el código.
Comprender más fácilmente el código.
Separar trabajo entre programadores.
Realizar trabajos más complejos.
![Page 203: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/203.jpg)
203203
Ejercicios
Desarrollar el siguiente método:
• Retorne 0 si un número es par y 1 si es impar.
Escriba el programa del Control 2 usando el método Factorial(). El cual recibe un número entero y retorna el factorial del número.
![Page 204: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/204.jpg)
204204
Métodos: Orden de Instrucciones
Recuerden el orden en que se ejecutan las instrucciones, ya sean del método principal o los otros métodos:• Las instrucciones que se ejecutan en un programa
son aquellas del método principal. Estas se ejecutan de principio a fin.
• Las instrucciones de los métodos se ejecutan de principio a fin a menos que usemos return.
• Las instrucciones de otro método se ejecutan si en el método principal se llama a este otro método (este método a la vez puede llamar a otro).
![Page 205: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/205.jpg)
205205
Métodos: Orden de Instrucciones
public static boolean esPar (int numero)
{
if(numero%2==0)
return true;
else
return false;
}
Si numero es par las instrucciones en este métodose terminan aquí
Si numero es impar las instrucciones en este métodose terminan aquí
![Page 206: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/206.jpg)
206206
Métodos: Orden de Instruccionesclass Ejemplo{
public static void main(String[] args){
int num,resultado; 1System.out.println("Ingrese un numero"); 2num=In.readInt(); 3resultado= factorial(num); 8System.out.println("El factorial de "+ num+ " es " + 9
resultado);}
public static int factorial(int numero){
int factorial=1; 4for(int i =1; i<=numero; i++) 5
factorial= factorial*i; 6
return factorial; 7
}}
Los números indican el orden en que se ejecutan las instruccionesdel programa
![Page 207: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/207.jpg)
207207
Métodos: return
• Si el método no retorna nada y queremos terminar la ejecución de sus instrucciones podemos usar simplemente:
return;
• Este tipo de return no lo podemos usar si el método devuelve algo pues nos daría un error de compilación. Si el método devuelve algo siempre debemos retornar un valor. Por ejemplo:
return 25;
![Page 208: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/208.jpg)
208208
Métodos: return
Aca tenemos una versión del método factorial que no retorna nada, pues dentro del mismo método se le dice al usuario cual es el factorial del número que ingresó:
public static void factorial(int numero){
if (numero < 0) {
System.out.println("Debe ingresar un entero mayor que 0");
return; }
int factorial=1;for(int i =1; i<=numero; i++)
factorial= factorial*i;
System.out.println("El factorial de "+ numero+ " es "+ factorial);
}
Sin embargo,se recomienda, si se puede,usar una versióndel método quese ejecute de principio a fin
![Page 209: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/209.jpg)
209209
Métodos: return
Esta versión se ejecuta de principio a fin (no necesariamente todas las instrucciones):
public static void factorial(int numero){
if (numero < 0)System.out.println("Debe ingresar un entero mayor que
0");
int factorial=1;
//Si numero < 0 las instrucciones del for no se ejecutan//pues i parte en 1, por lo tanto i no es menor que numerofor(int i=1; i<=numero; i++)
factorial= factorial*i;
if(numero>=0)System.out.println("El factorial de "+ numero+
" es "+ factorial);
}
![Page 210: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/210.jpg)
210210
Métodos: return
Este ejemplo nos daría en error de compilación, pues en el encabezado estamos diciendo que el método va a devolver un int:
public static int factorial(int numero){
if (numero < 0) { System.out.println(“Debe ingresar un entero
mayor que 0”);return;
}
int factorial=1; for(int i =1; i<=numero; i++)
factorial= factorial*i; return factorial;
}
![Page 211: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/211.jpg)
211211
Métodos: Parámetros
Ejemplo:
public static double exponente(double base, int exponente){
double resultado = 1;int i;for(i = 1; i <= exponente ; i++) resultado = resultado*base;
return resultado;}
Cuando decimos (double base, int exponente) estamos especificando la lista de parámetros del método. En este caso los parámetros son base y exponente.
![Page 212: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/212.jpg)
212212
Métodos: Parámetros
Cuando llamamos al método, los valores con los que lo llamamos se le asignan a los parámetros del método en el orden respectivo:
double a= exponente (2.5, 6);
public static double exponente (double base, int exponente)
![Page 213: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/213.jpg)
213213
Métodos: Parámetros
También podemos llamar a los métodos con variables o expresiones:
double a=4.5;int b=3;
double c= exponente (a,(b*2));
public static double exponente (double base, int exponente)
![Page 214: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/214.jpg)
214214
Métodos: Parámetros
En Java los valores, variables o expresiones que usamos para llamar a un método primero se evalúan (en el caso de expresiones) y luego una copia de estos valores se le asigna a los parámetros.
A esto se le llama paso por valor. Importante: Por lo tanto cuando llamamos a
un método y usamos variables como argumentos lo que le estamos pasando al método es el valor de la variable NO LA VARIABLE.
![Page 215: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/215.jpg)
215215
Métodos: Parámetrosclass EjemploParametros{
public static void main(String[] args){
double a, resultado;int b;System.out.println("Ingrese la base");
a=In.readDouble();System.out.println("Ingrese el exponente");
b=In.readInt();resultado= exponente(a,b);System.out.println("El resultado es "+ resultado);
}
public static double exponente(double base, int exponente){
double resultado = 1;int i;for(i = 1; i <= exponente ; i++) resultado = resultado*base;return resultado;
}}
![Page 216: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/216.jpg)
216216
Métodos: Parámetros
Veamos que sucede paso a paso:
double a, resultado;
int b;
Creamos tres variables
a b resultado
![Page 217: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/217.jpg)
217217
Métodos: Parámetros
System.out.println("Ingrese la base");
a=In.readDouble();
System.out.println("Ingrese el exponente");
b=In.readInt();
Le asignamos un valor a “a” y “b”, dependiendo de lo que ingrese el usuario. Por ejemplo:
3.0 4
a b
![Page 218: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/218.jpg)
218218
Métodos: Parámetros
resultado= exponente(a,b);
public static double exponente(double base, int exponente)
Llamamos al método exponente y luego le
asignamos a resultado el valor que devuelva este método.
Al llamar al método le asignamos a los argumentosdel método los valores de las variables a y b.3.0
4
a
b
3.0
4
base
exponente
![Page 219: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/219.jpg)
219219
Métodos: Parámetros
Finalmente le asignamos a resultado lo que devuelva para este caso exponente.
¿Por qué es importante saber que significa paso por valor?
Porque si dentro del método cambiamos el valor de los parámetros del método esta acción no cambiará el valor de las variable que usamos como argumentos del método.
81.0
resultado
![Page 220: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/220.jpg)
220220
Métodos: Parámetros
class EjemploParametros{
public static void main(String[] args){
double a, resultado;System.out.println("Ingrese el numero");a=In.readDouble();resultado= dobleNum(a);System.out.println("El doble del numero es "+
resultado);}
public static double dobleNum(double numero){ numero= 2*numero;
return numero;}
}
En este ejemplo la variable a es el argumento con el que llamamos al método.
El parametro del metodo es numero.
![Page 221: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/221.jpg)
221221
Métodos: Parámetros
double a, resultado;
System.out.println("Ingrese el numero");a=In.readDouble();
a resultado
a El usuario le asigna un valor a a8.5
![Page 222: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/222.jpg)
222222
Métodos: Parámetros
resultado= dobleNum(a);
public static double dobleNum(double numero)
Primero se llama al método y luegose le asigna lo que retorna a resultado
a numero
8.5 8.5
numero ahoratiene el mismovalor de a
![Page 223: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/223.jpg)
223223
Métodos: Parámetros
numero= 2*numero;
return numero;
resultado= dobleNum(a);
a numero
8.5 17.0numero ahora cambia su valorpero a no cambió su valor
resultado numero
17.0 17.0Finalmente a resultado se le asigna lo que retornael método. En este casolo que retorna el método es elvalor de numero
![Page 224: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/224.jpg)
224224
Ámbito de las variables
El ámbito de una variable es aquel donde se reconoce a la variable.
Una variable es reconocida dentro del block donde se le declaró.
Un block es determinado por llaves. Ejemplo de blocks:
class Ejemplo{
}
public static void main (String[] args){
}
while(n!=-1){
}
![Page 225: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/225.jpg)
225225
Ámbito de las variables
Es decir, si yo declaro una variable dentro de un while, esta variable es reconocida sólo dentro del while. Fuera del while es como si nunca hubiese existido.
class Ejemplo{
public static void main(String[] args){
int i =0;while (i<10){
int resultado= 1;resultado= resultado +i;
}
System.out.println(resultado);}
}
Sólo aquí sereconocea la variableresultado
Por lo tanto estoproduce un error
![Page 226: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/226.jpg)
226226
Ámbito de las variables
Cuando compilamos este programa nos encontramos con este mensaje:
resultado cannot be resolved También podemos afirmar que una variable
creada dentro de un método sólo es reconocida dentro del método.
Es por esta razón que podemos tener dos variables con el mismo nombre en el método principal y en otro método.
En este caso lo que sucede es que tenemos dos variables distintas que se llaman igual, pero entre ellas no hay ninguna relación.
![Page 227: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/227.jpg)
227227
Ámbito de las variables
class EjemploParametros{
public static void main(String[] args){
double numero, resultado;System.out.println("Ingrese el numero");
numero=In.readDouble();resultado= dobleNum(numero);System.out.println("El doble del numero es "+
resultado);System.out.println(numero);
}public static double dobleNum(double numero){ numero= 2*numero;
return numero;}
}
Si el usuario ingresa 3:
¿Qué se imprime aquí?
¿3 ó 6?Se imprime 3 pues la variable numero del main y la variable numero del método dobleNum son dos variables distintas.
![Page 228: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/228.jpg)
228228
Ámbito de las variables
double numero, resultado;
System.out.println("Ingrese el numero");numero=In.readDouble();
numero resultado
numero El usuario le asigna un valor a numero8.5
![Page 229: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/229.jpg)
229229
Ámbito de las variables
resultado= dobleNum(numero);
public static double dobleNum(double numero)
Primero se llama al método y luegose le asigna lo que retorna a resultado
numero numero
8.5 8.5
Ambas variables sellaman igual y ahoratienen el mismo valorpero son dos variables distintas y lo que le pase auna no afectará a la otra
método dobleNum
main
![Page 230: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/230.jpg)
230230
Ámbito de las variables
numero= 2*numero;
return numero;
resultado= dobleNum(numero);
numero numero
8.5 17.0numero ahora cambia su valorpero la variable numerodel main no cambió su valor
resultado numero
17.0 17.0Finalmente a resultado se le asigna lo que retornael método. En este casolo que retorna el método es elvalor de numero
main
8.5
main
![Page 231: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/231.jpg)
231231
Ámbito de las variables
System.out.println(numero);
Aquí se imprime 8.5 pues estamos haciendo referencia a la variable que el que es reconocida en el método main.
8.5main
![Page 232: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/232.jpg)
232232
Métodos que llaman a otros métodos
El método principal (main) puede llamar a otros métodos y estos a su vez pueden llamar a otros.
En el ejemplo de la guía que vimos hoy tenemos
class Loteria{ public static void main(String[]args) {
} public static double combinaciones(int n, int k) {
}
public static double factorial (int numero) { }}
![Page 233: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/233.jpg)
233233
Métodos y Arreglos
Como vimos anteriormente, cuando llamamos a un método. Java usa el paso por valor
Pero los objetos que conocemos hasta ahora no guardan un valor.
Los objetos que conocemos hasta ahora son los Strings y los Arreglos.
Entonces ¿Cúal es el valor que estamos pasando cuando pasamos un objeto?
![Page 234: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/234.jpg)
234234
Métodos y Arreglos
Una variable que es declarada como un arreglo en realidad es una referencia a un arreglo. Por lo tanto esta variable el valor que guarda es una referencia.
Cuando uno de los parámetros de un método es un arreglo ( ya sea unidimensional o multidimensional) lo que le estamos pasando al método es una referencia a ese arreglo.
El siguiente método recibe un arreglo e intercambia los elementos de las posiciones i y j.
public static void swap(double[] A, int i, int j){
double temp;temp= A[i];A[i]= A[j];A[j]=temp;
}
![Page 235: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/235.jpg)
235235
Métodos y Arreglos
class Ejemplo{
public static void main(String[] args){
double[] a= {1.0, 2.4, 5.6, 4.5, 6.7};int i;swap(a,0,3);for(i=0; i< a.length; i++)
System.out.print(a[i]+ " ");}public static void swap(double[] A, int i, int j){
double temp;temp= A[i];A[i]= A[j];A[j]=temp;
}}
¿Qué imprime este método?
![Page 236: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/236.jpg)
236236
Métodos y Arreglos
double[] a= {1.0, 2.4, 5.6, 4.5, 6.7};
Creamos una variable a y un arreglo de cinco elementos. La variable a hace referencia al arreglo.
1.0 2.4 5.6 4.5 6.7a
![Page 237: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/237.jpg)
237237
Métodos y Arreglos
swap(a,0,3);
public static void swap(double[] A, int i, int j)
1.0 2.4 5.6 4.5 6.7a
A
0 3i j
![Page 238: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/238.jpg)
238238
Métodos y Arreglos
double temp;
temp= A[0];
A[0]= A[3];
A[3]=temp;
4.5 2.4 5.6 1.0 6.7a
A
![Page 239: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/239.jpg)
239239
Métodos y Arreglos
for(i=0; i< a.length; i++)
System.out.print(a[i]+ " ");
Imprime el arreglo a, el cual hace referencia al mismo arreglo A del método swap. Por lo tanto los elementos de a en las posiciones 0 y 3 fueron intercambiados. El programa imprime:
4.5 2.4 5.6 1.0 6.7
![Page 240: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/240.jpg)
240240
Matrices como arreglos
Cuando creamos una matriz en realidad lo que estamos creando es un arreglo de arreglos.
Por ejemplo, si escribimos:int[][] a;Lo que creamos es una variable a que hace referencia a un arreglo, no a una matriz.
a
![Page 241: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/241.jpg)
241241
Matrices como arreglos
Luego cuando escribimos:a= new int[3][4];Lo que creamos es un arreglo de tres elementos, a[0], a[1], a[2].
a
a[0]
a[1]
a[2]
![Page 242: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/242.jpg)
242242
Matrices como arreglos
Donde cada elemento a[i] hace referencia a un arreglo de 4 elementos de tipo int. Estos elementos Java los inicializa en 0 automáticamente.
0 0 0 0
a
a[0]
a[1]
a[2]
0 0 0 0
0 0 0 0
Aquí está lamatriz
![Page 243: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/243.jpg)
243243
Matrices como arreglos
Por este motivo, podemos referirnos a la primera fila de una matriz como si nos refiriéramos a un arreglo.
En el ejemplo anterior la primera fila de la matriz a sería a[0], donde a[0] hace referencia a un arreglo de 4 elementos tipo int. 0 0 0 0a[0]
![Page 244: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/244.jpg)
244244
Matrices como arreglos
class Ejemplo{
public static void main(String[] args){
int[][] A={{1,2,3}, {4,5,6}, {7,8,9}};int[] b= A[0];
int i;for(i=0; i< b.length; i++)System.out.println(b[i]);
}} Veamos paso a paso lo que sucede durante la
ejecución de este programa
![Page 245: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/245.jpg)
245245
Matrices como arreglos
int[][] A={{1,2,3}, {4,5,6}, {7,8,9}};
1 2 3
A
A[0]
A[1]
A[2]
4 5 6
7 8 9
Creamos una variable A que hace referencia a un arreglode tres elementos A[0], A[1] y A[2]. Cada uno de estos elementos a su vez hace referencia a un arreglo de tres elementos de tipo int.
![Page 246: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/246.jpg)
246246
Matrices como arreglos
int[] b= A[0];Luego creamos una variable b que hace referencia al mismo arreglo que hace referencia A[0], es decir la primera fila de la Matriz A.
1 2 3
A
A[0]
A[1]
A[2]
4 5 6
7 8 9
b
![Page 247: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/247.jpg)
247247
Matrices como arreglos
int i;for(i=0; i< b.length; i++)System.out.println(b[i]);
Finalmente imprimimos el arreglo b. Este programa imprime:123
![Page 248: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/248.jpg)
248248
Matrices como arreglos
class Ejemplo{
public static void main(String[] args){
int[][] A={{1,2,3,4}, {5,6,7,8}, {9,1,2,3}};int i, j;for(i=0; i< A.length; i++){
for(j=0; j< A[0].length; j++){
System.out.print(A[i][j]+" ");}System.out.println();
}
}} Veamos paso a paso lo que sucede durante la ejecución de
este programa
![Page 249: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/249.jpg)
249249
Matrices como arreglos
int[][] A={{1,2,3,4}, {5,6,7,8}, {9,1,2,3}};
1 2 3 4
A
A[0]
A[1]
A[2]
5 6 7 8
9 1 2 3
![Page 250: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/250.jpg)
250250
Matrices como arreglos
for(i=0; i< A.length; i++)
Fijamos la fila i para empezar a movernos por la matriz. Usamos el largo de A, pues este largo nos indica el numero de filas que tiene la matriz.
1 2 3 4A A[0]
A[1]
A[2]
5 6 7 8
9 1 2 3Este es el largo al que hacemosreferencia al decir A.length
![Page 251: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/251.jpg)
251251
Matrices como arreglos
for(j=0; j< A[0].length; j++)Una vez fijada la fila i, fijamos la columna j. Para saber el número de columnas usamos el largo del arreglo A[0] pues este largo nos indica el número de columnas que tiene la matriz A. Podríamos haber usado A[1] o A[2] en vez de A[0], cualquiera de los tres nos habría servido.
1 2 3 4A A[0]
A[1]
A[2]
5 6 7 8
9 1 2 3
![Page 252: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/252.jpg)
252252
Matrices como arreglos
System.out.print(A[i][j]+" ");
}
System.out.println();
Finalmente imprimimos uno a uno los elementos de la matriz saltándonos a la siguiente línea cuando terminamos con una fila. Esto imprime:
1 2 3 4 1 2 3 4
5 6 7 8 5 6 7 8
9 1 2 3 9 1 2 3
![Page 253: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/253.jpg)
253253
Matrices como arreglos
En resumen lo que necesitamos saber es que:1.Podemos ver cada fila de la matriz como una arreglo
en caso de que lo necesitemos, como por ejemplo en la segunda parte de la Pregunta 2 de la tarea.
2.El número de filas es igual a: nombre_matriz.length. Por ejemplo:
A.lengthA.length
3.El número de columnas se obtiene especificando una fila. Por ejemplo:
A[0].lengthA[0].length
![Page 254: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/254.jpg)
254254
Strings: método valueOf
Hasta ahora hemos conocido los métodos:• equals()
• equalsIgnoreCase()
• compareTo()
• chatAt()
• indexOf()
• length()
Hoy vamos a conocer el método valueOf()Este método nos permite convertir un tipo de dato primitivo (char, int, double, boolean) a un String. También nos permite convertir un arreglo de caracteres a un String.
Este método se vuelve útil más adelante cuando queramos escribir o leer en un archivo.
![Page 255: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/255.jpg)
255255
Strings: método valueOf
En los métodos anteriores, no necesitábamos especificar que los métodos eran de la clase String pues los llamábamos con un objeto de tipo String. Por ejemplo:
String s= "Botella";
int a= s.length();
char b= s.charAt(2);
int c= s.indexOf(a);
Este es nuestroobjeto de tipoString
Aquí ocupamosal String s parallamar a estosmétodos de la clase String
![Page 256: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/256.jpg)
256256
Strings: método valueOf
Sin embargo, cuando ocupamos el método valueOf lo que vamos a hacer es llamar al método con un argumento que es de tipo primitivo (int, double, char, boolean etc) o con un arreglo de caracteres. Por lo que sí debemos especificar la clase donde se encuentra este método.
String.valueOf(a)
Donde a es un tipo de dato primitivo, un arreglo de caracteres, etc (existen más versiones de este método pero no las veremos aquí). Este método devuelve un String.
![Page 257: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/257.jpg)
257257
Strings: método valueOf
Por ejemplo:int a= 345;
String s1= String.valueOf(a);
Lo que estamos haciendo es asignarle al String s1 lo que devuelve el método valueOf(), como el método devuelve un String (mejor dicho una referencia a un objeto String), lo que devuelve se lo podemos asignar a s1 sin problemas.
345
“345”
a s1
![Page 258: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/258.jpg)
258258
Strings: método valueOf
class Ejemplo{
public static void main(String[] args){
int a= 345;String s1= String.valueOf(a);System.out.println(s1);
double b= 3.456;String s2= String.valueOf(b);System.out.println(s2);
Fíjense que para elmétodo valueOf()debemos especificarla clase
![Page 259: Clases Completas 1era parte (Vanny Smith)](https://reader034.vdocumento.com/reader034/viewer/2022052307/5571f21f49795947648c3332/html5/thumbnails/259.jpg)
259259
Strings: método valueOf
char c= 'a';
String s3= String.valueOf(c);
System.out.println(s3);
boolean d= true;
String s4= String.valueOf(d);
System.out.println(s4);
char[] e={'a','b','c','d'};
String s5= String.valueOf(e);
System.out.println(s5);
}
}
Este programa imprime:3453.456atrueabcd