La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione Ingegneria TLC

Presentazioni simili


Presentazione sul tema: "Programmazione Ingegneria TLC"— Transcript della presentazione:

1 Programmazione Ingegneria TLC
Esercitazione 2 10/03/2009

2 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 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 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 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 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 Esercizio 2 Scrivere un programma Java che legga in input un numero intero e restituisca il quadrato di tale numero.

8 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 Istruzioni condizionali
if (condizione) { istruzione1; istruzione2; istruzione3; ... } [else { istruzioneA; istruzioneB; }]

10 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 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 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 Esercizio 3 - Soluzione import javax.swing.JOptionPane; public class Inverso {   public static void main(String[] args) {     double a = Double.parseDouble(           JOptionPane.showInputDialog("Inserire il numero: "));     if( a==0 ) {       System.out.println("La variabile vale zero.");     else {       System.out.println("L'inverso vale " + 1/a);     }     System.exit(0);   } }

14 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 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 Esercizio 4 – Soluzione (dado.java)
public class dado  {         public static int lancia()        {             return (int)(Math.random()*6)+1;         }                }

17 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 se vince il computer                  int primoNumero=dado.lancia();         System.out.println("Primo Numero: " + primoNumero);         int secondoNumero=dado.lancia();         System.out.println("Secondo Numero: " + secondoNumero);

18 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 Istruzioni condizionali annidate
if (condizione) { istruzione1; istruzione2; istruzione3; ... } else if { istruzioneA; istruzioneB; else istruzioneAA; istruzioneBB;

20 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 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 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 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 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 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 Informazioni Ricevimento: E-mail: Web: Mailing-list:
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 "Programmazione Ingegneria TLC"

Presentazioni simili


Annunci Google