Ejemplo 8: Bucle Par/Impar
Operador módulo y procesamiento condicional en bucles
Descargar archivo bucle🎯 Demo en Vivo
Análisis de Números (0-50)
📋 Últimos Pares:
📋 Últimos Impares:
¡Cambia el límite del análisis!
Límites rápidos:
🔢 Cálculo en Tiempo Real:
📖 Explicación del Código
Código PHP Completo
<?php
$numero = 50;
$suma = 0;
for ($i = 0; $i <= $numero; $i++) {
if ($i % 2 == 0) {
print($i);
} else {
$suma += $i;
}
}
print("La suma total de impares es: $suma");
?>
📝 Líneas 1-2: Variables iniciales
$numero = 50;$suma = 0;
¿Qué hace? Define el límite del análisis y inicializa la variable acumuladora.
¿Por qué se hace así? $suma debe empezar en 0 para poder acumular valores correctamente.
💡 Concepto: Variables acumuladoras
Las variables como $suma se usan para acumular valores durante un bucle. Deben inicializarse antes del bucle.
📝 Línea 4: Bucle for
for ($i = 0; $i <= $numero; $i++) {
¿Qué hace? Crea un bucle que recorre todos los números desde 0 hasta el límite.
¿Por qué se hace así? El bucle for es perfecto para recorrer rangos numéricos conocidos.
💡 Concepto: Rango inclusivo
Usamos <= en lugar de < para incluir el número límite en el análisis.
📝 Líneas 5-9: Condición con operador módulo
if ($i % 2 == 0) { print($i);} else { $suma += $i;}
¿Qué hace? Usa el operador módulo para determinar si un número es par o impar.
¿Por qué se hace así? El operador % devuelve el resto de una división, perfecto para verificar paridad.
💡 Concepto: Operador módulo (%)
$i % 2 devuelve 0 si $i es par, 1 si es impar. Es la forma más eficiente de verificar paridad.
📝 Operador de asignación compuesta
$suma += $i;
¿Qué hace? Equivale a $suma = $suma + $i. Acumula el valor actual en la suma total.
¿Por qué se hace así? Más compacto y legible que la forma expandida.
💡 Concepto: Operadores compuestos
+= suma y asigna
-= resta y asigna
*= multiplica y asigna
/= divide y asigna
➗ Operador Módulo en Profundidad
¿Qué es el operador módulo?
El operador % devuelve el resto de una división entre dos números.
10 % 3
= 1
(10 ÷ 3 = 3 con resto 1)
15 % 5
= 0
(15 ÷ 5 = 3 exacto)
7 % 2
= 1
(7 ÷ 2 = 3 con resto 1 → impar)
8 % 2
= 0
(8 ÷ 2 = 4 exacto → par)
Usos comunes del módulo
🔍 Verificar paridad
if ($numero % 2 == 0)
Determina si un número es par o impar
🔄 Alternar elementos
if ($i % 3 == 0)
Aplicar estilo cada 3 elementos
⏰ Conversión tiempo
$minutos = $segundos % 60
Extraer minutos de segundos totales
🎯 Grupos cíclicos
$grupo = $numero % 5
Asignar a grupos de 5 elementos
🎯 Patrones de Procesamiento en Bucles
Filtrado y Clasificación
$pares = [];
$impares = [];
foreach ($numeros as $num) {
if ($num % 2 == 0) {
$pares[] = $num;
} else {
$impares[] = $num;
}
}
Separar elementos en diferentes categorías según condiciones.
Acumulación Condicional
$suma_condicional = 0;
for ($i = 0; $i <= 100; $i++) {
if ($i % 3 == 0) {
$suma_condicional += $i;
}
}
Sumar solo los elementos que cumplen cierta condición.
Conteo y Estadísticas
$contador = 0;
foreach ($datos as $dato) {
if ($dato > $umbral) {
$contador++;
}
}
Contar elementos que cumplen criterios específicos.
⚡ Optimización y Mejores Prácticas
✅ Inicializar variables
Siempre inicializa variables acumuladoras antes del bucle.
✅ Correcto
$suma = 0;
for(...) { $suma += ... }
❌ Incorrecto
for(...) { $suma += ... }
✅ Usar operadores compuestos
Los operadores como += son más eficientes y legibles.
✅ Mejor
$suma += $valor;
❌ Peor
$suma = $suma + $valor;
✅ Elegir el bucle correcto
Usa for para rangos, foreach para arrays.
✅ Apropiado
for ($i=0; $i<10; $i++)
❌ Inapropiado
foreach (range(0,9) as $i)
🎯 Conceptos Clave Aprendidos
Operador Módulo
- Devuelve el resto de una división
- Perfecto para verificar divisibilidad
- Usado para paridad, agrupación, ciclos
$a % $b= resto de a ÷ b
Procesamiento Condicional
- Ejecutar diferentes acciones según condiciones
- Combinar bucles con if-else
- Clasificar y filtrar datos
- Acumular valores selectivamente
Variables Acumuladoras
- Almacenan resultados acumulativos
- Deben inicializarse antes del bucle
- Pueden ser sumas, contadores, etc.
- Usan operadores compuestos
💪 Ejercicio Práctico
Amplía el sistema de análisis
Practica estos cambios para mejorar tus habilidades:
- Modifica el código para calcular la suma de números pares también
- Implementa un contador para números divisibles por 3 y 5 simultáneamente
- Crea un sistema que encuentre números primos en el rango
- Añade cálculo de promedios separados para pares e impares
- Implementa una función que reciba el límite y devuelva estadísticas completas
Solución 1: Suma de pares
<?php
$suma_pares = 0;
$suma_impares = 0;
for ($i = 0; $i <= $limite; $i++) {
if ($i % 2 == 0) {
$suma_pares += $i;
} else {
$suma_impares += $i;
}
}
echo "Suma pares: $suma_pares, Suma impares: $suma_impares";
?>
Solución 2: Divisibles por 3 y 5
<?php
$divisibles = 0;
for ($i = 0; $i <= $limite; $i++) {
if ($i % 3 == 0 && $i % 5 == 0) {
$divisibles++;
}
}
echo "Números divisibles por 3 y 5: $divisibles";
?>
Solución 3: Números primos
<?php
$primos = [];
for ($i = 2; $i <= $limite; $i++) {
$esPrimo = true;
for ($j = 2; $j < $i; $j++) {
if ($i % $j == 0) {
$esPrimo = false;
break;
}
}
if ($esPrimo) {
$primos[] = $i;
}
}
echo "Números primos: " . implode(', ', $primos);
?>
Solución 4: Promedios
<?php
$pares = [];
$impares = [];
for ($i = 0; $i <= $limite; $i++) {
if ($i % 2 == 0) {
$pares[] = $i;
} else {
$impares[] = $i;
}
}
$promedio_pares = count($pares) > 0 ? array_sum($pares) / count($pares) : 0;
$promedio_impares = count($impares) > 0 ? array_sum($impares) / count($impares) : 0;
echo "Promedio pares: $promedio_pares, Promedio impares: $promedio_impares";
?>
Solución 5: Función de estadísticas
<?php
function analizarNumeros($limite) {
$estadisticas = [
'pares' => [],
'impares' => [],
'suma_pares' => 0,
'suma_impares' => 0
];
for ($i = 0; $i <= $limite; $i++) {
if ($i % 2 == 0) {
$estadisticas['pares'][] = $i;
$estadisticas['suma_pares'] += $i;
} else {
$estadisticas['impares'][] = $i;
$estadisticas['suma_impares'] += $i;
}
}
return $estadisticas;
}
$resultados = analizarNumeros(50);
print_r($resultados);
?>