Saltar a contenido

Semana 2 - ¿Qué es la programación?

La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas de computadora. En esencia, es el acto de darle instrucciones a una computadora para que realice tareas específicas.

Elementos clave de la programación:

  • Algoritmos: Secuencia de pasos lógicos para resolver un problema.
  • Lenguajes de programación: Herramientas que usamos para escribir instrucciones que la computadora puede entender y ejecutar.
  • Sintaxis: Reglas que definen cómo se debe escribir el código en un lenguaje específico.
  • Lógica: La forma de pensar y estructurar soluciones a problemas.

Importancia de la programación:

  • Automatización de tareas repetitivas
  • Resolución de problemas complejos
  • Innovación tecnológica
  • Desarrollo de software para diversas industrias (medicina, finanzas, entretenimiento, etc.)

¿Qué es la lógica de programación?

La lógica de programación es el conjunto de conceptos y técnicas fundamentales que se utilizan para desarrollar algoritmos y resolver problemas mediante el uso de un lenguaje de programación. Incluye:

  1. Secuencia: Ordenar las instrucciones de manera lógica.
  2. Condicionales: Tomar decisiones basadas en condiciones (if-else).
  3. Bucles: Repetir acciones (for, while).
  4. Variables: Almacenar y manipular datos.
  5. Funciones: Organizar código en bloques reutilizables.
  6. Estructuras de datos: Organizar información (arrays, listas, etc.).
  7. Operadores: Realizar operaciones matemáticas y lógicas.
  8. Entrada/Salida: Interactuar con el usuario o archivos.

Dominar estos conceptos permite crear programas eficientes y resolver problemas complejos de manera estructurada.

¿Qué es un algoritmo?

Un algoritmo es una secuencia ordenada y finita de pasos o instrucciones bien definidas que se utilizan para resolver un problema o realizar una tarea específica. En esencia, es un procedimiento paso a paso para lograr un resultado deseado.

Características principales de un algoritmo:

  1. Precisión: Cada paso debe estar claramente definido.
  2. Finito: Debe tener un número limitado de pasos.
  3. Entrada: Puede tener cero o más entradas.
  4. Salida: Debe producir al menos un resultado.
  5. Eficacia: Debe ser capaz de resolver el problema en un tiempo razonable.

Los algoritmos se utilizan en muchos campos, no solo en programación. Por ejemplo, una receta de cocina es un tipo de algoritmo. En informática, los algoritmos son la base para desarrollar programas y software.

Ejemplos de algoritmos comunes incluyen:

  • Algoritmos de búsqueda (búsqueda binaria, búsqueda lineal)
  • Algoritmos de ordenamiento (quicksort, bubble sort)
  • Algoritmos de compresión de datos
  • Algoritmos de encriptación

Introducción a Java

Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos y basado en clases que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible.

Historia de Java:

  • Desarrollado por James Gosling en Sun Microsystems (ahora propiedad de Oracle)
  • Lanzado inicialmente en 1995
  • Inspirado en C y C++, pero con un modelo de objetos más simple y eliminando características de bajo nivel

Características principales de Java:

  • Independencia de la plataforma: "Write Once, Run Anywhere" (WORA)
  • Orientado a objetos (aunque no lo cubriremos en este curso básico)
  • Fuertemente tipado
  • Recolección de basura automática
  • Amplia biblioteca estándar
  • Soporte para concurrencia

Áreas de aplicación de Java:

  • Desarrollo de aplicaciones de escritorio
  • Aplicaciones web
  • Aplicaciones móviles (Android)
  • Sistemas embebidos
  • Aplicaciones empresariales a gran escala

Por qué Java es bueno para aprender programación

Java es un excelente lenguaje para aprender programación por varias razones:

a) Sintaxis clara y legible: Java tiene una sintaxis relativamente sencilla y clara, lo que facilita la lectura y escritura de código, especialmente para principiantes.

b) Amplia adopción: Java es uno de los lenguajes de programación más populares en el mundo, lo que significa que hay una gran cantidad de recursos de aprendizaje disponibles.

c) Versatilidad: Puedes usar Java para una amplia variedad de aplicaciones, desde programas de consola simples hasta aplicaciones web complejas.

d) Fundamentos sólidos: Aprender Java proporciona una base sólida en conceptos de programación que son transferibles a otros lenguajes.

e) Gestión de memoria: Java maneja automáticamente la asignación y liberación de memoria, lo que permite a los principiantes concentrarse en la lógica de programación sin preocuparse por la gestión manual de memoria.

Configuración del entorno de desarrollo Java

Instalación del Java Development Kit (JDK)

El JDK es esencial para desarrollar aplicaciones Java. Incluye el compilador Java, la máquina virtual Java (JVM) y otras herramientas útiles.

Pasos para instalar el JDK:

a) Descarga:

b) Instalación:

  • Windows: Ejecuta el instalador descargado y sigue las instrucciones
  • macOS: Abre el archivo .dmg y sigue las instrucciones
  • Linux: Usa el gestor de paquetes de tu distribución o descomprime el archivo tar.gz

c) Configuración de variables de entorno:

  • Windows:
    • Busca "Editar las variables de entorno del sistema"
    • Añade JAVA_HOME apuntando al directorio de instalación del JDK
    • Añade %JAVA_HOME%\bin al PATH
  • macOS/Linux:
    • Edita ~/.bash_profile o ~/.zshrc
    • Añade: export JAVA_HOME=/ruta/al/jdk
    • Añade: export PATH=$JAVA_HOME/bin:$PATH

d) Verificación:

  • Abre una terminal o símbolo del sistema
  • Ejecuta: java -version
  • Deberías ver la información de la versión de Java instalada
Eclipse Logo

Eclipse

A powerful IDE for Java development.

IntelliJ IDEA Logo

IntelliJ IDEA

The Capable & Ergonomic Java IDE.

NetBeans Logo

NetBeans

An IDE for Java, PHP, C, and C++ developers.

Visual Studio Code Logo

Visual Studio Code

A lightweight but powerful source code editor.

Visual Studio Code (VS Code) y Java

Visual Studio Code (VS Code) es un editor de código muy popular y versátil que funciona genial con Java. Aquí te presento una guía para configurarlo y comenzar a programar en Java:

Instalar VS Code:

  • Descarga VS Code desde su sitio web oficial: https://code.visualstudio.com/
  • Sigue las instrucciones del instalador para tu sistema operativo (Windows, macOS, Linux).

Instalar Java Development Kit (JDK):

  • El JDK es esencial para compilar y ejecutar código Java. Puedes descargarlo desde Oracle: https://www.oracle.com/co/java/technologies/downloads/
  • Asegúrate de elegir la versión correcta para tu sistema operativo.
  • Durante la instalación, asegúrate de agregar Java al PATH de tu sistema para que VS Code pueda encontrarlo.

Instalar la Extensión de Java para VS Code:

  • Abre VS Code.
  • En la barra lateral izquierda, haz clic en el icono de extensiones (o presiona Ctrl + Shift + X).
  • Busca "Extension Pack for Java" y haz clic en "Instalar".

Configurar un Proyecto Java:

Escribir tu Primer Código Java:

public class HolaMundo {
    public static void main(String[] args) {
        System.out.println("¡Hola, mundo!");
    }
}

Compilar y Ejecutar tu Código:

  • Compilar: Puedes compilar tu código Java de varias maneras:
    • Desde la terminal integrada: Abre la terminal integrada de VS Code (Ctrl + ) y ejecutajavac HolaMundo.java`.
    • Usando la extensión de Java: VS Code debería detectar automáticamente el archivo Java y ofrecerte la opción de compilarlo.
  • Ejecutar:
    • Desde la terminal integrada: Ejecuta java HolaMundo.
    • Usando la extensión de Java: VS Code debería detectar la clase compilada (HolaMundo.class) y ofrecerte la opción de ejecutarla.

Características Adicionales de VS Code para Java:

  • Completado de código (IntelliSense): La extensión de Java proporciona sugerencias de código, autocompletado y verificación de errores en tiempo real.
  • Depuración: VS Code te permite depurar tu código Java paso a paso para encontrar errores.
  • Refactorización: Puedes renombrar variables, métodos y clases, y VS Code hará los cambios necesarios en todo tu código.
  • Integración con Git: VS Code está integrado con Git, lo que facilita el control de versiones de tu código.

Estructura de un programa en Java

Ejemplo de la estructura de un programa en Java con comentarios documentados para cada sección:

package com.example.miproyecto;  // Declaración del paquete

import java.util.Scanner;  // Importación de paquetes

/**
 * Este es un ejemplo de programa en Java.
 * Imprime un mensaje de saludo con el nombre y la edad de una persona.
 */
public class MiPrograma {  // Declaración de la clase

    /**
     * El método principal, punto de entrada para la ejecución del programa.
     * @param args Los argumentos de línea de comandos (no se utilizan en este ejemplo).
     */
    public static void main(String[] args) {
        // Declaración de variables
        int edad = 25;
        String nombre = "Juan";

        // Código del programa
        System.out.println("Hola, " + nombre + ". Tienes " + edad + " años.");
    }
}

En este ejemplo, se sigue la estructura básica de un programa en Java con comentarios documentados que explican cada sección:

  • package com.example.miproyecto;: Se declara el paquete al que pertenece el programa. En este caso, el paquete es "com.example.miproyecto".

  • import java.util.Scanner;: Se importa el paquete java.util y la clase Scanner para poder utilizarla en el programa. El Scanner se utiliza para leer la entrada del usuario.

  • public class MiPrograma : Se declara la clase principal del programa llamada MiPrograma. La palabra clave public indica que la clase es accesible desde cualquier otro lugar.

  • public static void main(String[] args) : Se define el método principal main, que es el punto de entrada del programa. Recibe un array de cadenas args como argumento, que puede ser utilizado para pasar argumentos desde la línea de comandos.

  • int edad = 25;: Se declara una variable edad de tipo entero y se le asigna el valor 25.

  • String nombre = "Juan";: Se declara una variable nombre de tipo cadena y se le asigna el valor "Juan".

  • System.out.println("Hola, " + nombre + ". Tienes " + edad + " años.");: Se utiliza System.out.println() para imprimir un mensaje de saludo en la consola. La cadena se forma concatenando las variables nombre y edad utilizando el operador de suma (+).

Declaración variables.

En Java, la declaración y asignación de variables es una de las tareas más básicas y esenciales para escribir cualquier programa. En esencia, una variable es un espacio en la memoria del ordenador reservado para almacenar un valor específico. La declaración de una variable es simplemente la creación de un espacio en la memoria para almacenar el valor que se asignará a la variable más adelante.

La sintaxis para declarar una variable en Java es la siguiente:

tipoDato nombreVariable;

Donde tipoDato es el tipo de dato que se almacenará en la variable y nombreVariable es el nombre que se le dará a la variable.

Por ejemplo, si quisiéramos declarar una variable de tipo entero llamada "edad", la sintaxis sería la siguiente:

int edad;

Una vez que se ha declarado una variable, se puede asignar un valor a la variable utilizando el operador de asignación "=".

Por ejemplo, para asignar un valor de 25 a la variable "edad", se utiliza la siguiente sintaxis:

edad = 25;

También es posible declarar y asignar valores a una variable en la misma línea de código. Por ejemplo, para declarar y asignar un valor de 3.14 a una variable de tipo "double" llamada "pi", se utilizaría la siguiente sintaxis:

double pi = 3.14;

Es importante tener en cuenta que los nombres de las variables deben seguir las reglas de identificación de Java y ser descriptivos del valor que se va a almacenar en ellas. Además, una vez que se ha declarado una variable, se puede utilizar en cualquier lugar del programa siempre y cuando se haya asignado un valor a ella. Si se intenta utilizar una variable que no ha sido declarada previamente, se generará un error de compilación.

Identificadores

En Java, hay convenciones y buenas prácticas para crear identificadores de variables, constantes, métodos y clases con el fin de hacer que el código sea más fácil de leer y entender. Algunas de estas convenciones y buenas prácticas son las siguientes:

  • Los nombres de variables deben comenzar con una letra minúscula. Si el nombre está compuesto por varias palabras, la primera letra de cada palabra debe ser mayúscula, excepto la primera palabra. Por ejemplo, "nombreDeVariable".

  • Los nombres de las constantes deben estar completamente en mayúsculas. Si el nombre está compuesto por varias palabras, se deben separar con guiones bajos. Por ejemplo, "CONSTANTE_DE_EJEMPLO".

  • Los nombres de las clases deben comenzar con una letra mayúscula, y si el nombre está compuesto por varias palabras, la primera letra de cada palabra debe ser mayúscula. Por ejemplo, "ClaseDeEjemplo".

  • Los nombres de los métodos deben comenzar con una letra minúscula, y si el nombre está compuesto por varias palabras, la primera letra de cada palabra debe ser mayúscula. Por ejemplo, "metodoDeEjemplo()".

  • Los nombres de las variables deben ser descriptivos y deben indicar el propósito de la variable. Por ejemplo, "nombre", "edad", "numeroDeEjemplo".

  • Los nombres de los métodos deben indicar claramente lo que hace el método. Por ejemplo, "calcularPromedio()", "imprimirMensaje()", "obtenerResultado()".

  • Los nombres de las clases deben ser sustantivos y deben reflejar el propósito de la clase. Por ejemplo, "Persona", "Libro", "Automovil".

  • Es recomendable evitar el uso de abreviaturas en los nombres de variables, constantes, métodos y clases, a menos que sean ampliamente conocidas y entendidas por otros programadores.

  • Es recomendable seguir un estilo consistente en todo el código, para que sea más fácil de leer y entender.

Estilos de convención de codificación.

CamelCase (lowerCamelCase o mixedCase)

  • En CamelCase, la primera letra de la primera palabra se escribe en minúscula y las primeras letras de las palabras subsiguientes se escriben en mayúscula.
  • No se utilizan espacios ni guiones.

Ejemplo: miVariable, calcularSuma, nombreCompleto.

PascalCase (UpperCamelCase o StudlyCase)

  • En PascalCase, la primera letra de cada palabra se escribe en mayúscula, incluida la primera palabra.
  • No se utilizan espacios ni guiones.

Ejemplo: MiClase, CalcularPromedio, MetodoPrincipal.

Snake_case

  • En Snake_case, las palabras se escriben en minúscula y se separan mediante guiones bajos.

Ejemplo: mi_variable, calcular_suma, nombre_completo.

Este estilo es comúnmente utilizado en lenguajes como Python.

4. Kebab-case

  • En Kebab-case, las palabras se escriben en minúscula y se separan mediante guiones medios.

Ejemplo: mi-variable, calcular-suma, nombre-completo.

Este estilo es menos común en la convención de codificación, pero se utiliza en algunos lenguajes y sistemas.

Tipos de Datos Primitivos:

Estos son tipos de datos básicos directamente soportados por el lenguaje.

Tipo de Dato Descripción Tamaño (bits) Rango
byte Entero con signo 8 -128 a 127
short Entero con signo 16 -32,768 a 32,767
int Entero con signo 32 -2,147,483,648 a 2,147,483,647
long Entero con signo 64 -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
float Número de punto flotante de precisión simple 32 ±3.4028235E+38
double Número de punto flotante de precisión doble 64 ±1.7976931348623157E+308
boolean Valor booleano (true o false) 1 true o false
char Caracter Unicode 16 \u0000 a \uffff

Tipos de datos no primitivos.

Además de los tipos de datos primitivos en Java, existen también tipos de datos no primitivos que se utilizan para almacenar información más compleja. Algunos ejemplos de tipos de datos no primitivos son:

String

Este tipo de dato se utiliza para almacenar cadenas de texto. Es un tipo de datos que no es primitivo, pero se utiliza con mucha frecuencia en la programación. Se declara utilizando la palabra clave "String" seguida del nombre de la variable y su valor entre comillas dobles. Por ejemplo:

String nombre = "Juan";

Arrays

Este tipo de dato se utiliza para almacenar una colección de valores del mismo tipo de dato. Se puede declarar un array utilizando la sintaxis siguiente:

tipoDato[] nombreArray = new tipoDato[tamaño];

Donde tipoDato es el tipo de datos que se almacenará en el array, nombreArray es el nombre que se le dará al array y tamaño es el número de elementos que se almacenarán en el array. Por ejemplo, para declarar un array de tipo int llamado "edades" que contiene tres elementos, se utilizaría la siguiente sintaxis:

int[] edades = new int[3];

Objetos

(POO) Los objetos son instancias de una clase y se utilizan para almacenar información más compleja. Una clase es un tipo de dato personalizado que define las propiedades y métodos de un objeto. Para declarar un objeto, primero se debe crear una instancia de la clase utilizando la palabra clave "new", seguida del nombre de la clase y sus argumentos (si los tiene). Por ejemplo, si se tiene una clase llamada "Persona" que tiene propiedades como nombre, edad y altura, se puede crear una instancia de esa clase de la siguiente manera:

Persona persona1 = new Persona("Juan", 25, 1.75);

Es importante tener en cuenta que los tipos de datos no primitivos son más complejos que los tipos de datos primitivos, y su uso puede requerir conocimientos avanzados de programación.

Imprimir y capturar datos por consola

Imprimir datos por consola

Para imprimir datos por consola en Java, se utiliza la clase System y su método out.println(). Aquí tienes una explicación de cómo funciona:

  • La clase System: Es una clase integrada en Java que proporciona acceso a varios recursos y funcionalidades del sistema. Para imprimir datos por consola, utilizamos el atributo out de la clase System, que es una instancia de la clase PrintStream.

  • El método println(): Es un método de la clase PrintStream que se utiliza para imprimir una línea de texto en la consola. Toma como argumento el valor que deseas imprimir y lo muestra en la salida estándar.

A continuación, se muestra un ejemplo básico de cómo imprimir datos por consola en Java:

public class ImprimirDatos {
    public static void main(String[] args) {
        int edad = 25;
        String nombre = "Juan";

        System.out.println("Mi nombre es " + nombre);
        System.out.println("Tengo " + edad + " años");
    }
}

En este ejemplo, se utilizan dos llamadas al método println() para imprimir información en la consola. La primera línea imprime el texto "Mi nombre es " seguido del valor de la variable nombre. La segunda línea imprime el texto "Tengo ", seguido del valor de la variable edad, seguido del texto " años".

Capturar datos por consola

Para capturar datos por consola en Java, se utiliza la clase Scanner. Aquí tienes una explicación de cómo funciona:

  • La clase Scanner: Es una clase integrada en Java que se utiliza para leer la entrada del usuario desde la consola. Proporciona métodos para leer diferentes tipos de datos, como enteros, números de punto flotante, cadenas, etc.

  • Crear un objeto Scanner: Para capturar datos por consola, primero debes crear un objeto Scanner y asociarlo con la entrada estándar (System.in). Esto se hace de la siguiente manera:

import java.util.Scanner;

public class CapturarDatos {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Ingrese su nombre: ");
        String nombre = scanner.nextLine();

        System.out.print("Ingrese su edad: ");
        int edad = scanner.nextInt();

        System.out.println("Hola, " + nombre + ". Tienes " + edad + " años.");

        scanner.close();
    }
}

Concatenar cadenas de texto

En Java, puedes concatenar cadenas de texto utilizando el operador de suma (+) o el método concat(). Aquí tienes ejemplos de ambos enfoques:

  • Operador de suma (+):
String cadena1 = "Hola";
String cadena2 = "mundo";

String resultado = cadena1 + " " + cadena2;
System.out.println(resultado);

En este ejemplo, se utilizan el operador de suma (+) y espacios en blanco para concatenar las cadenas cadena1 y cadena2. El resultado se asigna a la variable resultado y se imprime en la consola. La salida será: "Hola mundo".

  • Método concat():
String cadena1 = "Hola";
String cadena2 = "mundo";

String resultado = cadena1.concat(" ").concat(cadena2);
System.out.println(resultado);

En este ejemplo, se utiliza el método concat() para concatenar las cadenas cadena1 y cadena2. El método concat() combina la cadena actual con la cadena especificada como argumento y devuelve una nueva cadena resultante. El resultado se asigna a la variable resultado y se imprime en la consola. La salida será: "Hola mundo".

Ambos enfoques producen el mismo resultado de concatenación. Puedes elegir el que te resulte más conveniente en tu código.

Declaración de constantes

En Java se utilizan las constantes para declarar valores fijos que no cambian durante la ejecución de un programa.

Algunas características de las constantes en Java:

  • Se declaran con la palabra reservada final. Esto hace que su valor no pueda ser modificado después.
  • Por convención los nombres de las constantes se escriben en MAYÚSCULAS y separando palabras con guion bajo "_" . Por ejemplo:
final double PI = 3.1416;

final int DIAS_SEMANA = 7;
  • El tipo de dato de la constante debe ser el adecuado para el valor que almacena. Por ejemplo, 3.1416 es double y 7 es int.
  • Las constantes pueden ser locales a un método o declaradas a nivel de clase (estáticas) para ser accesibles por todos los métodos.
  • Se puede utilizar cualquier tipo de dato para una constante: numéricos, cadena de texto, booleanos, etc.
  • Las constantes hacen el código más legible y mantenible al evitar valores literales.