Programación
Avanzada
Andrea Rueda
Pontificia Universidad Javeriana
Departamento de Ingeniería de Sistemas
Java
[Link]
Java vs C++
●
Compilación C++
Java vs C++
●
Compilación Java
[Link]
Java
Sistema Operativo
(Windows, Linux, Mac)
Java Runtime
Environment (JRE)
Java Virtual
Librerías
Machine (JVM)
Java
JVM, JRE y JDK (Java Development Kit)
[Link]
Java
●
JDK (Oracle)
- Licenciado.
- Uso comercial, desarrollo o personal.
- [Link]
●
OpenJDK
- Licencia GPL.
- Prácticamente igual al JDK comercial.
- [Link]
Java
●
IDEs (Integrated Development Environment):
entornos de desarrollo para Java
- Eclipse
[Link]
- Netbeans
[Link]
- IntelliJ
[Link]
Java: variables
●
Variable: símbolo que hace referencia a un
espacio en memoria donde se puede almacenar
un dato.
– Nombre.
– Tipo.
– Estado o valor.
int numero = 135;
float x = 23.45;
char simb = 'ñ';
Java: tipos de datos
●
Variables deben ser declaradas para ser
usadas.
●
Tipo de dato: conjunto al que el dato pertenece.
byte, short,
entero int, long
real float, double
caracter char
booleano bool
Java: tipos de datos
Nombre Descripción Tamaño Rango
bool Valor de verdad Sin true (1) o false (0)
definir
char Caracter (unicode) 16 bits ‘\u0000’ (0) a
‘\uffff’ (65535)
byte Entero pequeño 8 bits -128 a 127
short Entero corto 16 bits -32768 a 32767
int Entero 32 bits -231 a 231-1
long Entero largo 64 bits -263 a 263-1
float Punto flotante 32 bits Especificado en estándar
double Punto flotante de doble 64 bits Especificado en estándar
precisión
Java: clase String
●
Soporta arreglos o cadenas de caracteres.
●
No es un tipo de dato primitivo.
● Se define con comillas dobles “”.
●
Son inmutables, una vez creada, su valor no
puede cambiarse.
String s = "this is a string";
Java: arreglos
●
Número fijo de valores del mismo tipo de dato.
●
Tamaño fijo, definido una vez se declara.
●
Cada elemento se accede por un índice
numérico (entero).
[Link]
Java: arreglos
●
Declarar un arreglo:
int[] anArray;
byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;
●
Hasta ahí, no tiene ningún tamaño definido!
Java: arreglos
●
Crear: asignar el tamaño requerido.
anArray = new int[10];
●
Inicializar: poner valores en cada posición.
anArray[0] = 100;
anArray[1] = 200;
anArray[2] = 300;
●
Crear e inicializar en una sola instrucción:
int[] anArray = { 100, 200, 300, 400,
500, 600, 700, 800, 900, 1000};
Java: arreglos
●
Arreglos multidimensionales (2 o más), se vé
como arreglo de arreglos.
●
Cada arreglo puede tener un tamaño diferente.
String[][] names = {
{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"}
};
●
Acceso con los índices de cada arreglo y dentro
de cada arreglo.
String fullName =
names[0][0] + names[1][0];
Java: arreglos
●
Tamaño del arreglo: propiedad length.
int arrSize = [Link];
●
Manipulaciones de arreglos: clase
[Link]
– Buscar un elemento en un arreglo
– Comparar dos arreglos
– Llenar con un valor específico
– Organizar un arreglo de forma ascendente
– Copiar un arreglo en otro
Java: operadores
Precedencia Tipo Operadores
1 posfijo expr++ expr--
2 unario ++expr --expr +expr -expr ~ !
3 multiplicativo * / %
4 aditivo + -
5 corrimiento << >> >>>
6 relacional < > <= >= instanceof
7 igualdad == !=
8 AND de bits &
9 XOR de bits ^
10 OR de bits |
11 AND lógico &&
12 OR lógico ||
13 ternario ? :
= += -= *= /= %= &= ^= !=
14 asignación <<= >>= >>>==
Java: escritura
●
Comandos de escritura: clase System
[Link]() → escribe en pantalla.
[Link]() → escribe en pantalla
y termina con un cambio de línea.
[Link]("The answer is " + 42);
[Link]("Other answer is ");
[Link]("forty-two");
Java: lectura
●
Comandos de lectura: clase Scanner
import [Link]
●
Crear un objeto de la clase para luego usar sus
métodos
Scanner keyboard = new Scanner([Link]);
int numberOfPods = [Link]();
double d1 = [Link]();
String word1 = [Link]();
String line = [Link]();
Java: lectura
●
Otra opción: leer todo como cadenas de
caracteres y hacer la conversión respectiva:
String numCompStr = [Link]();
int numComp = [Link](numCompStr);
String costStr = [Link]();
double cost = [Link](costStr);
●
Hay que cerrar el objeto al terminar
[Link]();
Java vs C++
●
Hola mundo en C++
Archivo [Link]:
#include <iostream>
int main() {
std::cout << "Hello World!\n";
}
Java vs C++
●
Hola mundo en Java
Archivo [Link]:
class Main {
public static void main(String[] args) {
[Link]("Hello world!");
}
}
Java: estructuras de decisión
●
Estructuras de selección o decisión:
if (<cond>) {
<bloque de instrucciones>
}
if (<cond>) {
<bloque de instrucciones 1>
} else {
<bloque de instrucciones 2>
}
Java: estructuras de decisión
●
Estructuras de selección (decisión) anidadas:
if (<cond 1>) {
<bloque de instrucciones 1>
} else {
if (<cond 2>) {
<bloque de instrucciones 2>
} else {
<bloque de instrucciones 3>
}
}
Java: estructuras de decisión
●
Estructura de selección (decisión) múltiple:
switch (<opcion>) {
case <constante 1>:
<bloque de instrucciones 1>
break;
case <constante 2>:
<bloque de instrucciones 2>
break;
default:
<bloque de instrucciones 3>
break;
}
Java: estructuras de repetición
●
Estructuras de iteración o repetición:
while (<cond>) {
<bloque de instrucciones>
}
do {
<bloque de instrucciones>
} while (<cond>);
Java: estructuras de repetición
●
Estructuras de iteración (repetición):
for (i=<lim_inf>; i<=<lim_sup>; i++) {
<bloque de instrucciones>
}
Java
●
Ejercicio 1:
Dado un número entero, escribir el código que
imprima en pantalla la tabla de multiplicar (del 1
al 10) de ese número.
Java
●
Ejercicio 1 (código):
Dado un número entero, imprimir en pantalla la
tabla de multiplicar (del 1 al 10) de ese número.
int n, i;
[Link](“Ingrese número:”);
Scanner keyb = new Scanner([Link]);
n = [Link]();
for (i=1; i<=10; i++) {
[Link](n + “*” + i + “=”);
[Link](n*i);
}
[Link]();
[Link]
Java: métodos
●
Método (función): bloque de código que realiza
una tarea específica.
– Nombre.
– Tipo de retorno.
– Número de parámetros.
●
Nombre.
●
Tipo.
– Modificador: público, privado…
– Estático: requiere o no un objeto para ejecutarse.
Java: métodos
●
Método (función): bloque de código que realiza
una tarea específica.
class Main {
public int addNumbers(int a, int b) {
int sum = a + b;
return sum;
}
}
Java: métodos
●
Método (función): bloque de código que realiza
una tarea específica.
...
Main obj = new Main();
int result = [Link](num1, num2);
...
Java
●
Ejercicio 2:
Escribir el código de una función que calcule el
máximo (valor más grande) de dos números
reales.
– Tipo de retorno.
– Cantidad de parámetros.
●
Tipo de dato de cada parámetro.
Java
●
Ejercicio 2:
Escribir el código de una función que calcule el
máximo (valor más grande) de dos números
reales.
– Tipo de retorno → real.
– Cantidad de parámetros → 2 números.
●
Tipo de dato de cada parámetro → reales.
Java
●
Ejercicio 2 (código):
Escribir una función que calcule el máximo de
dos números reales.
public float maximo (float num1,
float num2) {
if (num1 > num2)
return num1;
else
return num2;
}
[Link]
Java
●
Ejercicio 3:
Dado un arreglo de enteros (junto con su
tamaño), escribir el código que permita llenar
una matriz cuadrada (fila por fila) con los datos
del arreglo.
Java
●
Ejercicio 3:
Dado un arreglo de enteros (junto con su
tamaño), escribir el código que permita llenar
una matriz cuadrada (fila por fila) con los datos
del arreglo.
– leer tamaño del arreglo y cada uno de los enteros.
– calcular la dimensión de la matriz cuadrada que
puede contener todos los elementos.
– llenar la matriz de izquierda a derecha y de arriba a
abajo con los datos del arreglo.
Java
●
Ejercicio 3 (código):
Dado un arreglo de enteros (junto con su
tamaño), ¿cómo llenar una matriz cuadrada
con los datos del arreglo?
– leer tamaño del arreglo y cada uno de los enteros.
n = [Link]();
int[] arr;
arr = new int[n];
for (i=0; i<n; i++) {
arr[i] = [Link]();
}
Java
●
Ejercicio 3 (código):
Dado un arreglo de enteros (junto con su
tamaño), ¿cómo llenar una matriz cuadrada
con los datos del arreglo?
– calcular la dimensión de la matriz cuadrada que
puede contener todos los elementos.
int tam = (int)[Link]([Link](n));
int[][] mat;
mat = new int[tam][tam];
Java
●
Ejercicio 3 (código):
Dado un arreglo de enteros (junto con su
tamaño), ¿cómo llenar una matriz cuadrada
con los datos del arreglo?
– llenar la matriz de izquierda a derecha y de arriba a
abajo con los datos del arreglo.
int l=0;
for (int i=0; i<tam; i++)
for (int j=0; j<tam; j++) {
mat[i][j] = arr[l];
l = l+1;
} [Link]