Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Grado en Fı́sica
Introducción a la Fı́sica Computacional
Modelo fı́sico
Modelo matemático
Modelo informático (algoritmo)
Programa de ordenador
Modelo fı́sico
definición de datos:
g, tf, t : número real
n, i : número entero
parte ejecutable:
leer g, tf, n
asignar t = 0, dt = tf/n
para i = 1 hasta n hacer
asignar t = t + dt
asignar y = 0.5gt2
imprimir t, y
fin para
Programa de ordenador (en python)
g = input("g ? ")
tf = input("tf ? ")
n = input("n ? ")
dt = tf/float(n)
t = 0
for i in range(n):
t = t+dt
y = 0.5*g*t**2
print("t = %10.5f y = %10.5f" % (t, y))
Salida del programa (por pantalla)
g ? 9.8
tf ? 2
n ? 10
t = 0.20000 y = 0.19600
t = 0.40000 y = 0.78400
t = 0.60000 y = 1.76400
t = 0.80000 y = 3.13600
t = 1.00000 y = 4.90000
t = 1.20000 y = 7.05600
t = 1.40000 y = 9.60400
t = 1.60000 y = 12.54400
t = 1.80000 y = 15.87600
t = 2.00000 y = 19.60000
Algoritmos
Qué es un algoritmo
definición de datos:
r, a : número real
π : número real, constante : 3.1415926535897932
parte ejecutable:
leer r
asignar a = πr 2
imprimir a
Ejercicio A1 (para resolver en clase)
definición de datos:
r, θ : número real
x, y : número real
parte ejecutable:
leer r, θ
asignar x = r cos θ
asignar y = r sin θ
imprimir x, y
Ejercicio propuesto A2
Declarativos
Imperativos
Orientados a objetos
No existen asignaciones.
Programación declarativa (II/II)
pi = 3.1415926535897932
a = dato
x = f.read()
print(a, b, c)
Comandos en programación imperativa
3 * 4
13*log(x)+sin(y)
24+12+6*7*z
y0+v0*t+0.5*g*t**2
Ejemplos de operaciones con paréntesis
La expresión: se codifica:
2 sin x + cos y 4
((2*sin(x)+cos(y))/(3*cos(x)-sin(y)))**4
3 cos x − sin y
p
ab(c + d)
sqrt(a*b*(c+d))/log(a + log (b))
log(a + log b)
f
g+h
x f/(g+h)/(2 *sin(x/(2+y)))
2 sin
2+y
Comandos en programación imperativa
pi = 3.1415926535897932
a = pi*r*r
l = 2*pi*r
return a, l
Ejercicio A4 (para resolver en clase)
x = r*cos(th)
y = r*sin(th)
return x, y
Ejercicio propuesto A5
Ejemplo:
si llueve entonces
vamos al cine
en caso contrario
vamos a dar un paseo
fin si
si ... entonces
se codifica en python:
if ... :
Instrucciones condicionales en python (II/II)
if condicion:
# código que se ejecuta
# si condicion es verdadera
...
...
...
if condicion:
# código que se ejecuta
# si condicion es verdadera
...
else:
# código que se ejecuta
# si condicion es falsa
...
if x < 0.0:
x = 0.0
else:
x = 2.0*x
Condicional múltiple
if condicion1:
# código que se ejecuta
# si condicion1 es verdadera
...
elif condicion2:
# se ejecuta si condicion1 es falsa
# y condicion2 es verdadera
...
else:
# código que se ejecuta
# si ambas condiciones son falsas
...
if x == 0.0:
return 0.0
elif x < 0.0:
return -1.0
else:
return 1.0
Ejercicio A7 (para resolver en clase)
x=2
if x != 3:
if x==1:
z=10
else:
z=x
else:
z=0
Ejercicio complementario 2
En python es:
while condición :
código del interior del bucle
Bucle while (II/II)
n2
λ = 364.6 , n > 2.
n2 − 4
Solución al ejercicio A9
repetir
código del interior del bucle
hasta que condición (fin repetir)
while True :
código del interior del bucle
if condición : break
Ejercicio A11 (para resolver en clase)
while True:
print(n)
n = n+1
if n**3 > n3max: break
Bucle con salida intermedia
Ejemplo:
while cond1 :
código del bucle primera parte
if cond2 : break
código del bucle segunda parte
Ejercicio propuesto A12
P∞ −n
Se quiere sumar la serie: S = n=0 z , |z| > 1,
tomando un número de términos n tal que |z | < EPS,
−n
while cond1 :
código del bucle primera parte
if cond2 : continue
código del bucle segunda parte
# múltiplos de 7
nmax = input("nmax ")
n = 0
n2
λ = 364.6 , n > 2.
n2 − 4
Solución al ejercicio A14
for x in L:
interior del bucle
suma = 0.0
for x in L:
if x > 0:
suma = suma+x
print(suma)
Ejercicio propuesto A17