Capitolo 5 Decisioni Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Slides:



Advertisements
Presentazioni simili
Teoria e Tecniche del Riconoscimento
Advertisements

1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Interfacce Java.
Selezione multipla e tipo di dato carattere
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Istruzioni condizionali e blocco
Capitolo 13 Verifica e debug Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Capitolo 7 Programmazione con metodi e classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004.
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Programmazione Ingegneria TLC
Sequential Statements. – Il VHDL simula lo svolgersi in parallelo di varie operazioni – Loggetto fondamentale e il PROCESS – Un PROCESS contiene una serie.
Laboratorio Matematica e Informatica
I metodi di valutazione alternativi al Valore Attuale Netto Teoria della Finanza Aziendale Prof. Arturo Capasso A.A
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
TIPOLOGIA DELLE VARIABILI SPERIMENTALI: Variabili nominali Variabili quantali Variabili semi-quantitative Variabili quantitative.
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
Selezione (=scelta) con “if-else”
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Programmazione distribuita in Java
1 Funzioni e Procedure in C Corso di Informatica A Vito Perrone.
Programmazione in Java Claudia Raibulet
Programmazione in Java Claudia Raibulet
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 4 ARGOMENTI: STRINGHE DI CARATTERI.
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
OUTPUT FORMATTATO La funzione printf consente di effettuare la stampa a video formattata. Sintassi: printf ( stringa_formato, arg0, arg1, … ); La stringa.
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Realizzazione Grammatica non contestuale –no ricorsioni sinistre –LL(1) produzione individuata dal primo token Ogni non-terminale -> funzione –rappresenta.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
Multiset. Progettare (specifica con identificazione delle eventuali astrazioni necessarie, incluse eccezioni, e implementazione) del tipo di dato Multiset,
Soluzioni 1.Struttura base soluzione 2.Lettura dei tasti 3.Identificazione dei tasti 4.Accensione dei LED 5.Rotazione dei LED 6.Rotazione dei tasti fino.
Funzioni stringhe. chr Restituisce il carattere di un valore ascii dato. Per vedere lelenco dei codici ascii clicca QQQQ uuuu iiiiEsempio
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Scrivere un algoritmo non deterministico di complessita` polinomiale che risolva il problema del commesso viaggiatore. Vengono proposte due soluzioni,
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Collection & Generics in Java
10/11/11 1 The Information School of the University of Washington 10/11/11fit control © 2004 University of Washington Controlli di flusso INFO/CSE.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Capitolo 12 Thread Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Programmazione in Java
Java World Introduzione.
Condizioni decisionali
TIPI PRIMITIVI TIPI STRUTTURATI
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Corso Java Introduzione.
Condizioni decisionali
Condizioni decisionali
Programmazione Procedurale
Transcript della presentazione:

Capitolo 5 Decisioni Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Nozioni di base Le soluzioni dei problemi mostrate finora sono dirette Eseguono le stesse istruzioni ad ogni esecuzione del programma public class DisplayForecast // main(): punto di ingresso per l'applicazione public static void main(String[] args){ System.out.print("I think there is a world"); System.out.print(" market for maybe five "); System.out.println("computers. ); System.out.print(" Thomas Watson, IBM, ); System.out.println("1943."); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Nozioni di base Per la soluzione generale dei problemi servono maggiori capacità La capacità di controllare quali istruzioni vengono eseguite La capacità di controllare quanto spesso viene eseguita un'istruzione Per prima cosa ci concentreremo sul controllo di quali istruzioni vengono eseguite Java fornisce i costrutti condizionali if e switch per controllare se un elenco di istruzioni viene eseguito I costrutti if utilizzano espressioni logiche per determinare il corso dell'azione L'esame inizia dalle espressioni logiche

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Espressioni logiche Il ramo della matematica che si occupa delle espressioni logiche è l'algebra di Boole Sviluppata dal matematico britannico George Boole

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Espressioni logiche Un'espressione logica presenta il valore logico true o false Alcune espressioni i cui valori sono true logici L'anno 2004 è bisestile Un metro equivale a 100 centimetri Alcune espressioni i cui valori sono false logici Un triangolo ha quattro lati L'area del quadrato è sempre uguale al doppio del suo perimetro

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Espressioni logiche Esistono tre operatori logici principali per la manipolazione dei valori logici AND logico OR logico NOT logico Gli operatori funzionano come previsto

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Tabelle della verità Le tabelle della verità sono utilizzate per fornire specifiche formali degli operatori Funzionano come previsto lascia una certa ambiguità di interpretazione Jim sta sorridendo o Patty sta sorridendo Jim e Patty possono sorridere entrambi? Tabelle della verità Elenca tutte le combinazioni dei valori degli operandi e il risultato dell'operazione per ogni combinazione pq p and q False FalseFalse False TrueFalse True FalseFalse True TrueTrue

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Tabelle della verità di OR e NOT pq p or q False FalseFalse False TrueTrue True FalseTrue True TrueTrue pnot q False True True False

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Algebra di Boole Può creare espressioni logiche complesse combinando semplici espressioni logiche not (p and q) pq p and q not (p and q) False FalseFalseTrue False TrueFalseTrue True FalseFalseTrue True TrueTrueFalse

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Leggi di DeMorgan not (p and q) equivale a (not p) or (not q) ( not p) or pq p and q not (p and q) ( not p) (not q) ( not q) False False False True True True True False True False True True False True True False False True False True True True True True False False False False

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Leggi di DeMorgan not (p or q) equivale a (not p) and (not q) ( not p) and pq p or q not (p or q) ( not p) (not q) ( not q) False False False True True True True False True False False True False False True False False False False True False True True True False False False False

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Un tipo boolean Java dispone del tipo logico boolean Il tipo boolean usa due costanti letterali true false Operatori L'operatore and è && L'operatore or è || L'operatore not è !

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Definizione delle variabili boolean Le variabili boolean locali non sono inizializzate per impostazione predefinita boolean isWhitespace; boolean receivedAcknowledgement; boolean haveFoundMissingLink;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Definizione delle variabili boolean Variabili boolean locali con inizializzazione boolean canProceed = true; boolean preferCyan = false; boolean completedSecretMission = true;

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Altri operatori Operatori di uguaglianza == e != Operatore == Restituisce true se gli operandi hanno lo stesso valore, altrimenti restituisce false Operatore != Restituisce true se gli operandi hanno valori diversi, altrimenti restituisce false Gli operatori funzionano con tutti i tipi di valori

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Valutazione delle espressioni boolean Supporre boolean p = true; boolean q = false; boolean r = true; boolean s = false; Qual è il valore di p p && s !s p == q q q != r p && r r == s q || s q != s

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Valutazione delle espressioni boolean Supporre int i = 1; int j = 2; int k = 2; char c = '#'; char d = '%'; char e = '#'; Qual è il valore di j == k i != k i == j j != k c == e d != e c == d c != e

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Attenzione ai valori in virgola mobile Considerare double a = 1; double b = double c = ; Due espressioni true! a == bb != c Due espressioni false! a != bb == c Il problema sta nella precisione dei tipi in virgola mobile Preferire gli operatori di ordinamento per la vicinanza

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Operatori di ordinamento Java fornisce operatori di ordinamento per i tipi primitivi Quattro operatori di ordinamento,, = Corrispondono agli operatori matematici,, e Š Insieme gli operatori di uguaglianza e ordinamento sono detti operatori relazionali False è minore di true

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Valutazione delle espressioni boolean Supporre int i = 1; int j = 2; int k = 2; Qual è il valore di i < j j < k i <= k j >= k i >= k

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Valori Unicode I confronti tra caratteri sono basati sui loro valori Unicode I caratteri hanno l'ordine previsto '0', '1', … '9' Il carattere '0' ha codifica 48 Il carattere '1' ha codifica 49 e così via. Le lettere maiuscole 'A', 'B', … 'Z' seguono l'ordine previsto Il carattere 'A' ha codifica 65, il carattere 'B' ha codifica 66 e così via. Le lettere maiuscole 'A', 'B', … 'Z' seguono l'ordine previsto Il carattere 'a' ha codifica 97 Il carattere 'b' ha codifica 98 e così via.

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Valutazione delle espressioni boolean Supporre char c = '2'; char d = '3'; char e = '2'; Qual è il valore di c < d c < e c <= e d >= e c >= e

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Precedenza degli operatori Dal più alto al più basso Parentesi Operatori unari Operatori di moltiplicazione Operatori di somma Ordinamento relazionale Uguaglianza relazionale AND logico OR logico Assegnazione

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Costrutti condizionali Forniscono Capacità di controllare se viene eseguito un elenco di istruzioni Due costrutti Istruzione if if if-else if-else-if Istruzione switch

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Istruzione if di base Sintassi if (espressione) azione Se espressione è true viene eseguita azione Azione è una singola istruzione o un gruppo di istruzioni tra parentesi graffe Per noi sarà sempre un gruppo di istruzioni tra parentesi graffe Espressione azione truefalse

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Esempio if (value < 0) { value = -value; } Il numero è negativo? Se Value è inferiore a zero, il numero va bene così Se Value è inferiore a zero, occorre aggiornare il valore con linverso delladditivo Il numero è ora sicuramente non negativo

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Ordinamento di due valori System.out.print("Enter an integer number: "); int value1 = Integer.parseInt(stdin.readLine()); System.out.print("Enter another integer number: "); int value2 = Integer.parseInt(stdin.readLine()); // riorganizza i numeri, se necessario if (value2 < value1) { // i valori non sono ordinati int rememberValue1 = value1; value1 = value2; value2 = rememberValue1; } // visualizza i valori System.out.println("The numbers in sorted order are " + value1 + " and then " + value2); Che cosa accade se l'utente inserisce 11 e 28? Che cosa accade se l'utente inserisce 11 e 4?

Semantica di if I numeri non sono in ordine? Riordina value1 e value2 per mettere nell'ordine corretto i valori I numeri sono stati messi nell'ordine corretto I numeri erano già in ordine I numeri sono in ordine

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Perché utilizzare sempre le parentesi graffe Qual è l'output? int m = 5; int n = 10; if (m < n) ++m; ++n; System.out.println(" m = " + m + " n = " n);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl L'istruzione if-else Sintassi if (espressione) azione 1 else azione 2 Se espressione è true esegue azione 1 altrimenti esegue azione 2 Le azioni sono una singola istruzione o un elenco di istruzioni tra parentesi graffe Espressione azione 1 azione 2 true false

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Trovare il massimo di due valori System.out.print("Enter an integer number: "); int value1 = Integer.parseInt(stdin.readLine()); System.out.print("Enter another integer number: "); int value2 = Integer.parseInt(stdin.readLine()); int maximum; if (value1 < value2) // value2 è maggiore?? maximum = value2; // sì: value2 è maggiore } else // (value1 >= value2) maximum = value1; // no: value2 non è maggiore } System.out.println("The maximum of " + value1 + " and " + value2 + " is " + maximum);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Trovare il massimo di due valori value2 è maggiore di value1? Sì, lo è. Dunque, value2 è maggiore di value1. In questo caso, maximum viene impostato su value2 No, non lo è. Dunque, value1 è grande almeno quanto value2. In questo caso, maximum viene impostato su value2 maximum viene impostata correttamente in entrambi i casi

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Perché utilizzare gli spazi vuoti Che cosa fa il codice seguente? System.out.print("Enter an integer number: "); int value1 = Integer.parseInt(stdin.readLine()); System.out.print("Enter another integer number: "); int value2 = Integer.parseInt(stdin.readLine()); if (value2 < value1) { int rememberValue1 = value1; value1 = value2; value2 = rememberValue1; } System.out.println("The numbers in sorted order are " + value1 + " and then " + value2);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Verifica dell'uguaglianza tra oggetti Considerare System.out.print("Enter an integer number: "); int n1 = Integer.parseInt(stdin.readLine()); System.out.print("Enter another integer number: "); int n2 = Integer.parseInt(stdin.readLine()); if (n1 == n2) { System.out.println("Same"); } else{ System.out.println(Different"); } Qual è l'output se l'utente inserisce 88 in entrambi i casi? Qual è l'output se l'utente inserisce 88 e 3?

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Verifica dell'uguaglianza tra oggetti Considerare System.out.print("Enter a string: "); String s1 = stdin.readLine(); System.out.print("Enter another string: "); String s2 = stdin.readLine(); if (s1 == s2) { System.out.println("Same"); } else{ System.out.println("Different"); } Qual è l'output se l'utente inserisce "pastel" in entrambi i casi?

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Verifica dell'uguaglianza tra oggetti Quando viene eseguito System.out.print("Enter a string: "); String s1 = stdin.readLine(); System.out.print("Enter another string: "); String s2 = stdin.readLine(); La memoria appare così Come risultato, indipendentemente da ciò che viene inserito s1 e s2 non sono uguali Fanno riferimento a oggetti diversi

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Prova degli operatori per l'uguaglianza Considerare System.out.print("Enter a string: "); String s1 = stdin.readLine(); System.out.print("Enter another string: "); String s2 = stdin.readLine(); if (s1.equals(s2)) { System.out.println("Same"); } else{ System.out.println("Different"); } Verifica se s1 e s2 rappresentano lo stesso oggetto Tutti gli oggetti hanno un metodo equals(). La loro implementazione è specifica per la classe. Il metodo String equals() – come molti altri – verifica l'equivalenza nella rappresentazione

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Alcuni metodi utili della classe String isDigit() Verifica se il carattere è numerico isLetter() Verifica se il carattere è alfabetico isLowerCase() Verifica se il carattere è alfabetico minuscolo isWhiteSpace() Verifica se il carattere è un carattere di spazio, tabulazione, avanzamento riga o nuova riga

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Alcuni metodi utili della classe String isUpperCase() Verifica se il carattere è alfabetico maiuscolo toLowerCase() Se il carattere è alfabetico viene restituito l'equivalente minuscolo del carattere, altrimenti viene restituito il carattere toUpperCase() Se il carattere è alfabetico viene restituito l'equivalente maiuscolo del carattere, altrimenti viene restituito il carattere

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl If-else-if Considerare if (number == 0) { System.out.println("zero"); } else{ if (number > 0) { System.out.println("positive"); } else{ System.out.println("negative"); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl If-else-if Meglio if (number == 0) { System.out.println("zero"); } else if (number > 0) { System.out.println("positive"); } else{ System.out.println("negative"); } Stessi risultati del segmento precedente, ma questo segmento esprime meglio il significato di cosa accade

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Ordinamento di tre valori Per l'ordinamento dei valori n1, n2 e n3 esistono sei possibili ordinamenti n1 n2 n3 n1 n3 n2 n2 n1 n3 n2 n3 n1 n3 n1 n2 n3 n2 n1 Si supponga che s1, s2, s3 deve essere una versione ordinata di n1, n2 e n3

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Ordinamento di tre valori if ((n1 <= n2) && (n2 <= n3)) // n1 <= n2 <= n2 s1 = n1; s2 = n2; s3 = n3; } else if ((n1 <= n3) && (n3 <= n2)) // n1 <= n3 <= n2 s1 = n1; s2 = n3; s3 = n2; } else if ((n2 <= n1) && (n1 <= n3)) // n2 <= n1 <= n3 s1 = n2; s2 = n1; s3 = n3; } else if ((n2 <= n3) && (n3 <= n1)) // n2 <= n3 <= n1 s1 = n2; s2 = n3; s3 = n1; } else if ((n3 <= n1) && (n1 <= n2)) // n3 <= n1 <= n2 s1 = n3; s2 = n1; s3 = n2; } else // n3 <= n2 <= n1 s1 = n3; s2 = n2; s3 = n1; }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Istruzione switch Gli ingegneri del software sono spesso alle prese con attività di programmazione che richiedono azioni dipendenti dal valore di espressioni intere È possibile utilizzare il costrutto if-else-if Confrontare separatamente l'espressione desiderata con un particolare valore Se l'espressione e il valore sono uguali viene eseguita l'azione appropriata Visto che tali attività di programmazione avvengono spesso Java include un'istruzione switch L'attività è spesso più leggibile con switch che con if- else-if

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Istruzione switch Espressione intera da associare a un'espressione case Istruzioni Java Espressione costante intera

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Verifica delle vocali switch (ch) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': System.out.println("vowel); break; default: System.out.println("not a vowel); } break provoca l'uscita da switch Gestisce tutti gli altri casi

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Elaborazione di una richiesta System.out.print("Enter a number: "); int n1 = Integer.parseInt(stdin.readLine()); System.out.print("Enter another number: "); int n2 = Integer.parseInt(stdin.readLine()); System.out.print("Enter desired operator: "); char operator = stdin.readLine().charAt(0); switch (operator) { case '+' : System.out.println(n1 + n2); break; case '-' : System.out.println(n1 - n2); break; case '*' : System.out.println(n1 * n2); break; case '/' : System.out.println(n1 / n2); break; default: System.out.println(Illegal request); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Valutazione abbreviata Il valore di un'espressione logica può essere noto prima che siano stati considerati tutti gli operandi Se l'operando sinistro di && è false, il valore deve essere false Se l'operando destro di || è true, il valore deve essere true Java utilizza queste proprietà per rendere efficienti le operazioni logiche Valuta l'operando sinistro prima di valutare l'operando destro Se il valore dell'operatore è determinato dall'operando sinistro, allora l'operando destro non viene valutato L'operazione è abbreviata

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Valutazione abbreviata La valutazione abbreviata è utilizzata quando qualche proprietà deve essere true per poter valutare qualche altra espressione Si supponga di voler sapere se scoreSum diviso per nbrScores è maggiore di value La condizione può essere valutata solo se nbrScores non è zero L'espressione seguente rappresenta correttamente la condizione (nbrScores != 0) && ((scoreSum / nbrScores) > value)

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl ColoredTriangle Nozioni di base I triangoli sono una forma importante nel mondo della grafica informatica Quando vengono create le animazioni a computer, le scene vengono generalmente scomposte in un insieme di triangoli colorati Specifica informale Rappresenta un triangolo colorato nello spazio bidimensionale Fornisce i costruttori e i metodi previsti dall'utente

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl ColoredTriangle - vedere il gatto

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl ColoredTriangle - costruttori previsti Costruzione predefinita Costruisce una rappresentazione del triangolo anche se non sono forniti valori di attributo espliciti public ColoredTriangle() Costruzione specifica Costruisce la rappresentazione di un triangolo da valori di attributo espliciti public ColoredTriangle(Point v1, Point v2, Point v3, Color c)

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl ColoredTriangle - comportamenti previsti Fornire l'area Restituire l'area del triangolo associato public double getArea() Fornire il perimetro Restituire il perimetro del triangolo associato public double getPerimeter() Accedere a un punto finale Fornire un punto finale richiesto del triangolo associato public Point getPoint(int i)

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl ColoredTriangle - comportamenti previsti Accedere al colore Fornire il colore del triangolo associato public Point getColor() Impostare un punto finale Impostare un particolare punto finale del triangolo associato su un dato valore public void setPoint(int i, Point p) Impostare il colore del triangolo Impostare il colore del triangolo associato su un dato valore public void setColor(Color c)

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl ColoredTriangle - comportamenti previsti Rappresentare Disegnare il triangolo associato in un dato contesto grafico public void paint(Graphics g) Verificare l'uguaglianza Indicare se il triangolo associato è equivalente a un dato triangolo public boolean equals(Object v) Rappresentazione stringa Fornire una rappresentazione di testo degli attributi del triangolo associato public String toString()

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl ColoredTriangle - attributi Per implementare i comportamenti È sufficiente la conoscenza del colore del triangolo e dei tre punti finali Il punto finale può essere rappresentato utilizzando due valori int per posizione o come Point Point sembra più naturale private Color color Colore del triangolo associato private Point p1 Fa riferimento al primo punto del triangolo associato private Point p2 Fa riferimento al secondo punto del triangolo associato private Point p3 Fa riferimento al terzo punto del triangolo associato

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Costruttore predefinito - implementazione Crea i valori per i vertici Copia i valori dei vertici desiderati nei campi dati Copia nei campi dati il colore desiderato

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Implementazione - funzione di accesso getPoint() // getPoint(): funzione di accesso al punto finale public Point getPoint(int i) if (i == 1) return p1; } else if (i == 2) return p2; } else if (i == 3) return p3; } else System.output.println("Unexpected endpoint access: + i); System.exit(i); return null; } Non sarà eseguita, ma il compilatore desidera che ogni percorso di esecuzione termini con return

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Implementazione - facilitatore toString() // toString(): facilitatore stringa public String toString() Point v1 = getPoint(1); Point v2 = getPoint(2); Point v3 = getPoint(3); Color c = getColor(); return "ColoredRectangle[" + v1 + ", " + v2 + ", " + v3 + ", " + c + "]"; } Standard per includere il nome di classe quando l'uso previsto è per il debug

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Implementazione - facilitatore toString() Point a = new Point(2,1), Point b = new Point(1,2) Point c = new Point(3,2); ColoredTriangle u = new ColoredTriangle(a, b, c, Color.RED); System.out.println(u); // mostra la versione stringa di u ColoredTriangle[java.awt.Point[x=2,y=1], java.awt.Point[x=1,y=2], java.awt.Point[x=3,y=2], java.awt.Color[r=255,g=0,b=0]]

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl // equals(): facilitatore di uguaglianza public boolean equals(Object p) if (p instanceof ColoredTriangle) Point v1 = getPoint(1); Point v2 = getPoint(2); Point v3 = getPoint(3); Color c = getColor(); ColoredTriangle t = (ColoredTriangle) p; return v1.equals(t.getPoint(1)) && v2.equals(t.getPoint(2)) && v3.equals(t.getPoint(3)) && c.equals(t.getColor()); } else return false; } Implementazione - facilitatore equals() instanceof verifica se l'operando sinistro è un'istanza di quello destro Poiché si tratta di una sovrascrittura, il tipo di parametro è Object

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Implementazione - facilitatore equals() ColoredTriangle e = new ColoredTriangle(); ColoredTriangle f = new ColoredTriangle(new Point(2,1), new Point(1,2), new Point(3,2), Color.YELLOW); ColoredTriangle g = new ColoredTriangle(new Point(2,1), new Point(1,2), new Point(3,2), Color.YELLOW); boolean flag1 = e.equals(f); boolean flag2 = e.equals(g); System.out.println(flag1 + " " + flag2 + " " + flag3);

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Implementazione - facilitatore equals()

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Implementazione - facilitatore paint() // paint(): facilitatore di rendering public void paint(Graphics g) Point v1 = getPoint(1); Point v2 = getPoint(2); Point v3 = getPoint(3); Color c = getColor(); g.setColor(c); Polygon t = new Polygon(); t.addPoint(v1.x, v1.y); t.addPoint(v2.x, v2.y); t.addPoint(v3.x, v3.y); g.fillPolygon(t); } Parte di awt Rappresenta un poligono usando l'elenco di punti nel poligono referenziato da t