Temas 1 y 2 - Conceptos Fundamentales
Esta aplicación te guiará a través de los conceptos fundamentales de la programación en Java, cubriendo:
Diagrama conceptual de programación estructurada
Para empezar a programar en Java, necesitamos entender la estructura básica de un programa. Todo programa
Java comienza con una clase y un método main.
// Primer programa en Java: Hola Mundo
public class Main {
public static void main(String[] args) {
System.out.println("Hola Mundo!");
}
}
Ejemplo práctico: Tabla de multiplicar del 4
public class Main {
public static void main(String[] args) {
System.out.println("Tabla de Multiplicar del 4");
System.out.println("--------------------------");
System.out.println("4x1= " + 4);
System.out.println("4x2= " + 8);
System.out.println("4x3= " + 12);
System.out.println("4x4= " + 16);
System.out.println("4x5= " + 20);
System.out.println("4x6= " + 24);
System.out.println("4x7= " + 28);
System.out.println("4x8= " + 32);
System.out.println("4x9= " + 36);
System.out.println("4x10= " + 40);
}
}
Una variable es un espacio de almacenamiento que se utiliza para almacenar datos que pueden ser modificados durante el uso de un programa.
boolean - true o falsebyte - números pequeñosint - números enteroslong - números enteros grandesfloat - decimales de precisión simpledouble - decimales de doble precisiónchar - un único carácterString - texto (tipo complejo)public class Main {
public static void main(String[] args) {
// Declaración de variables
boolean esVerdadero = true;
byte numeroPequeno = 100;
int numeroEntero = 100000;
float numeroDecimal = 10.5f;
double numeroDoble = 10.5;
char letra = 'A';
String texto = "Hola, mundo!";
// Ejemplo práctico: Temperatura
String mensaje = "La temperatura máxima en Oviedo es: ";
double temperatura = 21.5;
System.out.println(mensaje + temperatura + "ºC");
}
}
Un operador es un símbolo que indica al ordenador que realice una operación matemática, lógica o de manipulación de datos específica.
+ suma- resta* multiplicación/ división% módulo (resto de una división)++ incremento (aumenta en 1)-- decremento (disminuye en 1)! negación lógica= asignación+= suma y asignación-= resta y asignación*= multiplicación y asignación/= división y asignación== igual a!= no igual a> mayor que< menor que>= mayor o igual que<= menor o igual que&& AND lógico|| OR lógico! NOT lógicopublic class Main {
public static void main(String[] args) {
// Operadores aritméticos
int a = 10;
int b = 5;
int suma = a + b; // 15
int resta = a - b; // 5
int mult = a * b; // 50
int divide = a / b; // 2
int modulo = a % b; // 0
// Operadores de asignación
a += 5; // a = a + 5 = 15
a -= 3; // a = a - 3 = 12
// Operadores relacionales
boolean mayor = (a > b); // true
boolean igual = (a == b); // false
// Operadores lógicos
boolean resultado1 = true && false; // false
boolean resultado2 = true || false; // true
boolean resultado3 = !true; // false
System.out.println("Suma: " + suma);
System.out.println("Mayor: " + mayor);
}
}
El casting es el proceso de convertir un valor de un tipo de dato a otro.
public class Main {
public static void main(String[] args) {
// CASTING IMPLÍCITO
int numeroEntero = 100;
long numeroLargo = numeroEntero; // Automático
double numeroDecimal = numeroEntero; // Automático
System.out.println("Número entero: " + numeroEntero);
System.out.println("Número largo: " + numeroLargo);
System.out.println("Número decimal: " + numeroDecimal);
// CASTING EXPLÍCITO
double decimal = 9.78;
int entero = (int) decimal; // Manual - pierde decimales
System.out.println("Número decimal: " + decimal); // 9.78
System.out.println("Número entero: " + entero); // 9
}
}
Un IDE es un entorno de desarrollo integrado que proporciona herramientas completas para desarrollar software.
Los comentarios son fragmentos de texto que el compilador ignora. Sirven para documentar el código.
public class Main {
public static void main(String[] args) {
// Comentario de una sola línea
int numero = 10; // También puede ir al final
/*
* Comentario de múltiples líneas.
* Se puede utilizar para describir
* secciones del código.
*/
System.out.println(numero);
}
/**
* Suma dos números enteros.
* @param a El primer número a sumar
* @param b El segundo número a sumar
* @return La suma de a y b
*/
public static int sumar(int a, int b) {
return a + b;
}
}
// - Comentario de una línea/* */ - Comentario de múltiples líneas/** */ - Javadoc (documentación)
Visualización de estructuras de control en Java
Las estructuras condicionales permiten ejecutar diferentes bloques de código dependiendo de si una condición se evalúa como verdadera o falsa.
public class Main {
public static void main(String[] args) {
// IF simple
int numero = 10;
if (numero > 5) {
System.out.println("El número es mayor que 5");
}
// IF-ELSE
int numero2 = 4;
if (numero2 > 5) {
System.out.println("El número es mayor que 5");
} else {
System.out.println("El número es menor o igual que 5");
}
// IF-ELSE-IF
int numero3 = 7;
if (numero3 > 10) {
System.out.println("El número es mayor que 10");
} else if (numero3 > 5) {
System.out.println("Mayor que 5 pero menor o igual a 10");
} else {
System.out.println("El número es menor o igual que 5");
}
// SWITCH
int dia = 3;
switch (dia) {
case 1:
System.out.println("Lunes");
break;
case 2:
System.out.println("Martes");
break;
case 3:
System.out.println("Miércoles");
break;
default:
System.out.println("Día no válido");
break;
}
}
}
Los bucles permiten ejecutar repetidamente un bloque de código mientras se cumple una condición.
public class Main {
public static void main(String[] args) {
// Bucle FOR
System.out.println("Bucle FOR:");
for (int i = 0; i < 5; i++) {
System.out.println("Iteración: " + i);
}
// Bucle WHILE
System.out.println("\nBucle WHILE:");
int i = 0;
while (i < 5) {
System.out.println("Iteración: " + i);
i++;
}
// Bucle DO-WHILE
System.out.println("\nBucle DO-WHILE:");
int j = 0;
do {
System.out.println("Iteración: " + j);
j++;
} while (j < 5);
}
}
Permiten alterar el flujo normal de ejecución de manera abrupta.
public class Main {
public static void main(String[] args) {
// BREAK - Sale del bucle cuando i es igual a 5
System.out.println("Ejemplo BREAK:");
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Sale del bucle
}
System.out.println("Iteración: " + i);
}
// CONTINUE - Omite las iteraciones cuando i es par
System.out.println("\nEjemplo CONTINUE:");
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // Salta a la siguiente iteración
}
System.out.println("Iteración impar: " + i);
}
// RETURN - Devuelve un valor desde un método
int resultado = sumar(10, 5);
System.out.println("\nLa suma es: " + resultado);
}
public static int sumar(int a, int b) {
return a + b; // Devuelve la suma de a y b
}
}
Una función es un bloque de código reutilizable que realiza una tarea específica.
public class Main {
public static void main(String[] args) {
// Llamar función sin parámetros y sin retorno
imprimirMensaje();
// Llamar función con parámetros y con retorno
int resultado = sumar(10, 5);
System.out.println("La suma es: " + resultado);
// Llamar función con parámetros y sin retorno
imprimirSaludo("Carlos");
}
// Función sin parámetros y sin retorno
public static void imprimirMensaje() {
System.out.println("¡Bienvenido al curso de Java!");
}
// Función con parámetros y con retorno
public static int sumar(int a, int b) {
return a + b;
}
// Función con parámetros y sin retorno
public static void imprimirSaludo(String nombre) {
System.out.println("Hola, " + nombre + "!");
}
}
La recursividad es una técnica donde una función se llama a sí misma para resolver problemas más pequeños del mismo tipo.
public class Main {
public static void main(String[] args) {
// Factorial recursivo
int numero = 5;
int resultadoFactorial = factorial(numero);
System.out.println("El factorial de " + numero + " es: " +
resultadoFactorial);
// Fibonacci recursivo
int n = 10;
int resultadoFib = fibonacci(n);
System.out.println("El término " + n + " de Fibonacci es: " +
resultadoFib);
}
// Función recursiva para calcular el factorial
public static int factorial(int n) {
if (n == 0) {
return 1; // Condición base
} else {
return n * factorial(n - 1); // Llamada recursiva
}
}
// Función recursiva para calcular Fibonacci
public static int fibonacci(int n) {
if (n <= 1) {
return n; // Condiciones base
} else {
return fibonacci(n - 1) + fibonacci(n - 2); // Llamadas recursivas
}
}
// Versión ITERATIVA del factorial (para comparar)
public static int factorialIterativo(int n) {
int resultado = 1;
for (int i = 1; i <= n; i++) {
resultado *= i;
}
return resultado;
}
}
Las palabras reservadas son identificadores predefinidos que tienen un significado especial para el compilador de Java.
boolean, byte, char, double, float, int, long, short, void
if, else, switch, case, default, while, do, for, break, continue, return
public, private, protected, static, final, abstract
class, interface, extends, implements, new, this, super
import, package, null, instanceof, try, catch, finally, throw, throws
El pseudocódigo es una descripción de alto nivel de un algoritmo que combina lenguaje natural con estructuras de programación.
Proceso NombreProceso
acción 1;
acción 2;
...
acción n;
FinProceso
Elementos Comunes:
/*
PSEUDOCÓDIGO - Calcular potencia:
ALGORITMO CalcularPotencia
ENTRADA: base (entero), exponente (entero)
SALIDA: resultado (entero)
SI exponente = 0 ENTONCES
resultado <- 1
SINO
resultado <- 1
PARA i <- 1 HASTA exponente HACER
resultado <- resultado * base
FIN PARA
FIN SI
DEVOLVER resultado
FIN ALGORITMO
*/
// CÓDIGO JAVA equivalente:
public class Main {
public static void main(String[] args) {
int resultado = potencia(2, 3);
System.out.println("Resultado: " + resultado);
}
public static int potencia(int base, int exponente) {
if (exponente == 0) {
return 1;
} else {
int resultado = 1;
for (int i = 1; i <= exponente; i++) {
resultado *= base;
}
return resultado;
}
}
}
public class Main { public static void main(String[] args) { } }System.out.println() imprime con salto de línea"texto")+int x = (int) 9.78; → resultado: 9// comentario/* comentario *//** documentación */public static tipoRetorno nombre(parametros) { }main