FUNDAMENTOS DE LA PROGRAMACIÓN
La programación es el arte y la ciencia de dar instrucciones a una computadora para que realice tareas específicas. Es el lenguaje con el que nos comunicamos con las máquinas, diciéndoles qué hacer, cómo y cuándo. Para entender la programación, es crucial familiarizarse con sus fundamentos, que son los pilares sobre los que se construye cualquier software.

Algoritmos
En el corazón de la programación se encuentran los algoritmos. Un algoritmo es un conjunto finito y ordenado de pasos lógicos y bien definidos para resolver un problema o realizar una tarea. Piensa en ellos como recetas: cada paso debe ser claro y la secuencia es crucial para obtener el resultado deseado.
Características de un buen algoritmo:
• Preciso: Cada paso debe ser inequívoco.
• Definido: Siempre debe producir el mismo resultado con la misma entrada.
• Finito: Debe terminar en un número limitado de pasos.
• Efectivo: Cada paso debe ser realizable.
Ejemplo de algoritmo: Para preparar una taza de café:
- Hervir agua.
- Colocar café molido en un filtro.
- Verter el agua caliente sobre el café.
- Servir el café.

Un algoritmo es la secuencia de pasos lógicos y finitos para resolver un problema, mientras que un diagrama de flujo es la representación gráfica de ese algoritmo.


Lenguajes de Programación
Los algoritmos se escriben en lenguajes de programación, que son sistemas de comunicación formal que le permiten a un programador especificar un conjunto de instrucciones para una computadora. Existen cientos de lenguajes, cada uno con sus propias reglas (sintaxis) y su propósito específico. Algunos ejemplos comunes son Python, Java, C++, JavaScript, C#, etc.
Los lenguajes de programación se clasifican generalmente en:
• Lenguajes de bajo nivel: Cercanos al hardware de la computadora (ej. Lenguaje ensamblador).
• Lenguajes de alto nivel: Más cercanos al lenguaje humano, lo que facilita su lectura y escritura (ej. Python, Java).

Variables y Tipos de Datos
Las variables son contenedores con nombre que se utilizan para almacenar datos en un programa. Imagina una caja con una etiqueta: la etiqueta es el nombre de la variable y la caja contiene un valor que puede cambiar.
Cada variable tiene un tipo de dato asociado, que define qué clase de información puede almacenar. Algunos tipos de datos comunes incluyen:
• Números enteros (integers): 5, -10, 1000
• Números decimales (floats/doubles): 3.14, -0.5, 99.99
• Cadenas de texto (strings): «Hola mundo», «Nombre de usuario»
• Valores booleanos (booleans): True o False (verdadero o falso)

Estructuras de Control
Las estructuras de control determinan el flujo de ejecución de un programa, es decir, en qué orden se ejecutan las instrucciones. Son esenciales para la lógica del programa.
• Estructuras Secuenciales: Las instrucciones se ejecutan una tras otra en el orden en que aparecen.
• Estructuras Condicionales (Decisión): Permiten que el programa tome diferentes caminos basándose en una condición.
if-else: «Si esta condición es verdadera, haz esto; de lo contrario, haz esto otro.»
switch-case: Permite elegir entre varias opciones posibles basadas en el valor de una variable.
• Estructuras Repetitivas (Bucles/Iteración): Permiten ejecutar un bloque de código varias veces.
for: Ejecuta un bloque de código un número específico de veces.
while: Ejecuta un bloque de código mientras una condición sea verdadera.
do-while: Similar a while, pero garantiza que el bloque de código se ejecute al menos una vez.

Funciones (o Métodos)
Una función es un bloque de código reutilizable que realiza una tarea específica. Las funciones ayudan a organizar el código, hacerlo más legible y evitar la repetición. Se definen una vez y pueden ser «llamadas» o «invocadas» múltiples veces desde diferentes partes del programa.
Ejemplo: Una función llamada sumar Números que toma dos números como entrada y devuelve su suma.

Estructuras de Datos
Las estructuras de datos son formas especializadas de organizar y almacenar datos para que puedan ser accedidos y modificados de manera eficiente. Elegir la estructura de datos correcta puede tener un gran impacto en el rendimiento de un programa.
Algunas estructuras de datos comunes incluyen:
• Arrays (Arreglos/Listas): Colecciones ordenadas de elementos del mismo tipo (o tipos variados en algunos lenguajes).
• Objetos (Diccionarios/Mapas): Colecciones de pares clave-valor.
• Pilas (Stacks): Estructuras LIFO (Last-In, First-Out), como una pila de platos.
• Colas (Queues): Estructuras FIFO (First-In, First-Out), como una cola de personas.

Comentarios
Los comentarios son notas que los programadores añaden al código para explicar qué hace una parte del programa, por qué se hizo de cierta manera o cualquier otra información útil. Son ignorados por el compilador o intérprete, pero son invaluables para la legibilidad y el mantenimiento del código, especialmente cuando otras personas (o tú mismo en el futuro) necesitan entenderlo.

Errores y Depuración (Debugging)
La programación rara vez es perfecta a la primera. Los errores (o «bugs») son inevitables.
• Errores de sintaxis: Violaciones de las reglas del lenguaje de programación (ej. un punto y coma faltante).
• Errores lógicos: El programa se ejecuta, pero no produce el resultado esperado debido a un fallo en el algoritmo.
• Errores en tiempo de ejecución: Ocurren mientras el programa está en ejecución (ej. dividir por cero).
La depuración (debugging) es el proceso de encontrar y corregir estos errores. Es una habilidad fundamental que todo programador debe desarrollar.

