BIOINFO3 - Lezione 221 Listruzione IF-ELSE prevede un secondo blocco di istruzioni da eseguire in alternativa al primo nel caso la condizione sia falsa if (condizione){ blocco 1 di istruzioni } else { blocco 2 di istruzioni } Viene valutata la condizione. Se questa è VERA (espressione non zero, oppure stringa non vuota) vengono eseguite le istruzioni del blocco 1. Se la condizione è FALSA viene eseguito il blocco 2 di istruzioni. IF-ELSE
BIOINFO3 - Lezione 222 IF-ELSE Esercizio. Se la variabile $nome contiene una stringa non vuota allora assegnare a $messaggio la stringa NOME=$nome, altrimenti assegnare a $messaggio la stringa NOME SCONOSCIUTO Forma compatta. Anche in questo caso particolare (si fa in entrambi i casi solo un assegnamento alla stessa variabile) esiste una versione compatta. Ve la mostro solo per farvi vedere la compattezza, non preoccupatevi di ricordarla! variabile = condizione? valore1: valore2; Nellesercizio: $messaggio = $nome? NOME=$nome : NOME INDEFINITO;
BIOINFO3 - Lezione 223 Stampare la frase Inserire un numero, prego :. Assegnare alla variabile $numero un numero letto dallinput. Se il numero è positivo stampare Numero positivo altrimenti stampare Numero nullo o negativo. ESERCIZI
BIOINFO3 - Lezione 224 IL CICLO WHILE Si utilizza quando si deve eseguire un certo blocco di istruzioni fintanto che una certa condizione rimane vera while (condizione){ blocco di istruzioni } Viene valutata la condizione. Se FALSA si passa allistruzione che segue il ciclo while. Se VERA si eseguono le istruzioni del blocco racchiuse tra parentesi graffe e si ritorna a valutare la condizione. Ovviamente è essenziale che il blocco di istruzioni abbia una qualche influenza sulla condizione, altrimenti si rischia di entrare in un loop infinito e di non far teminare mai il programma. Per uccidere un programma inloopato si premono contemporaneamente i tasti CTRL- C oppure si usa il comando kill di UNIX dopo aver identificato con il comando ps di UNIX il pid del processo da uccidere
BIOINFO3 - Lezione 225 IL CICLO WHILE Esempio. Loop infinito while (1){ ……… } Esercizio. (provare su carta) Si supponga la variabile $i non definita. Il seguente programma quali numeri stamperà? while ($i++ < 10){ print $i\n; } Da 1 a 10. Nel primo ciclo $i=0, $i++=0 ma $i diventa 1 e viene stampato. Quando $i=9 $i++=9 <10, $i diventa 10 e viene stampato
BIOINFO3 - Lezione 226 IL CICLO WHILE Esercizio. Stampare (una per riga) le potenze di 2 da 2 0 fino a è 1 Kilo; 2 20 è 1 Mega; 2 30 è 1 Giga )
BIOINFO3 - Lezione 227 ESERCIZIO Esercizio. Scrivere un programma che continui a leggere dei numeri da input e per ogni numero letto stampi il doppio del numero Ovviamente lespressione $n = <> (che restituisce il valore restituito da <>) non sarà mai falsa, poiché in ogni riga di input viene fornito almeno il carattere di vai a capo. Per far terminare il programma si deve quindi ricorrere al CTRL-C! La stringa vuota in un contesto numerico diventa 0
BIOINFO3 - Lezione 228 IL CICLO DO E simile al ciclo while con la differenza che la condizione è valutata alla fine del ciclo, che quindi sarà eseguito almeno una volta do { blocco di istruzioni } while (condizione); Si esegue il blocco di istruzioni. Viene successivamente valutata la condizione. Se FALSA si passa allistruzione che segue il ciclo do. Se VERA si ritorna ad eseguire il blocco di istruzioni.
BIOINFO3 - Lezione 229 ESERCIZIO Esercizio. Scrivere un programma che legga dei numeri (che sappiamo con certezza essere numeri e non negativi) dallinput. Stampare dopo ogni numero letto la somma progressiva dei numeri. Terminare il programma quando si incontra un numero nullo
BIOINFO3 - Lezione 2210 IL CICLO FOR Normalmente i cicli while e do si eseguono quando prima di iniziare il ciclo non è noto il numero di volte in cui verrà eseguito. Se invece il numero di iterazioni da eseguire è noto si opterà per un ciclo for. for (istruz. iniziale; condizione; istruz. finale) { blocco di istruzioni } Si esegue una sola volta listruzione iniziale. Viene successivamente valutata la condizione. Se FALSA si passa allistruzione che segue il ciclo for. Se VERA si esegue il blocco di istruzioni e quindi listruzione finale. Si ritorna poi a valutare la condizione.
BIOINFO3 - Lezione 2211 IL CICLO FOR Esempio. (provare su carta) for ( $i=0; $i < 10; $i++){ print $i\n; } Il programma effettua 10 iterazioni, controllate dalla variabile $i che varia da 0 a 9. Sono stampati i numeri da 0 a 9. Esercizio. Stampare le potenze di 2, una per riga, in ordine decrescente da 2 20 fino a 2 0
BIOINFO3 - Lezione 2212 ESERCIZIO PER CASA Esercizio 13. Leggere un numero $n da input. Effettuare $n cicli. Ad ogni ciclo stampare la frase Inserire il nome numero seguito dal numero di ciclo. Leggere ogni volta da tastiera un nome. Alla fine del ciclo stampare il nome più grande (alfabeticamente).
BIOINFO3 - Lezione 2213 RIEPILOGO If-else While Do For Redirezione input e output