You are on page 1of 20

Desarrollo de un programa en python

para operar con vectores


Camilo Bernal
22 de agosto de 2014
ndice
1. Introduccin 1
2. Anlisis preliminar 2
3. Diseo bsico 3
3.1. Mdulo main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Mdulo suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3. Mdulo diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.4. Mdulo p_escalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.5. Mdulo p_vectorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.6. Mdulo angulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.7. Mdulo longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.8. Mdulo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Pseudo-Cdigo 5
4.1. Mdulo main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Mdulo suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3. Mdulo diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.4. Mdulo p_escalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.5. Mdulo p_vectorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.6. Mdulo angulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.7. Mdulo longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.8. Mdulo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5. Cdigo Python 8
5.1. Mdulo main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2. Mdulo suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3. Mdulo diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.4. Mdulo p_escalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.5. Mdulo p_vectorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.6. Mdulo angulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.7. Mdulo longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.8. Mdulo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6. Conclusiones 16
I
7. Lecturas recomendadas 17
II
1. Introduccin
Lo primero que se debe aclarar es que no soy un experto en programacin ni mucho
menos. Si eres un aprendiz (como yo) este manual puede ayudarte. Si eres un experto,
quizs slo te sirva para aprender cmo "no hacer las cosas como un aprendiz".
Se presentan las operaciones bsicas sobre dos vectores tridimensionales. El documento
presenta un ejemplo de resolucin del problema partiendo desde un diseo muy bsico y
concluyendo con un programa en lenguaje Python, que si bien no es perfecto, al menos
funciona como prototipo.
1
2. Anlisis preliminar
Se desea realizar diversas operaciones sobres dos vectores tridimensionales v1 y v2. Se
quiere adems que el usuario elija la operacin que quiere realizar.
Las operaciones que se pueden realizar son las siguientes:
Suma: (x
1
, y
1
, z
1
) + (x
2
, y
2
, z
2
) = (x
1
+ x
2
, y
1
+ y
2
, z
1
+ z
2
)
Diferencia: (x
1
, y
1
, z
1
)(x
2
, y
2
, z
2
) = (x
1
x
2
, y
1
y
2
, z
1
z
2
)
Producto escalar: (x
1
, y
1
, z
1
) (x
2
, y
2
, z
2
) = x
1
x
2
+ y
1
y
2
+ z
1
z
2
Producto vectorial: (x
1
, y
1
, z
1
)(x
2
, y
2
, z
2
) = (y
1
z
2
z
1
y
2
, z
1
x
2
x
1
z
2
, x
1
y
2
y
1
x
2
)
Angulo entre (x
1
, y
1
, z
1
) y (x
2
, y
2
, z
2
) =
180

arc cos

x
1
x
2
+y
1
y
2
+z
1
z
2

(
x
2
1
+y
2
1
+z
2
1
)

(
x
2
2
+y
2
2
+z
2
2
)

Longitud de (x, y, z):



x
2
+ y
2
+ z
2
Se recomienda hacer un trabajo de programacin incremental, esto es ir realizando pe-
queos cambios al programa y volver a llamar al intrprete para tareas de depuracin, a
n de que cuando se concluya la tarea no se tenga una cantidad desconocida de errores.
Una de las mayores frustraciones que en lo personal he tenido realizando programas, se
relaciona con el bloqueo mental ante una cantidad excesiva de cdigo y excepciones. Lo
que recomiendo es realizar un diseo previo y escribir todo el pseudocdigo. Antes de
escribir una sola lnea de cdigo, es muy conveniente tener perfectamente claro cmo
resolver el problema; este pequeo truco ahorrar muchas horas de trabajo y mucha
frustracin (De otro modo, puedes terminar dando "palos de ciego").
2
3. Diseo bsico
El programa se construir en mdulos, a n de evitar que los cheros individuales tengan
una cantidad excesiva de cdigo.
Se construirn 8 mdulos: Uno para cada operacin, <menu> y el mdulo <main>. En el
mdulo <main> se llama los dems componentes del programa. El mdulo <angulo> se
har en ltimo lugar, puesto que necesita de resultados provistos por los dems mdulos.
Una vez hechos todos los mdulos de operaciones, se empieza a hacer el mdulo <menu>,
que permite al usuario elegir entre una serie de opciones para operar con los vectores.
A continuacin se presenta un bosquejo bsico de lo que contendr cada mdulo.
3.1. Mdulo main
De f i ni r f unci on main
Expl i car l o que hace
s o l i c i t a r parmetros
Llamar a l a f unci n
Mostrar r e s ul t ado
I nvocar f unci on main
3.2. Mdulo suma
De f i ni r f unci on f_suma
Expl i car l o que hace
Hacer l a suma de ve c t or e s
Retornar r e s ul t ado
3.3. Mdulo diferencia
De f i ni r f unci on f _di f e r e nc i a
Expl i car l o que hace
Hacer di f e r e nc i a de ve c t or e s
Retornar r e s ul t ado
3.4. Mdulo p_escalar
3
De f i ni r f unci on f _p_escal ar
Expl i car l o que hace
Hacer producto e s c a l a r
Retornar r e s ul t ado
3.5. Mdulo p_vectorial
De f i ni r f unci on f _p_vect or i al
Expl i car l o que hace
Hacer producto v e c t o r i a l
Retornar r e s ul t ado
3.6. Mdulo angulo
De f i ni r f unci on f _angul o
Expl i car l o que hace
Hacer c a l c ul o de ngul o
Retornar r e s ul t ado
3.7. Mdulo longitud
De f i ni r f unci on f _l ongi t ud
Expl i car l o que hace
Hacer c a l c ul o de l ongi t ud
Retornar r e s ul t ado
3.8. Mdulo menu
De f i ni r f unci on des pl egar _opci ones
Expl i car l o que hace
de s pl e gar l a s opci ones al us uar i o
Retornar opci on e l e g i da
De f i ni r f unci on ej ecut ar _opci on
Expl i car l o que hace
Ej ecut ar l a opci on e l e gi da
4
4. Pseudo-Cdigo
Una vez realizado el diseo bsico, se puede empezar a escribir el pseudo-cdigo. Para
esto es suciente con utilizar el diseo previo y empezar a realizar pequeas adiciones,
que servirn como pistas y evitarn el bloqueo mental ms adelante.
4.1. Mdulo main
De f i ni r f unci on main
Invoca a ot r os componentes del programa para c a l c ul a r y
determi nar e l r e s ul t ado
Es t abl e c e r parmetros
Llamar a l a f unci n que corresponda
Mostrar r e s ul t ado
I nvocar f unci on main
4.2. Mdulo suma
De f i ni r f unci on f_suma
Suma dos ve c t or e s t r i di me ns i onal e s
Hacer l a suma de ve c t or e s usando un c i c l o f o r
I r guardando cada coordenada en l a l i s t a r_suma
Retornar r e s ul t ado
4.3. Mdulo diferencia
De f i ni r f unci on f _di f e r e nc i a
Cal cul a l a di f e r e nc i a ent r e dos ve c t or e s t r i di me ns i onal e s
Hacer di f e r e nc i a de ve c t or e s usando un c i c l o f o r
I r guardando cada coordenada en l a l i s t a r _di f e r e nc i a
Retornar r e s ul t ado
4.4. Mdulo p_escalar
5
De f i ni r f unci on f _p_escal ar
Cal cul a e l producto e s c a l a r de dos ve c t or e s t r i di me ns i onal e s
Hacer producto e s c a l a r usando un c i c l o f o r
I r guardando e l acumulado en r_p_escal ar
Retornar r e s ul t ado
4.5. Mdulo p_vectorial
De f i ni r f unci on f _p_vect or i al
Cal cul a e l producto v e c t o r i a l de dos ve c t or e s t r i di me ns i onal e s
Hacer producto v e c t o r i a l
Retornar r e s ul t ado
4.6. Mdulo angulo
De f i ni r f unci on f _angul o
Cal cul a e l angul o de dos ve c t or e s t r i di me ns i onal e s
Hacer c al c ul o de ngul o
Cal cul ar producto e s c a l a r
Cal cul ar Longi tud de vect or 1
Cal cul ar Longi tud de vect or 2
Cal cul ar denominador ( mul ti p . l o s 2 a nt e r i o r e s )
d i v i d i r producto e s c a l a r ent r e denominador
Apl i car arcocoseno a l a di v i s i n ant e r i or
Mul t i pl i c ar r e s ul t ado ant e r i o r por 180/ pi ( )
Retornar r e s ul t ado
4.7. Mdulo longitud
De f i ni r f unci on f _l ongi t ud
Cal cul a l a l ongi t ud de un vect or t r i di me ns i onal
Hacer c al c ul o de l ongi t ud
Retornar r e s ul t ado
4.8. Mdulo menu
6
De f i ni r f unci on des pl egar _opci ones
Des pl i ega una s e r i e de opci ones para e l e g i r
de s pl e gar l a s opci ones al us uar i o
pedi r que e l i j a una
val i dar e l e c c i n
Retornar l a e l e c c i n obteni da
De f i ni r f unci on ej ecut ar _opci on
Ej ecuta una acci n e l e gi da en l a f unci n des pl egar _opci ones
Crear bucl e i nde f i ni do
Llamar a l a f unci n des pl egar _opci ones
Ej ecut ar l a opci on e l e gi da
Si l a opci on e l e gi da es 9 , romper e l bucl e
Retornar
7
5. Cdigo Python
Creo que no es intil repetirlo: El cdigo se escribe NICAMENTE cuando ya se tenga
alguna idea de cmo resolver el problema y se haya planteado la solucin con alguna
claridad. Lanzarse a escibir cdigo de manera irreexiva es la receta perfecta para la
frustracin: ojal no caigan en ese error.
A continuacin se presenta una propuesta del cdigo en Python, talvez est plagada de
errores, ingenuidades e inconsistencias, pero incluso de eso podemos aprender, y aprender
es el nico objetivo de este documento.
5.1. Mdulo main
#! / usr / bi n/env python
# encodi ng : Lati n1
i mport menu
def main ( ) :
" " " Invoca a ot r os componentes del programa
para c a l c ul a r y determi nar e l r e s ul t ado " " "
# Es t abl e c e r parmetros
# Llamar a l a f unci n ej ecut ar _opci on del mdulo
# menu
menu. ej ecut ar _opci on ( )
main ( )
5.2. Mdulo suma
#! / usr / bi n/env python
# encodi ng : Lati n1
def f_suma( v1 , v2 ) :
" " " Suma dos ve c t or e s t r i di me ns i onal e s " " "
# Hacer l a suma de ve c t or e s usando un c i c l o f or
r_suma = [ ]
f or i i n xrange ( 3 ) :
# I r guardando cada coordenada en l a l i s t a r_suma
r_suma . append ( v1 [ i ]+v2 [ i ] )
# Retornar r e s ul t ado
r et ur n r_suma
## v1 = ( 10 , 10 , 10)
8
## v2 = ( 4 , 4 , 6)
## pr i nt f_suma( v1 , v2 )
5.3. Mdulo diferencia
#! / usr / bi n/env python
# encodi ng : Lati n1
def f _di f e r e nc i a ( v1 , v2 ) :
" " " Cal cul a l a di f e r e nc i a ent r e dos
ve c t or e s t r i di me ns i onal e s " " "
# Hacer di f e r e nc i a de ve c t or e s usando un c i c l o f o r
# I r guardando cada coordenada en l a l i s t a r _di f e r e nc i a
r _di f e r e nc i a = [ ]
f or i i n xrange ( 3 ) :
r _di f e r e nc i a . append ( v1 [ i ] v2 [ i ] )
# Retornar r e s ul t ado
r et ur n r _di f e r e nc i a
## v1 = ( 1 , 2 , 3)
## v2 = ( 3 , 2 , 1)
## pr i nt f _di f e r e nc i a ( v1 , v2 )
5.4. Mdulo p_escalar
#! / usr / bi n/env python
# encodi ng : Lati n1
def f _p_escal ar ( v1 , v2 ) :
" " " Cal cul a e l producto e s c a l a r de dos
ve c t or e s t r i di me ns i onal e s " " "
# Hacer producto e s c a l a r usando un c i c l o f o r
# I r guardando e l acumulado en r_p_escal ar
r_p_escal ar = 0
f or i i n xrange ( 3 ) :
r_p_escal ar += v1 [ i ] v2 [ i ]
# Retornar r e s ul t ado
r et ur n r_p_escal ar
## v1 = ( 2 , 1 , 4)
## v2 = ( 7 , 1 , 5)
## pr i nt f _p_escal ar ( v1 , v2 )
5.5. Mdulo p_vectorial
9
#! / usr / bi n/env python
# encodi ng : Lati n1
def f _p_vect or i al ( v1 , v2 ) :
" " " Cal cul a e l producto v e c t o r i a l de
dos ve c t or e s t r i di me ns i onal e s " " "
# Hacer producto v e c t o r i a l
pv_x = v1 [ 1 ] v2 [ 2 ] v1 [ 2 ] v2 [ 1 ]
pv_y = v1 [ 2 ] v2 [ 0 ] v1 [ 0 ] v2 [ 2 ]
pv_z = v1 [ 0 ] v2 [ 1 ] v1 [ 1 ] v2 [ 0 ]
r e s ul t ado = [ pv_x , pv_y , pv_z ]
# Retornar r e s ul t ado
r et ur n r e s ul t ado
## v1 = ( 31 , 40 , 3)
## v2 = (3 , 0 , 63)
## pr i nt f _p_vect or i al ( v1 , v2 )
5.6. Mdulo angulo
#! / usr / bi n/env python
# encodi ng : Lati n1
i mport p_escal ar
i mport l ongi t ud
from math i mport acos , pi
def f _angul o ( v1 , v2 ) :
" " " Cal cul a e l angul o de dos ve c t or e s t r i di me ns i onal e s " " "
# Hacer c a l c ul o de ngul o
# Cal cul ar producto e s c a l a r
prod_escal ar = p_escal ar . f _p_escal ar ( v1 , v2 )
# Cal cul ar Longi tud de vect or 1
long_v1 = l ongi t ud . f _l ongi t ud ( v1 )
# Cal cul ar Longi tud de vect or 2
long_v2 = l ongi t ud . f _l ongi t ud ( v2 )
# Cal cul ar denominador ( mul ti p . l o s 2 a nt e r i o r e s )
denominador = long_v1 long_v2
# di v i di r producto e s c a l a r ent r e denominador
vl or = prod_escal ar / denominador
# Apl i car arcocoseno a l a di v i s i n ant e r i or
vl or 1 = acos ( vl or )
# Mul t i pl i c ar r e s ul t ado a nt e r i or por 180/ pi ( )
r e s ul t ado = 180 / pi vl or 1
# Retornar r e s ul t ado
r et ur n r e s ul t ado
10
## v1 = ( 1 , 0 , 1)
## v2 = (1 , 0 , 1)
## pr i nt f _angul o ( v1 , v2 )
5.7. Mdulo longitud
#! / usr / bi n/env python
# encodi ng : Lati n1
from math i mport s qr t
def f _l ongi t ud ( v ) :
" " " Cal cul a l a l ongi t ud de un vect or t r i di me ns i onal " " "
# Hacer c a l c ul o de l ongi t ud usando c i c l o f o r
s_l ongi tud = 0
f or i i n xrange ( 3 ) :
s_l ongi tud += v [ i ] 2
r e s ul t ado = s qr t ( s_l ongi tud )
# Retornar r e s ul t ado
r et ur n r e s ul t ado
## v=(10 , 10 , 10)
## pr i nt f _l ongi t ud ( v)
5.8. Mdulo menu
#! / usr / bi n/env python
# encodi ng : Lati n1
i mport suma
i mport di f e r e nc i a
i mport p_escal ar
i mport p_vect or i al
i mport angul o
i mport l ongi t ud
def des pl egar _opci ones ( ) :
" " " Des pl i ega una s e r i e de opci ones para e l e g i r " " "
# de s pl e gar l a s opci ones al us uar i o
pr i nt \n\n\n\n\n\n\n\n
pr i nt =============================
pr i nt VECTORES
pr i nt =============================
pr i nt \ n1 . I nt r oduc i r e l pri mer vector
pr i nt 2. I nt r oduc i r e l segundo vector
pr i nt 3. Cal cul ar l a suma
pr i nt 4. Cal cul ar l a di f e r e nc i a
11
pr i nt 5. Cal cul ar e l producto e s c al ar
pr i nt 6. Cal cul ar e l producto ve c t or i al
pr i nt 7. Cal cul ar e l ngul o ( en grados ) ent r e e l l o s
pr i nt 8. Cal cul ar l a l ongi t ud
pr i nt 9. Fi nal i z ar
# pedi r que e l i j a una
whi l e True :
pr i nt \n\nPor f avor , e l i j a una de l a s opci ones mostradas : \ n
e l e c c i o n = raw_input ( )
# val i dar e l e c c i n
# I nt e nt ar c onve r t i r en ent er o
t r y :
e l e c c i o n = i nt ( e l e c c i o n )
i f e l e c c i o n i n xrange ( 1 , 1 0 ) :
break
except :
pr i nt "\nERROR: Debe i nt r o duc i r un nmero ent er o "
# Ve r i f i c a r que s e encuentra en e l rango c or r e c t o
i f e l e c c i o n < 1 or e l e c c i o n > 9:
pr i nt "\nERROR: Debe i nt r o duc i r un ent er o ent r e 1 y 9"
# Retornar e l e c c i n obteni da
r et ur n e l e c c i o n
def ej ecut ar _opci on ( ) :
" " " Ej ecuta una acci n e l e gi da en l a f unci n des pl egar _opci ones " " "
# I n i c i a l i z a r ve c t or e s 1 y 2
v1 = [ ]
v2 = [ ]
# Crear bucl e i nde f i ni do
whi l e True :
# Obtener una opci on
opci on = des pl egar _opci ones ( )
# Ej ecut ar l a opci on e l e gi da
i f opci on == 1:
# >Se ha e l e g i do i nt r o duc i r e l pri mer vect or
# I nt r oduc i r val or e s a t r av s de c i c l o f o r
f o r i i n [ x , y , z ] :
whi l e True :
pr i nt \ nI ntroduzca val or de , i , en e l pri mer vect or : \ n
val or = raw_input ( )
# Val i dar val or
12
#I nt e nt ar c onve r t i r a f l o t a nt e
t r y :
val or = f l o a t ( val or )
break
except :
pr i nt "\nERROR: Debe i ngr e s ar un nmero "
pr i nt "\ nPresi one l ongi t ud v1 : ENTER para cont i nuar : \ n"
raw_input ( )
v1 . append ( val or )
pr i nt "\ nVector I nt r oduci do con xi t o "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 2:
# >Se ha e l e g i do i nt r o duc i r e l segundo vect or
# I nt r oduc i r val or e s a t r av s de c i c l o f o r
f o r i i n [ x , y , z ] :
whi l e True :
pr i nt \ nI ntroduzca val or de , i , en e l segundo vect or : \ n
val or = raw_input ( )
# Val i dar val or
#I nt e nt ar c onve r t i r a f l o t a nt e
t r y :
val or = f l o a t ( val or )
break
except :
pr i nt "\nERROR: Debe i ngr e s ar un nmero "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
v2 . append ( val or )
pr i nt "\ nVector I nt r oduci do con xi t o "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 3:
# >Se ha e l e g i do c a l c ul a r l a suma de ve c t or e s
# Ve r i f i c a r que e xi s t e n l o s dos ve c t or e s
i f l en ( v1 ) != 3 and l en ( v2 ) != 3:
pr i nt "\nERROR: Los dos ve c t or e s no es t n di s po ni bl e s "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l s e :
r_suma = suma . f_suma( v1 , v2 )
pr i nt "\nLa suma es : " , r_suma
13
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 4:
# >Se ha e l e g i do c a l c ul a r l a di f e r e nc i a de ve c t or e s
# Ve r i f i c a r que e xi s t e n l o s dos ve c t or e s
i f l en ( v1 ) != 3 and l en ( v2 ) != 3:
pr i nt "\nERROR: Los dos ve c t or e s no es t n di s po ni bl e s "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l s e :
r _di f e r e nc i a = di f e r e nc i a . f _di f e r e nc i a ( v1 , v2 )
pr i nt "\nLa di f e r e nc i a es : " , r _di f e r e nc i a
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 5:
# >Se ha e l e g i do c a l c ul a r e l producto e s c a l a r
# Ve r i f i c a r que e xi s t e n l o s dos ve c t or e s
i f l en ( v1 ) != 3 and l en ( v2 ) != 3:
pr i nt "\nERROR: Los dos ve c t or e s no es t n di s po ni bl e s "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l s e :
r_p_escal ar = p_escal ar . f _p_escal ar ( v1 , v2 )
pr i nt " El producto e s c a l a r es : " , r_p_escal ar
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 6:
# >Se ha e l e g i do c a l c ul a r e l producto v e c t o r i a l
# Ve r i f i c a r que e xi s t e n l o s dos ve c t or e s
i f l en ( v1 ) != 3 and l en ( v2 ) != 3:
pr i nt "\nERROR: Los dos ve c t or e s no es t n di s po ni bl e s "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l s e :
r_p_vectori al = p_vect or i al . f _p_vect or i al ( v1 , v2 )
pr i nt " El producto v e c t o r i a l es : " , r_p_vectori al
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 7:
# >Se ha e l e g i do c a l c ul a r e l angul o
# Ve r i f i c a r que e xi s t e n l o s dos ve c t or e s
i f l en ( v1 ) != 3 and l en ( v2 ) != 3:
14
pr i nt "\nERROR: Los dos ve c t or e s no es t n di s po ni bl e s "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l s e :
r_angul o = angul o . f _angul o ( v1 , v2 )
pr i nt "\ nEl angul o es : " , r_angul o
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 8:
# >Se ha e l e g i do c a l c ul a r l a l ongi t ud
# Ve r i f i c a r que e x i s t e al menos un vect or
i f l en ( v1 ) == 3 or l en ( v2 ) == 3:
i f l en ( v1 ) == 3 :
r_l ongi tud = l ongi t ud . f _l ongi t ud ( v1 )
pr i nt "\nLa l ongi t ud de v1 es : " , r_l ongi tud
i f l en ( v2 ) == 3 :
r_l ongi tud = l ongi t ud . f _l ongi t ud ( v2 )
pr i nt "\nLa l ongi t ud de v2 es : " , r_l ongi tud
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l s e :
pr i nt "\nERROR: No hay ve c t or e s "
pr i nt "\ nPresi one ENTER para cont i nuar : \ n"
raw_input ( )
e l i f opci on == 9:
# >Se ha e l e g i do s a l i r
break
# Sa l i r de l a f unci n
r et ur n
#des pl egar _opci ones ( )
#ej ecut ar _opci on ( )
15
6. Conclusiones
Antes de acometer la escritura de cdigo, conviene realizar un anlisis bsico, un
diseo preliminar y la escritura del pseudocdigo, con lo cual se puede aumentar
la productividad y reducir la frustracin en el proceso de depuracin.
Python es un estupendo lenguaje para aprender a programar, y si a esto se le
suma un cdigo convenientemente distrituido en mdulos y funciones junto con los
comentarios pertinentes, es posible disminuir la probabilidad de bloqueo mental
que sufre nuestro cerebro ante objetos abstractos y poco intuitivos.
La programacin incremental consiste en escribir unas pocas lneas y ejecutar prue-
bas constantes sobre ellas. Esto facilita enormemente las tareas posteriores de de-
puracin.
16
7. Lecturas recomendadas
Hay varios buenos manuales en internet. En lo personal recomiendo que busquen en
google los cheros PDF con los siguientes ttulos:
1. "Aprenda a Pensar Como un Programador con Python", de Allen Downey
2. "Inmersin en Python 3", de Mark Pilgrim
3. "El tutorial de Python", de Guido van Rossum
4. "Python Reference Manual", de Guido van Rossum
17

You might also like