Aiuto in un piccolo programma in Perl

« Older   Newer »
 
  Share  
.
  1. -Tonix-
     
    .

    User deleted


    Ciao ragazzi ho bisogno di una mano..

    Dopo due corsi di programmazione in C mi sto dando un po al PHP e al PERL..

    Ho scritto questo piccolo programmino dove si deve indovinare un numero e si hanno 10 possibilità..

    CODICE
    #!/usr/bin/perl
    use strict;
    use warnings;
    use diagnostics;

    printf "Inserisci il nome del giocatore: ";
    my $g1 = <STDIN>;

    printf "Premi un testo per iniziare a giocare..";
    getc();
    printf "\n";

    my $valore = 76;
    my $val = 0;

    for(my $i=1; $i<=10; $i++)
    {
      printf "Tentativo $i -> Inserisci un numero: ";
      $val = <STDIN>;

      if ($val == $valore)
      {  
              printf "Hai indovinato!!";
              getc();
              exit 0;
      }
     
      if ($val < $valore)
      {
              printf "Sbagliato! Il numero è più grande!!";
      }
     
      if ($val > $valore)
      {
          printf "Sbagliato! Il numero è più piccolo!!";
      }
      printf "\n";
    }

    getc();


    il programma funziona solo che io ho usato tre volte if nel ciclo for.. Sul mio manuale c'è scritto che è possibile in questi casi scrivere if, elsif e else ma in questo modo il programma non parte..

    ultima cosa.. conoscete qualche compilatore per il perl? o per windows o per ubuntu è la stessa cosa.. io per adesso li scrivo e li avvio con il terminale di ubuntu..

    grazie!
     
    Top
    .
  2.  
    .
    Avatar


    Group
    Member
    Posts
    6,931

    Status
    Offline
    Perl è interpretato, non ha bisogno di un compilatore, ma di un programma chiamato interprete che lo esegui, e sulle distro GNU/Linux è già preinstallato.
    Comunque a me funziona con
    CODICE
    #!/usr/bin/perl
    use strict;
    use warnings;
    use diagnostics;

    printf "Inserisci il nome del giocatore: ";
    my $g1 = <STDIN>;

    printf "Premi un testo per iniziare a giocare..";
    getc();
    printf "\n";

    my $valore = 76;
    my $val = 0;

    for(my $i=1; $i<=10; $i++)
    {
     printf "Tentativo $i -> Inserisci un numero: ";
     $val = <STDIN>;

     if ($val == $valore)
     {  
             printf "Hai indovinato!!";
             getc();
             exit 0;
     }
     elsif ($val < $valore)
     {
             printf "Sbagliato! Il numero è più grande!!";
     }
     elsif ($val > $valore)
     {
         printf "Sbagliato! Il numero è più piccolo!!";
     }
     printf "\n";
    }

    getc();
     
    Top
    .
  3. -Tonix-
     
    .

    User deleted


    Funziona mettendo 2 volte elsif.. perchè else non lo legge??
     
    Top
    .
  4.  
    .
    Avatar


    Group
    Member
    Posts
    6,931

    Status
    Offline
    Perchè non devi dargli nessuna condizione, perchè il blocco che contiene viene invocato quando nessuno degli if/elsif è true.
    Comunque nel tuo caso non mi sembra ci sia il bisogno di un else.
     
    Top
    .
  5. -Tonix-
     
    .

    User deleted


    hai ragione.. che stupido!
     
    Top
    .
4 replies since 1/7/2011, 20:26   74 views
  Share  
.