Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Documenti analoghi
Informatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Strutture di controllo decisionali

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C: Espressioni

Corso sul linguaggio Java

Il C nel C++ Struttura di un linguaggio. Elementi lessicali. Spazi. Livello lessicale: Livello sintattico: Livello semantico:

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Il C nel C++ Struttura di un linguaggio. regole per la definizione i simboli. regole per la composizione dei simboli

Struttura di un linguaggio

Istruzioni di selezione in Java 1

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

IL LINGUAGGIO C TIPI DI DATO

Programmazione in Java (I modulo)

Espressioni ed operatori in C

Espressioni ed operatori in C

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Tipi di dato primitivi

Istruzioni di selezione in Java 1

Istruzioni Condizionali

Istruzioni Condizionali

Linguaggio C: Espressioni

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate

Linguaggio C: Espressioni

LINGUAGGI DI PROGRAMMAZIONE!

Espressioni in Linguaggio C

Lezione 4 Casting, stringhe e caratteri, operatori relazionali, espressioni e variabili booleane

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

LINGUAGGI DI PROGRAMMAZIONE

IL COSTRUTTO SELEZIONE

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Fondamenti di Informatica T-1. Selezione

Strutture di controllo condizionali in Matlab

Linguaggi di Programmazione I Lezione 9

Programmazione in Java (I modulo) Lezione 4

Fondamenti di Programmazione. Strutture di controllo

Laboratorio di Programmazione

Programmazione Procedurale in Linguaggio C++

Istruzioni Condizionali

IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

IL LINGUAGGIO C TIPI DI DATO

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

Università degli Studi di Milano

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Struttura di un programma C++

Qualsiasi programma in C++ segue lo schema:

Strutture di Controllo

Parte seconda: espressioni, operandi e operatori.

5 - Istruzioni condizionali

Dichiarazioni e tipi predefiniti nel linguaggio C

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

Dichiarazione di variabili

Agenda. Caratteristiche del linguaggio. Il primo programma java. Variabili. Tipi primitivi. Assegnamento

Flusso logico di un programma

Settimana n.4 Obiettivi Contenuti

Introduzione a Java e all'ambiente di sviluppo

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Lezione 6 Introduzione al C++ Mauro Piccolo

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

Corso di JavaScript. Prerequisiti. B1 Tipi di dato e operatori. Concetto di variabile, espressione e tipo di dato

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Linguaggi di programmazione

Esonero di Informatica I. Ingegneria Medica

Java e i Tipi di dati primitivi. Parte 3

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2)

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

Le basi del linguaggio Java

Valutazione di espressioni

Le basi del linguaggio Java

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Costrutto switch. Come utilizzare il costrutto switch

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

scelta tra azioni alternative

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 8 14/11/2013

Retribuzione. Esecuzione condizionale. Retribuzione. L istruzione if. Esempio: Retribuzione dei dipendenti. Retribuzione. Scenario d esempio

PROGRAMMAZIONE: Le strutture di controllo

Oggi. La programmazione strutturata - III. Sequenza e selezione. Dove siamo. Iterazione: while e do/while. Raffinamenti successivi.

Basi della programmazione in Java

Istruzioni Condizionali in C

Istruzioni Ripetitive

Istruzioni Condizionali

Transcript:

Il cast

Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di x viene convertito in un float e quindi assegnato a f

Cast esplicito È necessario quando si assegna un valore di un tipo più alto ad una variabile dichiarata di tipo più basso Sintassi: (tipo)nomevariabile Per esempio: int n; double d = 3.6; n = (int)d; Il valore di d viene convertito in un int e quindi assegnato a n Il cast effettua un troncamento!!!

Espressioni booleane Controllo del flusso: selezione

Agenda Espressioni booleane Il tipo boolean Operatori condizionali Operatori relazionali Controllo del flusso Selezione istruzioni condizionali

Espressioni booleane

Il tipo boolean Il tipo boolean è un tipo primitivo Può assumere esclusivamente due valori: true o false boolean b; b = true; System.out.println(b); b = false; System.out.println(b);

Espressioni booleane Una espressione booleana è un espressione che può essere o vera o falsa Esempi di espressioni booleane sono: valore > 0 valore1!= valore2 valore1 == valore3 In Java, un espressione è booleana se restituisce o true o false vuol dire che si può assegnare il risultato della valutazione dell espressione ad una variabile dichiarata di tipo boolean Come le espressioni aritmetiche sono costruite utilizzando operatori specifici (operatori aritmetici), anche le espressioni booleane si costruiscono a partire da particolari operatori chiamati operatori relazionali e condizionali

Operatori relazionali Confrontano 2 valori numerici e determinano la relazione restituendo un valore boolean Operatore Descrizione Uso Descrizione Restituisce true se = = Uguale a op1 = = op2 op1 e op2 sono uguali!= Diverso da op1!= op2 op1 e op2 sono diversi < Minore di op1 < op2 op1 è minore di op2 > Maggiore di op1 > op2 op1 è maggiore di op2 <= Minore o uguale di op1 <= op2 op1 è minore o uguale di op2 >= Maggiore o uguale di op1 >= op2 op1 è maggiore o uguale di op2

Esempi int x = 3; int y = 4; boolean b; b = x<=y; System.out.println(b); int x = 3; int y = 4; boolean b; b = x==y; System.out.println(b); int x = 3; int y = 4; boolean b; b = x!=y; System.out.println(b); true false true

Costruzioni più complesse Se si vogliono costruire espressioni booleane più complesse, si ricorre all uso degli operatori condizionali Ne esistono di due tipi: binari e unari un operatore condizionale binario permette di combinare due espressioni booleane per ottenere ancora un valore booleano Le combinazioni possono essere di due tipi: and logico: expbool1 & expbool2» restituisce true se entrambe le espressioni booleane sono true or logico: expbool1 expbool2» restituisce true se almeno una delle due espressioni è true l unico operatore condizionale unario (il carattere!), nega l espressione booleana successiva not:!expbool» restituisce true se expbool è false

Esempio Data divisore una variabile intera, si vuole determinare se è vero che: il divisore sia diverso da zero e contemporaneamente il divisore sia maggiore di 3 relazionale condizionale relazionale (divisore!= 0) & (divisore > 3)

Operatori condizionali: tabelle di verità binari ris. true false false false ris. true true true false ex1 true true false false ex1 true true false false & & & & ex2 true false true false ex2 true false true false And logico restituisce true se tutte le espressioni sono true Or logico restituisce true se almeno una espressione è true unari ris. false true ex1! true! false Negazione nega il valore dell espressione

Operatori condizionali Gli operatori binari confrontano 2 valori boolean e restituiscono un valore boolean, quello unario nega un valore boolean Operatore Significato Uso Descrizione Restituisce true se & AND Restituisce true se entrambi veri OR Restituisce true se almeno uno è vero! NOT Restituisce true se l operando è false, false in caso contrario && AND (calcolo abbreviato) Restituisce true se entrambi veri OR (calcolo abbreviato) Restituisce true se almeno uno è vero op1 & op2 op1 op2!op1 op1 && op2 op1 op2 op1 e op2 sono entrambi true almeno op1 o op2 true op1 è false op1 e op2 sono entrambi true almeno op1 o op2 true

Differenza tra && e & e tra e Se una valutazione fallisce, utilizzando la forma abbreviata, le successive valutazioni non vengono eseguite Esempio: int x = 3; int y = 0;? boolean b = (y!= 0) && (x/y > 0) non viene valutata false Attenzione però all ordine: non è detto che un espressione venga effettivamente valutata nell ordine in cui è stata codificata quindi per istruzioni che possono generare errori run-time occorre prestare attenzione

Precedenze fra operatori (1/2) Massima precedenza () ++ -- (raggruppamento espr.) (incr. pre) (decr. pre) ++ --! (incremento post) (decremento post) (negazione) * / % (moltiplicazione) (divisione) (modulo) + - (somma) (sottrazione) < > <= >= (minore) (maggiore) (minore o uguale) (maggiore o uguale) Minima precedenza ==!= (uguaglianza) (disuguaglianza)

Precedenze fra operatori (2/2) Massima precedenza Minima precedenza & (AND) (OR) && (AND logico) (OR logico) = += -= *= /= %= (assegnamenti)

Il controllo del flusso: la selezione

Il controllo del flusso Il flow of control è l esecuzione ordinata di una sequenza di istruzioni Tutti i programmi possono essere scritti usando i seguenti elementi di controllo del flusso: sequenza esegue le istruzioni una alla volta nell ordine in cui sono state scritte selezione permette di scegliere tra almeno due possibilità iterazione esegue ripetutamente un blocco di istruzioni fino al verificarsi di una condizione eccezione try, catch, finally miscellanea break, continue, label, return

Selezione Quando più strade sono percorribili, occorre eseguire un test per verificare quale sia quella corretta Generalmente: se true fai qualcosa, se false fai qualcos altro Il test è quindi realizzato tramite una espressione booleana (che restituisce un valore di tipo boolean) Costrutti: if (istruzione condizionale ad una via) if-else (istruzione condizionale a due vie) switch condizione? istruzione1 : istruzione2;

Istruzione condizionale ad una via Permette di decidere se eseguire una istruzione oppure saltarla if (espressionebooleana) istruzione1; istruzione; viene eseguita se espressionebooleana è true viene eseguita in ogni caso Esecuzione: Si valuta l espressione booleana. Se il valore dell espressione booleana è true, si esegue istruzione1 e poi il controllo diventa sequenziale, quindi viene eseguita istruzione false: non viene eseguita istruzione1 e quindi viene eseguita istruzione

if: esempio public class ProvaStampa { public static void main(string a[]) { int x = 5; if (x<=10) x++; System.out.println( x vale: + x); } }

Selezione a due vie Permette di decidere di eseguire una istruzione piuttosto che un altra if (espressionebooleana) istruzione1; else istruzione2; istruzione; viene eseguita se espressionebooleana è true viene eseguita se espressionebooleana è false Esecuzione: Si valuta l espressione booleana. Se il valore dell espressione booleana è true, si esegue istruzione1, quindi viene eseguita istruzione false: non viene eseguita istruzione1, ma istruzione2, quindi viene eseguita istruzione

if-else: esempio public class ProvaStampa { public static void main(string a[]) { short v1 = 5, v2 = 3, min; if (v1 < v2) min = v1; else min = v2; System.out.print( Minore: +min); } }

Istruzioni condizionali annidate... o in cascata, o innestate Si utilizzano quando le alternative di un istruzione condizionale siano istruzioni condizionali a loro volta istruzione1 istruzione2 istruzione3 if(expbooleana1) if(expbooleana2) if(expbooleana3)... else istruzione3e else istruzione2e else istruzione1e istruzione1e istruzione2e istruzione3e if(expbooleana1) istruzione1; else if(expbooleana2) istruzione2; else if(expbooleana3) istruzione3 else...

Esempio istruzione1 if(10>(2-5)*2) if(3==4%2) System.out.println( uno ); else System.out.println( due ); else System.out.println( tre );? due

if-else: esempio 2 public class ProvaStampa { public static void main(string a[]) { int num = 2; String mese; if (num == 1) mese = Gennaio ; else if (num == 2) mese = Febbraio ; System.out.print( Mese: +mese); } }

Ambiguità Cosa succede quando si innesta un condizionale ad una via dentro ad un condizionale a due vie? if(10<(x+5)*2) if(1==x%2) System.out.println( uno ); else System.out.println( tre ); System.out.println( out ); if(10<(x+5)*2) if(1==x%2) System.out.println( uno ); else System.out.println( tre ); System.out.println( out );? Una clausola else si riferisce sempre all ultimo if senza clausola else out

Eseguire più istruzioni Cosa succede se si esegue il seguente frammento di codice? int x = 4; int y = 9; if(x!= y) x = y; System.out.println( Ora x e y sono uguali ); else System.out.println( x e y sono già uguali ); Errore in compilazione: else without if Soluzione: uso i blocchi

Blocchi Un blocco di istruzioni è un insieme di istruzioni racchiuse tra graffe Un blocco di istruzioni è considerato come una singola istruzione! istruzione { } istruzione1; istruzione2; istruzione3; istruzionen;

quindi int x = 4; int y = 9; if(x!= y){ x = y; System.out.println( Ora x e y sono uguali ); } else System.out.println( x e y sono già uguali );

E così? int x = 4; int y = 9; if(x!= y){ x = y; System.out.println( Ora x e y sono uguali ); } else x++; System.out.println( Ora x e y sono diversi );? Ora x e y sono uguali Ora x e y sono diversi

Soluzione int x = 4; int y = 9; if(x!= y){ x = y; System.out.println( Ora x e y sono uguali ); } else { x++; System.out.println( Ora x e y sono diversi ); }

Sintassi finale if (espressionebooleana){ istruzione1; istruzione2; } else{ istruzione1; istruzione2;... } prossimaistruzione; vengono eseguite se espressionebooleana è true vengono eseguite se espressionebooleana è false viene eseguita in ogni caso

Esempio 1 public class ProvaStampa { public static void main(string a[]) { int x = 5; if ((x<=10) && (x>0)) { System.out.println( if ); x++; } System.out.println( x vale: +x); } }

Esempio 2 public class ProvaStampa { public static void main(string a[]) { int x = 11; boolean min; if ((x<=10) && (x>0)) { min = true; x++; } else { min = false; } System.out.println( x vale: +x); } }

Esercizi Provate ad implementare il massimo tra tre numeri