Práctica: Area de un Círculo

Escriba un programa que solicite de la entrada un radio de una circunferencia e imprima el área del correspondiente círculo ( $ S = \pi \times r^2$). El proceso debe repetirse hasta que el radio contiene una cadena no numérica. Compruebe además que el radio no es negativo.

  1. Escriba la documentación de uso del programa (véase perldoc perlpod).

  2. Encuentre los errores por medio del depurador (véase perldebtut).

  3. Utilice subversion. Cree un repositorio. Añada al repositorio un proyecto practicas_lhp conteniendo la jerarquia

    practicas_lhp
         |
         |-trunk
         |   |
         |   `-area_de_un_circulo 
         |            | 
         |            |- area_de_un_circulo.pl
         |            |- MANIFEST
         |            |- Makefile
         |            |- test.input
         |            `- test.expected
         |-branches
         |
         `-tags
    

  4. Declare todas sus variables. Asegúrese de que usa strict.

    Declare las variable mediante la palabra reservada my:

    my $a =4;
    {
      my ($b, $c) = ("a", 9.2);
      $a = $b + 2*$c;
    }
    print $a;
    
    Una variable declarada con my tiene por ámbito el del bloque en que fué declarada o el fichero si esta fuera de bloques.

  5. Use perlcritic

  6. Constantes: Para definir la constante $ \pi = 4 \times atan(1) = 4 \times \pi /4$ use el módulo constant:
    pl@nereida:~/src/perl/uploadlab/Education-Labs/lib/Education$ perl -wde 0
    main::(-e:1):   0
      DB<1> use constant PI    => 4 * atan2(1, 1) 
      DB<2> print PI."\n"
    3.14159265358979
    

  7. Para obtener información sobre atan2 use perldoc -f atan2:

    lhp@nereida:~/Lperl/src$ perldoc -f atan2 
           atan2 Y,X
                   Returns the arctangent of Y/X in the range -PI to PI.
                   For the tangent operation, you may use the "Math::Trig::tan" function, 
                   or use the familiar relation:
    
                       sub tan { sin($_[0]) / cos($_[0])  }
    
                   Note that atan2(0, 0) is not well-defined.
    

  8. Compruebe el comportamiento de su programa contra entradas
    1. Cero, muy cerca de cero
    2. Negativas
    3. Cadenas de caracteres
    4. Cadenas de caracteres que contienen números, p. ej. "one 1.0 two 2.0"
    5. Diferentes formatos de flotante: 1e2, 1.0e-1, etc.

  9. Controle la aparición de interrupciones de teclado estableciendo un manejador de la señal INT

Casiano Rodríguez León
2009-10-04