Cálculo Numérico y Programación#

Presentación#

El objetivo de este curso de Cálculo Numérico y Programación es conseguir que una máquina (la computadora u ordenador) resuelva problemas.

  1. ¿Qué tipo de problemas? Aquellos cuya solución pueden ser descompuesta en una serie de pasos mecánicos usando matemáticas.

  2. ¿Por qué? Porque los ordenadores hacen dos cosas que permiten obtener rápidamente la solución de determinados problemas. Estas son:

    • Hace operaciones simples muy rápidamente

    • Almacena gran cantidad de información.

  3. ¿Cómo?

    • Utilizando el conocimiento imperativo (el que establece un procedimiento para llegar a la solución; se contrapone al conocimiento declarativo que establece un hecho).

    • Descomponiendo el procedimiento para resolver un problema en una serie de pasos mecánicos basados en las matemáticas de forma que se obtiene una la solución utilizando el conocimiento imperativo -> algoritmos (recetas):

      1. secuencia de pasos

      2. control del flujo: orden en el que se ejecuta cada paso

      3. procedimiento para determinar cuándo hay que parar.

    • Comunicando estos algoritmos al ordenador mediante un lenguaje de programación <- lenguaje matemático.

Algunas puntualizaciones

  1. No siempre es suficiente con las habilidades básicas del ordenador:

    • Hace falta algo más para que obtener la solución en un tiempo razonable -> algoritmos

    • Hay problemas irresolubles:

      • Tan complejos que su solución no es accesible en un tiempo razonable en el estado actual de la tecnología -> seguridad informática

      • Otros son intrínsecamente irresolubles -> determinar si un programa cualquiera va a parar, “halt problem”.

  2. Máquinas: ordenadores o computadoras.

    • Tipos de ordenadores:

      • Ordenadores con programa fijo (calculadoras básicas, los programadores del aire acondicionado, el riego, la cocina …)

      • Ordenadores con almacenamiento de programa: tienen una serie de operaciones elementales integradas que permiten diseñar diferentes tareas para resolver problemas diferentes (calculadoras programables, móviles, ordenadores …).

    • Estructura del ordenador:

      • Memoria (RAM)

      • Unidad de control

      • Unidad de operaciones aritméticas y lógicas

      • Dispositivos de entrada y salida (entrada: teclado, pantalla táctil, memoria externa escáner …; salida: pantalla, impresora …).

  3. Lenguajes de programación:

    • Lenguaje artificial basado en el lenguaje matemático dónde cada sentencia tiene un solo significado (pero diferentes sentencias pueden tener el mismos)

    • Tipos de lenguajes de programación

      • lenguajes de alto nivel (C++, Python …) y de bajo nivel (ensamblador)

      • lenguajes compilados (C++, Pascal …) y lenguajes interpretados (Java, Python, Matlab, R …)

    • Todos los lenguajes de programación son equivales: lo que se puede computar en uno se puede computar en otro: todos se basan en seis operaciones básicas -> la elección del lenguaje depende del conocimiento del programador y del tipo de problema planteado

    • Tiene los mismos elementos que un lenguaje natural

      • Palabras o elementos básico -> número, operaciones …

      • Sentencias o expresiones -> operación de números

      • Sintaxis -> reglas que permiten formar sentencia correctas

      • Semántica -> significado (o valor) de una sentencia (o expresión) válida-> resultado de una operación de números

    • Errores

      • “Ortográficos” -> los elementos que forman una sentencia no están bien escritos -> fáciles de detectar <- correctores ortográficos

      • Errores sintácticos -> una sentencia no respeta las reglas sintácticas del lenguaje > fáciles de detectar <- correctores sintácticos

      • Errores semánticos:

        • La sentencia no tiene significado y el programa se para -> fáciles de detectar

        • Las sentencias del programa tiene significado

          • El ordenador no se para -> hay que detener la máquina

          • El ordenador da una resultado pero no es la adecuado -> muy difícil de detectar

Para finalizar podemos reformular el objetivo de este curso como un curso de introducción al pensamiento computacional, es decir, es una introducción al uso del ordenador para resolver problemas mediante la descomposición de dichos problemas, utilizando las matemáticas, en una serie de pasos mecánicos que ejecuta el ordenador. Para comunicarnos con el ordenador utilizaremos el lenguaje de programación Python y por lo tanto deberemos conocer todos los elementos esenciales de este lenguaje. Pero esto no es un curso de Python, es un curso introductorio en programación de ordenadores que además introduce algunos algoritmos propios de las técnicas numéricas para obtener soluciones aproximadas de problemas matemáticos.

En esta página podéis encontrar un manual para instalar python y los cuadernos de jupyter.

Aquí podéis encontrar un cuaderno de jupyter con algunas instrucciones a modo de primeros pasos con el lenguaje de programación Python

Cuestionario Moodle

Cuestionario de Máquinas, conocimiento y lenguajes de programación

Curso académico#

Esta página web está pensada para el curso 2022-23.

Profesores#

  • Pilar Fernández

pilar.fernandez@upm.es

  • Carlos García-Gutiérrez

carlos.garciagutierrez@upm.es

  • Fernando San José

fernando.sanjose@upm.es

Departamento de Matemática Aplicada

Titulaciones#