<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ciclos y Bucles &#8211; PSeInt.org</title>
	<atom:link href="https://pseint.org/ciclos-y-bucles/feed/" rel="self" type="application/rss+xml" />
	<link>https://pseint.org</link>
	<description>Descarga, Tutoriales y Ejercicios de Pseudocódigo</description>
	<lastBuildDate>Sun, 18 Jan 2026 14:38:18 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://pseint.org/wp-content/uploads/2026/01/favicon-150x150.png</url>
	<title>Ciclos y Bucles &#8211; PSeInt.org</title>
	<link>https://pseint.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Algoritmo de Reloj Digital en PSeInt: Simulación con Ciclos (Guía 2026)</title>
		<link>https://pseint.org/reloj-digital-pseint-ciclos-anidados/</link>
					<comments>https://pseint.org/reloj-digital-pseint-ciclos-anidados/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 24 Jan 2026 14:18:57 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=678</guid>

					<description><![CDATA[Nivel: Intermedio Tiempo: ~25 min ¿Cómo funciona el cronómetro de tu celular o el reloj de tu computadora? La respuesta está en los Ciclos Anidados. En este tutorial avanzado de PSeInt, construiremos un simulador de reloj digital que cuenta horas, minutos y segundos en tiempo real. Aprenderás a dominar la técnica de «un ciclo dentro...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Intermedio
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~25 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                ¿Cómo funciona el cronómetro de tu celular o el reloj de tu computadora? La respuesta está en los <strong>Ciclos Anidados</strong>. En este tutorial avanzado de <strong>PSeInt</strong>, construiremos un simulador de reloj digital que cuenta horas, minutos y segundos en tiempo real. Aprenderás a dominar la técnica de «un ciclo dentro de otro ciclo» (Nesting) y utilizarás comandos especiales como <code>Esperar</code> y <code>Borrar Pantalla</code> para crear la ilusión de movimiento y actualización constante. Este es el ejercicio definitivo para entender cómo interactúan múltiples contadores simultáneos.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: La Mecánica del Tiempo
        </h2>
        <p style="margin-bottom: 20px;">Para simular un reloj, debemos replicar el comportamiento de los engranajes: el segundero mueve al minutero, y este a la hora.</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Ciclos Anidados (Nesting)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Necesitamos tres bucles <code>Para</code>, uno dentro del otro.
                    <br>1. <strong>Externo (Horas):</strong> De 0 a 23.
                    <br>2. <strong>Medio (Minutos):</strong> De 0 a 59.
                    <br>3. <strong>Interno (Segundos):</strong> De 0 a 59.
                    <br>Por cada vuelta del ciclo de horas, el de minutos da 60 vueltas, y el de segundos da 3600.
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Comandos de Interfaz</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Para que parezca un reloj y no una lista infinita de números, usamos:
                    <br>• <code>Esperar 1 Segundos</code>: Frena la ejecución para marcar el ritmo.
                    <br>• <code>Borrar Pantalla</code>: Limpia la consola antes de escribir la nueva hora, creando la animación.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">La jerarquía de los bucles es fundamental. El ciclo más interno es el que cambia más rápido.</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">BUCLE HORAS</span>
                <span>Controla las horas del día. Va desde 0 hasta 23. Una vez termina, el día (o la simulación) acaba.</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">BUCLE MINUTOS</span>
                <span>Está <strong>dentro</strong> de las horas. Se repite 60 veces (0-59) por cada hora que pasa.</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">BUCLE SEGUNDOS</span>
                <span>El corazón del reloj. Está dentro de los minutos. Aquí es donde ponemos el <code>Escribir</code>, el <code>Esperar</code> y el <code>Borrar Pantalla</code>.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Estructura Básica)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: RelojSimple.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo RelojDigital
    // 1. Definición de Variables
    Definir h, m, s Como Entero;
    
    Escribir "Iniciando Reloj...";
    Esperar 1 Segundos;
    
    // 2. Ciclos Anidados (La lógica del reloj)
    
    // Bucle para las Horas (0 a 23)
    Para h <- 0 Hasta 23 Hacer
        
        // Bucle para los Minutos (0 a 59)
        Para m <- 0 Hasta 59 Hacer
            
            // Bucle para los Segundos (0 a 59)
            Para s <- 0 Hasta 59 Hacer
                
                // 3. Actualización de la Pantalla
                Borrar Pantalla; // Limpia el número anterior
                
                // Dibujo del reloj
                Escribir "=================";
                Escribir "  RELOJ DIGITAL  ";
                Escribir "    ", h, ":", m, ":", s;
                Escribir "=================";
                
                // 4. Pausa de tiempo real
                Esperar 1 Segundos;
                
            FinPara
            
        FinPara
        
    FinPara
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/reloj-digital-pseint-ciclos-anidados-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes en Simulaciones
        </h2>
        <p style="margin-bottom: 20px;">Lograr que el reloj se vea bien requiere evitar estos fallos:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Olvidar 'Borrar Pantalla'</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si no borras la pantalla, PSeInt escribirá una hora debajo de la otra infinitamente (00:00:01, 00:00:02...). Para simular un reloj fijo, debes limpiar la consola en cada segundo.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Poner 'Esperar' en el bucle incorrecto</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    El comando <code>Esperar 1 Segundos</code> debe ir estrictamente dentro del bucle de los <strong>Segundos</strong>. Si lo pones en el de Minutos, los segundos volarán a la velocidad de la luz y el reloj solo se detendrá cada minuto.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Formato Profesional "00:00:00"
        </h2>
        <p style="margin-bottom: 20px;">
            El código básico muestra <code>9:5:1</code>. Los relojes reales muestran <code>09:05:01</code>. Para lograr esto, necesitamos condicionales que agreguen un "0" extra si el número es menor a 10.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo RelojEstetico
    Definir h, m, s Como Entero;
    
    Para h <- 0 Hasta 23 Hacer
        Para m <- 0 Hasta 59 Hacer
            Para s <- 0 Hasta 59 Hacer
                
                Borrar Pantalla;
                Escribir "==================";
                
                // Lógica de visualización (Cero a la izquierda)
                // Usamos 'Sin Saltar' para armar la línea
                
                // Horas
                Si h < 10 Entonces
                    Escribir "0", h, ":" Sin Saltar;
                SiNo
                    Escribir h, ":" Sin Saltar;
                FinSi
                
                // Minutos
                Si m < 10 Entonces
                    Escribir "0", m, ":" Sin Saltar;
                SiNo
                    Escribir m, ":" Sin Saltar;
                FinSi
                
                // Segundos
                Si s < 10 Entonces
                    Escribir "0", s;
                SiNo
                    Escribir s;
                FinSi
                
                Escribir "==================";
                Esperar 1 Segundos; // También puedes probar con 'Esperar 100 Milisegundos' para pruebas rápidas
                
            FinPara
        FinPara
    FinPara
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo detengo el reloj?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Como el ciclo dura 24 horas, parece infinito. Para detenerlo en PSeInt, simplemente cierra la ventana de ejecución o presiona el botón de "Pausa/Stop". Programáticamente, necesitarías leer una tecla con <code>Esperar Tecla</code>, lo cual cambiaría la lógica.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo poner una alarma?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí. Pide una hora de alarma al inicio (ej: <code>h_alarma</code>, <code>m_alarma</code>). Dentro del ciclo de segundos, agrega: <code>Si h=h_alarma Y m=m_alarma Y s=0 Entonces Escribir "¡DESPIERTA!" FinSi</code>.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Por qué parpadea la pantalla?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">El comando <code>Borrar Pantalla</code> y volver a escribir causa un leve parpadeo visual en la consola. Esto es normal en aplicaciones de consola simples y difícil de evitar en PSeInt puro.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo lo hago infinito?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Envuelve todo el bloque de los ciclos <code>Para</code> dentro de un ciclo <code>Mientras Verdadero Hacer ... FinMientras</code>. Así, cuando llegue a 23:59:59, volverá a 00:00:00 automáticamente.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/reloj-digital-pseint-ciclos-anidados/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Crear el Juego «Adivina el Número» en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/juego-adivinar-numero-pseint/</link>
					<comments>https://pseint.org/juego-adivinar-numero-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 14:11:55 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=675</guid>

					<description><![CDATA[Nivel: Intermedio Tiempo: ~25 min Programar un videojuego, por sencillo que sea, es el sueño de todo aspirante a desarrollador. El clásico juego de «Alto o Bajo» es el ejercicio perfecto para dar ese salto. En este tutorial de PSeInt, construiremos un algoritmo donde la computadora «piensa» un número aleatorio y tú debes adivinarlo con...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Intermedio
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~25 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                Programar un videojuego, por sencillo que sea, es el sueño de todo aspirante a desarrollador. El clásico juego de <strong>«Alto o Bajo»</strong> es el ejercicio perfecto para dar ese salto. En este tutorial de <strong>PSeInt</strong>, construiremos un algoritmo donde la computadora «piensa» un número aleatorio y tú debes adivinarlo con pistas. Este proyecto es fundamental porque integra tres pilares de la lógica: la generación de <strong>números aleatorios (Azar)</strong>, el uso de <strong>bucles interactivos (Repetir/Mientras)</strong> y el manejo de <strong>contadores</strong> para registrar tu puntaje. ¡Prepárate para retar a la máquina!
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Azar y Bucles
        </h2>
        <p style="margin-bottom: 20px;">Para que el juego sea divertido e impredecible, necesitamos herramientas especiales:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Función Azar(N)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Esta función genera un número aleatorio entero. ¡Ojo con el rango! En PSeInt, <code>Azar(100)</code> genera números del <strong>0 al 99</strong>. Si queremos jugar del 1 al 100, debemos sumar 1 a la fórmula: <code>Azar(100) + 1</code>.
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Bucle Indeterminado (Repetir)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    A diferencia de una tabla de multiplicar (donde sabemos que son 10 vueltas), aquí no sabemos cuántos intentos necesitará el usuario. Usamos la estructura <code>Repetir... Hasta Que</code> para mantener el juego vivo hasta que el jugador acierte.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">El flujo del juego debe ser lógico y amigable para el usuario:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">INICIO</span>
                <span>
                    1. La computadora genera un número secreto (ej: 42) y lo guarda en memoria.<br>
                    2. Inicializamos el contador de intentos en 0.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">BUCLE DE JUEGO</span>
                <span>
                    Pedir un número al usuario. Sumar 1 intento. Comparar:<br>
                    • Si <code>Usuario < Secreto</code>: Decir "¡Más Alto!".<br>
                    • Si <code>Usuario > Secreto</code>: Decir "¡Más Bajo!".<br>
                    • Si son iguales: ¡Ganaste!
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">SALIDA</span>
                <span>Mostrar mensaje de felicitación y el número total de intentos utilizados.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Juego Clásico)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: AdivinaNumero.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo JuegoAdivinanza
    // 1. Definición de Variables
    Definir secreto, intento, contador Como Entero;
    
    // 2. Generación del Número Aleatorio (1 al 100)
    // Azar(100) da de 0 a 99, por eso sumamos 1
    secreto <- Azar(100) + 1;
    contador <- 0;
    intento <- 0; // Inicializamos con un valor que no sea el secreto
    
    Escribir "=== JUEGO: ADIVINA EL NÚMERO ===";
    Escribir "He pensado un número entre 1 y 100.";
    Escribir "¡Intenta adivinarlo!";
    Escribir "--------------------------------";
    
    // 3. Bucle Interactivo
    // Usamos 'Mientras' para repetir hasta que acierte
    Mientras intento <> secreto Hacer
        
        Escribir "Ingresa tu número:";
        Leer intento;
        
        // Aumentamos el contador de intentos
        contador <- contador + 1;
        
        // 4. Lógica de Pistas (Alto/Bajo)
        Si intento > secreto Entonces
            Escribir ">> ¡Demasiado ALTO! Prueba uno más bajo.";
        SiNo
            Si intento < secreto Entonces
                Escribir ">> ¡Demasiado BAJO! Prueba uno más alto.";
            SiNo
                // Si no es mayor ni menor, es igual (Victoria)
                Escribir "*********************************";
                Escribir "¡FELICIDADES! ¡ADIVINASTE!";
                Escribir "*********************************";
            FinSi
        FinSi
        
    FinMientras
    
    // 5. Estadísticas Finales
    Escribir "Número secreto: ", secreto;
    Escribir "Total de intentos: ", contador;
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/juego-adivinar-numero-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes de Desarrollo
        </h2>
        <p style="margin-bottom: 20px;">Programar juegos tiene sus trampas. Evita estos fallos:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Rango Incorrecto (El error del 0)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si solo escribes <code>Azar(100)</code>, la computadora puede generar el número 0 y nunca generará el 100. Recuerda que en informática contamos desde 0. La corrección <code>+1</code> es obligatoria si quieres jugar del 1 al 100.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Inicialización del Bucle</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Si usas <code>Mientras intento <> secreto</code>, debes asegurarte de que <code>intento</code> no valga lo mismo que <code>secreto</code> antes de empezar (aunque es improbable por azar). Es más seguro inicializar <code>intento</code> en -1 o un valor fuera de rango.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Modo Difícil (Intentos Limitados)
        </h2>
        <p style="margin-bottom: 20px;">
            Hagamos el juego más emocionante. Ahora el jugador solo tiene <strong>5 vidas</strong>. Si se agotan, pierde el juego (Game Over). Esto introduce una condición de salida doble en el bucle.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo JuegoVidasLimitadas
    Definir secreto, intento, vidas Como Entero;
    
    secreto <- Azar(50) + 1; // Rango 1-50
    vidas <- 5;
    intento <- 0;
    
    Escribir "=== MODO HARDCORE (1-50) ===";
    Escribir "Tienes ", vidas, " vidas para adivinar.";
    
    // El bucle sigue MIENTRAS no acierte Y le queden vidas
    Mientras intento <> secreto Y vidas > 0 Hacer
        
        Escribir "Vidas restantes: ", vidas;
        Escribir "Ingresa tu número:";
        Leer intento;
        
        Si intento == secreto Entonces
            Escribir "¡VICTORIA! Lo lograste.";
        SiNo
            vidas <- vidas - 1; // Restamos vida
            
            Si vidas == 0 Entonces
                Escribir "--- GAME OVER ---";
                Escribir "El número era: ", secreto;
            SiNo
                // Damos pistas solo si sigue vivo
                Si intento > secreto Entonces
                    Escribir "Pista: Busca más BAJO.";
                SiNo
                    Escribir "Pista: Busca más ALTO.";
                FinSi
            FinSi
        FinSi
        Escribir ""; // Espacio estético
    FinMientras
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Por qué PSeInt siempre genera los mismos números?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Esto se llama "semilla pseudoaleatoria". En algunas configuraciones de PSeInt, la secuencia es fija para pruebas. Para evitarlo, marca la opción "No inicializar el azar con la misma semilla" en las opciones de configuración de tu perfil.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cuál es la diferencia entre Azar y Aleatorio?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;"><code>Azar(N)</code> genera desde 0 hasta N-1. <code>Aleatorio(A, B)</code> genera un número entre A y B (ambos incluidos). <code>Aleatorio(1, 100)</code> es equivalente a <code>Azar(100) + 1</code>.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo hago niveles de dificultad?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Puedes añadir un menú al inicio: "1. Fácil (1-10), 2. Medio (1-50), 3. Difícil (1-100)". Según la opción elegida, cambias el valor dentro de la función <code>Azar()</code>.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo poner pistas de "Caliente" o "Frío"?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí. Calcula la diferencia con <code>abs(secreto - intento)</code>. Si la diferencia es menor a 5, escribes "¡Muy caliente!", si es mayor a 20, "¡Congelado!".</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/juego-adivinar-numero-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Calcular la Media de N Números en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/calcular-media-n-numeros-pseint/</link>
					<comments>https://pseint.org/calcular-media-n-numeros-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 14:05:07 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=672</guid>

					<description><![CDATA[Nivel: Básico / Intermedio Tiempo: ~15 min Calcular el promedio (o media aritmética) es una operación fundamental en análisis de datos, desde calificar exámenes hasta procesar sensores científicos. Pero, ¿qué pasa cuando no sabemos de antemano cuántos datos vamos a procesar? En este tutorial de Lógica de Programación, aprenderás a construir un algoritmo flexible en...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Básico / Intermedio
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~15 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                Calcular el promedio (o media aritmética) es una operación fundamental en análisis de datos, desde calificar exámenes hasta procesar sensores científicos. Pero, ¿qué pasa cuando no sabemos de antemano cuántos datos vamos a procesar? En este tutorial de <strong>Lógica de Programación</strong>, aprenderás a construir un algoritmo flexible en <strong>PSeInt</strong> que solicita al usuario la cantidad de datos (N) y luego utiliza un <strong>Ciclo Para</strong> y un <strong>Acumulador</strong> para procesar la información dinámicamente. Este ejercicio es crucial para entender la diferencia entre variables de control (contadores) y variables de almacenamiento (acumuladores).
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Acumuladores y Contadores
        </h2>
        <p style="margin-bottom: 20px;">Para resolver este problema, necesitamos gestionar dos tipos de datos simultáneamente:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">La Variable &#8216;N&#8217; (Límite)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Representa la «Cantidad de Elementos». Antes de empezar a sumar, debemos preguntar al usuario: «¿Cuántos números vas a ingresar?». Este valor <code>N</code> definirá cuántas vueltas dará nuestro ciclo. Es el denominador de nuestra fórmula de promedio.
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">El Acumulador (Suma)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    No podemos guardar todos los números en variables distintas (n1, n2, n3&#8230;) porque no sabemos cuántos son. En su lugar, usamos una sola variable <code>suma</code> que atrapa y acumula el valor en cada iteración: <code>suma <- suma + dato</code>.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">La lógica matemática para la media es $\bar{x} = \frac{\sum x}{N}$. Traducido a algoritmo:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">ENTRADA</span>
                <span>
                    1. Solicitar <code>N</code> (Total de datos).<br>
                    2. Dentro de un bucle, solicitar <code>N</code> veces el valor numérico (<code>dato</code>).
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">PROCESO</span>
                <span>
                    1. Inicializar <code>suma = 0</code>.<br>
                    2. Ciclo desde 1 hasta N: <code>suma = suma + dato</code>.<br>
                    3. Al terminar el ciclo: <code>promedio = suma / N</code>.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">SALIDA</span>
                <span>Mostrar el resultado del cálculo. Es importante validar que N > 0 para evitar la división por cero.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Solución Estándar)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: MediaNNumeros.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo CalcularPromedioN
    // 1. Definición de Variables
    // 'n' es la cantidad de datos (Entero)
    // 'dato' es el número que ingresa el usuario en cada vuelta
    // 'suma' es el acumulador
    // 'promedio' es el resultado final (Real)
    Definir n, i Como Entero;
    Definir dato, suma, promedio Como Real;
    
    // 2. Inicialización
    suma <- 0; // ¡Muy importante empezar en 0!
    
    // 3. Obtener la cantidad de datos
    Escribir "=== CÁLCULO DE MEDIA ARITMÉTICA ===";
    Escribir "¿Cuántos números desea ingresar?";
    Leer n;
    
    // 4. Ciclo de Lectura y Acumulación
    // Usamos PARA porque sabemos exactamente cuántas vueltas dar (n)
    Para i <- 1 Hasta n Con Paso 1 Hacer
        Escribir "Ingrese el número ", i, ":";
        Leer dato;
        
        // Acumulamos el valor
        suma <- suma + dato;
    FinPara
    
    // 5. Cálculo Final y Salida
    // Validamos para no dividir por cero si n es 0
    Si n > 0 Entonces
        promedio <- suma / n;
        Escribir "-----------------------------";
        Escribir "La suma total es: ", suma;
        Escribir "La MEDIA (Promedio) es: ", promedio;
        Escribir "-----------------------------";
    SiNo
        Escribir "Error: La cantidad de números debe ser mayor a 0.";
    FinSi
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/calcular-media-n-numeros-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Frecuentes al Calcular Medias
        </h2>
        <p style="margin-bottom: 20px;">Estos son los detalles que suelen olvidar los principiantes:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">No inicializar la Suma</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si no escribes <code>suma <- 0</code> antes del ciclo, PSeInt podría usar un valor basura o dar error. El acumulador siempre debe empezar limpio.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Calcular el Promedio DENTRO del ciclo</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Un error clásico es poner <code>promedio <- suma / n</code> dentro del <code>Para</code>. Esto hace que la computadora calcule el promedio N veces innecesariamente. La división solo debe hacerse <strong>una vez</strong>, al finalizar el bucle.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Validación Estricta de Datos
        </h2>
        <p style="margin-bottom: 20px;">
            ¿Qué pasa si el usuario dice que va a ingresar "-5" números? El programa fallaría. Vamos a blindar el código usando un ciclo <code>Repetir</code> para asegurar que N sea válido antes de continuar.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo MediaRobusta
    Definir n, i Como Entero;
    Definir dato, suma, promedio Como Real;
    
    suma <- 0;
    
    // Validación: Obligar a ingresar un N positivo
    Repetir
        Escribir "¿Cuántos datos va a procesar? (Debe ser > 0):";
        Leer n;
        Si n <= 0 Entonces
            Escribir "Error: Cantidad inválida.";
        FinSi
    Hasta Que n > 0
    
    Para i <- 1 Hasta n Hacer
        Escribir "Ingrese dato #", i, ":";
        Leer dato;
        suma <- suma + dato;
    FinPara
    
    promedio <- suma / n;
    
    // Redondeo visual (truco matemático)
    promedio <- redon(promedio * 100) / 100;
    
    Escribir ">>> El promedio de los ", n, " datos es: ", promedio;
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué hago si no sé cuántos números son (N)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Si N es desconocido, no uses el ciclo <code>Para</code>. Usa un ciclo <code>Mientras</code> o <code>Repetir</code> con un "valor centinela" (ej: ingresar 0 para terminar) y usa un contador manual para saber por cuánto dividir al final.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo usar arreglos (vectores)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí, podrías guardar todos los datos en un arreglo <code>Dimension datos[n]</code> y luego recorrerlo para sumar. Es útil si necesitas volver a usar los números individuales después (ej: para calcular la varianza), pero para un promedio simple, el acumulador consume menos memoria.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Por qué declarar las variables como Real?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Aunque N sea entero, los datos ingresados pueden ser decimales (ej: notas 4.5, 3.2). Además, la división del promedio casi siempre genera decimales. Usar <code>Real</code> evita pérdida de precisión.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo reinicio el programa?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Envuelve todo el algoritmo (excepto la definición de variables) en un ciclo <code>Repetir... Hasta Que respuesta="N"</code>.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/calcular-media-n-numeros-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Sumar Números hasta que se Ingrese Cero (PSeInt 2026)</title>
		<link>https://pseint.org/sumar-numeros-hasta-cero-pseint/</link>
					<comments>https://pseint.org/sumar-numeros-hasta-cero-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 13:58:52 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=669</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~15 min ¿Cómo sumamos una lista de números cuando no sabemos cuántos son? A diferencia del ciclo Para (que tiene un fin fijo), aquí nos enfrentamos a un Ciclo Indeterminado. En este tutorial de PSeInt, aprenderás a utilizar un «Valor Centinela» (en este caso, el número 0) para controlar el flujo del...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Básico
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~15 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                ¿Cómo sumamos una lista de números cuando no sabemos cuántos son? A diferencia del ciclo <em>Para</em> (que tiene un fin fijo), aquí nos enfrentamos a un <strong>Ciclo Indeterminado</strong>. En este tutorial de <strong>PSeInt</strong>, aprenderás a utilizar un <strong>«Valor Centinela»</strong> (en este caso, el número 0) para controlar el flujo del programa. Utilizaremos las estructuras <code>Repetir-Hasta Que</code> y <code>Mientras</code> para crear un acumulador dinámico que sigue sumando indefinidamente hasta que el usuario decide detenerse. Este concepto es la base de aplicaciones como cajas registradoras o ingreso de datos masivos.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Centinelas y Acumuladores
        </h2>
        <p style="margin-bottom: 20px;">Para dominar este ejercicio, es necesario entender dos patrones de diseño de algoritmos:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Valor Centinela (Flag)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Es un valor especial que no forma parte de los datos a procesar, sino que sirve como señal de «STOP». Se elige el <strong>0</strong> porque es el elemento neutro de la suma (sumarlo no afecta el resultado), lo que simplifica mucho el código.
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Variable Acumulador</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    A diferencia de una variable normal que sobrescribe su valor, un acumulador <strong>suma sobre sí mismo</strong>.
                    <br>Fórmula: <code>suma = suma + nuevo_numero</code>.
                    <br>¡Regla de oro! Siempre debe inicializarse en 0 antes de entrar al ciclo.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">El flujo de ejecución es cíclico y depende totalmente de la entrada del usuario:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">INICIO</span>
                <span>Inicializar la variable <code>suma <- 0</code>. Esto limpia la memoria para empezar a contar desde cero.</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">BUCLE (Repetir)</span>
                <span>
                    1. Pedir un número al usuario.<br>
                    2. Leer el número en la variable <code>n</code>.<br>
                    3. Sumar <code>n</code> al acumulador: <code>suma <- suma + n</code>.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">FIN Y SALIDA</span>
                <span>Evaluar: ¿El número ingresado fue 0? <br>Si es SÍ: Terminar el ciclo y mostrar la <code>suma</code> total. <br>Si es NO: Volver a pedir otro número.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Con Repetir-Hasta Que)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: SumaHastaCero.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo SumarNumerosIndefinidos
    // 1. Definición de Variables
    // 'num' es el valor temporal que ingresa el usuario
    // 'suma' es el acumulador total
    Definir num, suma Como Real;
    
    // 2. Inicialización
    // ¡Fundamental! Si no empieza en 0, la suma será incorrecta.
    suma <- 0;
    
    Escribir "=== SUMADORA INFINITA ===";
    Escribir "Ingrese números para sumar.";
    Escribir "Digite 0 para terminar y ver el resultado.";
    Escribir "-----------------------------";
    
    // 3. Estructura Repetitiva (Bucle)
    // Usamos 'Repetir' porque al menos debemos pedir un número una vez
    Repetir
        Escribir "Ingrese un número:";
        Leer num;
        
        // Acumulamos el valor
        // Nota: Si num es 0, suma + 0 sigue siendo suma. No afecta.
        suma <- suma + num;
        
        // Opcional: Mostrar subtotal parcial
        // Escribir "Subtotal parcial: ", suma;
        
    Hasta Que num = 0
    
    // 4. Salida Final
    Escribir "-----------------------------";
    Escribir "PROCESO TERMINADO (Se ingresó 0)";
    Escribir "La suma total es: ", suma;
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/sumar-numeros-hasta-cero-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes con Acumuladores
        </h2>
        <p style="margin-bottom: 20px;">Cuidado con estos detalles que pueden romper la lógica de tu suma:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">No Inicializar el Acumulador</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si olvidas poner <code>suma <- 0</code> al principio, PSeInt podría asignar un valor "basura" o lanzar un error de variable no inicializada, causando que la suma total sea incorrecta desde el inicio.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Usar 'Mientras' incorrectamente</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Si usas <code>Mientras num <> 0</code>, debes leer el número <strong>antes</strong> del ciclo Y <strong>dentro</strong> del ciclo. Si olvidas leerlo dentro, el valor de <code>num</code> nunca cambiará y crearás un <strong>bucle infinito</strong>.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Calcular también el Promedio
        </h2>
        <p style="margin-bottom: 20px;">
            Ahora que sabemos sumar, ¿qué tal si también contamos cuántos números ingresó el usuario para calcular el promedio? Necesitaremos una variable extra llamada <code>contador</code>.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo SumaYPromedio
    Definir num, suma, promedio Como Real;
    Definir contador Como Entero;
    
    suma <- 0;
    contador <- 0;
    
    Repetir
        Escribir "Ingrese número (0 para salir):";
        Leer num;
        
        Si num <> 0 Entonces
            suma <- suma + num;
            contador <- contador + 1; // Solo contamos si no es el 0 de salida
        FinSi
        
    Hasta Que num = 0
    
    Escribir "--- RESULTADOS ---";
    Escribir "Suma Total: ", suma;
    Escribir "Números ingresados: ", contador;
    
    // Validación para evitar división por cero si no ingresó nada
    Si contador > 0 Entonces
        promedio <- suma / contador;
        Escribir "Promedio: ", promedio;
    SiNo
        Escribir "Promedio: 0 (No se ingresaron datos)";
    FinSi
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Por qué se usa el 0 como centinela?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Porque el 0 es el elemento neutro de la suma. Si usaras el "-1" para salir, tendrías que restar o evitar sumar ese -1 al final para no alterar el resultado total. El 0 no daña la cuenta.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cuál es la diferencia entre Acumulador y Contador?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Un <strong>Contador</strong> aumenta en una constante (generalmente de 1 en 1: 1, 2, 3...). Un <strong>Acumulador</strong> aumenta en valores variables (ej: suma = suma + precio).</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo usar el ciclo Mientras?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí. Sería: <code>Leer num; Mientras num <> 0 Hacer ... Leer num; FinMientras</code>. Es un poco más seguro si no quieres que el código se ejecute ni una vez si el primer número es 0.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Funciona con números negativos?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">¡Claro! El algoritmo suma algebraicamente. Si ingresas 5 y luego -3, la suma será 2. Solo se detiene estrictamente con el 0.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/sumar-numeros-hasta-cero-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Calcular el Factorial (N!) en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/calcular-factorial-numero-pseint/</link>
					<comments>https://pseint.org/calcular-factorial-numero-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 12:12:27 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=658</guid>

					<description><![CDATA[Nivel: Intermedio Tiempo: ~15 min El cálculo del factorial es un clásico de las matemáticas y la programación, esencial para entender probabilidad, estadística y algoritmos de permutación. Representado como N!, consiste en multiplicar un número por todos sus antecesores hasta llegar al 1 (ejemplo: 5! = 5*4*3*2*1 = 120). En este tutorial de Lógica de...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Intermedio
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~15 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                El cálculo del factorial es un clásico de las matemáticas y la programación, esencial para entender probabilidad, estadística y algoritmos de permutación. Representado como <strong>N!</strong>, consiste en multiplicar un número por todos sus antecesores hasta llegar al 1 (ejemplo: <code>5! = 5*4*3*2*1 = 120</code>). En este tutorial de <strong>Lógica de Programación con PSeInt</strong>, aprenderás a implementar este cálculo utilizando <strong>Ciclos (Bucles)</strong> y, lo más importante, comprenderás el concepto de <strong>Acumulador Multiplicativo</strong>, una técnica vital que diferencia a los programadores novatos de los intermedios.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Acumuladores y Matemáticas
        </h2>
        <p style="margin-bottom: 20px;">Antes de codificar, debemos aclarar dos reglas de oro que harán que tu algoritmo funcione correctamente:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Inicialización en 1 (No en 0)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    A diferencia de las sumas, donde empezamos en 0, en una multiplicación acumulativa debemos empezar en <strong>1</strong>. Si inicializas tu variable <code>factorial <- 0</code>, al multiplicar cualquier número, el resultado siempre será cero. El 1 es el elemento neutro de la multiplicación.
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">El Caso del Cero (0!)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Por definición matemática estricta, el factorial de 0 es <strong>1</strong> (0! = 1). Un buen algoritmo debe ser capaz de manejar esta excepción lógica sin romperse.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">El flujo para calcular N! sigue estos pasos estructurados:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">ENTRADA</span>
                <span>Solicitar un número entero positivo (N). Si el usuario ingresa negativos, el factorial no está definido (en los reales básicos).</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">PROCESO</span>
                <span>
                    1. Inicializar <code>resultado = 1</code>.<br>
                    2. Usar un ciclo (Para o Mientras) que vaya desde 1 hasta N.<br>
                    3. En cada vuelta, actualizar: <code>resultado = resultado * contador</code>.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">SALIDA</span>
                <span>Mostrar el valor final acumulado. Ej: "El factorial de 5 es 120".</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Solución con Ciclo Para)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: Factorial.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo CalcularFactorial
    // 1. Definición de Variables
    // 'fact' guardará el resultado. 'num' es el dato de entrada. 'i' es el contador.
    // Usamos 'Real' para el factorial porque crecen muy rápido (pueden superar el límite de Entero)
    Definir num, i Como Entero;
    Definir fact Como Real;
    
    // 2. Inicialización CRÍTICA
    fact <- 1;
    
    // 3. Entrada de Datos
    Escribir "=== CÁLCULO DE FACTORIAL (N!) ===";
    Escribir "Ingrese un número entero positivo:";
    Leer num;
    
    // 4. Validación de entrada (No existen factoriales negativos)
    Si num < 0 Entonces
        Escribir "Error: No existe el factorial de números negativos.";
    SiNo
        // 5. Proceso: Ciclo Multiplicativo
        // Recorremos desde 1 hasta el número ingresado
        Para i <- 1 Hasta num Con Paso 1 Hacer
            fact <- fact * i;
            // Prueba de escritorio mental:
            // Vuelta 1: fact = 1 * 1 = 1
            // Vuelta 2: fact = 1 * 2 = 2
            // Vuelta 3: fact = 2 * 3 = 6 ...
        FinPara
        
        // 6. Salida de Resultados
        Escribir "-----------------------------";
        Escribir "El factorial de ", num, "! es: ", fact;
        Escribir "-----------------------------";
    FinSi
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/calcular-factorial-numero-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes: Por qué tu código da Cero
        </h2>
        <p style="margin-bottom: 20px;">El cálculo factorial tiene trampas específicas que debes evitar:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Inicializar en Cero</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    El error #1. Si escribes <code>fact <- 0</code>, la primera multiplicación será <code>0 * 1 = 0</code>, y todo el resultado final será 0. En acumuladores de sumas se usa 0; en acumuladores de productos se usa 1.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Desbordamiento (Overflow)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Los factoriales crecen explosivamente. <code>10!</code> es 3.6 millones. <code>20!</code> es un número gigantesco. Si defines la variable como <code>Entero</code>, al calcular factoriales grandes (ej: >13), PSeInt podría dar error o números negativos extraños. Usa <code>Real</code> para mayor capacidad.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Validación Robusta y Ciclo Repetitivo
        </h2>
        <p style="margin-bottom: 20px;">
            Vamos a profesionalizar el código. Esta versión usa un ciclo <code>Repetir</code> para asegurar que el usuario ingrese un número válido (no negativo) y maneja el caso especial del 0 de forma explícita.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo FactorialValidado
    Definir n, i Como Entero;
    Definir f Como Real;
    
    // Validación: Obligar al usuario a ingresar un positivo
    Repetir
        Escribir "Ingrese un número (0 o positivo):";
        Leer n;
        Si n < 0 Entonces
            Escribir "Dato inválido. Intente nuevamente.";
        FinSi
    Hasta Que n >= 0
    
    f <- 1;
    
    Si n = 0 Entonces
        // Caso base matemático explícito
        Escribir "El factorial de 0 es: 1";
    SiNo
        // Ciclo decreciente (otra forma de hacerlo: n hasta 1)
        Para i <- n Hasta 1 Con Paso -1 Hacer
            f <- f * i;
            Escribir "Multiplicando por: ", i, " Acumulado: ", f;
        FinPara
        
        Escribir "Resultado Final: ", n, "! = ", f;
    FinSi
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué es la Recursividad en Factorial?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Es una técnica avanzada donde una función se llama a sí misma. <code>Factorial(n) = n * Factorial(n-1)</code>. PSeInt soporta subprocesos recursivos, pero los ciclos (iterativo) son más eficientes en memoria.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Por qué el factorial de 0 es 1?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Es una convención matemática necesaria para que fórmulas de combinatoria y series de Taylor funcionen. Representa que hay "una sola forma" de ordenar cero elementos (el conjunto vacío).</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cuál es el número más grande que puedo calcular?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Depende de tu computadora, pero generalmente <code>170!</code> es el límite para variables de tipo doble precisión (Real) antes de devolver "Infinito".</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo usar el ciclo Mientras?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">¡Sí! Inicializa <code>i=1</code> antes, y dentro del ciclo haces <code>fact = fact * i</code> y luego <code>i = i + 1</code>. El resultado es idéntico.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/calcular-factorial-numero-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Imprimir Números Pares del 1 al 100 en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/imprimir-numeros-pares-1-100-pseint/</link>
					<comments>https://pseint.org/imprimir-numeros-pares-1-100-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Tue, 20 Jan 2026 11:41:30 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=652</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min Filtrar datos numéricos es una habilidad esencial en programación. En este tutorial de PSeInt, resolveremos el clásico ejercicio de mostrar solo los números pares dentro de un rango (1 al 100). Este problema es excelente porque nos permite explorar dos caminos fundamentales de la lógica computacional: el uso del operador...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Básico
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~10 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                Filtrar datos numéricos es una habilidad esencial en programación. En este tutorial de <strong>PSeInt</strong>, resolveremos el clásico ejercicio de mostrar solo los números pares dentro de un rango (1 al 100). Este problema es excelente porque nos permite explorar dos caminos fundamentales de la lógica computacional: el uso del operador matemático <strong>Módulo (MOD)</strong> para filtrar números uno por uno, y la manipulación del <strong>«Paso»</strong> en los bucles para saltar iteraciones. Dominar estas técnicas te preparará para algoritmos más complejos de búsqueda y clasificación.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Paridad y Ciclos
        </h2>
        <p style="margin-bottom: 20px;">Para resolver este ejercicio, necesitamos entender qué hace que un número sea «par» y cómo la computadora puede detectarlo:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Operador Módulo (MOD)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Un número es par si es divisible por 2. En programación, usamos el operador <code>MOD</code> (o <code>%</code>) que nos devuelve el <strong>residuo</strong>. Si <code>X MOD 2</code> es igual a 0, entonces X es par.
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Ciclo con Filtro vs. Salto</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Podemos recorrer todos los números (1, 2, 3, 4&#8230;) y preguntar «¿Eres par?» (Filtro). O podemos ser más astutos y saltar de 2 en 2 comenzando desde el 2 (2, 4, 6&#8230;). Veremos ambos métodos.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo (Método Estándar)
        </h2>
        <p style="margin-bottom: 20px;">El enfoque lógico más educativo para principiantes es revisar cada número y decidir si imprimirlo o no:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">INICIO</span>
                <span>Iniciar un ciclo que vaya del 1 al 100. Variable contador: <code>i</code>.</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">DECISIÓN</span>
                <span>
                    Dentro del ciclo, verificar la condición matemática: <code>Si i MOD 2 = 0</code>.
                    <br>• Verdadero: Es par. Proceder a imprimir.
                    <br>• Falso: Es impar. No hacer nada.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">FIN</span>
                <span>Repetir hasta que el contador llegue a 100 y terminar el programa.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Método de Filtro Lógico)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: ParesConModulo.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo ImprimirParesFiltro
    // 1. Definición de Variables
    Definir i Como Entero;
    
    Escribir "=== Números Pares del 1 al 100 ===";
    
    // 2. Ciclo Para que recorre TODOS los números
    Para i <- 1 Hasta 100 Hacer
        
        // 3. Condición Lógica (El Filtro)
        // Usamos MOD para ver si el residuo de la división por 2 es cero
        Si i MOD 2 == 0 Entonces
            Escribir i; // Solo se imprime si pasa el filtro
        FinSi
        
    FinPara
    
    Escribir "=== Fin de la Serie ===";
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/imprimir-numeros-pares-1-100-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes
        </h2>
        <p style="margin-bottom: 20px;">Al trabajar con pares e impares, es fácil confundirse:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Confundir Residuo con Cociente</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Escribir <code>Si i / 2 == 0</code>. Esto es incorrecto porque la división devuelve el resultado (ej: 4/2 = 2), no el sobrante. Siempre usa <code>MOD</code> o <code>%</code>.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Iniciar en 1 con saltos de 2</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Si intentas optimizar usando saltos pero escribes <code>Para i<-1 Hasta 100 Con Paso 2</code>, obtendrás 1, 3, 5... (Impares). Para obtener pares, debes iniciar el ciclo en 2.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Método Optimizado: Uso de "Con Paso"
        </h2>
        <p style="margin-bottom: 20px;">
            ¿Por qué verificar 100 números si solo nos interesan 50? Este método es computacionalmente más eficiente porque salta directamente a los números que nos interesan, eliminando la necesidad del <code>Si-Entonces</code>.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo ParesOptimizado
    Definir i Como Entero;
    
    // OPTIMIZACIÓN:
    // 1. Iniciamos 'i' en 2 (el primer par).
    // 2. Usamos "Con Paso 2" para sumar 2 en cada vuelta.
    // Resultado: i valdrá 2, 4, 6, 8... automáticamente.
    
    Para i <- 2 Hasta 100 Con Paso 2 Hacer
        Escribir i; 
        // ¡No necesitamos condicionales aquí dentro!
    FinPara
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo imprimo los números impares?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Con el método de filtro, cambia la condición a <code>Si i MOD 2 <> 0</code>. Con el método optimizado, inicia el ciclo en 1: <code>Para i<-1 Hasta 100 Con Paso 2</code>.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo sumo todos los números pares?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Necesitas una variable "Acumulador" (ej: <code>suma <- 0</code>) antes del ciclo. Dentro del ciclo, agrega <code>suma <- suma + i</code>.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo usar el ciclo Mientras?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí. Inicializa <code>i <- 2</code>. La condición sería <code>Mientras i <= 100</code>, y dentro del ciclo incrementas manualmente: <code>i <- i + 2</code>.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo los imprimo en orden descendente (100 al 2)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Usa un paso negativo: <code>Para i <- 100 Hasta 2 Con Paso -2 Hacer</code>.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/imprimir-numeros-pares-1-100-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Imprimir Números del 1 al 100 en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/imprimir-numeros-1-al-100-pseint/</link>
					<comments>https://pseint.org/imprimir-numeros-1-al-100-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Mon, 19 Jan 2026 11:31:54 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=649</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min Imagina que tu profesor te pide escribir los números del 1 al 1000. ¿Escribirías mil veces el comando Escribir? ¡Por supuesto que no! Aquí es donde entran en juego los Ciclos o Bucles. En este tutorial fundamental de PSeInt, aprenderás a automatizar tareas repetitivas utilizando las estructuras de control Para...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Básico
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~10 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                Imagina que tu profesor te pide escribir los números del 1 al 1000. ¿Escribirías mil veces el comando <code>Escribir</code>? ¡Por supuesto que no! Aquí es donde entran en juego los <strong>Ciclos o Bucles</strong>. En este tutorial fundamental de <strong>PSeInt</strong>, aprenderás a automatizar tareas repetitivas utilizando las estructuras de control <strong>Para (For)</strong> y <strong>Mientras (While)</strong>. Este ejercicio, aunque sencillo, es la puerta de entrada para entender conceptos vitales como iteraciones, contadores y condiciones de parada.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Automatizando la Repetición
        </h2>
        <p style="margin-bottom: 20px;">Para resolver este problema eficientemente, necesitamos entender las herramientas que PSeInt nos ofrece para repetir instrucciones:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">El Ciclo «Para» (For)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Es la estructura ideal cuando <strong>sabemos exactamente cuántas veces</strong> queremos repetir algo. En este caso, sabemos que queremos ir del 1 al 100. El ciclo «Para» maneja automáticamente el contador, incrementándolo en cada vuelta.
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Variable Contador (Iterador)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Es una variable (comúnmente llamada <code>i</code>, <code>j</code> o <code>contador</code>) que lleva la cuenta de en qué vuelta del ciclo estamos. Comienza en un valor inicial (1) y termina en un valor final (100).
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">El flujo lógico es circular. La computadora realizará los siguientes pasos:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">INICIO</span>
                <span>Inicializar una variable contador en 1 (ej: <code>i = 1</code>).</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">PROCESO CÍCLICO</span>
                <span>
                    1. Verificar si <code>i <= 100</code>.<br>
                    2. Si es verdadero: Mostrar el valor de <code>i</code> en pantalla.<br>
                    3. Incrementar <code>i</code> en 1 (<code>i = i + 1</code>).<br>
                    4. Volver al paso 1.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">FIN</span>
                <span>Cuando <code>i</code> llega a 101, la condición se vuelve falsa y el ciclo termina.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Ciclo Para)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: Serie1al100.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo ImprimirNumeros
    // 1. Definición de Variables
    // 'i' es el nombre estándar para iteradores (contadores)
    Definir i Como Entero;
    
    Escribir "=== Generando serie del 1 al 100 ===";
    
    // 2. Estructura Repetitiva PARA (For)
    // Sintaxis: Para [Variable] <- [Inicio] Hasta [Fin] Con Paso [Salto] Hacer
    
    Para i <- 1 Hasta 100 Con Paso 1 Hacer
        // En cada vuelta, 'i' vale 1, luego 2, luego 3... hasta 100
        Escribir "Número: ", i;
        
        // El 'Paso 1' indica que va de 1 en 1.
        // Si pusieras 'Paso 2', imprimiría 1, 3, 5... (impares)
    FinPara
    
    Escribir "=== Fin del Algoritmo ===";
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/imprimir-numeros-1-al-100-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes en Ciclos
        </h2>
        <p style="margin-bottom: 20px;">Los bucles son poderosos pero peligrosos. Evita estos errores:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Bucle Infinito (Infinite Loop)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Suele pasar en el ciclo <code>Mientras</code>. Si olvidas incrementar el contador (<code>i <- i + 1</code>), la condición <code>i <= 100</code> siempre será verdadera y el programa nunca se detendrá, bloqueando la computadora.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Error "Off-by-One" (Por uno)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Poner <code>Hasta 99</code> en lugar de 100, o iniciar en 0 cuando debías iniciar en 1. Verifica siempre tus límites de inicio y fin.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Alternativa: Usando "Mientras" (While)
        </h2>
        <p style="margin-bottom: 20px;">
            El ciclo <code>Para</code> es automático, pero el ciclo <code>Mientras</code> te da más control manual. Es importante saber usar ambos. Aquí, tú eres responsable de incrementar el contador.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo SerieConMientras
    Definir contador Como Entero;
    
    // 1. Inicialización manual
    contador <- 1;
    
    // 2. Condición de entrada al ciclo
    Mientras contador <= 100 Hacer
        Escribir "Valor actual: ", contador;
        
        // 3. Incremento MANUAL (¡Fundamental!)
        // Si borras esta línea, crearás un bucle infinito
        contador <- contador + 1;
    FinMientras
    
    Escribir "Ciclo terminado con éxito.";
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo imprimo en orden inverso (100 al 1)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">En el ciclo <code>Para</code>, cambia el paso a negativo: <code>Para i <- 100 Hasta 1 Con Paso -1 Hacer</code>. Esto restará 1 en cada vuelta en lugar de sumar.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo imprimo solo los números pares?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Puedes usar <code>Con Paso 2</code> iniciando en 2. O, dentro del ciclo, usar una condición: <code>Si i MOD 2 == 0 Entonces Escribir i</code>.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué diferencia hay entre Para y Mientras?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Usa <strong>Para</strong> cuando sepas de antemano cuántas veces vas a repetir (ej: 100 veces). Usa <strong>Mientras</strong> cuando la repetición dependa de una condición externa o desconocida (ej: "Mientras el usuario no escriba 'Salir'").</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo cambiar el nombre de la variable 'i'?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">¡Sí! Puedes llamarla <code>numero</code>, <code>x</code>, <code>iterador</code> o lo que quieras. Se usa <code>i</code> por tradición matemática (índice), pero no es obligatorio.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/imprimir-numeros-1-al-100-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Determinar si un Número es Primo en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/determinar-numero-primo-pseint/</link>
					<comments>https://pseint.org/determinar-numero-primo-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 12:31:29 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=664</guid>

					<description><![CDATA[Nivel: Intermedio Tiempo: ~20 min Los números primos son la base de la criptografía moderna y la seguridad en internet. Pero, ¿cómo le enseñamos a una computadora a identificarlos? En este tutorial de Lógica de Programación, desarrollaremos un algoritmo en PSeInt para detectar si un número es primo. Analizaremos dos enfoques: el método clásico de...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Intermedio
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~20 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                Los números primos son la base de la criptografía moderna y la seguridad en internet. Pero, ¿cómo le enseñamos a una computadora a identificarlos? En este tutorial de <strong>Lógica de Programación</strong>, desarrollaremos un algoritmo en <strong>PSeInt</strong> para detectar si un número es primo. Analizaremos dos enfoques: el método clásico de «conteo de divisores» (ideal para principiantes) y el método optimizado con «banderas lógicas» (para estudiantes avanzados), utilizando comandos como <strong>MOD</strong>, <strong>Para</strong> y <strong>Si-Entonces</strong>.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Matemáticos para Programadores
        </h2>
        <p style="margin-bottom: 20px;">Antes de escribir una sola línea de código, debemos tener clara la definición matemática para traducirla a lógica:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Definición de Número Primo</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Un número entero mayor que 1 es primo si y solo si tiene <strong>exactamente dos divisores</strong>: el 1 y él mismo.
                    <br>Ejemplos: 2, 3, 5, 7, 11&#8230;
                    <br>Nota: El 1 NO es primo (solo tiene un divisor).
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">El Operador MOD (Residuo)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Para saber si un número <code>A</code> es divisible por <code>B</code>, usamos el módulo.
                    <br><code>Si A MOD B == 0</code> -> La división es exacta (B es divisor de A).
                    <br>Nuestro algoritmo buscará cuántas veces el residuo es cero.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo (Método de Contadores)
        </h2>
        <p style="margin-bottom: 20px;">El enfoque más intuitivo es intentar dividir el número por todos los valores desde 1 hasta sí mismo:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">ENTRADA</span>
                <span>Un número entero positivo ingresado por el usuario. Variable: <code>num</code>.</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">PROCESO</span>
                <span>
                    1. Inicializar un contador de divisores en 0.<br>
                    2. Crear un ciclo <code>Para</code> desde <code>i=1</code> hasta <code>num</code>.<br>
                    3. Si <code>num MOD i == 0</code>, incrementamos el contador.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">SALIDA</span>
                <span>
                    Evaluación final:<br>
                    Si <code>contador == 2</code>, entonces ES PRIMO.<br>
                    Si no, NO ES PRIMO.
                </span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Método Básico)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: PrimoBasico.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo VerificarNumeroPrimo
    // 1. Definición de Variables
    Definir num, i, divisores Como Entero;
    
    // 2. Entrada de Datos
    Escribir "=== DETECTOR DE NÚMEROS PRIMOS ===";
    Escribir "Ingrese un número entero positivo:";
    Leer num;
    
    // Inicializamos el contador de divisores
    divisores <- 0;
    
    // 3. Proceso: Buscar divisores
    // Recorremos todos los números desde 1 hasta N
    Para i <- 1 Hasta num Con Paso 1 Hacer
        
        // Si el residuo es 0, encontramos un divisor
        Si num MOD i == 0 Entonces
            divisores <- divisores + 1;
        FinSi
        
    FinPara
    
    // 4. Salida y Lógica Final
    // Un primo debe tener EXACTAMENTE 2 divisores (1 y sí mismo)
    Escribir "--------------------------------";
    Si divisores == 2 Entonces
        Escribir "El número ", num, " ES PRIMO.";
    SiNo
        Escribir "El número ", num, " NO es primo.";
        Escribir "(Tiene ", divisores, " divisores)";
    FinSi
    Escribir "--------------------------------";
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/determinar-numero-primo-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes sobre Primos
        </h2>
        <p style="margin-bottom: 20px;">Muchos estudiantes fallan en este algoritmo por conceptos matemáticos, no de programación:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Creer que el 1 es Primo</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si ingresas el número 1 en el código básico, el bucle encontrará solo 1 divisor. Como <code>divisores != 2</code>, dirá correctamente que no es primo. Sin embargo, muchos intentan "arreglar" el código para que el 1 sea primo. ¡No lo hagas! Matemáticamente el 1 no es primo.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Ineficiencia Extrema</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Si quieres verificar si el número 1,000,000 es primo, el código básico hará 1 millón de divisiones. Esto es lento. Si encontramos un divisor (ej: 2), ya sabemos que no es primo y deberíamos detener el ciclo inmediatamente.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Código Optimizado (Método de la Bandera)
        </h2>
        <p style="margin-bottom: 20px;">
            Para números grandes, no necesitamos contar divisores. Basta con encontrar <strong>uno solo</strong> (aparte del 1) para saber que <strong>NO</strong> es primo. Además, solo necesitamos buscar hasta la mitad del número (o su raíz cuadrada).
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo PrimoOptimizado
    Definir n, i Como Entero;
    Definir esPrimo Como Logico;
    
    Escribir "Ingrese número a verificar:";
    Leer n;
    
    // Casos base: 1 o menores no son primos
    Si n <= 1 Entonces
        esPrimo <- Falso;
    SiNo
        // Asumimos que ES primo hasta demostrar lo contrario
        esPrimo <- Verdadero;
        
        // OPTIMIZACIÓN: Solo buscamos hasta la mitad (n/2) o raíz cuadrada
        // Empezamos en 2 porque todo número es divisible por 1
        Para i <- 2 Hasta trunc(n/2) Hacer
            
            Si n MOD i == 0 Entonces
                // ¡Encontramos un intruso! Ya no es primo.
                esPrimo <- Falso;
                
                // Rompemos el ciclo forzando el iterador al final
                // (En otros lenguajes se usa 'break')
                i <- n; 
            FinSi
            
        FinPara
    FinSi
    
    Si esPrimo Entonces
        Escribir ">> El número ES PRIMO";
    SiNo
        Escribir ">> El número NO ES PRIMO (Es compuesto)";
    FinSi
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Por qué el 2 es el único primo par?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">El 2 es divisible solo por 1 y 2. Cualquier otro número par (4, 6, 8...) es divisible por 2, por lo tanto, tiene al menos 3 divisores (1, 2, sí mismo) y deja de ser primo.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo optimizar aún más el ciclo?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">En lugar de ir hasta <code>n/2</code>, puedes ir hasta la raíz cuadrada: <code>rc(n)</code>. Si un número no tiene divisores hasta su raíz cuadrada, no los tendrá después.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué pasa si ingreso números negativos?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Los números primos se definen en los enteros positivos (naturales > 1). El algoritmo optimizado maneja esto con la condición <code>Si n <= 1</code>, clasificando negativos como no primos.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo imprimo los primeros N primos?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Necesitas anidar ciclos. Un ciclo externo <code>Mientras</code> que cuente cuántos primos llevas encontrados, y un ciclo interno que verifique si el número actual es primo.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/determinar-numero-primo-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Generar la Serie de Fibonacci en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/serie-fibonacci-pseint/</link>
					<comments>https://pseint.org/serie-fibonacci-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 12:20:04 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=661</guid>

					<description><![CDATA[Nivel: Intermedio Tiempo: ~20 min La Sucesión de Fibonacci (0, 1, 1, 2, 3, 5, 8&#8230;) es mucho más que una curiosidad matemática que aparece en la naturaleza; es el ejercicio definitivo para dominar el concepto de intercambio de variables y acumuladores en programación. En este tutorial de PSeInt, aprenderás a generar los primeros N...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Intermedio
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~20 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                La <strong>Sucesión de Fibonacci</strong> (0, 1, 1, 2, 3, 5, 8&#8230;) es mucho más que una curiosidad matemática que aparece en la naturaleza; es el ejercicio definitivo para dominar el concepto de <strong>intercambio de variables</strong> y acumuladores en programación. En este tutorial de <strong>PSeInt</strong>, aprenderás a generar los primeros <em>N</em> términos de esta serie. El reto aquí no es solo sumar números, sino lograr que las variables «caminen» hacia adelante en cada iteración del ciclo, actualizando sus valores dinámicamente. Si logras entender cómo <code>A</code> se convierte en <code>B</code> y <code>B</code> en <code>C</code>, habrás desbloqueado un nivel superior en lógica algorítmica.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: La Lógica del Desplazamiento
        </h2>
        <p style="margin-bottom: 20px;">Para programar Fibonacci, no basta con una fórmula. Necesitamos simular el movimiento de la serie:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">La Regla de Suma</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Cada número nuevo es la suma de los dos anteriores.
                    <br>Fórmula: <code>C = A + B</code>.
                    <br>Ejemplo: Para obtener 5, sumamos 2 (A) + 3 (B).
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Intercambio de Valores (Swap)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Después de calcular el nuevo número, debemos prepararnos para la siguiente vuelta. El valor que era «el segundo» (B) pasa a ser «el primero» (A), y el nuevo resultado (C) pasa a ser «el segundo» (B).
                    <br>Lógica: <code>A <- B</code>, luego <code>B <- C</code>.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">Desglosemos el problema para generar <strong>N términos</strong>:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">ENTRADA</span>
                <span>Un número entero <code>N</code> que indica cuántos elementos de la serie queremos ver. (Ej: N=7 → 0, 1, 1, 2, 3, 5, 8).</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">PROCESO</span>
                <span>
                    1. Inicializar <code>a=0</code> y <code>b=1</code>.<br>
                    2. Usar un ciclo <strong>Para</strong> desde 1 hasta N.<br>
                    3. En cada vuelta: Mostrar <code>a</code>, calcular siguiente (<code>c=a+b</code>), y mover las variables (<code>a=b</code>, <code>b=c</code>).
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">SALIDA</span>
                <span>La lista secuencial de números separados por coma o espacio.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Generar N Términos)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: FibonacciBasico.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo SerieFibonacci
    // 1. Definición de Variables
    // 'n' es la cantidad de términos a mostrar
    // 'a' y 'b' son los números base, 'c' es el siguiente
    Definir n, a, b, c, i Como Entero;
    
    // 2. Entrada de Datos
    Escribir "=== GENERADOR FIBONACCI ===";
    Escribir "¿Cuántos términos desea generar?";
    Leer n;
    
    // 3. Inicialización de la serie
    // La serie comienza matemáticamente con 0 y 1
    a <- 0;
    b <- 1;
    
    Escribir "La serie es:";
    
    // 4. Ciclo para generar N términos
    Para i <- 1 Hasta n Hacer
        // Paso A: Mostramos el valor actual de 'a' (el más antiguo)
        // Usamos Sin Saltar para que salgan en línea horizontal
        Escribir a, ", " Sin Saltar;
        
        // Paso B: Calculamos el siguiente número (Suma de los dos actuales)
        c <- a + b;
        
        // Paso C: Desplazamiento (Swap)
        // El segundo pasa a ser el primero
        a <- b;
        // El nuevo pasa a ser el segundo
        b <- c;
        
        // PRUEBA DE ESCRITORIO (Iteración 1):
        // Imprime 0. c=0+1=1. a=1, b=1.
        // PRUEBA DE ESCRITORIO (Iteración 2):
        // Imprime 1. c=1+1=2. a=1, b=2.
        // PRUEBA DE ESCRITORIO (Iteración 3):
        // Imprime 1. c=1+2=3. a=2, b=3.
    FinPara
    
    Escribir ""; // Salto de línea final
    Escribir "=== Fin del proceso ===";
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/serie-fibonacci-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes de Principiantes
        </h2>
        <p style="margin-bottom: 20px;">Fibonacci es famoso por confundir a los estudiantes en estos puntos:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Perder los primeros números (0 y 1)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si calculas <code>c = a + b</code> y luego imprimes <code>c</code> directamente, tu serie empezará en 1, 2, 3... omitiendo el 0 y el primer 1. La clave es <strong>imprimir 'a' antes</strong> de calcular el nuevo valor.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Orden Incorrecto de Asignación</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Escribir <code>b <- c</code> y luego <code>a <- b</code> es un error fatal. Al hacer eso, 'a' recibe el valor nuevo de 'c' (porque 'b' ya fue modificado). Debes mover <code>a <- b</code> primero, para salvar el valor antiguo de 'b'.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Variante: Fibonacci hasta un Valor Máximo
        </h2>
        <p style="margin-bottom: 20px;">
            A veces el ejercicio no pide "N términos", sino "mostrar la serie mientras sea menor a 100". Aquí usamos el ciclo <code>Mientras</code>.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo FibonacciHastaValor
    Definir a, b, c, limite Como Entero;
    
    Escribir "Ingrese el valor límite (ej: 100):";
    Leer limite;
    
    a <- 0;
    b <- 1;
    
    Escribir "Serie menor a ", limite, ":";
    
    // Usamos MIENTRAS porque no sabemos cuántas vueltas serán
    Mientras a <= limite Hacer
        Escribir a, " " Sin Saltar;
        
        c <- a + b;
        a <- b;
        b <- c;
    FinMientras
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cuál es la diferencia entre "N términos" y "hasta N"?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">"N términos" significa generar una cantidad fija (ej: 5 números -> 0, 1, 1, 2, 3). "Hasta N" significa detenerse cuando el valor del número supere a N (ej: límite 5 -> 0, 1, 1, 2, 3, 5).</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo hacerlo con Recursividad en PSeInt?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí, PSeInt soporta subprocesos recursivos. La función sería <code>Fib(n) = Fib(n-1) + Fib(n-2)</code>, pero para principiantes, el método de bucle (iterativo) mostrado aquí es más eficiente y fácil de entender.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué pasa con números grandes?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Fibonacci crece exponencialmente. El término 50 ya es 12,586,269,025. Si usas <code>Entero</code>, PSeInt podría desbordarse. Para series largas, es mejor usar variables <code>Real</code> (aunque pierdan precisión en decimales) o lenguajes que soporten BigInt.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Por qué se usa en entrevistas de trabajo?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Porque demuestra si el candidato entiende el control de flujo, la asignación de variables y la optimización básica (iteración vs recursión) sin necesitar librerías complejas.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/serie-fibonacci-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Generar la Tabla de Multiplicar en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/tabla-de-multiplicar-pseint/</link>
					<comments>https://pseint.org/tabla-de-multiplicar-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 11:48:26 +0000</pubDate>
				<category><![CDATA[Ciclos y Bucles]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=655</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min ¿Recuerdas memorizar las tablas en la escuela primaria? En programación, no necesitamos memorizar; instruimos a la computadora para que calcule por nosotros. Generar una Tabla de Multiplicar es el ejercicio perfecto para dominar el concepto de Ciclos o Bucles (específicamente la estructura Para/For). En este tutorial de PSeInt, aprenderás a...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Básico
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~10 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                ¿Recuerdas memorizar las tablas en la escuela primaria? En programación, no necesitamos memorizar; instruimos a la computadora para que calcule por nosotros. Generar una <strong>Tabla de Multiplicar</strong> es el ejercicio perfecto para dominar el concepto de <strong>Ciclos o Bucles</strong> (específicamente la estructura <em>Para/For</em>). En este tutorial de <strong>PSeInt</strong>, aprenderás a solicitar un número al usuario y desplegar automáticamente sus multiplicaciones del 1 al 10 (o hasta donde tú quieras). Este algoritmo es la base para entender cómo las computadoras procesan tareas repetitivas de forma masiva y eficiente.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Iteraciones y Acumuladores
        </h2>
        <p style="margin-bottom: 20px;">Antes de escribir el pseudocódigo, es vital entender qué herramientas lógicas usaremos para evitar escribir 10 veces la misma línea de código:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">El Ciclo «Para» (For Loop)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Es una estructura de control que repite un bloque de instrucciones un número específico de veces. Para una tabla de multiplicar estándar, sabemos que queremos ir del <strong>1 al 10</strong>. El ciclo «Para» gestiona automáticamente el contador (la variable que va cambiando: 1, 2, 3&#8230;).
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Concatenación de Texto</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Para que el resultado se vea profesional (ej: «5 x 1 = 5»), no basta con imprimir el resultado matemático. Debemos mezclar variables numéricas con cadenas de texto (la «x» y el «=») en el comando <code>Escribir</code>.
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">El flujo lógico para generar la tabla es lineal pero repetitivo:</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">ENTRADA</span>
                <span>Solicitar al usuario el número base del cual desea ver la tabla (ej: el número <strong>7</strong>). Variable: <code>num</code>.</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">PROCESO (BUCLE)</span>
                <span>
                    Iniciar un ciclo donde una variable iteradora <code>i</code> vaya desde 1 hasta 10.
                    <br>En cada vuelta, calcular: <code>resultado = num * i</code>.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">SALIDA</span>
                <span>En cada iteración del ciclo, imprimir la línea formateada: <code>num " x " i " = " resultado</code>.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Solución Estándar)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: TablaMultiplicar.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo GenerarTablaMultiplicar
    // 1. Definición de Variables
    // 'num': el número que elige el usuario
    // 'i': el iterador (contador) del ciclo
    // 'res': donde guardamos el resultado de la multiplicación
    Definir num, i, res Como Entero;
    
    // 2. Entrada de Datos
    Escribir "=== GENERADOR DE TABLAS DE MULTIPLICAR ===";
    Escribir "Ingrese el número del cual desea ver la tabla:";
    Leer num;
    
    Escribir "-------------------------------";
    Escribir "Tabla del ", num, ":";
    Escribir "-------------------------------";
    
    // 3. Estructura Repetitiva PARA
    // Sintaxis: Para variable <- inicio Hasta fin Con Paso 1 Hacer
    
    Para i <- 1 Hasta 10 Con Paso 1 Hacer
        
        // Cálculo matemático
        res <- num * i;
        
        // Salida formateada (Concatenación con comas)
        Escribir num, " x ", i, " = ", res;
        
    FinPara
    
    Escribir "-------------------------------";
    Escribir "Fin del proceso.";
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/tabla-de-multiplicar-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Comunes de Principiantes
        </h2>
        <p style="margin-bottom: 20px;">Los bucles pueden ser confusos al principio. Evita estos fallos:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Confundir Variables (i vs num)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Es común escribir <code>res <- num * num</code> por error. Esto multiplicaría 7x7 diez veces. Recuerda que debes multiplicar el número fijo (<code>num</code>) por el número cambiante (<code>i</code>).
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Formato de Salida Pobre</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Si solo escribes <code>Escribir res</code>, el usuario verá una lista de números: 7, 14, 21... sin contexto. Es fundamental incluir el texto "x" y "=" para que se entienda que es una tabla de multiplicar.
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Tabla Dinámica (Rango Personalizado)
        </h2>
        <p style="margin-bottom: 20px;">
            Vamos a mejorar el algoritmo. ¿Por qué limitarnos al 10? El siguiente código permite al usuario decidir hasta qué número quiere multiplicar (ej: la tabla del 5 hasta el 20).
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo TablaDinamica
    Definir num, limite, i, res Como Entero;
    
    Escribir "Ingrese el número base:";
    Leer num;
    
    Escribir "¿Hasta qué número quiere multiplicar? (Ej: 10, 20, 50):";
    Leer limite;
    
    // Validación básica: evitar límites negativos
    Si limite < 1 Entonces
        Escribir "Error: El límite debe ser positivo.";
    SiNo
        // Usamos la variable 'limite' en el ciclo Para
        Para i <- 1 Hasta limite Hacer
            res <- num * i;
            Escribir num, " x ", i, " = ", res;
        FinPara
    FinSi
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo usar el ciclo Mientras (While)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí. Inicializas <code>i <- 1</code> fuera del ciclo, usas <code>Mientras i <= 10 Hacer</code> y, muy importante, dentro del ciclo agregas <code>i <- i + 1</code> para evitar un bucle infinito.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo genero todas las tablas del 1 al 10?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Necesitas <strong>Ciclos Anidados</strong> (un Para dentro de otro Para). El ciclo externo controla la tabla (1 al 10) y el interno controla la multiplicación (1 al 10).</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo hacer la tabla en orden inverso?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">¡Claro! Modifica el ciclo Para así: <code>Para i <- 10 Hasta 1 Con Paso -1 Hacer</code>. Esto contará hacia atrás: 10, 9, 8...</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué pasa si ingreso un número decimal?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Si definiste las variables como <code>Entero</code>, PSeInt dará error. Para aceptar decimales (ej: tabla del 2.5), define las variables <code>num</code> y <code>res</code> como <code>Real</code>.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/tabla-de-multiplicar-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
