Saltearse al contenido

Tema 1 - Algoritmos y Programas

Este tema explora los conceptos fundamentales de la programación, comenzando por la definición de un programa como un conjunto de instrucciones para que la computadora realice tareas.

🧮 Algoritmos

Un concepto clave que se resalta es el de algoritmo. Un algoritmo es una serie de pasos ordenados y finitos para resolver un problema, y es la base de todo lo que hace una computadora.

  • Un algoritmo debe ser preciso, definido y finito.
  • A diferencia de un programa, un algoritmo puede ser expresado en lenguaje natural.
  • Para que una computadora ejecute un algoritmo, este debe ser traducido a un programa.
  • La estructura general de un algoritmo incluye una cabecera, un cuerpo con declaraciones, e instrucciones.

🔢 Codificación de la Información

Para que un ordenador pueda procesar información, esta debe ser codificada en un formato que pueda entender, es decir, en secuencias de 0s y 1s (sistema binario).

  • Un bit es la unidad mínima de información, representando un 0 o un 1.

  • Un byte son 8 bits y se utiliza como una unidad básica de almacenamiento.

  • Existen múltiplos del byte, como el kilobyte, megabyte, gigabyte, etc.

    Tabla de las unidades de almacenamiento

💻 Lenguajes de Programación

Para escribir un programa, se utilizan lenguajes de programación, que son un conjunto de reglas y símbolos para construir programas. Existen diferentes tipos:

  • Lenguaje máquina: El lenguaje nativo de los ordenadores, basado en secuencias de 0s y 1s.
  • Lenguaje ensamblador: Usa nombres simbólicos para representar instrucciones, más fácil que el lenguaje máquina, pero aún dependiente de la arquitectura (x86, x64, ArmV7, etc.).
  • Lenguajes de alto nivel: Más cercanos al lenguaje humano e independientes de la máquina. Ejemplos: C/C++, Python, Java.

❓ Compiladores e Intérpretes

Para que una computadora ejecute un programa escrito en un lenguaje de alto nivel, se utiliza un traductor, que puede ser un compilador o un intérprete:

  • Compiladores: Traducen todo el código fuente a código máquina en una sola operación, generando un programa ejecutable.
  • Intérpretes: Traducen y ejecutan el programa instrucción por instrucción, permitiendo corregir errores sobre la marcha, aunque son menos eficientes.

🔎 Paradigmas de Programación

Un paradigma de programación es un estilo de desarrollo de software. Algunos ejemplos son:

  • Imperativa: Se define la secuencia de pasos a ejecutar.
  • Orientada a Objetos: Se basa en la creación de objetos que interactúan entre sí.
  • Declarativa: Describe qué se necesita resolver en lugar de cómo hacerlo.
  • Funcional: Se basa en la definición y uso de funciones.
  • Guiada por Eventos: El flujo del programa está determinado por eventos externos.
  • Concurrente: Permite ejecutar múltiples tareas simultáneamente.

Paradigmas más Comunes

Programación Imperativa (Procedimental)

Este enfoque define claramente los pasos a ejecutar en orden secuencial. El código se organiza en subprogramas (funciones, procedimientos). Ejemplos de lenguajes: C, Java, Go.

Programación Orientada a Objetos

Se basa en la creación de clases y objetos. Los programas están compuestos por objetos que interactúan entre sí. Ventajas: reutilización de código y mejor organización. Ejemplos: C++, Java.

Programación Declarativa (Lógica)

Este enfoque se centra en el qué resolver, dejando que el sistema se encargue del cómo. Utiliza reglas y hechos para encontrar soluciones. Ejemplos: Prolog, SQL.

Programación Funcional

Se basa en la definición y combinación de funciones. La recursividad es un concepto clave. Ejemplos: Python, Kotlin, JavaScript.

Programación Guiada por Eventos

El flujo del programa está controlado por eventos externos, como interacciones del usuario. Ejemplos: Java, Visual Basic.

Programación Concurrente

Permite la ejecución simultánea de múltiples tareas a través de procesos o hilos de ejecución. Ejemplo: Java.


Un mismo lenguaje puede implementar varios de estos paradigmas, dependiendo del enfoque del programador.