Resumen: Fundamentos de programación

Esquema del Curso

  1. Máquinas programables y programas
  2. Cómputo y estructura del computador
  3. Desarrollo y objetivos del software
  4. Lenguajes y procesamiento de programas
  5. Modelos abstractos de cómputo
  6. Modelos funcionales y flujo de datos
  7. Programación lógica e imperativa
  8. Elementos de programación imperativa
  9. Evolución de hardware y software
  10. Metodología y buenas prácticas

1. Máquinas programables y programas

Conceptos clave y definiciones

  • Máquina programable: Combinación de una máquina base de comportamiento fijo con una parte modificable, llamada programa, que describe su funcionamiento.
  • Máquina virtual: Máquina que puede concebirse y describirse con precisión, aunque no exista físicamente.

★ Imprescindible

📌 Una máquina manual depende de un operador que desencadena sus operaciones, mientras que una máquina automática actúa por sí sola y puede responder a estímulos externos.

Complementos

  • Una máquina programable puede comportarse como distintas máquinas particulares según el programa que la gobierne.

Truco mnemotécnico

La máquina fija responde siempre igual; la programable cambia según su programa.

2. Cómputo y estructura del computador

Conceptos clave y definiciones

  • Cómputo: Tratamiento de información que obtiene información nueva a partir de información conocida mediante cálculos.
  • Computador: Máquina programable para el tratamiento de la información y la realización de cómputos.

★ Imprescindible

📌 En un computador, el hardware corresponde a los elementos físicos fijos y el software a las representaciones modificables de los programas.

  • La memoria almacena datos y programas, los dispositivos de entrada/salida intercambian información con el exterior y el procesador realiza operaciones según los códigos del programa.

Complementos

  • En una máquina de programa almacenado, la memoria guarda información codificada que incluye tanto los datos como la representación del programa.

Truco mnemotécnico

Una memoria guarda datos y programa mientras el procesador los transforma y la entrada/salida conecta con el exterior.

3. Desarrollo y objetivos del software

★ Imprescindible

  • Para tratar información con un computador es necesario construir el hardware, desarrollar el programa de software y ejecutarlo en el computador.

📌 La programación suele referirse al desarrollo de programas pequeños realizado por una persona, mientras que la ingeniería de software aplica técnicas organizativas al desarrollo de software complejo, normalmente en equipo.

  • Los objetivos de la programación son:
    • Corrección.
    • Claridad.
    • Eficiencia.

Complementos

  • El desarrollo de software a gran escala descompone el trabajo de programación en partes independientes que pueden desarrollar distintos miembros del equipo.

📌 Para juzgar la corrección de un programa primero debe especificarse con claridad el funcionamiento esperado.

Truco mnemotécnico

Primero corrección, después claridad y finalmente eficiencia.

4. Lenguajes y procesamiento de programas

Conceptos clave y definiciones

  • Lenguaje de máquina: Forma particular de codificar programas que puede utilizar un modelo de computador.
  • Lenguaje de programación: Representación simbólica de programas mediante textos legibles para las personas y prácticamente independientes de las máquinas particulares.
  • Compilador: Programa que traduce un programa fuente escrito en un lenguaje simbólico a un programa objeto en código de máquina.
  • Intérprete: Programa que analiza directamente la descripción simbólica del programa fuente y realiza las operaciones correspondientes, comportándose como una máquina virtual cuyo lenguaje coincide con el lenguaje fuente.

Puntos esenciales

  • En general, un programa codificado para un modelo de computador no puede ejecutarse en otro modelo distinto sin preparar una versión adecuada a su lenguaje de máquina.

Truco mnemotécnico

El compilador traduce antes de ejecutar; el intérprete analiza y ejecuta directamente.

5. Modelos abstractos de cómputo

Conceptos clave y definiciones

  • Modelo abstracto de cómputo: Conjunto de elementos básicos y formas de combinación comunes a lenguajes de programación, prescindiendo de su notación concreta.

★ Imprescindible

  • Entre los modelos de programación descritos están los modelos funcional, de flujo de datos, lógico, imperativo y orientado a objetos.

📌 Un mismo problema puede representarse mediante programas de formas muy diferentes según el modelo de cómputo elegido.

Complementos

  • Los modelos abstractos de programación descritos son universales porque pueden utilizarse para describir cualquier cómputo intuitivamente posible.

6. Modelos funcionales y flujo de datos

Conceptos clave y definiciones

  • Modelo funcional: Modelo que describe cómputos mediante funciones aplicadas a argumentos para obtener resultados y que pueden combinarse entre sí.
  • Flujo de datos: Red de operadores que se activan al disponer de valores en sus entradas, calculan resultados y los envían a sus salidas.

★ Imprescindible

  • En el modelo funcional, la reducción evalúa un cómputo reemplazando progresivamente cada función por su resultado.

Complementos

  • Cuando se evalúa una función definida, la reescritura la sustituye por su definición y reemplaza los argumentos simbólicos por los argumentos reales.

  • Una red de flujo de datos puede organizarse iterativamente para producir una serie de resultados y puede incluir operadores de bifurcación para detenerse al alcanzar un resultado adecuado.

Truco mnemotécnico

En flujo de datos, los valores llegan a las entradas y activan el operador.

7. Programación lógica e imperativa

Conceptos clave y definiciones

  • Programación lógica: La programación lógica plantea formalmente un problema mediante hechos y reglas, y consulta el resultado dejando que la máquina realice las inferencias necesarias.
  • Modelo imperativo: Representación de un programa como instrucciones que se ejecutan en un orden indicado, aunque instrucciones de control pueden alterar ese orden o repetir partes según condiciones.
  • Hecho: Relación entre objetos concretos.
  • Regla lógica: Relación general entre objetos que cumplen ciertas propiedades.

Puntos esenciales

  • La regla Hermano(x, y) :- Hijo(x, z), Hijo(y, z), ≠(x, y) excluye que una persona sea considerada hermana de sí misma.

Truco mnemotécnico

La lógica declara hechos y reglas; la imperativa ordena acciones sobre valores almacenados.

8. Elementos de programación imperativa

Conceptos clave y definiciones

  • Variable: Dato almacenado bajo un nombre cuyo valor puede utilizarse o modificarse.
  • Asignación: Una asignación calcula la expresión situada a la derecha y almacena el resultado como nuevo valor de la variable situada a la izquierda.

★ Imprescindible

  • Los esquemas generales de programación estructurada son:
    • Secuencia.
    • Selección.
    • Iteración.

Complementos

  • Una traza analiza un programa registrando las instrucciones ejecutadas sucesivamente y los valores que toman las variables al inicio y después de cada instrucción.

Truco mnemotécnico

Procesador, entorno y acciones: quién ejecuta, con qué recursos y qué realiza.

9. Evolución de hardware y software

★ Imprescindible

  • En la actualidad, desarrollar software para aplicaciones complejas puede costar mucho más que los equipos hardware utilizados.

Complementos

  • En los primeros computadores, costosos y de capacidad limitada, la programación priorizaba el rendimiento y se realizaba directamente en lenguaje de máquina o en lenguaje ensamblador.

  • El aumento de capacidad y la reducción relativa del costo del hardware permitieron abordar aplicaciones más complejas y programas de decenas de miles o millones de instrucciones.

Truco mnemotécnico

Hardware más barato y potente → aplicaciones mayores → desarrollo de software más costoso.

10. Metodología y buenas prácticas

Conceptos clave y definiciones

  • Buenas prácticas: Normas basadas en la experiencia de desarrollos anteriores que los miembros de un equipo adoptan durante el desarrollo de una aplicación compleja.
  • Manual de Estilo: Documento que compendia las buenas prácticas que todos los miembros del equipo deben seguir disciplinadamente durante el desarrollo de una aplicación compleja.

★ Imprescindible

  • La complejidad de los programas actuales hace necesario aplicar metodologías de programación y, en proyectos de equipo, técnicas de ingeniería de software.

📌 Las pruebas pueden demostrar que un programa contiene errores al descubrir fallos, pero no descubrir fallos no garantiza que el programa esté libre de errores.

Complementos

  • Las técnicas formales pueden apoyar la garantía de corrección mediante demostraciones lógico-matemáticas, pero su complejidad limita su uso a programas críticos de pequeño tamaño.

Truco mnemotécnico

Las pruebas pueden descubrir errores; no descubrirlos no demuestra que el programa sea correcto.

Tablas de síntesis

Compilador e intérprete

AspectoCompiladorIntérprete
TratamientoTraduce el fuente a código de máquinaAnaliza el fuente y realiza las operaciones
EjecuciónTraducción y ejecución en etapas separadasEjecución directa mediante el intérprete
ReutilizaciónEl objeto compilado puede ejecutarse repetidamenteEl fuente se analiza durante su ejecución
VelocidadLa ejecución del objeto es más rápidaLa ejecución es más lenta por el análisis e interpretación

Ponte a prueba

Comprueba lo que sabes de Fundamentos de programación con 28 preguntas tipo test y correcciones explicadas.

1. ¿Qué distingue a una máquina manual de una automática?

2. ¿Cómo consigue una máquina programable modificar su funcionamiento?

Hacer el test →

Repasa con flashcards

Memoriza los conceptos clave de Fundamentos de programación con 63 flashcards interactivas.

¿De qué depende una máquina manual para desencadenar sus operaciones?

De un operador.

¿Qué permite a una máquina automática responder a estímulos externos?

Actúa por sí sola.

¿Qué combina una máquina programable?

Una máquina base de comportamiento fijo y una parte modificable llamada programa.

Ver las flashcards →

Cursos similares

Haz tus propios resúmenes

Sube tus apuntes y la IA te genera resúmenes, test y flashcards en 30 segundos.

Generador de esquemas