16/11/2004Laboratorio di Programmazione - Luca Tesei1 Espressioni booleane, confronti.

Slides:



Advertisements
Presentazioni simili
if (condizione.) { blocco_istruzioni } else
Advertisements

Sommario Nelle lezioni precedenti abbiamo introdotto tutti gli elementi che formano un particolare tipo di linguaggio logico, denominato linguaggio predicativo.
If a cascata, switch, operatori logici
Linguaggi Regolari e Linguaggi Liberi
3/12/2004Laboratorio di Programmazione - Luca Tesei1 Sequenze di lunghezza variabile ArrayList Operazioni Ricerche.
5/11/2004Laboratorio di Programmazione - Luca Tesei1 Esercizi Su Progettazione e Implementazione di classi.
18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei1 Programmazione e Laboratorio 2004/05 Informazioni Introduttive.
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
Istruzioni condizionali e blocco
Quando diciamo che due colori sono diversi? Laboratorio didattico informatico Lezione marzo 212 Alberto Stefanel.
Mescoliamo i colori Laboratorio didattico informatico marzo Dott. Alberto Stefanel.
ESPRESSIONI SENZA PARENTESI
Dallalgoritmo minimax allalgoritmo alfa-beta. MINIMAX int minimax(stato, livello) { if((livello == max_livello) || condizione_uscita(stato)) { CAMMINO.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Condizioni ed istruzioni condizionali.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
La valutazione delle espressioni
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Laboratorio di Linguaggi lezione IX: Dentro le Librerie Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Scomposizione di stringhe
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
1Paola Suria Arnaldi E dopo aver derivato... Lalgebra utile a manipolare le derivate (almeno per le funzioni razionali!) Per completare lo studio di funzione.
Istruzioni Decisionali
Lezione II Laboratorio di Programmazione. Sito del corso Lo trovate a:
Java base I: Sintassi e tipi di dati
Corso di PHP.
Programmazione in Java Claudia Raibulet
4 Tipi di dati & variabili
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
Hai 15 secondi per rispondere Numero uscitoFrequenza Un dado non truccato è stato lanciato 50 volte di seguito e si sono registrati.
Lezione 6 Strutture di controllo Il condizionale
Parte 4 Elementi di Informatica di base
Lezione 7 Strutture di controllo Il ciclo while
VARIABILI E COSTANTI LOGICHE
11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di.
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
Corso JAVA Lezione n° 11 Istituto Statale di Istruzione Superiore “F. Enriques”
Sessione live Testing. Esercizio Quesito 1 Soluzione 1.
Anno accademico Le istruzioni di controllo in C.
Nota (rif. alla lezione precedente): Vector vs ArrayList Le classi generiche Vector e ArrayList sono sostanzialmente equivalenti, ma: I metodi.
15/11/2004Laboratorio di Programmazione - Luca Tesei1 Costrutto condizionale Scelte, blocchi.
JavaScript Generalità Cos'è JavaScript?
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Algebra di Boole.
Introduzione a Javascript
Javascript Istruzioni di ciclo: for(inizio; condizione; incremento ) {blocco istruzioni} istruzione seguente; – inizio e incremento possono contenere più.
MySQL Database Management System
arduino: dalla teoria alla pratica
Moto uniformemente accelerato
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Algebra di Boole L’algebra di Boole è un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono assumere.
LE ESPRESSIONI A cura di Alberto Classe VB di Paganica Scuola F. Rossi Circolo didattico Galileo Galilei.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
LETTERE MAIUSCOLE. E' molto importante tenere a mente che javascript compie una netta distinzione tra lettere maiuscole e minuscole.
Bisogna eseguire le operazioni nello stesso ordine stabilito nelle espressioni senza parentesi, però si devono svolgere prima i calcoli all’interno delle.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

16/11/2004Laboratorio di Programmazione - Luca Tesei1 Espressioni booleane, confronti

16/11/2004Laboratorio di Programmazione - Luca Tesei2 Operatori relazionali Allinterno delle parentesi tonde della condizione dell if è possibile, come abbiamo visto, inserire il confronto tra due valori poiché questa espressione ha un valore di tipo boolean ( true o false ) Vediamo tutti gli operatori relazionali che possiamo usare nella seguente tabella

16/11/2004Laboratorio di Programmazione - Luca Tesei3 Operatori Relazionali Operatore JavaNotazione matematicaDescrizione >>Maggiore >= Maggiore o uguale <<Minore <= Minore o uguale ===Uguale != Diverso

16/11/2004Laboratorio di Programmazione - Luca Tesei4 Errore comune: = invece di == I programmatori ancora inesperti spesso confondono luso di = con == In particolare un errore comune è quello di inserire in un confronto loperatore = invece che == if (a=5) b++; // Errore di compilazione Lespressione a=5, oltre ad essere un assegnamento e non un confronto, ha un valore di tipo int

16/11/2004Laboratorio di Programmazione - Luca Tesei5 Confronti di valori in virgola mobile Gli operatori == o != non hanno molto senso applicati a valori in virgola mobile Un errore tipico è quello di cercare di controllare se un valore double (o float ) sia uguale a 0.0 È molto improbabile che un double risultante da un calcolo sia esattamente zero Potrebbe essere invece un valore prossimo allo zero

16/11/2004Laboratorio di Programmazione - Luca Tesei6 Confronti di valori in virgola mobile Prendiamo ad esempio questo semplice programma: double r = Math.sqrt(2); double d = r * r -2; if (d == 0) System.out.println("Radice quadrata di 2 per 2 meno 2 fa 0"); else System.out.println("Radice quadrata di 2 per 2 meno 2 fa " + d); Il valore stampato non è zero: d vale E-16 che è prossimo a zero, ma non è zero!

16/11/2004Laboratorio di Programmazione - Luca Tesei7 Confronti di valori in virgola mobile In generale, per confrontare luguaglianza di due valori in virgola mobile è bene fissare una soglia EPSILON di tolleranza e vedere se i due valori sono sufficientemente prossimi rispetto a questa Per esempio si può definire final double EPSILON = 1E-14; E poi controllare se |x-y| EPSILON. Se è vero si può decidere che i due valori vanno considerati uguali

16/11/2004Laboratorio di Programmazione - Luca Tesei8 Confronti di valori in virgola mobile Tuttavia, se x e y sono valori molto grandi, la loro differenza potrebbe essere una quantità maggiore di EPSILON, ma comunque, vista la loro grandezza, essere irrisoria È bene, quando x e y non sono prossimi a zero, considerare la differenza dei due valori rapportata alla loro gandezza:

16/11/2004Laboratorio di Programmazione - Luca Tesei9 Confronti di valori in virgola mobile In codice java: final double EPSILON = 1E-14; double x, y;... if (Math.abs(x-y) / Math.max(Math.abs(x), Math.abs(y)) <= EPSILON) System.out.println(\Uguali\); else System.out.println(\Diversi\);

16/11/2004Laboratorio di Programmazione - Luca Tesei10 Confronto di Stringhe Le stringhe in Java, lo sappiamo, sono oggetti Pertanto il valore di una variabile di frame di tipo String non è la stringa in sé, ma un riferimento alloggetto stringa Se cercassimo di confrontare direttamente due variabili di tipo stringa staremmo semplicemente controllando se puntano allo stesso oggetto In quel caso sono sicuramente uguali, come stringhe, ma in genere ciò che ci interessa è sapere se il contenuto di due stringhe (oggetti stringa diversi) è lo stesso

16/11/2004Laboratorio di Programmazione - Luca Tesei11 Confronto di Stringhe... String pippo = console.readLine(); String pluto = console.readline(); if (pippo == pluto) //falso System.out.println(Stringhe Uguali) else System.out,println(Stringhe Diverse) Per il confronto del contenuto di due stringhe dobbiamo usare il metodo equals della classe String Come tipico della programmazione ad oggetti, un operatore binario fra due oggetti viene realizzato con un metodo che va chiamato su uno dei due e a cui va passato un riferimento allaltro oggetto operando

16/11/2004Laboratorio di Programmazione - Luca Tesei12 Confronto di Stringhe System.out.println("Inserisci una stringa"); String pippo = console.readLine(); System.out.println("Inserisci una seconda stringa per il confronto"); String pluto = console.readLine(); if ( pippo == pluto ) System.out.println("Confronto con == : Stringhe Uguali"); else System.out.println("Confronto con == : Stringhe Diverse"); if ( pippo.equals(pluto) ) System.out.println("Confronto con metodo equals: Stringhe + Uguali"); else System.out.println("Confronto con metodo equals: Stringhe + Diverse"); Inserendo due stringhe uguali il primo confronto fallisce, mentre il secondo ha successo

16/11/2004Laboratorio di Programmazione - Luca Tesei13 Confronto di Stringhe La classe String fornisce anche operatori di confronto corrispondenti a Il metodo compareTo ha un parametro String in ingresso e confronta la stringa su cui è chiamato con la stringa passata come parametro Il valore di uscita è un int il cui valore indica se la stringa passata è uguale, maggiore o minore nel senso di ordine alfabetico

16/11/2004Laboratorio di Programmazione - Luca Tesei14 Confronto di Stringhe int r = string1.compareTo(string2); Se r > 0 allora string1 precede string2 nellordine alfabetico Se r < 0 allora string1 segue string2 nellordine alfabetico Se r == 0 allora le stringhe sono uguali (alternativa a equals )

16/11/2004Laboratorio di Programmazione - Luca Tesei15 Confronto di oggetti Il discorso fatto per le stringhe si applica agli oggetti in generale Applicando loperatore == a due variabili riferimento si controlla semplicemente se puntano allo stesso oggetto Se si vuole invece confrontare lo stato si deve fornire la classe di un metodo equals simile a quello che viene fornito con String