<?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>Ejercicios Básicos &#8211; PSeInt.org</title>
	<atom:link href="https://pseint.org/ejercicios-basicos/feed/" rel="self" type="application/rss+xml" />
	<link>https://pseint.org</link>
	<description>Descarga, Tutoriales y Ejercicios de Pseudocódigo</description>
	<lastBuildDate>Sat, 17 Jan 2026 15:30:49 +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>Ejercicios Básicos &#8211; PSeInt.org</title>
	<link>https://pseint.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Algoritmo para Convertir Segundos a Horas, Minutos y Segundos en PSeInt (2026)</title>
		<link>https://pseint.org/convertir-segundos-horas-minutos-pseint/</link>
					<comments>https://pseint.org/convertir-segundos-horas-minutos-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 15:30:49 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=613</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~15 min ¿Alguna vez te has preguntado cómo tu reloj digital convierte un número gigante de segundos en un formato legible como 12:30:45? Este es uno de los ejercicios más efectivos para dominar la lógica de programación matemática. En este tutorial de PSeInt, aprenderás a descomponer una cantidad total de segundos utilizando...]]></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;">
                ¿Alguna vez te has preguntado cómo tu reloj digital convierte un número gigante de segundos en un formato legible como <strong>12:30:45</strong>? Este es uno de los ejercicios más efectivos para dominar la lógica de programación matemática. En este tutorial de <strong>PSeInt</strong>, aprenderás a descomponer una cantidad total de segundos utilizando dos herramientas poderosas: la <strong>División Entera (Trunc)</strong> para obtener las unidades grandes y el operador <strong>Módulo (MOD)</strong> para rescatar los residuos. Si logras entender este ejercicio, habrás dominado el manejo de datos numéricos enteros.
            </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: Módulo y División Entera
        </h2>
        <p style="margin-bottom: 20px;">Para resolver este problema, necesitamos algo más que sumas y restas. Necesitamos «repartir» el tiempo en bloques de 60:</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;">
                    El operador <code>MOD</code> nos da el <strong>residuo</strong> de una división. Si tienes 65 segundos y los divides entre 60 (1 minuto), sobra 5. Ese «5» es lo que obtenemos con <code>65 MOD 60</code>. Es esencial para calcular los segundos y minutos restantes.
                </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;">Función Trunc (Parte Entera)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Al dividir segundos para obtener horas, el resultado suele tener decimales. En PSeInt, la función <code>trunc()</code> elimina los decimales, quedándose solo con la parte entera. Ejemplo: <code>trunc(90 / 60)</code> da 1 (no 1.5).
                </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 estrategia es ir de la unidad más grande a la más pequeña (Horas -> Minutos -> Segundos):</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 que representa la cantidad total de segundos (ej: 3665). Variable sugerida: <code>segundosTotales</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. <strong>Horas:</strong> Dividir el total entre 3600 y tomar la parte entera.<br>
                    2. <strong>Residuo:</strong> Calcular cuántos segundos sobran después de sacar las horas.<br>
                    3. <strong>Minutos:</strong> Dividir ese residuo entre 60 y tomar la parte entera.<br>
                    4. <strong>Segundos:</strong> Lo que sobre finalmente es el residuo de dividir entre 60.
                </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 formateado como reloj: HH : MM : SS.</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: ConversorTiempo.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 SegundosAHoras
    // 1. Definición de Variables
    // Todo debe ser Entero porque no existen "medias horas" en formato reloj digital
    Definir totalSeg, horas, minutos, seg, residuo Como Entero;
    
    // 2. Entrada de Datos
    Escribir "=== Conversor de Tiempo ===";
    Escribir "Ingrese la cantidad total de segundos:";
    Leer totalSeg;
    
    // 3. Proceso
    // Paso A: Calcular Horas (1 hora = 3600 segundos)
    horas <- trunc(totalSeg / 3600);
    
    // Paso B: Ver cuánto "sobra" después de quitar las horas
    residuo <- totalSeg MOD 3600;
    
    // Paso C: De lo que sobró, calcular Minutos (1 minuto = 60 segundos)
    minutos <- trunc(residuo / 60);
    
    // Paso D: Los segundos finales son lo que sobra de dividir entre 60
    seg <- residuo MOD 60;
    
    // 4. Salida de Resultados
    Escribir "--------------------------------";
    Escribir "El tiempo equivalente es:";
    Escribir horas, " Horas";
    Escribir minutos, " Minutos";
    Escribir seg, " Segundos";
    Escribir "Formato: ", horas, ":", minutos, ":", seg;
    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/convertir-segundos-horas-minutos-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 al Usar MOD y TRUNC
        </h2>
        <p style="margin-bottom: 20px;">La gestión del tiempo en programación tiene trampas sutiles:</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 la Función TRUNC</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si escribes <code>horas <- total / 3600</code>, PSeInt devolverá un decimal (ej: 1.5 horas). Un reloj no muestra "1.5 horas y 30 minutos", muestra "1 hora y 30 minutos". Es obligatorio cortar los decimales con <code>trunc()</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;">Calcular Minutos sobre el Total</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Error frecuente: <code>minutos <- trunc(totalSeg / 60)</code>. Esto te dará el total absoluto de minutos (ej: 90 minutos), no los minutos *restantes* (30 minutos) después de sacar la hora. Debes usar el <strong>residuo</strong>, no el total original.
                </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 (Validación)
        </h2>
        <p style="margin-bottom: 20px;">
            ¿Qué pasa si el usuario ingresa un tiempo negativo? Un buen algoritmo debe prevenir esto. Además, este código añade una lógica simple para mostrar los datos de forma limpia.
        </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 ConversorValidado
    Definir ts, h, m, s, r Como Entero;
    
    // Ciclo de validación: No acepta negativos
    Repetir
        Escribir "Ingrese los segundos totales (positivo):";
        Leer ts;
        Si ts < 0 Entonces
            Escribir "Error: El tiempo no puede ser negativo.";
        FinSi
    Hasta Que ts >= 0
    
    h <- trunc(ts / 3600);
    r <- ts MOD 3600;  // Residuo de horas
    m <- trunc(r / 60);
    s <- r MOD 60;     // Residuo final
    
    Escribir "Tiempo Convertido:";
    
    // Condicional para plurales (Estética)
    Si h = 1 Entonces
        Escribir h, " hora";
    SiNo
        Escribir h, " horas";
    FinSi
    
    Escribir m, " min y ", s, " seg";
    
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 hago el proceso inverso (HH:MM:SS a Segundos)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Es mucho más fácil: solo multiplicas y sumas. <code>Total = (Horas * 3600) + (Minutos * 60) + Segundos</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;">¿Qué significa el error "No coinciden los tipos"?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Probablemente definiste las variables como <code>Real</code> y estás intentando usar <code>MOD</code>, que es un operador exclusivo para números <code>Enteros</code>. Cambia la definición de tus variables.</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 muestro el cero a la izquierda (05 min)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Necesitas una condición <code>Si</code>. Ejemplo: <code>Si minutos < 10 Entonces Escribir "0", minutos; SiNo Escribir minutos; FinSi</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;">¿Por qué se divide entre 3600?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Porque una hora tiene 60 minutos, y cada minuto tiene 60 segundos. 60 x 60 = 3600. Es el "factor de conversión" directo de segundos a horas.</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/convertir-segundos-horas-minutos-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Calcular Precio Final con IVA en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/calcular-precio-con-iva-pseint/</link>
					<comments>https://pseint.org/calcular-precio-con-iva-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 15:24:28 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=610</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min El cálculo de impuestos es el «Hola Mundo» de los sistemas financieros. Ya sea que estés en España (21%), México (16%), Colombia (19%) o cualquier otro país, la lógica para aplicar el Impuesto al Valor Agregado (IVA) es universal. En este tutorial de PSeInt, aprenderás a tomar un precio base,...]]></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;">
                El cálculo de impuestos es el «Hola Mundo» de los sistemas financieros. Ya sea que estés en España (21%), México (16%), Colombia (19%) o cualquier otro país, la lógica para aplicar el <strong>Impuesto al Valor Agregado (IVA)</strong> es universal. En este tutorial de <strong>PSeInt</strong>, aprenderás a tomar un precio base, calcular el monto del impuesto usando porcentajes y sumar todo para obtener el precio final de venta. Dominar este ejercicio te permitirá entender cómo manejar <strong>variables Reales</strong> (decimales) y cómo traducir porcentajes matemáticos a expresiones que la computadora pueda procesar.
            </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: Matemáticas Financieras en Programación
        </h2>
        <p style="margin-bottom: 20px;">Para que tu algoritmo funcione correctamente, debes traducir la lógica comercial a lógica computacional:</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;">Representación de Porcentajes</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    La computadora no entiende el símbolo «%» directamente en una fórmula matemática. Debes recordar que un porcentaje es una fracción de 100.
                    <br>• 21% se escribe como <strong>0.21</strong>
                    <br>• 16% se escribe como <strong>0.16</strong>
                    <br>• 50% se escribe como <strong>0.50</strong>
                </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;">Precisión Decimal (Variables Reales)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Al trabajar con dinero, los decimales son obligatorios. Un precio puede ser $10.50 y su impuesto $1.68. Si defines las variables como <strong>Entero</strong>, PSeInt truncará los centavos, generando un error de cálculo financiero grave. Siempre usa <code>Definir ... Como Real</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;">Estructura del flujo para una calculadora de IVA básica:</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. <strong>Precio Base:</strong> El costo del producto sin impuestos (ej: $100).<br>
                    2. <strong>Porcentaje de IVA:</strong> La tasa a aplicar (ej: 21).
                </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>
                    Calcular el monto del impuesto y sumarlo al base.<br>
                    <code>MontoIVA = PrecioBase * (Porcentaje / 100)</code><br>
                    <code>PrecioFinal = PrecioBase + MontoIVA</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 desglose: Precio Base, Monto del IVA calculado y Precio Total a pagar.</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 (Calculadora Universal)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: CalcularIVA.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 CalcularPrecioConIVA
    // 1. Definición de Variables
    // Todo dinero debe ser Real
    Definir precioBase, porcentajeIVA, montoIVA, precioFinal Como Real;
    
    // 2. Entrada de Datos
    Escribir "=== Calculadora de Impuestos (IVA) ===";
    Escribir "Ingrese el precio del producto (sin impuestos):";
    Leer precioBase;
    
    Escribir "Ingrese el % de IVA a aplicar (ej: 21, 16, 19):";
    Leer porcentajeIVA;
    
    // 3. Proceso
    // Convertimos el número entero (21) a decimal (0.21) dividiendo por 100
    montoIVA <- precioBase * (porcentajeIVA / 100);
    
    // Sumamos el impuesto al precio original
    precioFinal <- precioBase + montoIVA;
    
    // 4. Salida de Resultados (Desglose tipo Factura)
    Escribir "-----------------------------------";
    Escribir "Subtotal:      $", precioBase;
    Escribir "IVA (", porcentajeIVA, "%):      $", montoIVA;
    Escribir "-----------------------------------";
    Escribir "TOTAL A PAGAR: $", precioFinal;
    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/calcular-precio-con-iva-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 al Calcular Porcentajes
        </h2>
        <p style="margin-bottom: 20px;">Evita estos fallos matemáticos frecuentes que rompen la lógica del programa:</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;">Multiplicar directo por el entero</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Error grave: <code>impuesto <- precio * 21</code>. <br>
                    Esto multiplica el precio por 21 veces, no por el 21%. Si el usuario ingresa el número "21", tu código <strong>debe</strong> dividirlo entre 100 para convertirlo a 0.21.
                </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;">Sumar Porcentaje al Número</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Error: <code>total <- precio + 0.21</code>. <br>
                    No puedes sumar dinero ($100) con un factor decimal (0.21). Debes sumar el *resultado* de la multiplicación: <code>total <- precio + (precio * 0.21)</code>.
                </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: Factura Detallada con Descuento (Avanzado)
        </h2>
        <p style="margin-bottom: 20px;">
            En la vida real, a veces se aplica un descuento antes del impuesto. El siguiente código avanzado solicita el precio, aplica un <strong>descuento</strong> si el monto es alto, y luego calcula el IVA sobre el nuevo subtotal.
        </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 FacturaCompleta
    Definir precio, descuento, subtotal, iva, total Como Real;
    
    Escribir "Ingrese precio del producto:";
    Leer precio;
    
    // Si compra más de $1000, recibe 10% de descuento
    Si precio > 1000 Entonces
        descuento <- precio * 0.10;
        Escribir "¡Descuento aplicado del 10%!";
    SiNo
        descuento <- 0;
    FinSi
    
    subtotal <- precio - descuento;
    
    // Calculamos IVA sobre el precio ya descontado (Norma común)
    // Suponemos IVA fijo del 21%
    iva <- subtotal * 0.21; 
    
    total <- subtotal + iva;
    
    Escribir "=== FACTURA ===";
    Escribir "Precio Lista:  $", precio;
    Escribir "Descuento:    -$", descuento;
    Escribir "Subtotal:      $", subtotal;
    Escribir "IVA (21%):    +$", iva;
    Escribir "TOTAL:         $", total;
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 extraigo el IVA de un precio total?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Si ya tienes el precio final y quieres saber cuánto era el precio base, debes dividir por (1 + tasa). Ejemplo para IVA 21%: <code>Base <- PrecioFinal / 1.21;</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;">¿Puedo poner el porcentaje de IVA fijo?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí, si tu programa es solo para un país (ej: España), puedes definir una constante o simplemente usar <code>0.21</code> en el código sin pedirlo al usuario.</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 redondeo el precio final a 2 decimales?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Usa la fórmula de redondeo clásica: <code>total <- redon(total * 100) / 100;</code>. Esto asegura que el valor monetario sea correcto para contabilidad.</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 precio negativo?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Deberías añadir una validación con <code>Si-Entonces</code> o <code>Repetir-Hasta Que</code> para asegurar que <code>precio > 0</code>, ya que no existen precios negativos en ventas.</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-precio-con-iva-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Calcular Salario Semanal en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/calcular-salario-semanal-pseint/</link>
					<comments>https://pseint.org/calcular-salario-semanal-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 15:18:04 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=607</guid>

					<description><![CDATA[Nivel: Básico / Intermedio Tiempo: ~20 min El cálculo de nómina es una de las aplicaciones empresariales más comunes que un programador debe resolver. En este tutorial, desarrollaremos un algoritmo en PSeInt para calcular el salario semanal de un trabajador basándonos en las horas trabajadas y el pago por hora. Aunque la fórmula básica es...]]></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: ~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;">
                El cálculo de nómina es una de las aplicaciones empresariales más comunes que un programador debe resolver. En este tutorial, desarrollaremos un algoritmo en <strong>PSeInt</strong> para calcular el salario semanal de un trabajador basándonos en las horas trabajadas y el pago por hora. Aunque la fórmula básica es una simple multiplicación, este ejercicio es perfecto para introducir conceptos como <strong>acumuladores</strong>, manejo de moneda con variables <strong>Reales</strong> y, en la sección avanzada, la lógica condicional para calcular <strong>Horas Extra</strong> (overtime). Este es un pilar fundamental para entender cómo los sistemas ERP procesan pagos en la vida real.
            </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 para este Ejercicio
        </h2>
        <p style="margin-bottom: 20px;">Para procesar pagos correctamente, debemos ser precisos con los tipos de datos y las operaciones:</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;">Variables de Moneda (Reales)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    El dinero no es un número entero. Un pago por hora puede ser $15.50 o un salario total $450.75. Por ello, es obligatorio definir las variables de dinero (y usualmente las horas) como <code>Real</code>. Usar enteros provocaría pérdidas de centavos que, a gran escala, son graves errores contables.
                </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;">Lógica Secuencial vs Condicional</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    En su forma más simple, el salario es <code>Horas * Tarifa</code> (Secuencial). Sin embargo, si el problema implica «Horas Extra» (pagar doble después de las 40 horas), necesitamos usar estructuras <code>Si-Entonces</code> para bifurcar el cálculo.
                </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 Problema
        </h2>
        <p style="margin-bottom: 20px;">Para construir el algoritmo, seguiremos el flujo de procesamiento de una nómina estándar:</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>Datos necesarios del trabajador:
                    <br>1. Cantidad de horas trabajadas en la semana.
                    <br>2. Tarifa o precio por hora.
                </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>Multiplicar las horas por la tarifa base. <br><em>Fórmula:</em> <code>Salario = Horas * PrecioHora</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>Desplegar el monto total a pagar, idealmente formateado con texto explicativo.</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 (Cálculo Básico)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: SalarioSimple.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 CalculoSalarioBasico
    // 1. Definición de Variables
    // Usamos Real para permitir centavos y fracciones de hora
    Definir horasTrabajadas, pagoPorHora, salarioSemanal Como Real;
    Definir nombreObrero Como Caracter;
    
    // 2. Entrada de Datos
    Escribir "=== Sistema de Nómina ===";
    Escribir "Ingrese el nombre del trabajador:";
    Leer nombreObrero;
    
    Escribir "Ingrese las horas trabajadas esta semana:";
    Leer horasTrabajadas;
    
    Escribir "Ingrese el pago por hora ($):";
    Leer pagoPorHora;
    
    // 3. Proceso
    salarioSemanal <- horasTrabajadas * pagoPorHora;
    
    // 4. Salida
    Escribir "--------------------------------";
    Escribir "Reporte de Pago para: ", nombreObrero;
    Escribir "Total a pagar: $", salarioSemanal;
    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/calcular-salario-semanal-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 al Calcular Pagos
        </h2>
        <p style="margin-bottom: 20px;">Estos son los fallos más habituales que cometen los estudiantes al diseñar algoritmos de salarios:</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;">Valores Negativos</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Permitir que el usuario ingrese "-10 horas" o un precio de "-50 pesos". Matemáticamente la multiplicación funciona, pero en la lógica de negocios es un error grave. El código siempre debe validar que los números sean positivos.
                </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;">Ignorar las Horas Extra</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    En muchos países, trabajar más de 40 horas implica un pago doble por el tiempo excedente. Usar la fórmula simple <code>H*P</code> para alguien que trabajó 50 horas resultará en un pago menor al legal, lo cual es incorrecto en ejercicios intermedios.
                </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álculo con Horas Extra (Condicionales)
        </h2>
        <p style="margin-bottom: 20px;">
            Vamos a profesionalizar el algoritmo. Si el empleado trabaja más de 40 horas, las primeras 40 se pagan normal y el resto se paga al doble (2x).
        </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 SalarioConHorasExtra
    Definir horas, tarifa, salarioTotal, horasExtra, pagoExtra Como Real;
    
    Escribir "Ingrese horas trabajadas:";
    Leer horas;
    Escribir "Ingrese tarifa por hora:";
    Leer tarifa;
    
    // Validación de datos positivos
    Si horas > 0 Y tarifa > 0 Entonces
        
        // Lógica de Horas Extra
        Si horas > 40 Entonces
            horasExtra <- horas - 40;
            // Las primeras 40 normales + las extra al doble
            salarioTotal <- (40 * tarifa) + (horasExtra * tarifa * 2);
            
            Escribir "Horas normales: 40";
            Escribir "Horas extras (x2): ", horasExtra;
        SiNo
            // Si no hay extras, cálculo simple
            salarioTotal <- horas * tarifa;
        FinSi
        
        Escribir ">>> Sueldo Semanal Neto: $", salarioTotal;
        
    SiNo
        Escribir "Error: Los valores deben ser positivos.";
    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;">¿Cómo puedo restar impuestos al salario?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Simplemente calcula el salario bruto y luego multiplica por el porcentaje restante. Ejemplo para un impuesto del 10%: <code>SalarioNeto <- SalarioBruto * 0.90;</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;">¿Qué pasa si el trabajador falta (0 horas)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">El algoritmo multiplicará 0 por la tarifa, dando como resultado un salario de 0. Esto es matemáticamente correcto y lógico para el negocio.</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 para procesar 50 empleados?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Deberás envolver todo el código de cálculo dentro de un ciclo <code>Para</code> o <code>Mientras</code>, preguntando al usuario cuántos empleados desea procesar al inicio.</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 agregar bonos de puntualidad?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí, solicita una variable extra (ej: <code>bono</code>) y súmala al final: <code>SalarioFinal <- SalarioCalculado + bono;</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/calcular-salario-semanal-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Convertir Metros a Centímetros y Milímetros en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/convertir-metros-centimetros-milimetros-pseint/</link>
					<comments>https://pseint.org/convertir-metros-centimetros-milimetros-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 15:11:28 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=604</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min Las aplicaciones de conversión de unidades son esenciales en ingeniería, arquitectura y física básica. En este tutorial de Lógica de Programación, aprenderás a diseñar un algoritmo en PSeInt que tome una medida en metros y la desglose automáticamente en sus equivalentes menores: centímetros y milímetros. Este ejercicio es perfecto 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;">
                Las aplicaciones de conversión de unidades son esenciales en ingeniería, arquitectura y física básica. En este tutorial de <strong>Lógica de Programación</strong>, aprenderás a diseñar un algoritmo en <strong>PSeInt</strong> que tome una medida en metros y la desglose automáticamente en sus equivalentes menores: centímetros y milímetros. Este ejercicio es perfecto para practicar la <strong>asignación de variables</strong>, el uso de <strong>operadores aritméticos de multiplicación</strong> y el manejo de datos de tipo <strong>Real</strong>, ya que las medidas de longitud frecuentemente incluyen decimales (por ejemplo, 1.75 metros).
            </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 y de Programación
        </h2>
        <p style="margin-bottom: 20px;">Antes de codificar, repasemos la base matemática y cómo se traduce al lenguaje de la computadora:</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;">Factores de Conversión</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Para bajar en la «escalera» de unidades métricas, multiplicamos por potencias de 10:
                    <br>• 1 Metro = 100 Centímetros (×100)
                    <br>• 1 Metro = 1000 Milímetros (×1000)
                    <br>En programación, usaremos el operador asterisco (<code>*</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;">Variables Reales</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    ¿Qué pasa si el usuario quiere convertir «Medio metro» (0.5m)? Si declaramos la variable como <code>Entero</code>, PSeInt podría redondear a 0 o 1, dando un resultado falso. Por eso, siempre definiremos las unidades de medida como <code>Real</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;">Estructuramos la solución lógica en tres pasos sencillos:</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 la cantidad de metros a convertir. Variable sugerida: <code>metros</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>
                    Realizar dos multiplicaciones independientes:<br>
                    1. <code>cm = metros * 100</code><br>
                    2. <code>mm = metros * 1000</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 los resultados calculados acompañados de sus abreviaturas correspondientes (cm, mm) para claridad del usuario.</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: ConversorLongitud.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 MetrosACentimetrosYMilimetros
    // 1. Definición de Variables
    // Definimos todo como Real para soportar decimales (ej: 1.5 metros)
    Definir metros, centimetros, milimetros Como Real;
    
    // 2. Entrada de Datos
    Escribir "=== Conversor de Unidades de Longitud ===";
    Escribir "Ingrese la cantidad de metros:";
    Leer metros;
    
    // 3. Proceso: Operaciones Aritméticas
    // 1 metro tiene 100 centímetros
    centimetros <- metros * 100;
    
    // 1 metro tiene 1000 milímetros
    milimetros <- metros * 1000;
    
    // 4. Salida de Resultados
    Escribir "---------------------------------------";
    Escribir "Resultados de la conversión:";
    Escribir metros, " metros equivalen a:";
    Escribir "> ", centimetros, " cm (Centímetros)";
    Escribir "> ", milimetros, " mm (Milímetros)";
    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/convertir-metros-centimetros-milimetros-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 en Conversiones
        </h2>
        <p style="margin-bottom: 20px;">Aunque la matemática es simple, la implementación puede fallar por estos detalles:</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;">Dividir en lugar de Multiplicar</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Error clásico: <code>cm <- metros / 100</code>. Esto sería correcto si estuviéramos convirtiendo <em>de centímetros a metros</em>. Recuerda: de unidad grande a pequeña se multiplica; de pequeña a grande se divide.
                </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;">Ingresar comas en lugar de puntos</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Si al ejecutar escribes "1,5", PSeInt podría lanzar un error dependiendo de su configuración regional. Acostúmbrate a usar el punto decimal "1.5" en programación.
                </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 de Datos (Distancias Positivas)
        </h2>
        <p style="margin-bottom: 20px;">
            En física clásica, una distancia no suele ser negativa. Vamos a mejorar el código para evitar que el usuario ingrese "-5 metros", lo cual generaría resultados matemáticamente correctos pero físicamente absurdos en este contexto.
        </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 ConversorValidado
    Definir metros, cm, mm Como Real;
    
    // Usamos un ciclo 'Repetir' para obligar a un dato válido
    Repetir
        Escribir "Ingrese la cantidad de metros (debe ser positivo):";
        Leer metros;
        
        Si metros < 0 Entonces
            Escribir "ERROR: La distancia no puede ser negativa.";
            Escribir "Inténtelo de nuevo.";
        FinSi
    Hasta Que metros >= 0
    
    // Una vez validado, procedemos al cálculo
    cm <- metros * 100;
    mm <- metros * 1000;
    
    Escribir "--- Conversión Exitosa ---";
    Escribir metros, " m = ", cm, " cm";
    Escribir metros, " m = ", mm, " mm";
    
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 convierto a Kilómetros también?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Para pasar de metros a kilómetros (unidad más grande), debes dividir entre 1000. Agrega la línea: <code>km <- metros / 1000;</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;">¿Por qué me salen muchos decimales como 100.00001?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Esto es un tema de precisión de punto flotante en las computadoras. Puedes usar la función <code>redon(variable)</code> para limpiar el resultado visualmente si lo deseas.</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 un menú para elegir qué convertir?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">¡Claro! Usando la estructura <code>Segun</code> (Switch), puedes preguntar al usuario: "1. Metros a CM" o "2. Metros a MM" y ejecutar solo el bloque de código correspondiente.</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é es una variable 'Real'?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Es un tipo de dato que acepta números con decimales (punto flotante). Es fundamental usarlo en mediciones físicas porque casi nada en el mundo real mide exactamente 1 o 2 metros cerrados.</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/convertir-metros-centimetros-milimetros-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Intercambiar Variables (Swap) en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/intercambiar-valores-variables-pseint/</link>
					<comments>https://pseint.org/intercambiar-valores-variables-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 14:35:36 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=601</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min El intercambio de valores entre dos variables, conocido técnicamente como «Swap», es una de las maniobras lógicas más importantes en la programación. Aunque parece trivial, no puedes simplemente igualar una variable a otra sin perder datos. En este tutorial de PSeInt, aprenderás la lógica correcta utilizando una variable auxiliar (el...]]></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;">
                El intercambio de valores entre dos variables, conocido técnicamente como <strong>«Swap»</strong>, es una de las maniobras lógicas más importantes en la programación. Aunque parece trivial, no puedes simplemente igualar una variable a otra sin perder datos. En este tutorial de <strong>PSeInt</strong>, aprenderás la lógica correcta utilizando una <strong>variable auxiliar</strong> (el método clásico) y descubriremos por qué este pequeño algoritmo es el corazón de sistemas más complejos, como los métodos de ordenamiento (Burbuja, Quicksort). Si alguna vez te has preguntado «¿Cómo paso el valor de A a B y de B a A sin borrar nada?», esta es tu guía definitiva.
            </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 Analogía de los Vasos
        </h2>
        <p style="margin-bottom: 20px;">Para entender este problema, olvidemos los números por un momento y pensemos en física:</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 Problema de la Asignación Destructiva</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Imagina que tienes un vaso con <strong>Jugo (A)</strong> y otro con <strong>Agua (B)</strong>. Si viertes el agua directamente en el vaso del jugo, el jugo se pierde (se derrama o se mezcla). En programación, hacer <code>A <- B</code> destruye instantáneamente el valor original de A.
                </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 Auxiliar (Temporal)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Para intercambiar los líquidos sin perderlos, necesitas un <strong>tercer vaso vacío</strong> (Auxiliar).
                    1. Viertes el Jugo (A) en el Vaso Vacío (Aux).
                    2. Viertes el Agua (B) en el vaso de Jugo (A).
                    3. Viertes el contenido del Vaso Auxiliar en el vaso de Agua (B).
                </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;">Pasemos la analogía de los vasos a instrucciones de pseudocódigo:</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>Dos variables con valores iniciales distintos. <br>Ejemplo: <code>num1 = 10</code>, <code>num2 = 50</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. Guardar <code>num1</code> en <code>aux</code>.<br>
                    2. Sobrescribir <code>num1</code> con el valor de <code>num2</code>.<br>
                    3. Asignar a <code>num2</code> el valor guardado en <code>aux</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 las variables invertidas: <code>num1 = 50</code>, <code>num2 = 10</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 (Método Clásico)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: IntercambioVariables.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 IntercambioDeVariables
    // 1. Definición de variables
    // Necesitamos una variable 'aux' del mismo tipo que las originales
    Definir valorA, valorB, aux Como Entero;
    
    // 2. Entrada de datos
    Escribir "--- Antes del Intercambio ---";
    Escribir "Ingrese el valor de A:";
    Leer valorA;
    Escribir "Ingrese el valor de B:";
    Leer valorB;
    
    Escribir "Original -> A vale: ", valorA, " y B vale: ", valorB;
    
    // 3. Proceso de Intercambio (Swap)
    // Paso 1: Resguardamos el valor de A en Aux
    aux <- valorA;
    
    // Paso 2: Ahora es seguro sobrescribir A con el valor de B
    valorA <- valorB;
    
    // Paso 3: Recuperamos el valor original de A (desde Aux) y lo ponemos en B
    valorB <- aux;
    
    // 4. Salida de resultados
    Escribir "";
    Escribir "--- Después del Intercambio ---";
    Escribir "Ahora -> A vale: ", valorA, " y B vale: ", valorB;
    
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/intercambiar-valores-variables-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 Fatales al Intercambiar
        </h2>
        <p style="margin-bottom: 20px;">Parece sencillo, pero el 90% de los principiantes comete este error en su primer intento:</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;">El "Intento Ingenuo" (Pérdida de Datos)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Escribir: <br>
                    <code>A <- B</code><br>
                    <code>B <- A</code><br>
                    <strong>¿Qué pasa aquí?</strong> En la primera línea, A toma el valor de B. El valor original de A desaparece. En la segunda línea, B toma el valor de A (que ahora es igual a B). Resultado: Ambas variables terminan valiendo lo mismo que B originalmente.
                </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;">Tipo de Datos Incorrecto para Aux</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Si A y B son <code>Reales</code> (decimales) pero defines <code>aux</code> como <code>Entero</code>, perderás los decimales durante el intercambio. La variable auxiliar siempre debe ser del mismo tipo que las variables que estás moviendo.
                </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;">
            Nivel Experto: Intercambio Matemático (Sin Auxiliar)
        </h2>
        <p style="margin-bottom: 20px;">
            ¿Sabías que puedes intercambiar dos números <strong>sin usar una tercera variable</strong>? Usando aritmética pura (sumas y restas), podemos lograr el mismo resultado. Este método ahorra memoria, aunque es menos legible y tiene riesgo de desbordamiento (overflow) con números muy grandes.
        </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 SwapMatematico
    Definir A, B Como Entero;
    
    A <- 50;
    B <- 20;
    
    Escribir "Inicio: A=", A, " B=", B;
    
    // Truco matemático:
    // Imaginemos que A y B son contenedores de "peso"
    
    // 1. Sumamos ambos pesos en A
    A <- A + B;  // A ahora vale 70 (50+20)
    
    // 2. Quitamos el peso original de B a la suma total
    B <- A - B;  // 70 - 20 = 50. ¡B ahora tiene el valor original de A!
    
    // 3. Quitamos el nuevo peso de B a la suma total
    A <- A - B;  // 70 - 50 = 20. ¡A ahora tiene el valor original de B!
    
    Escribir "Final: A=", A, " B=", B;
    
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;">¿Para qué sirve intercambiar variables?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Es la base de casi todos los <strong>algoritmos de ordenamiento</strong>. Por ejemplo, en el "Método Burbuja", si un número es mayor que el siguiente, se debe hacer un <em>swap</em> para ordenarlos. Sin esta operación, no podríamos ordenar listas de datos.</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 intercambiar variables de diferente tipo?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">No directamente. PSeInt es un lenguaje tipado. No puedes guardar un texto en una variable entera. Ambas variables deben ser compatibles (ej: dos Enteros o dos Reales) para intercambiar sus contenidos.</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é método es mejor: Auxiliar o Matemático?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">En la práctica profesional, el método de la <strong>variable auxiliar</strong> es preferible el 99% de las veces. Es más claro de leer, funciona con textos y booleanos (no solo números) y evita errores de desbordamiento matemático.</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;">¿Existe una función Swap() en PSeInt?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">PSeInt puro no tiene una función nativa <code>Swap(a,b)</code>, por lo que siempre debes escribir las tres líneas de código manualmente o crear un SubProceso si estás en un nivel avanzado.</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/intercambiar-valores-variables-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Calcular el Promedio de 3 Calificaciones en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/calcular-promedio-3-calificaciones-pseint/</link>
					<comments>https://pseint.org/calcular-promedio-3-calificaciones-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 14:19:11 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=596</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~15 min Determinar el rendimiento académico de un alumno es el ejercicio clásico para dominar las operaciones aritméticas y las estructuras condicionales. En este tutorial, desarrollaremos un algoritmo en PSeInt que solicita tres notas parciales, calcula el promedio final y, lo más importante, utiliza lógica computacional para decidir si el estudiante Aprueba...]]></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;">
                Determinar el rendimiento académico de un alumno es el ejercicio clásico para dominar las operaciones aritméticas y las estructuras condicionales. En este tutorial, desarrollaremos un algoritmo en <strong>PSeInt</strong> que solicita tres notas parciales, calcula el promedio final y, lo más importante, utiliza lógica computacional para decidir si el estudiante <strong>Aprueba</strong> o <strong>Reprueba</strong> la materia. Aprenderás a manejar variables de tipo <code>Real</code> para soportar decimales, aplicar correctamente la jerarquía de operadores matemáticos y mostrar resultados claros en pantalla.
            </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 para este Ejercicio
        </h2>
        <p style="margin-bottom: 20px;">Para crear este programa sin errores, debemos entender dos fundamentos técnicos de la programación estructurada:</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;">Tipos de Datos (Entero vs Real)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Las calificaciones académicas suelen tener decimales (ej: 8.5 o 4.7). Si definimos las variables como <code>Entero</code>, PSeInt eliminará la parte decimal, generando un cálculo inexacto. Por ello, es obligatorio usar <code>Definir ... Como Real</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;">Precedencia Aritmética</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    La regla de oro en matemáticas: la división tiene prioridad sobre la suma. Si escribes <code>n1+n2+n3/3</code>, la computadora solo dividirá la última nota. Debemos agrupar la suma con paréntesis: <code>(n1+n2+n3)/3</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 Problema
        </h2>
        <p style="margin-bottom: 20px;">El flujo de datos para calcular el promedio de un alumno sigue estos pasos secuenciales:</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>Necesitamos capturar 3 valores numéricos. Definiremos las variables <code>cal1</code>, <code>cal2</code> y <code>cal3</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. Sumar las tres calificaciones.<br>
                    2. Dividir la suma total entre 3.<br>
                    3. Comparar el resultado con la nota mínima aprobatoria (ej: 6.0 o 70).
                </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 promedio final y un mensaje de estatus: «APROBADO» o «REPROBADO».</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: PromedioAlumno.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 CalcularPromedioNotas
    // 1. Definición de Variables
    // Usamos Real para soportar notas como 4.5 o 9.8
    Definir nota1, nota2, nota3, promedio Como Real;
    
    // 2. Entrada de Datos
    Escribir "=== SISTEMA DE CALIFICACIONES ===";
    Escribir "Ingrese la calificación del primer parcial:";
    Leer nota1;
    Escribir "Ingrese la calificación del segundo parcial:";
    Leer nota2;
    Escribir "Ingrese la calificación del tercer parcial:";
    Leer nota3;
    
    // 3. Proceso: Cálculo Matemático
    // IMPORTANTE: Los paréntesis obligan a sumar antes de dividir
    promedio <- (nota1 + nota2 + nota3) / 3;
    
    // 4. Salida de Resultados y Condicional
    Escribir "-----------------------------";
    Escribir "El promedio final es: ", promedio;
    
    // Suponemos que la nota mínima para aprobar es 6.0
    Si promedio >= 6.0 Entonces
        Escribir "Estado: APROBADO. ¡Felicidades!";
    SiNo
        Escribir "Estado: REPROBADO. Necesitas mejorar.";
    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/calcular-promedio-3-calificaciones-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 Estudiantes
        </h2>
        <p style="margin-bottom: 20px;">Evita estos fallos típicos que pueden arruinar tu lógica 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;">Falta de Paréntesis</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Error: <code>prom = n1 + n2 + n3 / 3</code>. <br>
                    Consecuencia: Si las notas son 10, 10 y 10, el resultado será 23.33 en lugar de 10. La máquina divide 10/3 y le suma 20.
                </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;">Confusión de Rango</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    No validar que las notas estén entre 0 y 10. Si el usuario ingresa «50» por error, el promedio será imposiblemente alto, rompiendo la lógica del sistema escolar.
                </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 con Validación
        </h2>
        <p style="margin-bottom: 20px;">
            Un buen programador siempre anticipa errores humanos. El siguiente código verifica que las notas ingresadas sean válidas (entre 0 y 10) usando un ciclo <code>Repetir</code> antes de calcular.
        </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 PromedioSeguro
    Definir n1, n2, n3, prom Como Real;
    Definir datosValidos Como Logico;
    
    Repetir
        Escribir "Ingrese las 3 notas (separadas por Enter):";
        Leer n1, n2, n3;
        
        // Validamos que todas las notas estén en rango 0-10
        Si (n1<0 O n1>10) O (n2<0 O n2>10) O (n3<0 O n3>10) Entonces
            Escribir "ERROR: Alguna nota no está entre 0 y 10.";
            datosValidos <- Falso;
        SiNo
            datosValidos <- Verdadero;
        FinSi
    Hasta Que datosValidos = Verdadero;
    
    prom <- (n1 + n2 + n3) / 3;
    
    // Redondeamos a 2 decimales para mejor presentación
    prom <- redon(prom * 100) / 100;
    
    Escribir "Promedio Final Validado: ", prom;
    
    // Estructura Si-Entonces anidada para mensajes específicos
    Si prom >= 9 Entonces
        Escribir "Nivel: EXCELENTE";
    SiNo
        Si prom >= 6 Entonces
            Escribir "Nivel: REGULAR (Aprobado)";
        SiNo
            Escribir "Nivel: INSUFICIENTE (Reprobado)";
        FinSi
    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;">¿Cómo puedo redondear el promedio?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">PSeInt no tiene una función <code>redondear(x, decimales)</code> directa, pero puedes usar el truco matemático: <code>redon(numero * 100) / 100</code> para dejar dos decimales.</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;">¿Qué hago si cada nota tiene un porcentaje distinto?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Esto sería un «Promedio Ponderado». En lugar de dividir entre 3, debes multiplicar cada nota por su peso (ej: <code>n1*0.30 + n2*0.30 + n3*0.40</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 calcular el promedio de N alumnos?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Necesitarás un ciclo <code>Para</code> o <code>Mientras</code> que envuelva todo el algoritmo anterior, preguntando al principio cuántos alumnos se van a procesar.</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é me sale «No coinciden los tipos»?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Probablemente estás intentando guardar texto (como el nombre del alumno) en una variable definida como <code>Real</code> o <code>Entero</code>. Revisa tus definiciones.</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-promedio-3-calificaciones-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Convertir Celsius a Fahrenheit en PSeInt (Guía 2026)</title>
		<link>https://pseint.org/convertir-celsius-fahrenheit-pseint/</link>
					<comments>https://pseint.org/convertir-celsius-fahrenheit-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 14:07:38 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=593</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min La conversión de unidades es uno de los ejercicios más prácticos para iniciarse en la programación secuencial. En este tutorial, desarrollaremos un algoritmo capaz de transformar Grados Celsius (Centígrados) a la escala Fahrenheit, utilizada comúnmente en Estados Unidos. Este problema te permitirá practicar la declaración de variables de tipo Real,...]]></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;">
                La conversión de unidades es uno de los ejercicios más prácticos para iniciarse en la programación secuencial. En este tutorial, desarrollaremos un algoritmo capaz de transformar <strong>Grados Celsius (Centígrados)</strong> a la escala <strong>Fahrenheit</strong>, utilizada comúnmente en Estados Unidos. Este problema te permitirá practicar la declaración de variables de tipo <strong>Real</strong>, el uso de operadores aritméticos para aplicar fórmulas matemáticas y la entrada/salida de datos por consola. Además, exploraremos cómo invertir la fórmula para crear un conversor bidireccional avanzado.
            </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 para este Ejercicio
        </h2>
        <p style="margin-bottom: 20px;">Para realizar este conversor correctamente, necesitamos entender cómo la computadora maneja los números y las fórmulas:</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;">Variables Reales (Decimales)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    La temperatura rara vez es un número entero exacto (ej: 36.6°C). Por tanto, es obligatorio definir nuestras variables (tanto para Celsius como Fahrenheit) como <code>Real</code>. Si usamos <code>Entero</code>, PSeInt truncará los resultados, perdiendo precisión crítica en la conversió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;">La Fórmula de Conversión</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    La relación matemática estándar es: <code>F = (C × 1.8) + 32</code>. <br>
                    Nota: A veces verás <code>9/5</code> en lugar de <code>1.8</code>. En programación, ambas son válidas, pero usar 1.8 es más directo y evita posibles confusiones con la división entera en otros lenguajes.
                </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 Problema
        </h2>
        <p style="margin-bottom: 20px;">Desglosemos el algoritmo en sus tres componentes fundamentales (Entrada-Proceso-Salida):</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>Pedir al usuario la temperatura en grados <strong>Celsius</strong>. Necesitamos una variable, por ejemplo: <code>gradosC</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>Aplicar la fórmula matemática para obtener los grados Fahrenheit. <br>Operación: Multiplicar <code>gradosC</code> por 1.8 y sumar 32 al resultado.</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 almacenado en la variable <code>gradosF</code> acompañado de un texto descriptivo.</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: ConversorTemp.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 CelsiusAFahrenheit
    // 1. Definición de Variables
    // Es CRUCIAL usar 'Real' para temperaturas precisas
    Definir gradosC, gradosF Como Real;
    
    // 2. Entrada de Datos
    Escribir "=== Conversor de Temperatura ===";
    Escribir "Ingrese la temperatura en grados Celsius (°C):";
    Leer gradosC;
    
    // 3. Proceso: Fórmula (C * 1.8) + 32
    // Se puede usar 9/5 en lugar de 1.8, es equivalente.
    gradosF <- (gradosC * 1.8) + 32;
    
    // 4. Salida de Datos
    Escribir "--------------------------------";
    Escribir gradosC, "° Celsius equivalen a:";
    Escribir gradosF, "° Fahrenheit";
    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/convertir-celsius-fahrenheit-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 al Programar la Fórmula
        </h2>
        <p style="margin-bottom: 20px;">Asegúrate de no caer en estas trampas matemáticas comunes:</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;">Error de Paréntesis / Jerarquía</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Escribir <code>C + 32 * 1.8</code> dará un resultado incorrecto porque la multiplicación se ejecuta antes que la suma. La fórmula correcta suma 32 <em>después</em> de multiplicar.
                </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;">Confusión de Conversión Inversa</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    No confundas la fórmula de ida con la de vuelta. <br>
                    De °C a °F se <strong>multiplica</strong> y suma. <br>
                    De °F a °C se resta y <strong>divide</strong>: <code>(F - 32) / 1.8</code>.
                </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: Conversor Universal (Menú de Opciones)
        </h2>
        <p style="margin-bottom: 20px;">
            Vamos a llevar este ejercicio al siguiente nivel. Crearemos un programa que permita al usuario <strong>elegir</strong> qué tipo de conversión desea realizar (De C a F o de F a C) utilizando la estructura <code>Segun</code> (Switch).
        </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 ConversorPro
    Definir tempEntrada, tempSalida Como Real;
    Definir opcion Como Entero;
    
    Escribir "=== MASTER CONVERTER 2026 ===";
    Escribir "1. Convertir Celsius a Fahrenheit";
    Escribir "2. Convertir Fahrenheit a Celsius";
    Escribir "Elija una opción (1 o 2):";
    Leer opcion;
    
    Segun opcion Hacer
        1:
            Escribir "Ingrese grados Celsius:";
            Leer tempEntrada;
            tempSalida <- (tempEntrada * 1.8) + 32;
            Escribir tempEntrada, "°C son ", tempSalida, "°F";
        2:
            Escribir "Ingrese grados Fahrenheit:";
            Leer tempEntrada;
            // Ojo a los paréntesis aquí: primero la resta
            tempSalida <- (tempEntrada - 32) / 1.8;
            Escribir tempEntrada, "°F son ", tempSalida, "°C";
        De Otro Modo:
            Escribir "Opción no válida. Reinicie el programa.";
    FinSegun
    
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 1.8 en la fórmula?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">El factor 1.8 es el resultado de dividir 9 entre 5. La escala Fahrenheit tiene 180 divisiones entre el punto de congelación y ebullición del agua, mientras que Celsius tiene 100. 180/100 = 1.8.</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 puedo convertir a Kelvin?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Para convertir Celsius a Kelvin, la fórmula es muy simple: <code>K = C + 273.15</code>. Solo necesitas sumar esa constante a tu variable de entrada.</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 una letra en lugar de un número?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">PSeInt generará un error de ejecución por "No coinciden los tipos". Para evitar que el programa se cuelgue, en niveles avanzados se lee el dato como texto (Caracter) y se valida si es numérico antes de convertirlo.</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;">¿Cuál es la temperatura donde °C y °F son iguales?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">¡Es -40 grados! Puedes probar tu algoritmo ingresando -40 en Celsius; el resultado en Fahrenheit también debería ser -40.</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/convertir-celsius-fahrenheit-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Calcular Área y Perímetro de un Círculo en PSeInt (Guía Completa 2026)</title>
		<link>https://pseint.org/area-perimetro-circulo-pseint/</link>
					<comments>https://pseint.org/area-perimetro-circulo-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 13:56:25 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=590</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~10 min Resolver problemas geométricos es una de las mejores formas de afianzar el conocimiento sobre expresiones matemáticas y constantes en programación. En este tutorial, aprenderás a construir un algoritmo en PSeInt que calcula automáticamente el área y la circunferencia (perímetro) de un círculo a partir de su radio. Este ejercicio es...]]></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;">
                Resolver problemas geométricos es una de las mejores formas de afianzar el conocimiento sobre <strong>expresiones matemáticas</strong> y constantes en programación. En este tutorial, aprenderás a construir un algoritmo en PSeInt que calcula automáticamente el área y la circunferencia (perímetro) de un círculo a partir de su radio. Este ejercicio es fundamental para entender el manejo de tipos de datos <strong>Reales</strong> (con decimales), el uso de la constante matemática <strong>PI</strong> y la aplicación de operadores de potencia. Si estás empezando con la <em>lógica de programación</em>, este ejemplo clásico te enseñará a traducir fórmulas matemáticas del papel al pseudocódigo de manera 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 para este Ejercicio
        </h2>
        <p style="margin-bottom: 20px;">Para resolver este algoritmo correctamente, no basta con copiar el código; es necesario comprender qué herramientas de PSeInt estamos utilizando:</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 Constante PI (π)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    En matemáticas, PI es aproximadamente 3.14159&#8230; En programación, en lugar de escribir este número manualmente (lo cual es propenso a errores), utilizamos la función incorporada de PSeInt llamada <code>PI</code>. Esto garantiza la máxima precisión posible en nuestros cálculos de área y perímetro.
                </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;">Operador de Potencia (^)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    La fórmula del área requiere elevar el radio al cuadrado ($r^2$). En PSeInt, esto se logra con el operador circunflejo <code>^</code> (ej: <code>radio ^ 2</code>). Es un error común intentar usar la multiplicación simple cuando se requiere una operación exponencial.
                </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 Problema
        </h2>
        <p style="margin-bottom: 20px;">Antes de codificar, desglosemos el problema matemático en pasos lógicos computables:</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>El usuario debe proporcionar el valor del <strong>radio</strong> del círculo. Dado que el radio puede ser un valor como 2.5 cm, la variable debe definirse como <code>Real</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>
                    Aplicamos las fórmulas geométricas conocidas:<br>
                    1. <strong>Área</strong> = $\pi \times radio^2$<br>
                    2. <strong>Perímetro</strong> = $2 \times \pi \times radio$
                </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 en pantalla los resultados calculados, preferiblemente con unidades de medida implícitas, indicando claramente cuál valor corresponde al área y cuál al perímetro.</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: CirculoBasico.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 AreaYPerimetroCirculo
    // 1. Definición de Variables
    // Es vital usar 'Real' porque PI tiene decimales infinitos
    Definir radio, area, perimetro Como Real;
    
    // 2. Entrada de Datos
    Escribir "Bienvenido al calculador geométrico.";
    Escribir "Por favor, ingrese el radio del círculo:";
    Leer radio;
    
    // 3. Proceso: Aplicación de Fórmulas
    // Usamos la función interna PI de PSeInt para mayor precisión
    // El operador '^' eleva al cuadrado
    area <- PI * (radio ^ 2);
    
    // Fórmula del perímetro: 2 * PI * r
    perimetro <- 2 * PI * radio;
    
    // 4. Salida de Datos
    Escribir "-----------------------------------";
    Escribir "Resultados para un radio de ", radio, ":";
    Escribir "El AREA del círculo es: ", area;
    Escribir "El PERÍMETRO del círculo es: ", perimetro;
    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/Algoritmo-para-Calcular-Area-y-Perimetro-de-un-Circulo-en-PSeInt-Diagrama-de-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 al Programar Geometría
        </h2>
        <p style="margin-bottom: 20px;">Presta atención a estos detalles para que tu código funcione a la perfecció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;">Confundir Potencia con Multiplicación</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Muchos estudiantes escriben <code>radio * 2</code> en lugar de <code>radio ^ 2</code>. Multiplicar por 2 es duplicar; elevar a la 2 es multiplicar el número por sí mismo. ¡Esto cambia drásticamente el resultado del área!
                </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;">Radio Negativo</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    En la geometría euclidiana real, no existen círculos con radio negativo. Si el usuario ingresa "-5", las fórmulas darán un resultado numérico, pero geométricamente carece de sentido. Es buena práctica validar esto.
                </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 (Validación de Entrada)
        </h2>
        <p style="margin-bottom: 20px;">
            Para hacer nuestro programa "a prueba de balas", añadiremos una estructura condicional <code>Si-Entonces</code>. Esto asegurará que el programa solo calcule si el radio es un número positivo mayor que cero.
        </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 CirculoValidado
    Definir radio, area, perimetro Como Real;
    
    Escribir "Ingrese el radio del círculo:";
    Leer radio;
    
    // Validación lógica: El radio debe ser positivo
    Si radio > 0 Entonces
        // Solo calculamos si el dato es válido
        area <- PI * (radio ^ 2);
        perimetro <- 2 * PI * radio;
        
        // Función redon para mostrar menos decimales (opcional)
        // Multiplicamos por 100 y dividimos por 100 para dejar 2 decimales
        area <- redon(area * 100) / 100;
        perimetro <- redon(perimetro * 100) / 100;
        
        Escribir "Área: ", area;
        Escribir "Perímetro: ", perimetro;
    SiNo
        // Mensaje de error si el usuario ingresa 0 o negativos
        Escribir "ERROR: El radio debe ser un número mayor a cero.";
        Escribir "Intente ejecutar el programa nuevamente.";
    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;">¿Cómo descargo este código?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Copia el código directamente desde las cajas oscuras en este artículo a tu editor de PSeInt y guárdalo como .psc.</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;">¿PSeInt reconoce 'PI' automáticamente?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí, en la mayoría de los perfiles de configuración de PSeInt, <code>PI</code> es una constante reservada. Si te da error, puedes definirla manualmente al inicio: <code>PI = 3.1416;</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 escribo la potencia si no encuentro el símbolo ^?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Si tu teclado no tiene el símbolo circunflejo (^), puedes escribir simplemente la multiplicación explicita: <code>radio * radio</code>. PSeInt también acepta a veces el doble asterisco <code>**</code> dependiendo de la configuració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;">¿Qué diferencia hay entre Área y Perímetro?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">El <strong>perímetro</strong> (o circunferencia) es la longitud del borde del círculo (la línea dibujada). El <strong>área</strong> es la cantidad de espacio o superficie rellena dentro de ese borde.</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/area-perimetro-circulo-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Calcular el Área de un Triángulo en PSeInt (Guía Completa 2026)</title>
		<link>https://pseint.org/area-triangulo-pseint/</link>
					<comments>https://pseint.org/area-triangulo-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 13:39:15 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=578</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~15 min El cálculo de áreas geométricas es uno de los pilares fundamentales en el aprendizaje de la lógica de programación y el pensamiento computacional. Este ejercicio específico, calcular el área de un triángulo utilizando la fórmula matemática clásica (base * altura) / 2, es perfecto para estudiantes que se inician 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
            </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 de áreas geométricas es uno de los pilares fundamentales en el aprendizaje de la <strong>lógica de programación</strong> y el pensamiento computacional. Este ejercicio específico, calcular el área de un triángulo utilizando la fórmula matemática clásica <code>(base * altura) / 2</code>, es perfecto para estudiantes que se inician en PSeInt.
                <br><br>
                A través de este tutorial, no solo escribiremos unas líneas de código; profundizaremos en conceptos críticos como la <strong>declaración de tipos de datos</strong> (diferenciando entre Enteros y Reales), el manejo de <strong>operadores aritméticos</strong> y la jerarquía de operaciones. Además, aprenderemos a utilizar comandos esenciales de entrada y salida (<code>Leer</code> y <code>Escribir</code>) y veremos cómo transformar un problema matemático en un <strong>diagrama de flujo</strong> funcional. Al finalizar, serás capaz de implementar validaciones lógicas para evitar errores comunes, como el ingreso de distancias negativas.
            </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 para este Ejercicio
        </h2>
        <p style="margin-bottom: 20px;">Antes de escribir el código, es vital comprender los fundamentos teóricos que hacen que este algoritmo funcione correctamente en una computadora:</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;">Tipos de Datos: ¿Real o Entero?</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    En matemáticas, si divides un número impar entre 2 (ejemplo: 7 de base y 1 de altura), el resultado es 3.5. En programación, si defines tus variables como <code>Entero</code>, el sistema podría truncar el decimal y devolver «3», lo cual es un error lógico grave. Por ello, en PSeInt utilizaremos el tipo <code>Real</code> para garantizar la precisión en divisiones.
                </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;">Precedencia de Operadores</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    La computadora sigue un orden estricto al resolver matemáticas. Aunque en la fórmula <code>(b * h) / 2</code> la multiplicación y la división tienen la misma jerarquía (se resuelven de izquierda a derecha), el uso de paréntesis es una buena práctica de programación para asegurar que la multiplicación ocurra antes de la división, manteniendo el código legible y ordenado.
                </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 Problema (Metodología IPO)
        </h2>
        <p style="margin-bottom: 20px;">Para estructurar nuestra solución, aplicamos la metodología Entrada-Proceso-Salida:</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>
                    Necesitamos solicitar al usuario dos valores numéricos positivos que representen las dimensiones del triángulo:
                    <br>1. La medida de la <strong>Base</strong>.
                    <br>2. La medida de la <strong>Altura</strong>.
                </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>
                    Aplicaremos la fórmula geométrica estándar. Multiplicamos la base capturada por la altura capturada y el producto resultante lo dividimos entre 2.
                    <br><em>Fórmula PSeInt:</em> <code>area <- (base * altura) / 2</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>
                    Mostraremos en la consola un mensaje concatenado que indique claramente el resultado: "El área del triángulo es: [Resultado]".
                </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: AreaTriangulo.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;"><code>Algoritmo AreaTriangulo
    <span style="color: #64748b;">// 1. Declaración de Variables
    // Es fundamental usar 'Real' para no perder los decimales en la división</span>
    Definir base, altura, area Como Real;
    
    <span style="color: #64748b;">// 2. Entrada de Datos (Interacción con el usuario)</span>
    Escribir <span style="color: #7dd3fc;">"--- CALCULADORA DE ÁREA DE TRIÁNGULOS ---"</span>;
    Escribir <span style="color: #7dd3fc;">"Por favor, ingrese el valor de la base:"</span>;
    Leer base;
    
    Escribir <span style="color: #7dd3fc;">"Por favor, ingrese el valor de la altura:"</span>;
    Leer altura;
    
    <span style="color: #64748b;">// 3. Proceso (Operación Aritmética)</span>
    <span style="color: #64748b;">// Usamos paréntesis para agrupar la multiplicación</span>
    area <- (base * altura) / 2;
    
    <span style="color: #64748b;">// 4. Salida de Resultados</span>
    Escribir <span style="color: #7dd3fc;">"-----------------------------------------"</span>;
    Escribir <span style="color: #7dd3fc;">"El área del triángulo es: "</span>, area;
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/Algoritmo-para-Calcular-el-Area-de-un-Triangulo-en-PSeInt-Diagrama-de-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 al Programar este Algoritmo
        </h2>
        <div style="display: grid; gap: 15px;">
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Error de Tipos (Type Mismatch)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si defines las variables como <code>Como Entero</code> e intentas ingresar una base de 5.5, PSeInt lanzará un error de ejecución "No coinciden los tipos". Siempre usa <code>Como Real</code> para medidas geométricas, ya que la realidad rara vez se mide en números enteros perfectos.
                </p>
            </div>
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Resultados Negativos Ilógicos</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Matemáticamente, el algoritmo aceptará si ingresas una base de "-10". El programa calculará un área negativa, lo cual es geométricamente imposible. Este es un error de <strong>lógica de negocio</strong>, no de sintaxis, y se soluciona agregando validación de datos.
                </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 (Con Validación)
        </h2>
        <p style="margin-bottom: 20px;">
            Para llevar este ejercicio a un nivel profesional, implementaremos una estructura condicional <code>Si-Entonces</code>. Esto asegurará que el usuario no pueda ingresar números negativos o ceros, ya que un triángulo no puede tener dimensiones nulas.
        </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;"><code>Algoritmo AreaTrianguloValidado
    Definir base, altura, area Como Real;
    
    Escribir "Ingrese la base del triángulo (> 0):";
    Leer base;
    
    Escribir "Ingrese la altura del triángulo (> 0):";
    Leer altura;
    
    <span style="color: #64748b;">// Validamos que ambos valores sean positivos</span>
    Si base > 0 Y altura > 0 Entonces
        area <- (base * altura) / 2;
        Escribir ">> El área calculada es: ", area;
    SiNo
        <span style="color: #ef4444;">// Mensaje de error si los datos son incorrectos</span>
        Escribir "❌ Error: La base y la altura deben ser mayores a cero.";
        Escribir "   No existen distancias negativas en geometría.";
    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;">¿Cómo descargo este código?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Simplemente selecciona el texto dentro del bloque de código oscuro, cópialo (Ctrl+C) y pégalo directamente en tu editor PSeInt (Ctrl+V). Luego guárdalo con extensión .psc.</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é se divide por 2?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">
                Esta es una propiedad geométrica. Un triángulo puede verse como la mitad de un rectángulo o paralelogramo que tiene la misma base y altura. El área de un rectángulo es <code>base * altura</code>, por lo tanto, el área del triángulo es exactamente la mitad de eso.
            </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;">¿Sirve este algoritmo para triángulos isósceles?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">
                Sí, este algoritmo es universal. Funciona para triángulos equiláteros, isósceles y escalenos, siempre y cuando conozcas la medida de la base y la altura correspondiente (perpendicular a la base). No necesitas fórmulas diferentes para cada tipo.
            </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 paso a lenguaje Python?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">
                La transición es sencilla. En Python no necesitas declarar variables. El código sería:<br>
                <code>base = float(input("Base: "))</code><br>
                <code>altura = float(input("Altura: "))</code><br>
                <code>area = (base * altura) / 2</code><br>
                <code>print(f"El área es: {area}")</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/area-triangulo-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para Sumar Dos Números Enteros en PSeInt (Guía Completa 2026)</title>
		<link>https://pseint.org/sumar-dos-numeros-pseint/</link>
					<comments>https://pseint.org/sumar-dos-numeros-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Fri, 16 Jan 2026 15:14:47 +0000</pubDate>
				<category><![CDATA[Ejercicios Básicos]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=519</guid>

					<description><![CDATA[Nivel: Básico Tiempo: ~5 min La suma de dos números es considerado el «Hola Mundo» de las operaciones matemáticas en la lógica de programación. Este ejercicio clásico es el punto de partida ideal para entender el ciclo IPO (Entrada &#8211; Proceso &#8211; Salida). En este tutorial, aprenderás a definir variables de tipo Entero, utilizar el...]]></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: ~5 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 suma de dos números es considerado el «Hola Mundo» de las operaciones matemáticas en la <strong>lógica de programación</strong>. Este ejercicio clásico es el punto de partida ideal para entender el ciclo IPO (Entrada &#8211; Proceso &#8211; Salida). En este tutorial, aprenderás a definir <strong>variables de tipo Entero</strong>, utilizar el comando <code>Leer</code> para capturar datos del usuario y aplicar el operador aritmético de adición (<code>+</code>). Dominar este algoritmo es esencial antes de pasar a cálculos más complejos o estructuras de control como los condicionales. Además, veremos cómo representar esto en un <strong>diagrama de flujo</strong> claro y funcional.
            </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 para este Ejercicio
        </h2>
        <p style="margin-bottom: 20px;">Antes de escribir el código, es importante entender los conceptos de programación que aplicaremos:</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;">Variables Tipo Entero</strong>
                <p style="font-size: 0.95rem; margin: 0;">En PSeInt, debemos especificar qué tipo de datos guardaremos. Para este ejercicio usamos <code>Como Entero</code>, lo que significa que el programa solo aceptará números completos (ej: 5, 10, -3) y no permitirá decimales (ej: 4.5), optimizando el uso de memoria.</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;">Operador de Asignación (<-)</strong>
                <p style="font-size: 0.95rem; margin: 0;">A diferencia de las matemáticas donde usamos el igual (=), en pseudocódigo usamos una flecha <code>&lt;-</code>. Esto indica que el resultado de la suma (derecha) se «guarda» dentro de la variable destino (izquierda).</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 Problema
        </h2>
        <p style="margin-bottom: 20px;">El flujo lógico de nuestro algoritmo será el siguiente:</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>Necesitamos dos espacios en memoria (variables) para que el usuario ingrese el <strong>primer número</strong> y el <strong>segundo número</strong>.</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>Realizamos la operación aritmética de suma: <code>resultado <- num1 + num2</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>Mostramos en pantalla el valor almacenado en la variable <code>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: SumaEnteros.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: #3b82f6; line-height: 1.6;"><code>Algoritmo SumarDosNumeros
    <span style="color: #64748b;">// 1. Definición de variables (Solo números enteros)</span>
    Definir num1, num2, resultado Como Entero;
    
    <span style="color: #64748b;">// 2. Entrada de Datos</span>
    Escribir <span style="color: #7dd3fc;">"Ingrese el primer número entero:"</span>;
    Leer num1;
    
    Escribir <span style="color: #7dd3fc;">"Ingrese el segundo número entero:"</span>;
    Leer num2;
    
    <span style="color: #64748b;">// 3. Proceso (Operación Matemática)</span>
    resultado <- num1 + num2;
    
    <span style="color: #64748b;">// 4. Salida de Información</span>
    Escribir <span style="color: #7dd3fc;">"La suma de "</span>, num1, <span style="color: #7dd3fc;">" + "</span>, num2, <span style="color: #7dd3fc;">" es: "</span>, resultado;
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/Algoritmo-para-Sumar-Dos-Numeros-Enteros-en-PSeInt.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 al Programar este Algoritmo
        </h2>
        <p style="margin-bottom: 20px;">Muchos estudiantes cometen estos fallos al principio. ¡Evítalos!</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;">Error: No coinciden los tipos</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">Si intentas ingresar un número decimal (ej. 4.5) cuando la variable se definió <code>Como Entero</code>, PSeInt lanzará un error de ejecución. Asegúrate de ingresar solo números completos.</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;">Variable no inicializada</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">Un error frecuente es intentar sumar <code>resultado <- num1 + num2</code> antes de usar el comando <code>Leer</code>. La computadora lee el código de arriba a abajo; si no tiene los datos primero, la suma será 0 o dará error.</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 (Bucle de Sumas)
        </h2>
        <p style="margin-bottom: 20px;">
            El código básico se cierra después de una sola suma. Para hacerlo más útil, podemos usar un ciclo <code>Repetir-Hasta Que</code> para permitir al usuario sumar varias veces sin salir del programa.
        </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;"><code>Algoritmo SumaContinua
    Definir n1, n2, res Como Entero;
    Definir tecla Como Caracter;
    
    Repetir
        Limpiar Pantalla;
        Escribir "--- SUMADORA DE ENTEROS ---";
        Escribir "Ingrese primer número:";
        Leer n1;
        Escribir "Ingrese segundo número:";
        Leer n2;
        
        res <- n1 + n2;
        
        Escribir ">> Resultado: ", res;
        Escribir "";
        Escribir "¿Desea sumar de nuevo? (S/N)";
        Leer tecla;
    Hasta Que tecla = "N" o tecla = "n"
    
    Escribir "Programa finalizado.";
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 descargo este código?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Copia el código directamente a PSeInt y guárdalo como .psc.</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 sumar números negativos?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Sí, el tipo de dato <code>Entero</code> incluye números negativos. Si ingresas -5 y 10, PSeInt mostrará 5 correctamente.</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 la suma es muy grande?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Depende del perfil de PSeInt que uses, pero generalmente hay un límite para los enteros (desbordamiento). Para números extremadamente grandes, se recomienda usar tipos de datos especiales o lenguajes como Python.</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 cambio el código para restar?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Es muy sencillo. Solo debes cambiar el operador <code>+</code> por el operador <code>-</code> en la línea de proceso: <code>resultado <- num1 - num2</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/sumar-dos-numeros-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
