20
Desarrollo de un programa en python para operar con vectores Camilo Bernal 22 de agosto de 2014

Desarrollo de Un Programa en Python Para Operar Con Vectores

Embed Size (px)

Citation preview

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    1/20

    Desarrollo de un programa en python

    para operar con vectores

    Camilo Bernal

    22 de agosto de 2014

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    2/20

    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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.5. Mdulo p_vectorial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    5.6. Mdulo angulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    5.7. Mdulo longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    5.8. Mdulo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    6. Conclusiones 16

    I

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    3/20

    7. Lecturas recomendadas 17

    II

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    4/20

    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

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    5/20

    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: (x1, y1, z1) + (x2, y2, z2) = (x1+ x2, y1+ y2, z1+ z2)

    Diferencia: (x1, y1, z1)(x2, y2, z2) = (x1x2, y1y2, z1z2)

    Producto escalar:(x1, y1, z1) (x2, y2, z2) = x1x2+ y1y2+ z1z2

    Producto vectorial:(x1, y1, z1)

    (x2, y2, z2) =

    (y1z2z1y2, z1x2x1z2, x1y2y1x2)

    Angulo entre(x1, y1, z1)y(x2, y2, z2) = 180 arc cos x1x2+y1y2+z1z2

    (x21+y21+z21)

    (x22+y22+z22)

    Longitud de(x , y , z ):

    x2 + y2 + z2

    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

    fin 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

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    6/20

    3. Diseo bsico

    El programa se construir en mdulos, a fin de evitar que los ficheros individuales tengan

    una cantidad excesiva de cdigo.

    Se construirn 8 mdulos: Uno para cada operacin, y el mdulo . En el

    mdulo se llama los dems componentes del programa. El mdulo 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 ,

    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

    D e f i n i r f u n ci o n main

    E x p li c a r l o que h ac e

    s o l i c i t a r p ar m et ro s

    L la ma r a l a f u n c i n

    M os tr ar r e s u l t a d o

    I n v oc a r f u n c i o n main

    3.2. Mdulo suma

    D e f i n i r f u n c i o n f_suma

    E x p li c a r l o que h ac e

    H ac er l a suma d e v e c t o r e s

    R et or n ar r e s u l t a d o

    3.3. Mdulo diferencia

    D e f i n i r f u nc i on f _ d i f e re n c i a

    E x p li c a r l o que h ac e

    Hacer d i f e r e n c i a de v e c to r es

    R et or n ar r e s u l t a d o

    3.4. Mdulo p_escalar

    3

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    7/20

    D e f i n i r f u n c i o n f _ p _ es c al a r

    E x p li c a r l o que h ac e

    H ac er p r od u ct o e s c a l a r

    R et or n ar r e s u l t a d o

    3.5. Mdulo p_vectorial

    D e f i n i r f u n ci o n f _ p_ v ec t or i al

    E x p li c a r l o que h ac e

    H ac er p r od u ct o v e c t o r i a l

    R et or n ar r e s u l t a d o

    3.6. Mdulo angulo

    D e f i n i r f u n ci o n f _a ng ul o

    E x p li c a r l o que h ac e

    H ac er c a l c u l o d e n gu l o

    R et or n ar r e s u l t a d o

    3.7. Mdulo longitud

    D e f i n i r f u n ci o n f _ lo n gi t ud

    E x p li c a r l o que h ac e

    H ace r c a l c u l o de l o n g i tu d

    R et or n ar r e s u l t a d o

    3.8. Mdulo menu

    D e f i n i r f u n c i o n d e s p l e g a r_ o p c io n e s

    E x p li c a r l o que h ac e

    d e sp l eg a r l a s o p ci on e s a l u s ua r io

    R et or n ar o p ci o n e l e g i d a

    D e f i n i r f u n ci o n e j ec u ta r _o p ci o n

    E x p li c a r l o que h ac e

    E je cu ta r l a o pc io n e l e g i d a

    4

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    8/20

    4. Pseudo-Cdigo

    Una vez realizado el diseo bsico, se puede empezar a escribir el pseudo-cdigo. Para

    esto es suficiente 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

    D e f i n i r f u n c i o n m ain

    I nv oc a a o t r o s c om po ne nt es d e l pro gra ma p ar a c a l c u l a r y

    d et er mi na r e l r e s u l t a d o

    E s t a b l e c e r p a r m et r osLlama r a l a f u n c i n que c o r re s p on d a

    M os tr ar r e s u l t a d o

    I n v o c a r f u n c i o n main

    4.2. Mdulo suma

    D e f i n i r f u n c i o n f_suma

    Suma d os v e c t o r e s t r i d i m e n s i o n a l e s

    Ha ce r l a suma d e v e c t o r e s usand o un c i c l o f o r

    I r g ua rd an do c ad a c oo rd en ad a e n l a l i s t a r_sumaR et or na r r e s u l t a d o

    4.3. Mdulo diferencia

    D e f i n i r f u nc i on f _ d i f e r en c i a

    C al cu la l a d i f e r e n c i a e n tr e d os v e c to r e s t r i d i me n s i o n a le sHacer d i f e r e n c i a de v e c to r e s usando un c i c l o f o r

    I r gua rd ando c ada c oo rd en ad a e n l a l i s t a r _ d i f e r e n c i aR et or na r r e s u l t a d o

    4.4. Mdulo p_escalar

    5

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    9/20

    D e f i n i r f u n c i o n f _ p _ es c al a r

    C al cu la e l p ro du ct o e s c a l a r de dos v e c to r e s t r i d im e n s i o n a le s

    Ha ce r p r od uc to 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_escalar

    R et or na r r e s u l t a d o

    4.5. Mdulo p_vectorial

    D e f i n i r f u n ci o n f _ p_ v ec t or i al

    C al cu la e l p ro du ct o v e c t o r i a l de dos v e c to r e s t r i d i me n s i o n a le s

    Ha ce r p r od u ct o v e c t o r i a l

    R et or na r r e s u l t a d o

    4.6. Mdulo angulo

    D e f i n i r f u n c i o n f _ an gu lo

    C al cu la e l a ng ulo de dos v e c to r e s t r i d i me n s i o n a l es

    Ha ce r c a l c u l o de ng u lo

    C a l cu l a r p ro du ct o e s c a l a rC a l cu l a r L on gi tu d de v e c to r 1

    C a l cu l a r L on gi tu d de v e c to r 2

    C a l c u l a r d en om in ad or ( m ul ti p . l o s 2 a n t e r i o r e s )d i v i d i r p ro du c to e s c a l a r e n t r e d e no mi na do rA p l i c a r a rc oc ose no a l a d i v i s i n a n t er i orM u l t i p l i c a r r e s u l t a d o a n t e r i o r p or 18 0/ p i ( )R et or na r r e s u l t a d o

    4.7. Mdulo longitud

    D e f i n i r f u n ci o n f _ lo n gi t udC al cu la l a l o ng i tu d de un v e ct o r t r i di m e n si o n a l

    H a c e r c a l c u l o d e l o n g i t u d

    R et or na r r e s u l t a d o

    4.8. Mdulo menu

    6

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    10/20

    D e f i n i r f u n ci o n d e s pl e ga r _o p c io n e s

    D es pl ie g a una s e r i e de o p ci o ne s pa ra e l e g i r

    d e sp l eg a r l a s o p ci o ne s a l u s ua ri o

    p ed ir que e l i j a una

    v a l i d ar e l e c c i nR et or na r l a e l e c c i n o bt en id a

    D e f i n i r f u n ci o n e j e cu t ar _ op c io n

    E je cu ta una a c c i n e l e g i d a en l a f u n ci n d e sp l eg a r_ o pc i on e s

    C re ar b u cl e i n d e f i n i d o

    Llama r a l a f u n c i n d e s p l eg a r _ op c i o n es

    E je cu ta r l a o pc io n e l e g i d aS i l a o pc io n e l e g i d a e s 9 , romper e l b uc le

    Retornar

    7

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    11/20

    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 irreflexiva 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#! / u s r / b i n / e nv p yt ho n

    # e n c o di n g : L a t i n 1

    import menu

    d e f m ai n ( ) :

    " " " I n v oc a a o t r o s c om p on en te s d e l p ro gr am a

    para c a l c u l a r y d e t e r m i n a r e l re su lt a do " " "

    # E s t a b l e c e r p ar me tr o s

    # L la ma r a l a f u n c i n e j e c ut a r _ op c i o n d e l mdulo

    # menu

    menu . eje cuta r_op cio n ()

    main()

    5.2. Mdulo suma

    #! / u s r / b i n / e nv p yt ho n

    # e n c o di n g : L a t i n 1

    def f_suma(v1 , v2 ) :

    " " " Suma d os v e c t o r e s t r i d i m e n s i o n a l e s " " "

    # Ha ce r l a suma d e v e c t o r e s u san do un c i c l o f o r

    r_suma = [ ]

    f o r i i n x ra ng e ( 3 ) :

    # I r g ua rd an do c ad a c oo rd en ad a en l a l i s t a r_sumar_suma. append ( v1 [ i ]+v2 [ i ] )

    # R et or na r r e s u l t a d o

    ret urn r_suma

    ## v1 = (10 ,10 ,10 )

    8

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    12/20

    ## v2 = (4 ,4 ,6 )

    ## p r i n t f _s um a ( v 1 , v 2 )

    5.3. Mdulo diferencia

    #! / u s r / b i n / e nv p yt ho n

    # e n c o di n g : L a t i n 1

    d e f f _ d i f e r e n c i a ( v1 , v2 ) :

    " " " C al cu la l a d i f e r e n c i a e n tr e d os

    v e c t o r e s t r i d i m e n s i o n a l e s " " "

    # Hacer d i f e r e n c i a de v e c to r e s usando u n c i c l o f o r

    # I r g uar dan do c ad a c o or de na da en l a l i s t a r _ d i f e r e n c i ar _ d i f e r e n c i a = [ ]

    f o r i i n x ra ng e ( 3 ) :

    r _ d i f e r e n c i a . a pp en d ( v 1 [ i ] v2 [ i ])# R et or na r r e s u l t a d o

    r e tu r n r _ d i f e r e n c i a

    ## v1 = (1 ,2 ,3 )

    ## v2 = (3 ,2 ,1 )

    ## p r i n t f _ d i f e r e n c i a ( v1 , v2 )

    5.4. Mdulo p_escalar

    #! / u s r / b i n / e nv p yt ho n# e n c o di n g : L a t i n 1

    d e f f _ p _ e s c a l a r ( v 1 , v 2 ) :

    " " " C a lc u la e l p ro du ct o e s c a l a r de d os

    v e c t o r e s t r i d i m e n s i o n a l e s " " "

    # Ha ce r p r od uc to e s c a l a r u san do u n c i c l o f o r

    # I r g ua rd an do e l a cu mu la do e n r _ p _e s c al a rr _ p _ e s c a l a r = 0

    f o r i i n x ra ng e ( 3 ) :

    r_p_e scala r += v1 [ i ] v2 [ i ]

    # R et or na r r e s u l t a d or e t u r n r _ p _e s ca l a r

    ## v1 = (2 ,1 ,4 )

    ## v2 = (7 , 1 , 5 )## p r i n t f _ p _ e s c a l a r ( v 1 , v 2 )

    5.5. Mdulo p_vectorial

    9

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    13/20

    #! / u s r / b i n / e nv p yt ho n

    # e n c o di n g : L a t i n 1

    d e f f _ p _ v e c t o r i a l ( v 1 , v 2 ) :

    " " " C a lc u la e l p ro du ct o v e c t o r i a l de

    d os v e c t o r e s t r i d i m e n s i o n a l e s " " "

    # H ac er p r od u ct o v e c t o r i a l

    pv_x = v1 [ 1 ] v 2 [ 2 ] v 1 [ 2 ] v 2 [ 1 ]pv_y = v1 [ 2 ] v 2 [ 0 ] v 1 [ 0 ] v 2 [ 2 ]pv_z = v1 [0] v 2 [ 1 ] v 1 [ 1 ] v 2 [ 0 ]r e s u l t a d o = [ p v_x , pv_y , pv_z ]

    # R et or na r r e s u l t a d o

    r e tu r n r e s u l t ad o

    ## v1 = (3 1 , 4 0 , 3 )## v 2 = ( 3 , 0 ,63)## p r i n t f _ p _ v e c t o r i a l ( v 1 , v 2 )

    5.6. Mdulo angulo

    #! / u s r / b i n / e nv p yt ho n

    # e n c o di n g : L a t i n 1

    i m po r t p _ e s c a l a r

    i mp or t l o n g i t u d

    f ro m math i m po r t a c os , p i

    d e f f _ a n g ul o ( v 1 , v 2 ) :

    " " " C a lc u la e l a ng ul o de d os v e c t o r es t r i d i m e n s i o n a l e s " " "# Ha ce r c a l c u l o de ng ul o

    #C a lc u l ar p ro du ct o e s c a l a rp r o d _ e s c a l a r = p _ e s c a l a r . f _ p _ e s c a l a r ( v 1 , v 2 )

    #C a l c u l a r L on gi tu d d e v e c t o r 1l o ng _ v1 = l o n g i t u d . f _ l o n g i t u d ( v 1 )

    #C a l c u l a r L on gi tu d d e v e c t o r 2l o ng _ v2 = l o n g i t u d . f _ l o n g i t u d ( v 2 )

    #C a l c u l a r d en om in ad or ( m u lt i p . l o s 2 a n t e r i o r e s )denominador = long_v1 long_v2

    #d i v i d i r p r od u ct o e s c a l a r e n t r e d e no mi na do rv l o r = p r o d _ e s c a l a r / d en om in ad or

    #A p l i c a r a rc oc os en o a l a d i v i si n a n te r io rv l o r 1 = a c o s ( v l o r )

    #M u l t i p l i c a r r e s u l t a do a n t e r i o r p or 1 80 / p i ( )r e s u l t ad o = 1 80 / p i v l o r 1

    # R et or na r r e s u l t a d o

    r e tu r n r e s u l t ad o

    10

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    14/20

    ## v1 = (1 , 0 , 1 )## v 2 = ( 1 , 0 ,1)## p r i n t f _ an g ul o ( v1 , v 2 )

    5.7. Mdulo longitud#! / u s r / b i n / e nv p yt ho n

    # e n c o di n g : L a t i n 1

    f ro m math i m po r t s q r t

    d e f f _ l o n g i t u d ( v ) :

    " " " C a lc u la l a l o n g i tu d de un v e c to r t r i d i m e n s i o n a l " " "

    # Hacer c a l c u l o de l o ng i tu d usando c i c l o f o r

    s _ l o n g i t u d = 0

    f o r i i n x ra ng e ( 3 ) :

    s _ l o n g i t u d += v [ i ] 2r e s u l t a d o = s q r t ( s _ l o n g i tu d )

    # R et or na r r e s u l t a d o

    r e tu r n r e s u l t ad o

    ## v= (10 ,10 ,10 )

    ## p r i n t f _ l o n g i t u d ( v )

    5.8. Mdulo menu

    #! / u s r / b i n / e nv p yt ho n

    # e n c o di n g : L a t i n 1

    import suma

    i mp or t d i f e r e n c i a

    i m po r t p _ e s c a l a r

    i m po r t p _ v e c t o r i a l

    i m po r t a n g ul o

    i mp or t l o n g i t u d

    d e f d e s p l eg a r _ o pc i o n e s ( ) :

    " " " D es pl i eg a una s e r i e de o p ci o ne s p ara e l e g i r " " "

    # de s pl e ga r l a s o p ci o ne s a l u s ua ri o

    p r i n t \ n \ n\ n \n \ n\ n \n \n

    p r i n t =============================

    p r i n t VECTORESp r i n t =============================

    p r i n t \ n1 . I n t r o d u c i r e l p ri me r v e ct or

    p r i nt 2 . I n t r od u c i r e l seg un do v ec to r

    p r i nt 3 . C al c ul a r l a suma

    p ri n t 4 . C al cu la r l a d i f er e nc i a

    11

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    15/20

    p r i nt 5 . C al c ul a r e l p ro du ct o e s ca l a r

    p r i nt 6 . C al c ul a r e l p ro du ct o v e c t or i a l

    p r i nt 7 . C al c ul a r e l ng ul o ( en g ra do s ) e n tr e e l l o s

    p r i nt 8 . C al c ul a r l a l on gi tu d

    p r i nt 9 . F i na l i za r

    # pe di r que e l i j a una

    w h i l e T ru e :

    p r i n t \ n\ nPor f a vo r , e l i j a una de l a s o p c io n e s m os tr ad as : \ n

    e l e c c i o n = r aw _i np ut ( )

    # v a l id a r e l e cc i n

    #I n te n ta r c o n v e rt i r en e n te rotry :

    e l e c c i o n = i n t ( e l e c c i o n )

    i f e l e c c i o n i n x ra ng e ( 1 , 1 0 ) :

    break

    excep t :

    p r i n t " \nERROR : D eb e i n t r o d u c i r un n m er o e n t e r o "

    #V e r i f i c a r que s e e nc ue nt ra en e l ra ng o c o r re c t oi f e l e cc i o n < 1 or e l e cc i o n > 9 :

    p r i n t " \nERROR : Debe i n t r o d u c i r un e n t e r o e n t r e 1 y 9 "

    # R et or na r e l e c c i n o b te n id a

    r et ur n e l e c c i o n

    d e f e j e c ut a r _ op c i o n ( ) :

    " " " E je cu ta una a c ci n e l e g i d a en l a f u n ci n d e sp l eg a r_ o pc i on e s " " "

    # I n i c i a l i z a r v ec to re s 1 y 2

    v1 = [ ]

    v2 = [ ]

    # C re ar b u cl e i n d e f i n i d o

    w h i l e T ru e :

    # O b te n er u na o p c i o n

    o p c i o n = d e s p l e g a r _ o p c i o n e s ( )

    # E je cu ta r l a o pc io n e l e g i d a

    i f o p c i o n == 1 :

    # >Se ha e l e g i do i n t r o d uc i r e l p ri me r v e ct or

    # In t ro d uc i r v a lo r es a t ra v s d e c i c l o f o r

    f o r i i n [ x , y , z ] :

    w h i l e T ru e :

    p r i n t \ n I nt ro d uz ca v a l o r de , i , e n e l p ri me r v e c to r : \ n

    va lo r = raw_input ()

    # V a li d ar v a l o r

    12

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    16/20

    #I n te n ta r c o n v e rt i r a f l o t a n t etry :

    v a l o r = f l o a t ( v a l o r )

    break

    excep t :

    pr in t "\nERROR: Debe in gr es ar un nmero"

    p r i n t " \ n P r e s i o n e l o n g i t u d v 1 : ENTER p a ra c o n t i n u a r : \ n "

    raw_input ()

    v1 . append( va lo r )

    p r i n t " \ n V ec to r I n t r o d u ci d o c on x i t o "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 2 :

    # >Se h a e l e g i d o i n t r o d u c i r e l s eg un do v e c to r

    # In t ro d uc i r v a lo r es a t ra v s d e c i c l o f o r

    f o r i i n [ x , y , z ] :

    w h i l e T ru e :

    p r i n t \ n I nt ro d uz ca v a l o r de , i , e n e l s eg un do v e c to r : \ n

    va lo r = raw_input ()

    # V a li d ar v a l o r

    #I n te n ta r c o n v e rt i r a f l o t a n t etry :

    v a l o r = f l o a t ( v a l o r )

    break

    excep t :

    pr in t "\nERROR: Debe in gr es ar un nmero"

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    v2 . append( va lo r )

    p r i n t " \ n V ec to r I n t r o d u ci d o c on x i t o "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 3 :

    # >Se h a e l e g i d o c a l c u l a r l a suma d e v e c t o r es

    # V e r i f ic a r que e x is t en l o s dos v ec to r es

    i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :

    p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l s e :

    r_suma = suma . f_suma( v1 , v2 )

    p r i n t " \ n La suma e s : " , r_suma

    13

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    17/20

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 4 :

    # >Se ha e l eg i do c a l cu l a r l a d i f e r e n ci a de v ec to r es

    # V e r i f ic a r que e x is t en l o s dos v ec to r es

    i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :

    p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l s e :

    r _ d i f e r e n c i a = d i f e r e n c i a . f _ d i f e r e n c i a ( v1 , v 2 )

    p r i nt " \nLa d i f e r e n c i a e s : " , r _ d if e r en c i a

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 5 :

    # >Se ha e l e g i do c a l c u l a r e l p ro du ct o e s c a l a r

    # V e r i f ic a r que e x is t en l o s dos v ec to r es

    i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :

    p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l s e :

    r_p_escalar = p_esc alar . f_p_esc alar (v1 , v2)

    p r i n t " E l p ro du ct o e s c a l a r e s : " , r _p _e sc al ar

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 6 :

    # >Se h a e l e g i do c a l c u l a r e l p ro du ct o v e c t o r i a l

    # V e r i f ic a r que e x is t en l o s dos v ec to r es

    i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :

    p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l s e :

    r _ p _ v e c t o r i a l = p _ v e c t o r i a l . f _ p _ v e c t o r i a l ( v 1 , v 2 )

    p r i n t " E l p ro du ct o v e c t o r i a l e s : " , r _p _ ve c to ri a l

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 7 :

    # >Se ha e l e g i do c a l c u l a r e l a ng ul o

    # V e r i f ic a r que e x is t en l o s dos v ec to r es

    i f l e n ( v1 ) != 3 and l e n ( v2 ) != 3 :

    14

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    18/20

    p r i n t " \nERROR : L os d o s v e c t o r e s n o e s t n d i s p o n i b l e s "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l s e :

    r_angulo = angulo . f_angulo (v1 , v2)

    p r i n t " \ n El a n gu l o e s : " , r _a ng ul o

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 8 :

    # >Se h a e l e g i do c a l c u l a r l a l o ng i tu d

    # V e r i f i c a r que e x i s t e a l menos un v ec t or

    i f l e n ( v 1 ) == 3 o r l e n ( v 2 ) == 3 :

    i f l e n ( v 1 ) == 3 :

    r _ l o n g i tu d = l o n g i t u d . f _ l o n g i t u d ( v 1 )

    p r i n t " \ nLa l o n g i tu d de v1 e s : " , r _l o ng i tu d

    i f l e n ( v 2 ) == 3 :

    r _ l o n g i tu d = l o n g i t u d . f _ l o n g i t u d ( v 2 )

    p r i n t " \ nLa l o n g i tu d de v2 e s : " , r _l o ng i tu d

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l s e :

    pr in t "\nERROR: No hay ve ct or es "

    p r i n t " \ n P r e s i o n e ENTER p a r a c o n t i n u a r : \ n "

    raw_input ()

    e l i f o p c i o n == 9 :

    # >Se ha e l e g i do s a l i r

    break

    # S a l i r de l a f un ci n

    r e t u r n

    #d e s p l e g a r _ o p c i o n e s ( )

    #e j e c u t a r _ o p c i o n ( )

    15

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    19/20

    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

  • 5/21/2018 Desarrollo de Un Programa en Python Para Operar Con Vectores

    20/20

    7. Lecturas recomendadas

    Hay varios buenos manuales en internet. En lo personal recomiendo que busquen en

    google los ficheros 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