Cálculo Numérico y Programación
Contents
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.
¿Qué tipo de problemas? Aquellos cuya solución pueden ser descompuesta en una serie de pasos mecánicos usando matemáticas.
¿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.
¿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):
secuencia de pasos
control del flujo: orden en el que se ejecuta cada paso
procedimiento para determinar cuándo hay que parar.
Comunicando estos algoritmos al ordenador mediante un lenguaje de programación <- lenguaje matemático.
Algunas puntualizaciones
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”.
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 …).
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