Programación Estructurada & POO

Funciones, Procedimientos y Métodos

Análisis comparativo de subprogramas en Java, C, JavaScript y Python.

SLIDE 1 / 6

1. Funciones Puras vs Procedimientos

Un subprograma puede comportarse como una función pura (evalúa entrada y retorna resultado) o como un procedimiento (realiza acciones con efectos secundarios).

Función Pura: Sin efectos secundarios. Mismo input produce siempre mismo output.
Procedimiento (void): Modifica estado externo, imprime pantalla o escribe bases de datos sin retornar valor.
RETORNOS SEGÚN EL LENGUAJE
Java / Cvoid
JavaScriptundefined
PythonNone

2. Sintaxis y Modificadores

  • Java: public static int sumar(int a, int b)
  • C: int sumar(int a, int b)
  • JavaScript: function sumar(a, b) / const sumar = (a, b) => a + b
  • Python: def sumar(a: int, b: int) -> int:
Methods.java
public class Operaciones {
    // Método de clase (Estático)
    public static int multiplicar(int x, int y) {
        return x * y;
    }
    
    // Procedimiento (void)
    public static void saludar(String nombre) {
        System.out.println("Hola " + nombre);
    }
}

3. Métodos Estáticos vs de Instancia

Estáticos (Class Methods): Pertencen a la clase. Se invocan sin instanciar (`Math.max()`).
De Instancia: Operan sobre el estado interno del objeto (`this` en Java/JS, `self` en Python).
Car.java
public class Car {
    private int speed;

    // Método de instancia
    public void accelerate(int increment) {
        this.speed += increment;
    }
}

4. Sobrecarga y Parámetros por Defecto

Java resuelve sobrecarga en compilación por tipos de parámetros. JS y Python usan parámetros por defecto y variádicos (*args, ...rest).

default_params.py
def saludar(nombre, mensaje="Bienvenido"):
    return f"{mensaje}, {nombre}!"

print(saludar("Ana")) # Bienvenido, Ana!
print(saludar("Ana", "Hola")) # Hola, Ana!

5. Retornos Múltiples y Tuplas

En C y Java una función solo retorna un único valor primitivo u objeto. Python y JS permiten desestructurar tuplas y arreglos.

destructure.js
// Retorno de múltiples valores mediante desestructuración
function getCoords() {
    return [10.5, 40.2];
}

const [lat, lng] = getCoords();

6. Playground Interactivo de Métodos

Seleccioná un patrón de subprograma para evaluar en los 4 lenguajes:

Java
public static int add(int a, int b) { return a + b; }
C
int add(int a, int b) { return a + b; }
JavaScript
const add = (a, b) => a + b;
Python
def add(a: int, b: int) -> int: return a + b