¡Código - Código!

Lógica de Programación

Herramienta: Lógica de Programación

Framework: Otras

Persona Encargada: Ariel GonzAgüer

Creado: 2025-9-20

Última actualización: 2025-9-20

0. Lógica de programación

La lógica de programación es el conjunto de reglas, razonamientos y estructuras que permiten resolver problemas mediante instrucciones que una computadora puede entender y ejecutar.
Es la base para crear algoritmos: secuencias ordenadas de pasos que transforman datos de entrada en resultados deseados.

En otras palabras, la lógica de programación nos ayuda a pensar de manera estructurada y clara para que podamos comunicarle a la computadora qué hacer en diferentes situaciones.

Se puede expresar en cualquier lenguaje de programación, pues los conceptos son universales.

Algunos beneficios de practicarla

1. Control de flujo

El control de flujo es la base de la programación. Nos permite decidir qué bloques de código se ejecutan y cuántas veces lo hacen.

Condicionales: if, else if, else

Las sentencias condicionales evalúan una condición booleana (true o false) y ejecutan un bloque de código si la condición es verdadera.

Ejemplo (JavaScript):

// Ejemplo de condicionales
let edad = 17;

if (edad >= 18) {
  console.log('Puede votar y tramitar su licencia.');
} else if (edad >= 16) {
  console.log('Puede tramitar su licencia de conducir con un adulto.');
} else {
  console.log('Es menor de edad. No puede tramitar su licencia.');
}

Operador ternario: condición ? valorSiTrue : valorSiFalse

Este es un atajo para una sentencia if/else simple. Es ideal para asignar un valor a una variable basándose en una condición.

Ejemplo (JavaScript):

// Ejemplo de operador ternario
let tieneDinero = true;
let resultado = tieneDinero ? 'Puede comprar el helado.' : 'No puede comprar el helado.';
console.log(resultado);

Bucles: for, while, do…while

Los bucles se usan para ejecutar un bloque de código repetidamente.

Ejemplo (JavaScript):

// Ejemplo de bucles
// Bucle for: imprime los números del 0 al 4
for (let i = 0; i < 5; i++) {
  console.log(i);
}

// Bucle while: cuenta del 5 al 1
let contador = 5;
while (contador > 0) {
  console.log(contador);
  contador--;
}

break y continue

Ejemplo (JavaScript):

// Ejemplo de break y continue
for (let i = 0; i < 10; i++) {
  if (i === 3) {
    continue; // Salta la iteración cuando i es 3
  }
  if (i === 7) {
    break; // Termina el bucle cuando i es 7
  }
  console.log(i); // Imprime 0, 1, 2, 4, 5, 6
}

2. Operadores

Los operadores son símbolos especiales que nos permiten realizar operaciones con valores y variables.

Operadores matemáticos

Sirven para realizar cálculos.

Ejemplo (JavaScript):

// Ejemplo de operadores matemáticos
let resultado_math = 10 % 3; // El resultado es 1 (el resto de 10 / 3)
let potencia_math = 2 ** 3; // El resultado es 8 (2 * 2 * 2)

Operadores de comparación

Comparan dos valores y devuelven un booleano (true o false).

Ejemplo (JavaScript):

// Ejemplo de operadores de comparación
console.log(10 === '10'); // false (uno es número, el otro es string)
console.log(10 == '10'); // true (compara solo el valor, no el tipo) - ¡Es mejor usar ===!
console.log(5 > 3); // true

Operadores lógicos

Combinan o manipulan valores booleanos.

Ejemplo (JavaScript):

// Ejemplo de operadores lógicos
let tieneBoleto = true;
let esMayorDeEdad = false;
let puedeEntrar = tieneBoleto && esMayorDeEdad; // false
console.log(puedeEntrar);

let esDiaLibre = true;
let haceBuenTiempo = true;
let podemosSalir = esDiaLibre || haceBuenTiempo; // true
console.log(podemosSalir);

Operadores de asignación

Asignan un valor a una variable.

Ejemplo (JavaScript):

// Ejemplo de operadores de asignación
let puntos = 10;
puntos += 5; // puntos ahora es 15
puntos *= 2; // puntos ahora es 30
console.log(puntos);

3. Arrays (Arreglos)

Un array es una estructura de datos que almacena una colección de elementos, que pueden ser de cualquier tipo.

Cómo recorrer arrays

Ejemplo (JavaScript):

// Ejemplo de recorrido de arrays
let frutas = ['manzana', 'banana', 'naranja'];

// Recorrer con for tradicional
for (let i = 0; i < frutas.length; i++) {
  console.log(`Fruta en el índice ${i}: ${frutas[i]}`);
}

// Recorrer con for...of (más simple)
for (const fruta of frutas) {
  console.log(fruta);
}

Métodos útiles de arrays

JavaScript tiene muchos métodos integrados en los arrays que facilitan su manipulación.

Ejemplo (JavaScript):

// Ejemplo de métodos de arrays
const numeros = [1, 2, 3, 4, 5];

// .map()
const numerosDuplicados = numeros.map(num => num * 2);
console.log(numerosDuplicados); // [2, 4, 6, 8, 10]

// .filter()
const numerosPares = numeros.filter(num => num % 2 === 0);
console.log(numerosPares); // [2, 4]

// .reduce()
const sumaTotal = numeros.reduce((acumulador, numeroActual) => acumulador + numeroActual, 0);
console.log(sumaTotal); // 15

// .some()
const tieneNumeroGrande = numeros.some(num => num > 4); // true (el 5 cumple la condición)
console.log(tieneNumeroGrande);

4. Strings (Cadenas de texto)

Una string es una secuencia de caracteres. Son inmutables, lo que significa que no se pueden modificar directamente, pero sus métodos le permiten crear nuevas strings a partir de ellas.

Propiedad .length y métodos comunes

Ejemplo (JavaScript):

// Ejemplo de métodos de strings
let saludo = 'Hola Mundo';

console.log(saludo.length); // 10
console.log(saludo.toLowerCase()); // "hola mundo"
console.log(saludo.includes('Mundo')); // true
console.log(saludo.slice(0, 4)); // "Hola"

let frase = 'El gato es un animal genial';
let palabras = frase.split(' ');
console.log(palabras); // ["El", "gato", "es", "un", "animal", "genial"]
let nuevaFrase = palabras.join('-');
console.log(nuevaFrase); // "El-gato-es-un-animal-genial"

Recorrer letra por letra

Puede usar un bucle for o for...of para iterar sobre cada carácter de la string.

Ejemplo (JavaScript):

// Ejemplo de recorrido de strings
let palabra = 'Presentación';

// Usando for...of
for (const letra of palabra) {
  console.log(letra); // Imprime 'P', 'r', 'e', 's', etc.
}

5. Funciones

Las funciones son bloques de código reutilizables que realizan una tarea específica. Nos ayudan a organizar el código y evitar la repetición.

Funciones normales y funciones flecha (arrow functions)

Ejemplo (JavaScript):

// Ejemplo de funciones
// Función normal
function sumar(a, b) {
  return a + b;
}

// Función flecha
const restar = (a, b) => {
  return a - b;
};

// Si la función flecha tiene una sola línea, se puede abreviar
const multiplicar = (a, b) => a * b;

console.log(sumar(5, 3)); // 8
console.log(multiplicar(5, 3)); // 15

Parámetros con valores por defecto y retorno de valores

Recursividad básica

La recursividad ocurre cuando una función se llama a sí misma para resolver un problema. Es útil para problemas que se pueden dividir en subproblemas más pequeños del mismo tipo. Es crucial tener un caso base que detenga la recursión para evitar un bucle infinito.

Ejemplo clásico: El cálculo de un factorial (n!).

Ejemplo (JavaScript):

// Ejemplo de recursividad (factorial)
function factorial(n) {
  // Caso base: si n es 0, la función termina y devuelve 1
  if (n === 0) {
    return 1;
  }
  // Paso recursivo: la función se llama a sí misma con un valor menor
  return n * factorial(n - 1);
}

console.log(factorial(4)); // 4 * 3 * 2 * 1 = 24

6. Algoritmos (pensar en pasos)

Un algoritmo es una secuencia de instrucciones para resolver un problema. Antes de escribir código, es fundamental pensar en la lógica.

1. Leer el enunciado y ejemplos

Comprenda exactamente lo que se le pide. ¿Qué entradas recibe? ¿Qué salida se espera?

Analice los ejemplos para entender el comportamiento deseado, incluyendo casos límite (como un array vacío o un número cero).

2. Dividir en pasos simples (pseudocódigo)

No piense en código, piense en lenguaje humano. Escriba la solución paso a paso.

Ejemplo: Si quiere encontrar el número más grande en un array.

  1. Cree una variable para guardar el número más grande. Inicie con el primer elemento del array.
  2. Recorra el array desde el segundo elemento.
  3. En cada elemento, pregunte si es más grande que el número que tiene guardado.
  4. Si es más grande, actualice su variable.
  5. Al final, devuelva la variable.

3. Traducir los pasos a código

Una vez que tiene el pseudocódigo, la traducción a un lenguaje de programación es mucho más sencilla.

Use los conceptos que hemos revisado: bucles para recorrer, condicionales para comparar, variables para guardar.

4. Probar con distintos casos

Pruebe su código con los ejemplos del enunciado.

Pruebe con casos límite que podrían fallar:

Esto asegura que su solución es robusta y funciona en todas las situaciones.

Encuentre acá un archivo con preguntas para practicar y
Encuentre acá las respuestas a esas preguntas.