Este repositorio contiene la resolución de los ejercicios prácticos del módulo de Introducción a Java. Los ejercicios abarcan desde la sintaxis básica hasta la manipulación de arreglos y creación de subprogramas.
Java es un lenguaje de programación de alto nivel y tipado estático. Esto significa que todas las variables deben ser declaradas antes de ser utilizadas y no se puede cambiar su tipo de dato dinámicamente. A continuación, un resumen de los conceptos teóricos aplicados en estos ejercicios:
Las variables son espacios de memoria, similares a pequeñas cajas, que guardan información en su interior.
- Declaración: Deben declararse indicando su tipo de dato seguido de su nombre (ej.
<tipo_de_dato> <nombre_variable>;). - Tipos Primitivos: Son aquellos predefinidos por el lenguaje. Incluyen
byte,short,int,long,float,double,booleanychar. - Clase String: Aunque técnicamente es un objeto inmutable, Java le da un soporte especial para manejar cadenas de caracteres como si fuera un tipo primitivo.
- Aritméticos: Suma (
+), Resta (-), Multiplicación (*), División (/) y Módulo (%). - Relacionales: Igualdad (
==), Distinto (!=), Mayor que (>), Menor que (<), etc. - Lógicos: AND (
&&), OR (||) y Negación (!).
Las estructuras de control modifican el flujo de ejecución lineal del programa.
- if / else: Ejecuta un bloque de código si la condición lógica evaluada es verdadera (
true); en caso contrario, puede ejecutar un bloque alternativo (else). - switch: Evalúa el valor de una variable y ejecuta las sentencias del bloque
caseque coincida con dicho valor. Si no hay coincidencias, ejecuta el bloquedefault.
- while: Ejecuta instrucciones mientras se cumpla una condición, la cual se evalúa antes de iniciar la iteración.
- do/while: Similar al
while, pero evalúa la condición al final del bloque, garantizando que el código se ejecute al menos una vez. - for: Utilizado cuando se conoce de antemano la cantidad exacta de veces que se repetirá un bloque de instrucciones. Posee inicialización, condición de terminación e incremento.
Se basan en la técnica de "divide y vencerás" para fragmentar un problema complejo en tareas más simples.
- Funciones: Bloques de código que reciben argumentos, realizan operaciones y retornan un valor específico mediante la instrucción
return. - Procedimientos: Son funciones que se ejecutan sin retornar ningún valor (su tipo de retorno es
void).
Contenedores de tamaño fijo que agrupan valores del mismo tipo de dato.
- Vectores: Arreglos unidimensionales.
- Matrices: Arreglos bidimensionales que requieren índices de fila y columna.
- Se instancian utilizando la palabra reservada
new.
- Scanner: Clase del paquete
java.utilempleada para leer la entrada de datos por teclado. - String: Provee métodos fundamentales para manipular texto, tales como
length(),equals(),substring()ytoUpperCase(). - Math: Ofrece herramientas matemáticas estáticas como
Math.random()para generar números aleatorios yMath.sqrt()para raíces cuadradas.
Los ejercicios resueltos en este repositorio cubren:
- Entrada y salida de datos por consola.
- Operaciones matemáticas condicionales y ciclos.
- Desarrollo de lógicas de validación (ej. dispositivos RS232).
- Creación y recorrido de matrices, incluyendo matrices transpuestas y comprobación de cuadrados mágicos.
Este proyecto tiene un valor especial para mí. Todos los ejercicios fueron resueltos hace unos años, antes del auge de las herramientas de IA generativa. Mi proceso de aprendizaje fue 100% manual y autodidacta, apoyándome en:
- Análisis profundo de la documentación.
- Horas de investigación en foros de programación.
- Tutoriales técnicos y videos educativos de YouTube.
Resolver estos desafíos "a código puro" me permitió cimentar las bases de la lógica de programación que utilizo hoy en día.
El material didáctico, la guía de estudio y los enunciados de los ejercicios pertenecen a Egg, la institución que brindó la base teórica para este módulo del curso de Programación Full Stack.
Lucas