BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra questa espressione si fermerà in attesa che qualcuno digiti una riga da tastiera (conclusa dal carattere di vai a capo). Lintera riga viene poi restituita come risultato dellespressione e tipicamente verrà assegnato ad una variabile. Se vogliamo eliminare dalla stringa letta lultimo carattere, ovvero il vai a capo, si usa la funzione chop che rimuove proprio lultimo carattere di una stringa.
BIOINFO3 - Lezione 212 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 allinterno di strutture di controllo che prevedono il calcolo di unespressione logica, con differenti conseguenze a seconda del valore VERO o FALSO dellespressione. Nel caso delland (&&) se la prima espressione è falsa, la seconda non viene nemmeno valutata essendo sicuramente ormai falso il risultato. Nel caso dellor (||) 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 213 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 214 OPERATORI RELAZIONALI (STRINGHE) Restituiscono il valore VERO o FALSO confrontando due stringhe. Fare attenzione ad usare loperatore appropriato a seconda che si usino numeri o stringhe. Esempi: $a lt ciao $b eq Prova $c
BIOINFO3 - Lezione 215 Verificare se il valore della variabile $n è divisibile per 3 o per 5 ESERCIZI ($n%3 == 0) || ($n%5 == 0) Verificare se il valore della variabile $n è 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 216 Verificare se la variabile $sequenza è la stringa atg o la stringa aug ESERCIZI ($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 217 Le strutture di controllo servono per modificare il flusso delle istruzioni del programma a seconda che una certa condizione sia o meno verificata. Listruzione IF ha la seguente sintassi if (condizione){ blocco di istruzioni } Lesecuzione 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 allesecuzione dellistruzione che segue lIF e quindi la prima dopo la parentesi }. IF
BIOINFO3 - Lezione 218 IF Listruzione IF può essere descritto dal seguente diagramma di flusso.
BIOINFO3 - Lezione 219 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; } Lespressione, 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 2110 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 dellIF nel caso il blocco di istruzioni controllato sia formato da una sola istruzione istruzione if condizione; Nellesercizio: $a/=2 if !($a%2);
BIOINFO3 - Lezione 2111 RIEPILOGO Input Operatori logici e relazionali (per numeri e stringhe) If