La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Raffaele Nicolussi Stefano Paolozzi Programmazione.

Presentazioni simili


Presentazione sul tema: "Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Raffaele Nicolussi Stefano Paolozzi Programmazione."— Transcript della presentazione:

1 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Raffaele Nicolussi Stefano Paolozzi Programmazione Ingegneria TLC Esercitazione 2 10/03/2009

2 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Input/Output su finestra import javax.swing.JOptionPane; public class FinestraOutput { public static void main(String[] args) { String nome = JOptionPane.showInputDialog("Come ti chiami?"); nome = nome.toUpperCase(); String stringaVisualizzata = "Ciao " + nome + ", come stai?"; JOptionPane.showMessageDialog(null,stringaVisualizzata); System.exit(0); } }

3 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 1 Scrivere un programma Java che legga in input da tastiera una stringa e restituisca in output su video la stringa ottenuta concatenando la stringa ottenuta dalla stringa inserita trasformando tutti i caratteri della stringa in maiuscolo e la stringa ottenuta dalla stringa inserita trasformando tutti i caratteri in minuscolo. Ad esempio, se viene inserita da tastiera la stringa " Ciao ", il risultato dovrà essere " CIAOciao ". Effettuare l'input da tastiera usando la finestra di dialogo della classe JOptionPane e e l'output usando il metodo println

4 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 1 - Soluzione import javax.swing.JOptionPane; public class Ese1 { public static void main(String[] args) { String leggi = JOptionPane.showInputDialog ("inserisci una stringa:"); String maiuscola = leggi.toUpperCase(); String minuscola = leggi.toLowerCase(); System.out.println("La stringa soluzione e' " + maiuscola + minuscola ); System.exit(0); } }

5 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 1 – Soluzione (con meno variabili…) import javax.swing.JOptionPane; public class Ese1 { public static void main(String[] args) { String leggi = JOptionPane.showInputDialog ("inserisci una stringa:"); System.out.println("La stringa soluzione e' " + leggi.toUpperCase() + leggi.toLowerCase()); System.exit(0); } }

6 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Input/Output da tastiera – La classe Scanner import java.util.Scanner; public class ClassScanner{ public static void main(String[] args) { System.out.print("Inserisci un numero: "); Scanner s = new Scanner(System.in); int num = s.nextInt(); s = new Scanner(System.in); System.out.print("Inserisci una stringa: "); String str = s.nextLine(); s.close(); System.out.println("Hai inserito il numero " + num + " e la stringa '" + str + "'"); } }

7 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 2 Scrivere un programma Java che legga in input un numero intero e restituisca il quadrato di tale numero.

8 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 2 – Soluzione import java.util.Scanner; public class Ese2{ public static void main(String[] args) { System.out.print("Inserisci un numero: "); Scanner s = new Scanner(System.in); int num = s.nextInt(); s.close(); System.out.println("la radice quadrata e' " + num*num); } }

9 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Istruzioni condizionali if (condizione) { istruzione1; istruzione2; istruzione3;... } [else { istruzioneA; istruzioneB;... }]

10 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Condizioni = assegnazione == uguaglianza ! = differenza > maggiore < minore && (AND logico) || (OR logico) E' possibile concatenare tra loro diversi Operatori per avere significati differenti: >= maggiore e uguale <= minore e uguale += assegna e aggiunge un valore -= assegna e sottrae un valore

11 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esempio istruzione if public class Negativo { public static void main(String[] args) { int a=-4; if( a<0 ) { System.out.println("Attenzione! Il valore di a e' negativo!"); } } }

12 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 3 Si vuole fare il calcolo dell'inverso di una variabile reale a. L'inverso 1/a è definito solo se a è diverso da zero. Per questa ragione, si vuole che il programma stampi un messaggio di errore se a è pari a zero, e calcoli l'inverso se la variabile è diversa da zero.

13 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 3 - Soluzione import javax.swing.JOptionPane; public class Inverso { public static void main(String[] args) { double a = Double.parseDouble( JOptionPane.showInputDialog("Inserire il nume ro: ")); if( a==0 ) { System.out.println("La variabile vale zero."); else { System.out.println("L'inverso vale " + 1/a); } System.exit(0); } }

14 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 3 – Soluzione 2 import java.util.Scanner; public class Inverso { public static void main(String[] args) { System.out.print("Inserisci un numero: "); Scanner s = new Scanner(System.in); Double a = s.nextDouble(); s.close(); if( a==0 ) System.out.println("La variabile vale zero."); else System.out.println("L'inverso vale " + 1/a); } }

15 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 4 Scrivere una classe che simuli il lancio simultaneo di tre dadi con sei facce. Se il punteggio complessivo ottenuto è superiore a 12 il giocatore vince, altrimenti perde. Stampare a video una stringa che identifichi la vittoria o la sconfitta del giocatore. Si supponga di avere a disposizione la seguente classe dado public class dado { public static int lancia() { return (int)(Math.random()*6)+1; } }

16 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 4 – Soluzione (dado.java) public class dado { public static int lancia() { return (int)(Math.random()*6)+1; } }

17 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 4 – Soluzione (LancioDadi.java) import javax.swing.JOptionPane; public class LancioDadi { public static void main(String[] args) { gioco(); System.exit(0); } public static void gioco() { // Il metodo restituisce 1 se vince il giocatore, 0 s e vince il computer int primoNumero=dado.lancia(); System.out.println("Primo Numero: " + primoNumero); int secondoNumero=dado.lancia(); System.out.println("Secondo Numero: " + secondoNumero );

18 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 4 - Soluzione int terzoNumero=dado.lancia(); System.out.println("Terzo Numero: " + terzoNumero); int totale=primoNumero+secondoNumero+terzoNumero; System.out.println("Totale: " + totale); String esito; if (totale<=12) esito="perso!!!"; else esito="vinto!!!"; JOptionPane.showMessageDialog(null, "Il giocatore ha " + esito); } }

19 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Istruzioni condizionali annidate if (condizione) { istruzione1; istruzione2; istruzione3;... } else if { istruzioneA; istruzioneB;... } else { istruzioneAA; istruzioneBB;... }

20 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 5 Si scriva una classe per risolvere equazioni di secondo grado con il calcolo del discriminante, utilizzando istruzioni condizionali Suggerimento: si considerino 3 casi: soluzioni reali e distinte, soluzioni reali e coincidenti, soluzioni complesse, in base al valore del discriminante (>0, =0, <0)

21 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 5 - Soluzione public class SecondoGrado { public static void main (String args[]) { double a=2, b=5, c=3; double d; double s1, s2; d=b*b-4*a*c; if( d==0 ) { s1=(-b - Math.sqrt( d ))/(2*a); s2=s1; System.out.println("Soluzioni coincidenti: " + s1); } else if( d>0 ) { s1=(-b - Math.sqrt( d ))/(2*a); s2=(-b + Math.sqrt( d ))/(2*a); System.out.println("Soluzioni reali: " + s1 + " " + s2) ; } else { System.out.println("Soluzioni complesse"); } } }

22 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Esercizio 5 - Soluzione public class SecondoGrado { public static void main (String args[]) { double a=2, b=5, c=3; double d; double s1, s2; d=b*b-4*a*c; if( d==0 ) { s1=(-b - Math.sqrt( d ))/(2*a); s2=s1; System.out.println("Soluzioni coincidenti: " + s1); } else if( d>0 ) { s1=(-b - Math.sqrt( d ))/(2*a); s2=(-b + Math.sqrt( d ))/(2*a); System.out.println("Soluzioni reali: " + s1 + " " + s2) ; } else { System.out.println("Soluzioni complesse"); } } }

23 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Calcolo del Massimo Comun Divisore (MCD) Vogliamo realizzare un metodo pubblico statico che, presi come parametri due interi positivi x ed y, calcoli e restituisca il massimo comun divisore mcd(x,y). Es.: mcd(12, 8) = 4 mcd(12, 6) = 6 mcd(12, 7) = 1

24 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE MCD: sfruttando direttamente la definizione Cerchiamo il massimo tra i divisori comuni di x ed y Osservazione: 1 <= mcd(x,y) <= min(x,y) Quindi, si provano i numeri compresi tra 1 e min(x,y). Conviene iniziare da min(x,y) e scendere verso 1. Appena si è trovato un divisore comune di x ed y, lo si restituisce.

25 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE MCD usando il metodo di Euclide Il metodo di Euclide permette di ridursi più velocemente a numeri più piccoli, sfruttando la seguente proprietà: mcd(x,y) = x (oppure y), se x = y mcd(x,y) = mcd(x-y, y), se x > y mcd(x,y) = mcd(x, y-x), se x < y Questa proprietà si dimostra facilmente, mostrando che i divisori comuni di x e y sono anche divisori di x-y (nel caso in cui x>y). Es. mcd(12,8) = mcd(12-8,8) = mcd(4, 8-4) = 4 Per ottenere un algoritmo si applica ripetutamente il procedimento fino a che non si ottiene che x=y.

26 Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Informazioni Ricevimento: da concordare con lo studente a molte domande possiamo rispondere per usate anche la mailing-list del corso Raffaele Nicolussi Stefano Paolozzi Web: Mailing-list: istruzioni sul sito (in allestimento)


Scaricare ppt "Università degli Studi La Sapienza – Corso di PROGRAMMAZIONE Raffaele Nicolussi Stefano Paolozzi Programmazione."

Presentazioni simili


Annunci Google