Esame del 3 febbraio 2009, testo n. 2 1) Eseguire la seguente operazione in binario : 10000101 + 100111111 = 111000100 eseguire la seguente operazione in ottale : 123704 + 73732111 = 74056015 eseguire la seguente operazione in esadecimale : AA13825 + D23C1203 = DCDD4A28 UNIX 2) Scrivere uno script che scopra se l'utente studente sia loggato, e se si', spedisca per mail all'utente studente tutti i process che appartengono a studente. users | grep studente > /dev/null && ps -u studente | mail studente 3) Fare un script in cui si accetti un numero intero come argomento e quindi si calcoli se tale numero e' primo e si stampi il responso a standard output. #!/bin/tcsh #!/bin/tcsh @ i = 2 while ($i <= $argv[1] / 2) @ resto = $argv[1] % $i if ( $resto == 0 ) then goto out endif @ i++ end echo il numero $argv[1] e\' primo. exit out: echo Il numero $argv[1] non e\' primo. PERL 4) Fare uno script in Perl che analizzi un file di testo prendendo la seconda parola della terza riga e la stampi invertita. #!/usr/bin/perl open IN, "inputfile.txt"; @file = ; @words = split/ +/,$file[2]; $invert = reverse $words[1]; print "la parola invertita diventa $invert\n"; 5) Scrivere uno script Perl che abbia come argomento il nome di un file ASCII, ne conti le parole (SENZA usare wc) e di tale numero intero dica se sia primo oppure no (ricordare l'esistenza della funzione modulo in Perl identica come sintassi alla funzione modulo di Unix) #!/usr/local/bin/perl open IN,$ARGV[0]; $ntot_parole=0; while () { @fields = split ; $n = @fields; $ntot_parole += $n ; }; $i = 2; while ($i<= sqrt($ntot_parole) ) { $resto = $ntot_parole % $i; if ( $resto == 0) { print "Il numero di parole e' $ntot_parole che non e' un numero primo\n"; goto fine ; } else { $i ++ ; }; }; print "Il numero di parole e' $ntot_parole che e' un numero primo\n"; fine: close IN;