• Publicidad

If-else

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

If-else

Notapor jairo15 » 2016-10-11 18:01 @792

Tengo problemas con este código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use warnings;
  2. use Math::Round;
  3.  
  4. my $seed = time();
  5. my $a    = $seed / 5;
  6. my $c    = $seed - 7;
  7. my $x    = $seed;
  8. my $m    = $seed % 12244;
  9. my $numAleatorio;
  10.  
  11. sub generadorMultiplicativo {
  12.     $numAleatorio = ( ( ( $a * $x ) + $c ) % $m );
  13.     $x = $numAleatorio;
  14. }
  15.  
  16. for my $i ( 1 .. 15 ) {
  17.     generadorMultiplicativo();
  18.     my $residuo = $x / $m;
  19.  
  20.     if ( $residuo < 0.0384615384615385 ) {
  21.         my $letra = 'A';
  22.     }
  23.     else ( $residuo > 0.0384615384615385 && $residuo < 0.076923076923077 ) {
  24.         $letra = 'B';
  25.     }
  26.     else ( $residuo > 0.076923076923077 && $residuo < 0.1153846153846154 ) {
  27.         $letra = 'C';
  28.     }
  29.     else ( $residuo > 0.1153846153846154 && $residuo < 0.1538461538461538 ) {
  30.         $letra = 'D';
  31.     }
  32.     else ( $residuo > 0.1538461538461538 && $residuo < 0.1923076923076923 ) {
  33.         $letra = 'E';
  34.     }
  35.     else ( $residuo > 0.1923076923076923 && $residuo < 0.2307692307692308 ) {
  36.         $letra = 'F';
  37.     }
  38.     else ( $residuo > 0.2307692307692308 && $residuo < 0.2692307692307692 ) {
  39.         $letra = 'G';
  40.     }
  41.     else ( $residuo > 0.2692307692307692 && $residuo < 0.3076923076923077 ) {
  42.         $letra = 'H';
  43.     }
  44.     else ( $residuo > 0.3076923076923077 ) {
  45.         $letra = 'I';
  46.     }
  47.     print "$letra\n" );
  48.  
  49. }
  50. <>;
  51.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Aun no está terminado, faltan las demás letras, pero el problema es que ejecuto el programa y se cierra. Ya intenté poniendo if en lugar de else, pero da igual.
Última edición por explorer el 2016-10-11 18:09 @798, editado 1 vez en total
Razón: Formateado de código con Perltidy
jairo15
Perlero nuevo
Perlero nuevo
 
Mensajes: 31
Registrado: 2016-09-11 13:27 @602

Publicidad

Re: If-else

Notapor explorer » 2016-10-11 18:14 @801

Hay un error en el código... sobra un paréntesis, en el último print.

Si ejecutas el programa con la opción -c, Perl compilará el programa, y te avisará de este tipo de errores:

perl -c programa.pl

Por ejemplo, te avisará que la variable $letra está declarada en el contexto de las líneas 20 a 22, pero que no se utiliza nunca. Esa variable muere en la línea 22.

Si pusieras 'use strict;' al principio del programa, te saldrían avisos de que estás usando variables $letra en las líneas 24, 27, 30, 33... sin haberlas declarado. Estos dos errores indican que estás declaran mal $letra (en mal lugar).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: If-else

Notapor MARKO » 2016-10-12 16:29 @728

Debes recordar que el if-else se usa solo si tienes una opción y nada más, si tienes más opciones debes usar elsif.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.  
  2. if (opcion 1){
  3.    accion 1
  4. }
  5. elsif (opcion 2){
  6.    accion 2
  7. }
  8. elsif (opcion 3){
  9.    accion 3
  10. }
  11. .
  12. .
  13. .
  14. elsif (opcion n){
  15.    accion n
  16. }
  17. else{ ###### no se cumple ninguna de las opciones anteriores
  18.    accion
  19. }
  20.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Éxitos.
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados