Flusso di controllo
Transcript
Flusso di controllo
Flusso di controllo Raffaella Brighi, a.a. 2005/06 Corso di Algoritmi e programmazione. A.A. 2005-06 CdL Operatore Informatico Giuridico. Flusso di controllo o di esecuzione È l’ordine con cui le istruzioni sono eseguite in un programma. Normalmente tale ordine è lineare: inizia con la prima istruzione del metodo main e termina con l’ultima istruzione di tale metodo. Quando richiamiamo il metodo di un oggetto avviene un salto alla prima istruzione di tale metodo e, terminata l’esecuzione di tutto il metodo, il controllo torna nel punto in cui tale metodo era stato invocato. All’interno di un metodo il flusso di esecuzione puo’ essere alterato con istruzioni condizionali o cicli. 1 L’istruzione if e if-else if (totale>importo) totale=totale + (importo +1); if (altezza <=MAX) correzione=0; else correzione=MAX-altezza; se anziche’ una singola istruzione deve essere eseguito un blocco di istruzioni queste devono essere racchiuse tra parentesi graffe Le istruzioni if possono essere annidate, ovvero inserite una dentro l’altra. Esercizio Scrivere un’applicazione che legge dall’input nome ed eta’ dell’utente, stampa in output Mario ha 26 anni e se l’eta è <21 scrive in output La gioventu’ è una cosa meravigliosa! 2 L’istruzione switch Valuta un’espressione per determinarne il valore e poi confronta tale valore con quelli delle clausole case switch (idChar) { case ‘A’ …….; break; case ‘B’ ………; break; case ‘C’ ……….; break; default: ……….; } Esercizio Leggere dall’input un numero intero compreso tra 1 e 10. Generare un numero casuale compreso tra 1 e 10. Se il numero generato è uguale al numero inserito dall’utente scrivere in output il messaggio “Bravo! Hai indovinato”, altrimenti scrivere “Non hai indovinato” e “Il numero estratto era:” numero. 3 Operatori logici operatore simbolo ! NOT && AND ¦¦ OR I tre operatori danno come risultato un boolean Operatori di confronto Operatore Significato == Uguale a != Diverso da < Minore di <= > >= Minore o uguale Maggiore di Maggiore o uguale Consentono di effettuare confronti anche tra caratteri (char). Il set di caratteri utilizzato infatti (Unicode) definisce un ordinamento preciso dei caratteri ammessi (pag 538 libro): caratteri speciali, numeri, lettere maiuscole, …,lettere minuscole, … I confronti tra stringhe si fanno con i metodi della classe String (compareTo, equals). 4 Operatori di incremento e decremento (++) operatore di incremento: somma 1 a qualsiasi valore intero o in virgola mobile (--) operatore di decremento: sottrae 1 a qualsiasi valore intero o in virgola mobile count ++; count = count +1; count --; count = count -1; Operatori di incremento e decremento Tali operatori possono essere postfissi e prefissi. Hanno un significato diverso se compaiono in un’espressione. total = count++; A total viene assegnato il valore di count, dopodiche’ count viene incrementato di 1 total = ++count; count viene incrementato di 1 e a total viene assegnato il nuovo valore di count. 5 Operatori di assegnamento In java sono definiti molti operatori che combinano operazioni elementari (es. +=, *=, ..) totale += espressione ; totale= totale + (espressione) totale *= espressione ; totale= totale * (espressione) Viene valutata prima l’espressione a dx dell’operatore (+=); il risultato diventa l’operando di dx dell’operazione da eseguire (+), mentre l’operando di sx è l’operando a sx dell’operatore (totale) Operatore condizionale È un operatore ternario perche’ richiede tre operandi ? : condizione ? operando1 : operando2 L’operazione da’ come risultato operando1 se condizione è vera, operando2 se condizione è falsa. operando1 e operando2 possono essere due espressioni ris = (totale > MAX) ? totale+1 : totale*2 equivale a: if totale> MAX ris= totale +1; else ris=totale*2; 6