<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Paul Contreras</title>
    <description>The latest articles on DEV Community by Paul Contreras (@paulcontr_).</description>
    <link>https://dev.to/paulcontr_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1270579%2Ff5fc33eb-f21b-4e4c-a59d-0c60365864df.jpg</url>
      <title>DEV Community: Paul Contreras</title>
      <link>https://dev.to/paulcontr_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paulcontr_"/>
    <language>en</language>
    <item>
      <title>The 5 MB Homework Limit That Turned Me Into an App-Builder</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Fri, 01 Aug 2025 22:13:33 +0000</pubDate>
      <link>https://dev.to/paulcontr_/the-5-mb-homework-limit-that-turned-me-into-an-app-builder-222a</link>
      <guid>https://dev.to/paulcontr_/the-5-mb-homework-limit-that-turned-me-into-an-app-builder-222a</guid>
      <description>&lt;p&gt;This semester I snapped a neat, high-res photo of my handwritten math assignment and went to upload it to my university platform.&lt;/p&gt;

&lt;p&gt;Error: &lt;strong&gt;“File must be under 5 MB.”&lt;/strong&gt;&lt;br&gt;
I tried again with a different angle—same error. Then the portal complained about the HEIC format my iPhone uses by default. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I tried next&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google results sent me to web compressors that wanted my personal photos on their servers (nope).&lt;/li&gt;
&lt;li&gt;The first “free” iOS app threw three ads at me before I could pick a file.&lt;/li&gt;
&lt;li&gt;A second app asked for $4.99 per month, just to shrink a picture!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ended up opening Preview on my Mac, exporting, tweaking quality sliders, re-sending to my phone, and finally hitting “Submit” with seconds to spare. The whole thing took longer than writing the homework.&lt;/p&gt;

&lt;p&gt;That night I wrote Crunch, an offline photo compressor that fixes the exact pain I felt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Crunch does now&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shrinks JPEG, HEIC, PNG images by up to 70 %, totally on-device (no uploads)&lt;/li&gt;
&lt;li&gt;Converts formats so HEIC becomes JPG or PDF in one tap&lt;/li&gt;
&lt;li&gt;Cleans out location + EXIF data before you share a file&lt;/li&gt;
&lt;li&gt;Free: 10 photos a day. Pro: one-time $3.99—no subscriptions, ever&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Try Crunch for iOS now&lt;/strong&gt;: &lt;a href="https://apps.apple.com/app/id6748700457" rel="noopener noreferrer"&gt;Crunch on AppStore&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on x where I’m sharing progress, mistakes, your feedback will shape the next update—features, pricing, UX, anything.&lt;br&gt;
&lt;a href="https://x.com/3nginuity" rel="noopener noreferrer"&gt;@3nginuity&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>mobile</category>
      <category>showdev</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>🔐 Building a Simple Password Generator with FastHTML</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Sat, 24 Aug 2024 01:25:13 +0000</pubDate>
      <link>https://dev.to/3nginuity_/building-a-simple-password-generator-with-fasthtml-4jhd</link>
      <guid>https://dev.to/3nginuity_/building-a-simple-password-generator-with-fasthtml-4jhd</guid>
      <description>&lt;p&gt;Are you looking to build a lightweight web application that’s both functional and stylish? In this tutorial, we’ll walk through creating a simple password generator using FastHTML — a minimalist Python-based HTML templating engine — and Tailwind CSS for sleek and responsive design.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 What You’ll Build
&lt;/h2&gt;

&lt;p&gt;We’ll create a web application that allows users to input the desired length of a password and generate a strong, random password on the fly. This tutorial is perfect for developers who want to explore FastHTML and HTMX, combined with the power of Tailwind CSS for simple front-end styling.&lt;/p&gt;

&lt;h2&gt;
  
  
  👨‍💻 Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before we dive in, make sure you have Python installed on your machine. We’ll be using the following libraries:&lt;/p&gt;

&lt;p&gt;FastHTML: For our application.&lt;br&gt;
You can install the required library with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install python-fasthtml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  🛠️ Step 1: Setting Up Your FastHTML App
&lt;/h2&gt;

&lt;p&gt;Let’s start by setting up our FastHTML application. FastHTML is a lightweight HTML templating engine that allows you to create HTML elements directly in Python, making your code clean and easy to manage.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Importing libraries
from fasthtml.common import *
import string
import secrets

# Defining the FastHTML app
app = FastHTML(
    hdrs=(
        # Add Tailwind CSS
        Script(src="https://cdn.tailwindcss.com"),
    )
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Here, we import the necessary libraries and initialize our FastHTML app, embedding Tailwind CSS directly via CDN for rapid styling.&lt;/p&gt;
&lt;h2&gt;
  
  
  🎨 Step 2: Creating the User Interface
&lt;/h2&gt;

&lt;p&gt;Next, we’ll design a simple form where users can input the desired password length. Tailwind CSS will make our form both functional and visually appealing.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@app.route('/')
def home():
    title = "Password Generator - With FastHTML"
    form = Form(
        Input(id="length_input", type="number", placeholder="Enter the length",
              cls="border-2 border-gray-400 rounded-md p-2"),
        Button("Generate", cls="bg-slate-900 text-white p-2 rounded-md mt-2"),
        cls="flex flex-col items-center mt-10",
        hx_post="/generate",
        target_id="result",
        hx_swap="innerHTML"
    )
    result = Div(id="result", cls="text-center mt-10")

    return Title(title), Main(H1(title, cls="text-3xl text-center mt-10"), form, result)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4jestlj5te8846mlow3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4jestlj5te8846mlow3.png" alt="ui" width="623" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This function renders our homepage, which includes a form for password generation. The form leverages HTMX to send the input data to the server and dynamically update the result without a full page reload. This makes the user experience seamless and responsive.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔒 Step 3: Implementing the Password Generator Logic
&lt;/h2&gt;

&lt;p&gt;Now, let’s implement the logic to generate a secure password based on the user’s input.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alph = string.ascii_letters + string.digits + string.punctuation


@app.route("/generate")
def post(length_input: int):
    length = length_input
    if length &amp;lt; 8:
        return "Password length should be greater than 8 characters"
    password = ''.join(secrets.choice(alph) for i in range(length))
    return password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In this snippet, we define the character set for our password and implement the generator logic. We ensure the password length is secure (minimum of 8 characters) and then generate a random password using Python’s &lt;strong&gt;secrets&lt;/strong&gt; module, which is designed for cryptographic applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  ▶️ Step 4: Running Your Application
&lt;/h2&gt;

&lt;p&gt;To get your app up and running, simply run the following command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if '__main__' == __name__:
    serve()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, visit &lt;strong&gt;&lt;a href="http://127.0.0.1:5001" rel="noopener noreferrer"&gt;http://127.0.0.1:5001&lt;/a&gt;&lt;/strong&gt; in your browser, and you'll be greeted with your new password generator!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcvddc21gd6w0jkbf8t7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcvddc21gd6w0jkbf8t7.png" alt="result" width="609" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzht5wue6jgg7c34yfm92.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzht5wue6jgg7c34yfm92.gif" alt="result-demo" width="320" height="176"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🎉 Conclusion
&lt;/h2&gt;

&lt;p&gt;Congratulations! You’ve just built a fully functional password generator using FastHTML and Tailwind CSS. This project is a fantastic way to get acquainted with Python-based web development, HTMX for dynamic content, and Tailwind CSS for modern, responsive design.&lt;/p&gt;
&lt;h2&gt;
  
  
  💾 Check Out the Full Source Code
&lt;/h2&gt;

&lt;p&gt;Want to dive deeper into the code or contribute to the project? The full source code is available on GitHub. Feel free to clone, fork, or star the repository:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pol-cova" rel="noopener noreferrer"&gt;
        pol-cova
      &lt;/a&gt; / &lt;a href="https://github.com/pol-cova/password-generator-fasthtml" rel="noopener noreferrer"&gt;
        password-generator-fasthtml
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Simple password generator using FastHTML
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🔐 Password Generator with FastHTML&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;This repository contains a simple password generator web application built using &lt;a href="https://github.com/yourusername/fasthtml" rel="noopener noreferrer"&gt;FastHTML&lt;/a&gt; and styled with &lt;a href="https://tailwindcss.com/" rel="nofollow noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;. The application allows users to generate secure, random passwords based on a user-defined length.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secure Password Generation&lt;/strong&gt;: Uses Python's &lt;code&gt;secrets&lt;/code&gt; module for cryptographic randomness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design&lt;/strong&gt;: Styled with Tailwind CSS for a clean and modern look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Updates&lt;/strong&gt;: Utilizes HTMX for seamless, asynchronous password generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📦 Prerequisites&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Make sure you have Python installed on your machine. You can install the necessary dependencies with:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pip install python-fasthtml&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ Installation&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Clone this repository to your local machine:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/pol-cova/password-generator-fasthtml.git&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Navigate to the project directory:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; password-generator-fasthtml&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;
▶️ Running the Application&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;To start the application, simply run:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;python app.py&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You can now access the application by navigating to &lt;code&gt;http://localhost:5001&lt;/code&gt; in your web browser.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tutorial&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;You can find a detailed tutorial on how to build…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pol-cova/password-generator-fasthtml" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>webdev</category>
      <category>python</category>
      <category>fasthtml</category>
      <category>coding</category>
    </item>
    <item>
      <title>Introducción a C++: parte 4 Funciones</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Thu, 04 Apr 2024 08:20:23 +0000</pubDate>
      <link>https://dev.to/paulcontr_/introduccion-a-c-parte-4-funciones-27kp</link>
      <guid>https://dev.to/paulcontr_/introduccion-a-c-parte-4-funciones-27kp</guid>
      <description>&lt;p&gt;¡En esta cuarta parte, vamos a descubrir el poder de las funciones en C++! Imagina tener una caja de herramientas repleta de funciones listas para usar en tu código. ¡Y lo mejor de todo es que estas funciones te ayudarán a aplicar el principio DRY (Don't Repeat Yourself), haciendo que tu código sea más eficiente y fácil de mantener! ¿Emocionado? ¡Vamos a sumergirnos en el mundo de las funciones!.&lt;/p&gt;

&lt;h2&gt;
  
  
  Estructura basica de una función
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Estructura basica 
tipoDeRetorno nombreFuncion(argumentos){
// Bloque de codigo
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Donde:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;tipoDeRetorno&lt;/code&gt; es el tipo de dato que la función devolverá al final de su ejecución. Puede ser void si la función no devuelve ningún valor.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nombreFuncion&lt;/code&gt; es el nombre que le das a tu función, mediante el cual la llamarás desde otras partes del programa.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;argumentos&lt;/code&gt; son los valores que la función puede recibir como entrada. Pueden ser cero o más, separados por comas si hay más de uno.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dentro del bloque de código de la función, es donde escribes las instrucciones que deseas que la función realice cuando sea llamada. ¡Es como un pequeño programa dentro de tu programa!&lt;/p&gt;

&lt;h2&gt;
  
  
  Tipos de retorno
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;void&lt;/code&gt;: Indica que la función no devuelve ningún valor. Se utiliza cuando la función solo realiza tareas y no necesita devolver ningún resultado.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;int, float, double, char, etc&lt;/code&gt;: Indica que la función devuelve un valor de tipo entero, flotante, doble, caracter, etc. Puedes ajustar el tipo según lo que necesites que la función retorne.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;string&lt;/code&gt;: Indica que la función devuelve un valor de tipo string. Útil para funciones que generan o manipulan cadenas de caracteres.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;bool&lt;/code&gt;: Indica que la función devuelve un valor booleano, es decir, verdadero (true) o falso (false).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Nombres de funciones
&lt;/h2&gt;

&lt;p&gt;Cuando nombras una función en C++, es importante seguir algunas convenciones simples:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;CamelCase&lt;/code&gt;: Comienza con una letra minúscula y las palabras subsecuentes comienzan con mayúscula.&lt;/li&gt;
&lt;li&gt;Ejemplo: &lt;code&gt;calcularSuma&lt;/code&gt;, &lt;code&gt;ordenarArray&lt;/code&gt;, &lt;code&gt;imprimirMensaje&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Descriptivo: Usa nombres que describan claramente la función de la función.&lt;/li&gt;
&lt;li&gt;Evita abreviaturas excesivas: Usa abreviaturas solo si son claras y ampliamente entendidas.
Siguiendo estas pautas, tu código será más fácil de entender para ti y para otros desarrolladores.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Argumentos
&lt;/h2&gt;

&lt;p&gt;Cuando hablamos de argumentos en una función de C++, nos referimos a los valores que se pasan a la función cuando es llamada. Estos argumentos pueden ser variables, constantes u otros valores, y se utilizan para proporcionar datos a la función para que pueda realizar su tarea.&lt;/p&gt;

&lt;p&gt;Por ejemplo, en la función &lt;code&gt;sumar(int a, int b)&lt;/code&gt;, los argumentos son &lt;code&gt;a&lt;/code&gt; y &lt;code&gt;b&lt;/code&gt;, que son dos números enteros que queremos sumar. Cuando llamamos a esta función, pasamos los valores que queremos sumar como argumentos: &lt;code&gt;sumar(5, 3)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Es importante recordar que los argumentos deben coincidir en tipo y cantidad con los parámetros definidos en la función. Además, en C++, los argumentos pueden ser expresiones, variables o incluso llamadas a otras funciones, siempre que el tipo coincida con el parámetro correspondiente de la función.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prototipo de funciones en c++
&lt;/h2&gt;

&lt;p&gt;En C++, los prototipos de funciones permiten declarar funciones antes de que se utilicen en el código. Esto es útil para proporcionar al compilador información sobre la firma de la función, como su tipo de retorno y los tipos de parámetros que espera.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ejemplo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m12ntzdl8wjghxxxpbn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m12ntzdl8wjghxxxpbn.png" alt="prototype-code-example" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para este ejemplo, el prototipo de la función Saludo se declara antes de la función main. La función Saludo se define después de main. Esto permite que el compilador sepa cómo es esta función antes de que sea utilizada en el código principal. La función Saludo simplemente imprime "¡Hola, mundo!" en la consola cuando se llama desde main.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cpp</category>
      <category>tutorial</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Insertion sort in C++</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Thu, 29 Feb 2024 03:06:48 +0000</pubDate>
      <link>https://dev.to/paulcontr_/insertion-sort-in-c-25np</link>
      <guid>https://dev.to/paulcontr_/insertion-sort-in-c-25np</guid>
      <description>&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;En términos simples el insertion sort es como ordenar una mano de cartas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Empiezas con la segunda carta y la comparas con la primera. Si la segunda carta es más pequeña, las intercambias.&lt;/li&gt;
&lt;li&gt;Ahora, las dos primeras cartas están ordenadas.&lt;/li&gt;
&lt;li&gt;Pasas a la tercera carta y la comparas con la segunda. Si es más pequeña, la mueves a la posición correcta entre las cartas ya ordenadas.&lt;/li&gt;
&lt;li&gt;Repites este proceso con cada carta hasta que toda la mano esté ordenada.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mira este gif para entenderle mejor: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidaqame73idr1bexz4cz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidaqame73idr1bexz4cz.gif" alt="insertion-sort-gif" width="500" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Programa para ordenar un array con inserción
&lt;/h2&gt;

&lt;p&gt;El primer paso es identificar las funciones que podremos utilizar para este programa, las cuales serian: &lt;code&gt;printArray&lt;/code&gt;, &lt;code&gt;fillArray&lt;/code&gt;, &lt;code&gt;insertion&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;printArray&lt;/code&gt;: Esta función se utiliza para imprimir el arreglo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;fillArray&lt;/code&gt;: Esta función se utiliza para llenar el arreglo con los datos que da el usuario.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;insertion&lt;/code&gt;: Esta función se utiliza para realizar el ordenamiento.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;printArray&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;La función &lt;code&gt;printArray&lt;/code&gt; recibe un arreglo de números enteros y su tamaño. Luego, imprime los elementos del arreglo en la consola, separados por comas y encerrados entre corchetes. Por ejemplo, si se pasa el arreglo &lt;code&gt;{1, 2, 3, 4, 5}&lt;/code&gt;, la función imprimirá &lt;code&gt;[1, 2, 3, 4, 5]&lt;/code&gt;. Esto permite visualizar fácilmente los elementos del arreglo en un formato legible.&lt;br&gt;
Codigo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Print array function
void printArray( const int *userArray , int size){
    // Imprimir cada elemento con un for loop
    cout &amp;lt;&amp;lt; "[" &amp;lt;&amp;lt; userArray[0];
    for (int i=1; i &amp;lt; size; ++i){
        cout &amp;lt;&amp;lt; "," &amp;lt;&amp;lt; userArray[i];
    }
    cout &amp;lt;&amp;lt; "]" &amp;lt;&amp;lt; endl;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;fillArray&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;La función &lt;code&gt;fillArray&lt;/code&gt; recibe como argumento un puntero a un arreglo de enteros y el tamaño del arreglo. Utiliza un bucle &lt;code&gt;for&lt;/code&gt; para iterar sobre cada posición del arreglo. En cada iteración, le pide al usuario que ingrese un valor para esa posición del arreglo utilizando &lt;code&gt;cin &amp;gt;&amp;gt; userArray[i];&lt;/code&gt;. De esta manera, la función permite al usuario llenar un arreglo con valores ingresados desde el teclado.&lt;br&gt;
Codigo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Fill array
void fillArray(int *userArray, int size){
    // For loop para ingresar elementos
    for (int i = 0; i &amp;lt; size; ++i) {
        // utilizo i+1 para facilitar al usuario el ingresar el elemento
        cout &amp;lt;&amp;lt; "Ingrese elemento " &amp;lt;&amp;lt; i+1 &amp;lt;&amp;lt; " : ";
        // leemos de teclado y lo almacenamos en el arreglo en la posición i
        cin &amp;gt;&amp;gt; userArray[i];
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;insertion&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;La función &lt;code&gt;insertion&lt;/code&gt;  toma un arreglo de números enteros, lo copia, lo ordena utilizando el algoritmo de ordenación por inserción y luego muestra el arreglo original y el arreglo ordenado. Esto ayuda a los principiantes a comprender cómo funciona el algoritmo de inserción y cómo se pueden ordenar los arreglos en la práctica.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Insertion algorithm
void insertion(const int *userArray, int size){
    // Print header
    cout &amp;lt;&amp;lt; setfill('-') &amp;lt;&amp;lt; setw(40) &amp;lt;&amp;lt; "" &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; "|           Insertion sort          |" &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; setfill('-') &amp;lt;&amp;lt; setw(40) &amp;lt;&amp;lt; "" &amp;lt;&amp;lt; endl;
    // Puntero temporal asociado al arreglo
    auto *sortedArray = new int[size];

    // Copia del arreglo dado por el usuario
    for (int i=0; i&amp;lt;size; ++i){
        sortedArray[i] = userArray[i];
    }

    // Insertion algorithm
    for (int i=1; i&amp;lt;size; ++i){
        int k = sortedArray[i];
        int j = i-1;
        while (j &amp;gt;= 0 &amp;amp;&amp;amp; sortedArray[j] &amp;gt; k){
            sortedArray[j+1] = sortedArray[j];
            --j;
        }
        sortedArray[j+1] = k;
    }

    // Mostrar resultados
    cout &amp;lt;&amp;lt; "Original array: ";
    printArray(userArray,size);
    cout &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; "Sorted array: ";
    printArray(sortedArray,size);
    cout &amp;lt;&amp;lt; endl;
    // Deallocate memory
    delete [] sortedArray;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Implementación
&lt;/h2&gt;

&lt;p&gt;Ahora que ya sabemos cuales funciones utilizaremos, tendremos que saber como implementarlas, en el archivo &lt;code&gt;main.cpp&lt;/code&gt; tenemos esto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Encabezados
// librerías estándar
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;iomanip&amp;gt;
using namespace std;

// Prototipo de las funciones 
// Esto se utiliza para no tener problema con la definición de las funciones 
// cuando se utilizan en el código principal. Ayuda al compilador a conocer 
// la firma de las funciones antes de que se definan más adelante en el código.

void printArray( const int *userArray , int size);
void fillArray(int *userArray, int size);
void insertion(const int *userArray, int size);

// Funcion principal

int main() {
        // Variable para almacenar el tamaño deseado del arreglo
    int size;
        // Variable para almacenar el arreglo de enteros ingresados por el usuario
        int *array;

    // Solicitamos la cantidad de elementos 
    cout &amp;lt;&amp;lt; "Ingrese la cantidad de elementos para su arreglo: ";
    cin &amp;gt;&amp;gt; size;
    // Definimos arreglo con el tamaño ingresado por el usuario
    array = new int[size];
    // Llenamos el arreglo
    fillArray(array, size);
    // Ordenamos el arreglo
    insertion(array, size);
    // deallocate memory
    delete [] array;
    return 0;
}

// Funciones desarrolladas
// Print array function
void printArray( const int *userArray , int size){
    // Imprimir cada elemento con un for loop
    cout &amp;lt;&amp;lt; "[" &amp;lt;&amp;lt; userArray[0];
    for (int i=1; i &amp;lt; size; ++i){
        cout &amp;lt;&amp;lt; "," &amp;lt;&amp;lt; userArray[i];
    }
    cout &amp;lt;&amp;lt; "]" &amp;lt;&amp;lt; endl;
}

// Fill array
void fillArray(int *userArray, int size){
    // For loop para ingresar elementos
    for (int i = 0; i &amp;lt; size; ++i) {
        // utilizo i+1 para facilitar al usuario el ingresar el elemento
        cout &amp;lt;&amp;lt; "Ingrese elemento " &amp;lt;&amp;lt; i+1 &amp;lt;&amp;lt; " : ";
        // leemos de teclado y lo almacenamos en el arreglo en la posición i
        cin &amp;gt;&amp;gt; userArray[i];
    }
}

// Insertion algorithm
void insertion(const int *userArray, int size){
    // Print header
    cout &amp;lt;&amp;lt; setfill('-') &amp;lt;&amp;lt; setw(40) &amp;lt;&amp;lt; "" &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; "|           Insertion sort          |" &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; setfill('-') &amp;lt;&amp;lt; setw(40) &amp;lt;&amp;lt; "" &amp;lt;&amp;lt; endl;
    // Puntero temporal asociado al arreglo
    auto *sortedArray = new int[size];

    // Copia del arreglo dado por el usuario
    for (int i=0; i&amp;lt;size; ++i){
        sortedArray[i] = userArray[i];
    }

    // Insertion algorithm
    for (int i=1; i&amp;lt;size; ++i){
        int k = sortedArray[i];
        int j = i-1;
        while (j &amp;gt;= 0 &amp;amp;&amp;amp; sortedArray[j] &amp;gt; k){
            sortedArray[j+1] = sortedArray[j];
            --j;
        }
        sortedArray[j+1] = k;
    }

    // Mostrar resultados
    cout &amp;lt;&amp;lt; "Original array: ";
    printArray(userArray,size);
    cout &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; "Sorted array: ";
    printArray(sortedArray,size);
    cout &amp;lt;&amp;lt; endl;
    // Deallocate memory
    delete [] sortedArray;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ejemplo de uso:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygguvqpsx8j2r53aiswm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygguvqpsx8j2r53aiswm.png" alt="use-insertion" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;La ordenación por inserción es un método sencillo y rápido para ordenar elementos en un arreglo. Aunque es eficiente para conjuntos de datos pequeños, puede volverse menos eficaz con conjuntos de datos grandes. Es importante elegir el algoritmo de ordenación adecuado según el tamaño y la naturaleza de los datos a ordenar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Puedes encontrar el codigo completo en:&lt;/strong&gt;&lt;a href="https://github.com/pol-cova/sorting" rel="noopener noreferrer"&gt;repositorio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gif utilizado author Swfung8:&lt;/strong&gt;&lt;a href="https://upload.wikimedia.org/wikipedia/commons/9/9c/Insertion-sort-example.gif" rel="noopener noreferrer"&gt;gif&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Tasky: minimal planner in C++</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Mon, 19 Feb 2024 21:04:27 +0000</pubDate>
      <link>https://dev.to/paulcontr_/tasky-minimal-planner-in-c-3dj6</link>
      <guid>https://dev.to/paulcontr_/tasky-minimal-planner-in-c-3dj6</guid>
      <description>&lt;p&gt;Check my new project, a minimal planner in C++, &lt;br&gt;
 &lt;a href="https://github.com/pol-cova/Tasky" rel="noopener noreferrer"&gt;Github: &lt;/a&gt;&lt;br&gt;
if you had any question comment please!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjq9tc8sd5e3e3nrp5rrn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjq9tc8sd5e3e3nrp5rrn.png" alt=" " width="636" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpoeni1xgauvtxxgvvyxd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpoeni1xgauvtxxgvvyxd.png" alt=" " width="638" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Introducción a C++: parte 3 Estructuras de control [repetitivas]</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Sun, 04 Feb 2024 23:46:28 +0000</pubDate>
      <link>https://dev.to/paulcontr_/introduccion-a-c-parte-3-estructuras-de-control-repetitivas-30c1</link>
      <guid>https://dev.to/paulcontr_/introduccion-a-c-parte-3-estructuras-de-control-repetitivas-30c1</guid>
      <description>&lt;h3&gt;
  
  
  Repetitivas
&lt;/h3&gt;

&lt;p&gt;De manera simple estas estructuras ejecutan fragmentos de codigo mientras se cumplen ciertas condiciones, existen 3 tipos principales: &lt;strong&gt;while&lt;/strong&gt;, &lt;strong&gt;do-while&lt;/strong&gt;, &lt;strong&gt;for&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  While
&lt;/h4&gt;

&lt;p&gt;El &lt;code&gt;while&lt;/code&gt; se utiliza para ejecutar fragmentos de codigo mientras se cumple la condición es decir si no se cumple no se ejecuta nada, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;while (condición){
  // Codigo que se ejecuta mientras se cumple la condición 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo usando while: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0oekrpj7bjkvdjz3b2zw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0oekrpj7bjkvdjz3b2zw.png" alt="while-example" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Do-while
&lt;/h4&gt;

&lt;p&gt;El &lt;code&gt;do-while&lt;/code&gt; al igual que el while ejecuta el fragmentos de codigo mientras una condición se cumple, la diferencia es que este ejecuta el fragmento al menos una vez, es decir se ejecuta 1 vez y después comprueba si sigue ejecutándose, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;do {
 // Codigo que se ejecuta 1 vez y verifica si sigue  ejecutándose 
} while (condición);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo usando do-while:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53gv4zwgjuvog7wk4y61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53gv4zwgjuvog7wk4y61.png" alt="do-while-example" width="769" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  For
&lt;/h4&gt;

&lt;p&gt;El &lt;code&gt;for&lt;/code&gt; al igual que el while ejecuta el fragmentos de codigo mientras una condición se cumple. Sin embargo, la diferencia clave radica en su estructura y propósito, el &lt;code&gt;for&lt;/code&gt; se usa generalmente se utiliza generalmente para iterar sobre una secuencia específica de elementos, como una lista, una tupla, o un rango numérico, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (inicialización; condición; incrementación;){
   // Fragmento de codigo 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Una manera mas sencilla de verlo es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (desde; hasta; con paso de;){
   // Fragmento de codigo 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo usando for:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbo484r95gtnim6zqiwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbo484r95gtnim6zqiwa.png" alt="for-example" width="780" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusión
&lt;/h4&gt;

&lt;p&gt;Aunque las 3 estructuras sirven para ejecutar fragmentos de codigo mientras una condición se cumple, para determinar que estructura usar, lo mejor es ver el propósito de nuestro programa. &lt;/p&gt;

</description>
      <category>cpp</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Introducción a C++: parte 2 Estructuras de control [selectivas]</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Thu, 01 Feb 2024 01:11:35 +0000</pubDate>
      <link>https://dev.to/paulcontr_/introduccion-a-c-parte-2-estructuras-de-control-2lbp</link>
      <guid>https://dev.to/paulcontr_/introduccion-a-c-parte-2-estructuras-de-control-2lbp</guid>
      <description>&lt;p&gt;En términos simples las &lt;em&gt;estructuras de control&lt;/em&gt; son partes de código que según las circunstancias, ejecutan estas declaraciones de cierta manera. Por lo general, hay dos tipos: &lt;strong&gt;condicionales y loops&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Condicionales
&lt;/h2&gt;

&lt;p&gt;Estas estructuras permiten que un programa tome desiciones basadas en expresiones lógicas, algunas de estas son &lt;strong&gt;If, If - Else If, If - Else, Switch.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  If
&lt;/h3&gt;

&lt;p&gt;El &lt;code&gt;if&lt;/code&gt; se utiliza para ejecutar un bloque de código si una condición es verdadera, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (condición){
 // Codigo que se ejecuta si se cumple la condición
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si solo hay una condición podemos omitir las llaves:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (condición)
 // Codigo que se ejecuta si se cumple la condición
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo usando If: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhth3dl7kfrwhxjo5fji3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhth3dl7kfrwhxjo5fji3.png" alt="ejemplo-if" width="777" height="406"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  If - Else If
&lt;/h3&gt;

&lt;p&gt;El &lt;code&gt;Else if&lt;/code&gt; permite evaluar múltiples condiciones secuenciales, ejecutando el bloque de código asociado a la primera condición que sea verdadera, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (condición 1){
 // Codigo que se ejecuta si se cumple la condición 1
} else if (condición 2) {
// Codigo que se ejecuta si se cumple la condición 2
} ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo simple: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5e7nqcgk9f6cotry6y33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5e7nqcgk9f6cotry6y33.png" alt="ejemplo-if-else-if" width="766" height="521"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  If - Else
&lt;/h3&gt;

&lt;p&gt;El &lt;code&gt;else&lt;/code&gt; en términos fáciles se ejecuta si ninguna de las condiciones anteriores es verdadera, proporcionando una alternativa, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (condición){
 // Codigo que se ejecuta si se cumple la condición
} else {
// Codigo que se ejecuta si no se cumple ninguna condición 
} ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo simple: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bung8l94kbvu6lnd2mu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bung8l94kbvu6lnd2mu.png" alt="ejemplo-else" width="771" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  If-else if- else
&lt;/h3&gt;

&lt;p&gt;Cuando se tienen múltiples condiciones que deben evaluarse de manera secuencial podemos mezclar las tres estructuras anteriores, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (condición 1){
 // Codigo que se ejecuta si se cumple la condición 1
} else if (condición 2){
// Codigo que se ejecuta si se cumple la condición 2
} else {
// Codigo que se ejecuta si no se cumple ninguna condición
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo simple: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3eelyod4iheqbl7onfsb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3eelyod4iheqbl7onfsb.png" alt="ejemplo-all" width="766" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Switch
&lt;/h3&gt;

&lt;p&gt;Es útil cuando se tienen múltiples condiciones y se quiere comparar una variable con varios valores posibles, ejecutando el bloque de código correspondiente al valor que coincida, su estructura es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Variable en con la que comparara
int var = 2;

switch(var){
    case 1:
    // Se ejecuta si var es 1
    .....
    // Se agrega break para salir si no se cumple y pasar;
    break;
    case 2:
    // Se ejecuta si var es 2
    .....
    // Se agrega break para salir si no se cumple y pasar;
    break;
    // Si no se cumple ninguna ejecuta esta parte
    default:
    // No se cumplió ningún caso 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo simple: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bmk54yd7p4rj0xzr7sb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bmk54yd7p4rj0xzr7sb.png" alt="ejemplo-switch" width="759" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Y en esta parte de la sección donde aprenderemos las estructuras de control selectivas , si quieres probar este codigo en linea ingresa a: &lt;a href="https://www.programiz.com/cpp-programming/online-compiler/" rel="noopener noreferrer"&gt;Compilador de C++ online&lt;/a&gt; &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Introducción a C++: parte 1</title>
      <dc:creator>Paul Contreras</dc:creator>
      <pubDate>Thu, 01 Feb 2024 00:22:52 +0000</pubDate>
      <link>https://dev.to/paulcontr_/introduccion-a-c-parte-1-1k8l</link>
      <guid>https://dev.to/paulcontr_/introduccion-a-c-parte-1-1k8l</guid>
      <description>&lt;p&gt;C++ fue creado en 1979 por &lt;strong&gt;Bjarne Stroustrup&lt;/strong&gt; como una extensión orientada a objetos de C. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conceptos básicos
&lt;/h2&gt;

&lt;p&gt;Antes de empezar a programar debemos de conocer los conceptos básicos del c++:&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Compilador&lt;/em&gt;&lt;/strong&gt;: En términos simples es el que traduce nuestro código a lenguaje maquina.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Palabras clave&lt;/em&gt;&lt;/strong&gt;: Estas son palabras reservadas por el compilador y no las podemos utilizar como identificadores para variables, funciones u otros elementos en nuestro código, ejemplo: &lt;em&gt;int, float, return, const, void&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Variables y constantes&lt;/em&gt;&lt;/strong&gt;: En términos simples una &lt;em&gt;variable&lt;/em&gt; es un espacio en la memoria donde se almacena un valor este puede cambiar durante la ejecución de nuestro codigo, mientras que una &lt;em&gt;constante&lt;/em&gt; es una valor que definimos y no puede cambiar. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Tipos de datos&lt;/em&gt;&lt;/strong&gt;: Los tipos de datos determinan el tipo de valor que puede almacenar una variable hay diversos tipos como &lt;strong&gt;int (entero)&lt;/strong&gt;, &lt;strong&gt;float (real)&lt;/strong&gt;,&lt;strong&gt;bool (booleano)&lt;/strong&gt;, &lt;strong&gt;char (carácter)&lt;/strong&gt; por mencionar algunos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Operadores&lt;/em&gt;&lt;/strong&gt;: Existen principalmente 3 tipos de operadores &lt;em&gt;&lt;strong&gt;lógicos:&lt;/strong&gt;&lt;/em&gt; para realizar operaciones lógicas y booleanas, &lt;em&gt;&lt;strong&gt;relacionales:&lt;/strong&gt;&lt;/em&gt; estos comparan 2 valores y devuelven un resultado booleano, &lt;em&gt;&lt;strong&gt;aritméticos:&lt;/strong&gt;&lt;/em&gt; estos realizan operaciones matemáticas básicas.&lt;br&gt;
&lt;em&gt;Lógicos:&lt;/em&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&amp;amp;&amp;amp; (and)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;|| (or)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;! (not)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Relacionales:&lt;/em&gt; ==, !=, &amp;lt;, &amp;gt;, &amp;lt;=, &amp;gt;= &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Aritméticos:&lt;/em&gt; +, -, *, /, %&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Puntuación&lt;/em&gt;&lt;/strong&gt;: La puntuación define la estructura del programa: &lt;strong&gt;{&lt;/strong&gt; &lt;strong&gt;}&lt;/strong&gt; : Define bloques de codigo , &lt;strong&gt;(&lt;/strong&gt; &lt;strong&gt;)&lt;/strong&gt; : Define y llama funciones , &lt;strong&gt;;&lt;/strong&gt; : Se usa para marcar el final de una instrucción.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Comentarios&lt;/em&gt;&lt;/strong&gt;: Los comentarios en la programación son fundamentales para mejorar la legibilidad, mantenibilidad y colaboración en el código fuente en c++ tenemos 2 tipos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Para una sola linea de comentario 
/*
Para varias lineas de comentarios 
*/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Entrada y salida&lt;/em&gt;&lt;/strong&gt;: En c++, para imprimir en pantalla usamos la palabra reservada &lt;strong&gt;cout&lt;/strong&gt; y &lt;strong&gt;&amp;lt;&amp;lt;&lt;/strong&gt; ejemplo: &lt;code&gt;cout&amp;lt;&amp;lt;"hola mundo";&lt;/code&gt; y para leer datos usamos la palabra reservada &lt;strong&gt;cin&lt;/strong&gt; y &lt;strong&gt;&amp;gt;&amp;gt;&lt;/strong&gt; ejemplo: &lt;code&gt;cin&amp;gt;&amp;gt;variable;&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Primer programa: Hola mundo
&lt;/h2&gt;

&lt;p&gt;Como es tradición en el mundo de la programación el primer programa que codificaremos es un hola mundo: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Crea un archivo de c++: &lt;code&gt;holaMundo.cpp&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;  // Esta línea incluye el archivo de encabezado de transmisión de entrada/salida, que proporciona funcionalidades para leer y escribir en la consola.

using namespace std;  // Esta línea especifica que el programa utilizará el espacio de nombres estándar de C++, que contiene muchas funciones y objetos estándar.

int main()  // Esta línea declara la función principal, que es el punto de entrada de cada programa en C++.
{
    cout &amp;lt;&amp;lt; "Hola, mundo";  // Esta línea utiliza el objeto cout (salida de caracteres) del espacio de nombres std para imprimir la cadena "Hola, mundo" en la consola.

    return 0;  // Esta línea indica que el programa se ha ejecutado correctamente. El valor 0 suele significar una ejecución exitosa.
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nuestro codigo quedo algo así: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxk3baut7vayaubd93qfp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxk3baut7vayaubd93qfp.png" alt=" " width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Al ejecutarlo en nuestra consola observaremos el mensaje: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fef4v3r4pk6bwno4c6fk1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fef4v3r4pk6bwno4c6fk1.png" alt=" " width="703" height="34"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Y esta fue la primera parte de esta sección donde aprenderemos a programar en c++, si quieres probar este codigo en linea ingresa a: &lt;a href="https://www.programiz.com/cpp-programming/online-compiler/" rel="noopener noreferrer"&gt;Compilador de C++ online&lt;/a&gt; &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
