INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando l’espressione < >. Quando il programma incontra questa espressione si fermerà in attesa che qualcuno digiti una riga da tastiera (conclusa dal carattere di “vai a capo”). L’intera riga viene poi restituita come risultato dell’espressione e tipicamente verrà assegnato ad una variabile. Se vogliamo eliminare dalla stringa letta l’ultimo carattere, ovvero il “vai a capo”, si usa la funzione chop che rimuove proprio l’ultimo carattere di una stringa. BIOINFO3 - Lezione 21 1 OPERATORI LOGICI Ogni valore in Perl può essere interpretato come VERO o FALSO. In generale 0 (per espressioni numeriche) e la stringa vuota “” (per le stringhe) indicano il valore FALSO, mentre un valore diverso da 0 e dalla stringa vuota (o dalla stringa “0”) indicano il valore VERO. Gli operatori logici e quelli relazionali sono generalmente usati all’interno di strutture di controllo che prevedono il calcolo di un’espressione logica, con differenti conseguenze a seconda del valore VERO o FALSO dell’espressione. Nel caso dell’and (&&) se la prima espressione è falsa, la seconda non viene nemmeno valutata essendo sicuramente ormai falso il risultato. Nel caso dell’or (||) se la prima espressione è vera la seconda non viene valutata: il risultato è ormai sicuramente vero! N.B. La tabella (e anche le prossime 2 tabelle) si riferisce a variabili, ma tutto è valido in generale per le espressioni (una variabile è un caso particolare di una espressione) BIOINFO3 - Lezione 21 2 OPERATORI RELAZIONALI (NUMERI) Restituiscono il valore VERO o FALSO confrontando due espressioni numeriche Esempi: $a <= 0 $b > ($c+$d) $e != $i++ ($e viene confrontato con $i o con $i+1 ?) BIOINFO3 - Lezione 21 3 OPERATORI RELAZIONALI (STRINGHE) Restituiscono il valore VERO o FALSO confrontando due stringhe. Fare attenzione ad usare l’operatore appropriato a seconda che si usino numeri o stringhe. Esempi: $a lt ‘ciao’ $b eq “Prova $c” BIOINFO3 - Lezione 21 4 ESERCIZI Verificare se il valore divisibile per 3 o per 5 della variabile $n è della variabile $n è ($n%3 == 0) || ($n%5 == 0) Verificare se il valore divisibile per 3 e per 5 ($n%3 == 0) && ($n%5 == 0) Verificare se il valore della variabile $a è un numero pari maggiore di 10 ($a%2 == 0) && ($a > 10) BIOINFO3 - Lezione 21 5 ESERCIZI Verificare se la variabile $sequenza è la stringa atg o la stringa aug ($sequenza eq ‘atg’) || ($sequenza eq ‘aug’) Verificare se la variabile $nome è una stringa che inizia con una lettera compresa alfabeticamente tra la c e la g (estremi inclusi) ($nome ge ‘c’) && ($nome le ‘h’) BIOINFO3 - Lezione 21 6 IF Le strutture di controllo servono per modificare il flusso delle istruzioni del programma a seconda che una certa condizione sia o meno verificata. L’istruzione IF ha la seguente sintassi if (condizione){ blocco di istruzioni } L’esecuzione avviene nel seguente modo: Viene valutata la condizione. Se questa è VERA (espressione non zero, oppure stringa non vuota) vengono eseguite le istruzioni del blocco racchiuse tra parentesi graffe. Se la condizione è FALSA non viene eseguito il blocco di istruzioni. In ogni caso poi si passa all’esecuzione dell’istruzione che segue l’IF e quindi la prima dopo la parentesi }. BIOINFO3 - Lezione 21 7 IF L’istruzione IF può essere descritto dal seguente diagramma di flusso. BIOINFO3 - Lezione 21 8 IF Esempi. if ($anni >= 18) { print “MAGGIORENNE\n”; } Se la variabile $anni è maggiore o uguale di 18 allora viene stampato MAGGIORENNE seguito da un “vai a capo”. Altrimenti (se $anni<18) non viene stampato nulla. if ($a) { $a=10/$a; } L’espressione, in questo caso è una singola variabile ($a). Se non è nulla allora si assegna alla variabile $a il valore 10/$a. Se $a è nulla allora non si fa niente (la divisione per 0 provocherebbe un errore in fase di esecuzione) BIOINFO3 - Lezione 21 9 IF Esercizio. Se la variabile $a è pari dividerla per due. (Suggerimento: se il numero è PARI il resto della sua divisione per 2 è 0) Forma compatta. Esiste una forma compatta dell’IF nel caso il blocco di istruzioni controllato sia formato da una sola istruzione istruzione if condizione; Nell’esercizio: $a/=2 if !($a%2); BIOINFO3 - Lezione 21 10 RIEPILOGO •Input •Operatori logici e relazionali (per numeri e stringhe) •If BIOINFO3 - Lezione 21 11