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
Scarica

Document