Resumen de Comunicación Digital, Algoritmos y Tecnologías Educativas
Comunicación Digital, Algoritmos y Tecnologías Educativas: Guía Completa
Introducción
Los problemas de programación son ejercicios que requieren analizar una situación, diseñar una estrategia y expresar la solución mediante instrucciones precisas que una computadora pueda ejecutar. En este material nos enfocaremos en problemas aritméticos y de conteo comunes: contar números en rangos, pares e impares, dígitos, factores, múltiplos y factoriales. Cada problema incluye análisis, ejemplos y aplicaciones.
Definición: Un problema de programación es una tarea que puede resolverse mediante un algoritmo, es decir, una secuencia finita de pasos bien definidos.
Estructura general para abordar problemas
- Entender el enunciado y los datos de entrada.
- Determinar la salida esperada.
- Diseñar la estrategia (matemática o lógica).
- Especificar el algoritmo paso a paso.
- Probar con ejemplos y casos borde.
Buenas prácticas
- Validar entrada (enteros, rangos válidos).
- Considerar inclusive/exclusive en rangos.
- Manejar signos y cero explícitamente.
- Usar fórmulas cerradas cuando sea posible para eficiencia.
1) Contar enteros en un rango
Problema: Dado un número inicial $a$ y un número final $b$, contar cuántos enteros contiene el rango.
Análisis: Se requiere que el usuario ingrese $a$ y $b$, luego el sistema devuelve la cantidad de enteros en el rango.
Estrategia:
- Si el rango es inclusivo y $a\le b$, la cantidad es $$b - a + 1$$
- Si $a>b$, primero intercambiar o indicar rango inválido.
Ejemplo:
- Entrada $a = 3$, $b = 7$ -> Salida $$7 - 3 + 1 = 5$$ (números: $3,4,5,6,7$)
2) Contar números pares en un rango
Problema: Dado un rango $[a,b]$, obtener la cantidad de números pares que contiene.
Análisis: Se requiere $a$ y $b$, luego calcular cuántos pares hay.
Estrategia (fórmula cerrada):
- Contar hasta $b$ los pares: $$\left\lfloor\frac{b}{2}\right\rfloor$$
- Contar hasta $a-1$ los pares: $$\left\lfloor\frac{a-1}{2}\right\rfloor$$
- Resultado: $$\left\lfloor\frac{b}{2}\right\rfloor - \left\lfloor\frac{a-1}{2}\right\rfloor$$
Ejemplo:
- $a=3$, $b=8$ -> $$\left\lfloor\frac{8}{2}\right\rfloor - \left\lfloor\frac{2}{2}\right\rfloor = 4 - 1 = 3$$ (pares: $4,6,8$)
3) Contar números impares en un rango
Problema: Dado un rango $[a,b]$, obtener la cantidad de números impares que contiene.
Análisis: Similar al caso de pares.
Estrategia:
- Total de enteros: $$b - a + 1$$
- Impares = Total - Pares
- O usar análogo de la fórmula de pares sustituyendo divisiones por 2 con desplazamientos.
Ejemplo:
- $a=2$, $b=7$ -> Total $6$, Pares $3$ -> Impares $3$ (números: $3,5,7$)
4) Calcular el factorial de un número
Problema: Dado $n$, obtener $n!$, definido como $1\times 2\times 3\times\dots\times n$.
Definición: El factorial de un entero no negativo $n$ es $n! = \prod_{k=1}^{n} k$ con $0! = 1$.
Estrategia:
- Validar $n\ge 0$.
- Implementación iterativa: multiplicar de $1$ a $n$.
- Para $n$ grandes, considerar overflow o usar aritmética de precisión arbitraria.
Ejemplo:
- $3! = 1 \times 2 \times 3 = 6$
Aplicación real: Factoriales aparecen en conteos, permutaciones y distribuciones probabilísticas.
5) Contar dígitos de un número
Problema: Dado un entero $n$, determinar cuántos dígitos tiene.
Análisis: Se requiere el número entero; considerar signo y cero.
Estrategias:
- Convertir a cadena y contar caracteres, ignorando el signo.
- Usar logaritmos (para $n\neq 0$): número de dígitos en base 10 es $$\left\lfloor\log_{10}(|n|)\right\rfloor + 1$$
- Caso $n=0$ -> 1 dígito.
Ejemplo:
- $n = 12345$ -> $$\left\lfloor\log_{10}(12345)\right\rfloor + 1 = 4 + 1 = 5$$
¿Ya tienes cuenta? Iniciar sesión
Problemas de programación
Klíčové pojmy: Usar $$b-a+1$$ para contar enteros en rango inclusivo, Contar pares con $$\left\lfloor\frac{b}{2}\right\rfloor - \left\lfloor\frac{a-1}{2}\right\rfloor$$, Impares = total - pares, Factorial: $$n! = \prod_{k=1}^{n} k$$ y $$0! = 1$$, Dígitos con $$\left\lfloor\log_{10}(|n|)\right\rfloor + 1$$ para $n\neq 0$, Cuadrado: $$N^2 = 1+3+5+\dots+(2N-1)$$, Múltiplos en rango: $$\left\lfloor\frac{b}{M}\right\rfloor - \left\lfloor\frac{a-1}{M}\right\rfloor$$, Múltiplo antecesor: $$R = \left\lfloor\dfrac{N-1}{D}\right\rfloor \cdot D$$, Sumas pares/impares: suma pares $=k(k+1)$ con $k=\left\lfloor\dfrac{N}{2}\right\rfloor$, suma impares $=m^2$ con $m=\left\lceil\dfrac{N}{2}\right\rceil$, Validar entradas: $a\le b$, $M\ne 0$, $n\ge 0$