--------------------------------------- double x, y; ... y = Math.sqrt(x); ... --------------------------------------- static double tangente (double alfa) { return (Math.sin(alfa) / Math.cos(alfa)); } --------------------------------------- double x, y; ... x = tangente(y); ... --------------------------------------- class EsempioDiMetodo { static double cotangente (double x) { return (Math.cos(x) / Math.sin(x)); } public static void main (String[] args) { double angolo, res; angolo = 3.14 / 4; res = cotangente(angolo); System.out.println("La cotangente di " + angolo + " e': " + res); } } --------------------------------------- ::= ::= static ({ [, ]}) --------------------------------------- class ... { static () { ... } static () { ... } public static void main (String[] args) { ... } static () { ... } static () { ... } } --------------------------------------- import java.io.*; class EsempioDiMetodo2 { static char convertiInMaiuscolo(char c) { if (c < 'a' || c > 'z') return(c); else return ((char) (c + 'A' - 'a')); } public static void main (String[] args) throws IOException { char carattere; do { carattere = (char) System.in.read(); System.out.print(convertiInMaiuscolo(carattere)); } while (carattere != '\n'); } } --------------------------------------- class Parametri { static void inc(int x) { x++; } public static void main (String[] args) { int y = 0; inc(y); System.out.println(y); } } --------------------------------------- >javac Parametri.java >java Parametri 0 --------------------------------------- class Parametri { static int inc(int x) { return (x + 1); } public static void main (String[] args) { int y = 0; y = inc(y); System.out.println(y); } } --------------------------------------- class Ingresso { static int leggiIntero() { byte[] b = new byte[9]; int res = 0; try { System.in.read(b); } catch (Exception e) {} for (int i = 0; i < b.length; i++) if (b[i] >= '0' && b[i] <= '9') res = res * 10 + b[i] - '0'; else break; return res; } public static void main (String[] args) { int y; System.out.print("Inserisci un numero intero: "); y = leggiIntero(); y++; System.out.println(y); } } --------------------------------------- >javac Ingresso.java >java Ingresso Inserisci un numero intero: 12 13 --------------------------------------- class Ingresso { static int leggiIntero() { byte[] b = new byte[9]; int res = 0; try { System.in.read(b); } catch (Exception e) {} for (int i = 0; i < b.length; i++) if (b[i] >= '0' && b[i] <= '9') res = res * 10 + b[i] - '0'; else break; return res; } public static void main (String[] args) { int x,y; System.out.print("Inserisci un numero intero: "); y = leggiIntero(); System.out.print("Inserisci un numero intero: "); x = leggiIntero(); System.out.println(x + y); } } --------------------------------------- /* Programma per moltiplicare numeri complessi. Versione 1. Un numero complesso e' rappresentato da due numeri. Uso solo numeri interi per semplicita' nell'input */ class Complessi1 { static int prodRe (int aRe, int aIm, int bRe, int bIm) { // Restituisce la parte reale del prodotto return (aRe * bRe - aIm * bIm); } static int prodIm (int aRe, int aIm, int bRe, int bIm) { // Restituisce la parte immaginaria del prodotto return (aRe * bIm + aIm * bRe); } public static void main (String[] args) { int xRe, xIm, yRe, yIm, zRe, zIm; System.out.print("Parte reale di x: "); xRe = leggiIntero(); System.out.print("Parte immaginaria di x: "); xIm = leggiIntero(); System.out.print("Parte reale di y: "); yRe = leggiIntero(); System.out.print("Parte immaginaria di y: "); yIm = leggiIntero(); zRe = prodRe(xRe, xIm, yRe, yIm); zIm = prodIm(xRe, xIm, yRe, yIm); System.out.print("(" + xRe + " + i * " + xIm + ")"); System.out.print(" * "); System.out.print("(" + yRe + " + i * " + yIm + ")"); System.out.print(" = "); System.out.println("(" + zRe + " + i * " + zIm + ")"); } // Metodo per leggere interi da input static int leggiIntero() { byte[] b = new byte[9]; int res = 0; try { System.in.read(b); } catch (Exception e) {} for (int i = 0; i < b.length; i++) if (b[i] >= '0' && b[i] <= '9') res = res * 10 + b[i] - '0'; else break; return res; } } --------------------------------------- for (int i = 1; i <= 10; i++) { ... } --------------------------------------- class Prova { public static void main (String[] args) { int j = 6; for (int i = 1; i <= 5; i++) { System.out.println(i); System.out.println(j); } System.out.println(i); System.out.println(j); } } --------------------------------------- >javac Prova.java Prova.java:8: Undefined variable: i System.out.println(i); ^ 1 error > --------------------------------------- class Visibilita { static void f (int i) { // Qui i e' visibile, j no } static void g (int j) { // Qui j e' visibile, i no } public static void main (String[] args) { // Qui non sono visibili ne' i ne' j } } --------------------------------------- class Visibilita { static void f (int i) { int j; ... } static void g (int j) { int i; ... } public static void main (String[] args) { int j; ... } } --------------------------------------- class Visibilita { static int x,y; static void f (int i) { ... } static int g (int j) { ... } public static void main (String[] args) { double j; ... } } --------------------------------------- class Visibilita { static int i1; static void f (int i2) { // Sarebbe lo stesso con int i2; ...; for (int i3 ...) { ...; if (...) { int i4; ...; } } } public static void main (String[] args) { int j; ... } } --------------------------------------- class Nascoste { static int x,y; //Def. var. globali static void f() { int x; x = 1; // Locale y = 1; // Globale System.out.println(x); System.out.println(y); } public static void main (String[] args) { x = 0; // Globale y = 0; // Globale f(); System.out.println(x); System.out.println(y); } } --------------------------------------- >java Nascoste 1 1 0 1 --------------------------------------- class VariabiliBlocchi { public static void main (String[] args) { int x = 0; if (x > 0) { int x = 1; x++; } } } --------------------------------------- >javac VariabiliBlocchi.java VariabiliBlocchi.java:6: Variable 'x' is already defined in this method. int x = 1; ^ 1 error > --------------------------------------- ... int i; ... for (int i = ...) ... --------------------------------------- class Parametri { static int x; static void inc() { x++; } public static void main (String[] args) { x = 0; inc(); System.out.println(x); } } --------------------------------------- class Parametri { static int inc(int x) { return (x + 1); } public static void main (String[] args) { int y = 0; y = inc(y); System.out.println(y); } } --------------------------------------- class Automatiche { static void f() { int i = 0; i++; System.out.println(i); } public static void main (String[] args) { f(); f(); } } --------------------------------------- >javac Automatiche.java >java Automatiche 1 1 --------------------------------------- class Automatiche2 { static void f() { int i; g(); ...; } static void g() { ... } public static void main (String[] args) { f(); } } --------------------------------------- class EsercizioScope1 { static int x, y; static int metodo1(int x) { x = 1; y = 1; System.out.println("metodo1 " + x + " " + y); return x + y; } static void metodo2() { int y; x = 2; y = metodo1(x); System.out.println("metodo2 " + x + " " + y); } public static void main (String[] args) { x = 0; y = 0; metodo2(); System.out.println("main " + x + " " + y); } } --------------------------------------- class EsempioPila { static void f (int x) { int y = 3; } static void g (int z) { int i = 2; f(z); } public static void main (String[] args) { int w = 1; g(w); } } --------------------------------------- class ... { static void f() { int x; g(); ...; } static void g() { ...; } public static void main (String[] args) { ...; f(); g(); } } --------------------------------------- class EsercizioPilaJVM { static int x = 0, y = 0; static void metodo1() { int x = 1; y = 1; metodo2(); } static void metodo2() { x = 2; } public static void main (String[] args) { int y = 3; x = 3; metodo1(); } } --------------------------------------- class EsercizioScope2 { static int x, y; static int metodo1(int x) { y = ++x; System.out.println("metodo1 " + x + " " + y); return x + y; } static void metodo2() { int y = 2; y = metodo1(y); x = y++; System.out.println("metodo2 " + x + " " + y); } public static void main (String[] args) { x = 0; y = 0; metodo2(); System.out.println("main " + x + " " + y); } } --------------------------------------- class EsercizioScope3 { static int a = 10, b = 15; public static void m1 (int a) { int i = 4; System.out.println(a + i + b); m2(a); } public static void m2 (int b) { System.out.println(a + b); } public static void main (String args[]) { int i = 1; m1(i); i = i + 1; a = 0; m2(i); } } --------------------------------------- class ... { static void f(int x) { ...; } public static void main (String[] args) { int y, z; boolean w; ...; z = f(y,z); f(w); } } --------------------------------------- class Overloading { static int quarta (int x) { return x * x * x * x; } static double quarta (double x) { return x * x * x * x; } public static void main (String[] args) { int a = 3; double b = 3.7; System.out.println(quarta(a)); System.out.println(quarta(b)); } } --------------------------------------- static double quarta (int x) --------------------------------------- >javac Overloading.java Overloading.java:7: Methods can't be redefined with a different return type: double quarta(int) was ^ int quarta(int) static double quarta (int x) { 1 error --------------------------------------- class StampaMatrice { static void stampaM(int[][] m) { for (int i = 0; i < m.length; i++) { for (int j = 0; j < m[i].length; j++) System.out.print(m[i][j] + "\t"); System.out.println(); } } public static void main (String[] args) { int[][] matrice = { {12, 23, 23, 5678}, {987, 87 , 3, 0}, {12354,34,2,0}}; stampaM(matrice); } } --------------------------------------- 12 23 23 5678 987 87 3 0 12354 34 2 0 --------------------------------------- /* Programma per la gestione di numeri complessi. Versione 2. Un numero complesso e' rappresentato da un vettore di 2 elementi. Uso solo numeri interi per semplicita' nell'input*/ class Complessi2 { static int[] prodC (int[] a, int[] b) { int[] c = new int[2]; c[0] = a[0] * b[0] - a[1] * b[1]; c[1] = a[0] * b[1] + a[1] * b[0]; return c; } public static void main (String[] args) { int[] x = new int[2]; int[] y = new int[2]; int[] z = new int[2]; System.out.print("Parte reale di x: "); x[0] = leggiIntero(); System.out.print("Parte immaginaria di x: "); x[1] = leggiIntero(); System.out.print("Parte reale di y: "); y[0] = leggiIntero(); System.out.print("Parte immaginaria di y: "); y[1] = leggiIntero(); z = prodC(x,y); System.out.print("(" + x[0] + " + i * " + x[1] + ")"); System.out.print(" * "); System.out.print("(" + y[0] + " + i * " + y[1] + ")"); System.out.print(" = "); System.out.println("(" + z[0] + " + i * " + z[1] + ")"); } // Metodo per leggere interi da input static int leggiIntero() { byte[] b = new byte[9]; int res = 0; try { System.in.read(b); } catch (Exception e) {} for (int i = 0; i < b.length; i++) if (b[i] >= '0' && b[i] <= '9') res = res * 10 + b[i] - '0'; else break; return res; } } --------------------------------------- static void scriviC(int[] a) { System.out.print("(" + a[0] + " + i * " + a[1] + ")"); } --------------------------------------- static int[] prodC (int[] a, int[] b, int[] c) { return (prodC(prodC(a,b),c)); } --------------------------------------- ... z = prodC(x,y); ... z = prodC(x,y,z); ... --------------------------------------- class ParametriArray1 { static void f(int[] a) { for (int i = 0; i < a.length; i++) a[i] = 0; } public static void main (String[] args) { int[] vettore = { 1, 2, 3 }; for (int i = 0; i < vettore.length; i++) System.out.println(vettore[i]); f(vettore); for (int i = 0; i < vettore.length; i++) System.out.println(vettore[i]); } } --------------------------------------- class ParametriArray2 { static void m(int a) { a = 0; } public static void main (String[] args) { int[] vettore = {1, 1, 1}; m(vettore[1]); System.out.println(vettore[1]); } } --------------------------------------- import java.io.*; class Prova { public static void main (String[] args) throws IOException { int n; int[] a; n = leggiIntero(); a = new int[n]; System.out.println(a.length); for (int i = 0; i < a.length; ++i) System.out.println(a[i]); } // Metodo per leggere interi da input static int leggiIntero() { byte[] b = new byte[9]; int res = 0; try { System.in.read(b); } catch (Exception e) {} for (int i = 0; i < b.length; i++) if (b[i] >= '0' && b[i] <= '9') res = res * 10 + b[i] - '0'; else break; return res; } } --------------------------------------- class ... { public static void main (String[] args) { ... main(x); } } --------------------------------------- class Main { public static void main (String[] args) { System.out.println("Numero argomenti: " + args.length); for (int i = 0; i < args.length; i++) System.out.println(args[i]); } } --------------------------------------- >java Main Numero argomenti: 0 > --------------------------------------- >java Main pippo pluto minni Numero argomenti: 3 pippo pluto minni > --------------------------------------- static void leggiC(int[] a) { System.out.print("Parte reale: "); a[0] = leggiIntero(); System.out.print("Parte immaginaria: "); a[1] = leggiIntero(); } --------------------------------------- /* Programma per la gestione di numeri complessi. Versione 3. Un numero complesso e' rappresentato da un vettore di 2 elementi. Il metodo prodC accetta due o tre argomenti. Aggiunto il metodo leggiC. Uso solo numeri interi per semplicita' nell'input */ class Complessi3 { // Metodo per leggere interi da input static int leggiIntero() { byte[] b = new byte[9]; int res = 0; try { System.in.read(b); } catch (Exception e) {} for (int i = 0; i < b.length; i++) if (b[i] >= '0' && b[i] <= '9') res = res * 10 + b[i] - '0'; else break; return res; } static int[] prodC (int[] a, int[] b) { int[] c = new int[2]; c[0] = a[0] * b[0] - a[1] * b[1]; c[1] = a[0] * b[1] + a[1] * b[0]; return c; } static int[] prodC (int[] a, int[] b, int[] c) { return (prodC(prodC(a,b),c)); } static void leggiC(int[] a) { System.out.print("Parte reale: "); a[0] = leggiIntero(); System.out.print("Parte immaginaria: "); a[1] = leggiIntero(); } static void scriviC(int[] a) { System.out.print("(" + a[0] + " + i * " + a[1] + ")"); } public static void main (String[] args) { int[] x = new int[2]; int[] y = new int[2]; int[] z = new int[2]; int[] w = new int[2]; leggiC(x); leggiC(y); leggiC(z); w = prodC(x,y,z); scriviC(x); System.out.print(" * "); scriviC(y); System.out.print(" * "); scriviC(z); System.out.print(" = "); scriviC(w); System.out.println(); } } --------------------------------------- import java.io.*; class Dadi { static int lanciaDado() { return (1 + (int) (Math.random() * 6)); } public static void main (String[] args) throws IOException { int giocatore1, giocatore2, risposta; do { System.out.print( "Giocatore1: premi per lanciare il tuo dado"); risposta = System.in.read(); giocatore1 = lanciaDado(); System.out.println( "Giocatore1 ha ottenuto un " + giocatore1); System.out.print( "Giocatore2: premi per lanciare il tuo dado"); risposta = System.in.read(); giocatore2 = lanciaDado(); System.out.println( "Giocatore2 ha ottenuto un " + giocatore2); if (giocatore1 == giocatore2) System.out.println("Pari!"); else if (giocatore1 > giocatore2) System.out.println("Ha vinto Giocatore1"); else System.out.println("Ha vinto Giocatore2"); System.out.print( " per giocare ancora, n per smettere "); risposta = System.in.read(); } while (risposta != 'n'); } } --------------------------------------- class ProvaRandom { static int lanciaDado() { return (1 + (int) (Math.random() * 6)); } public static void main (String[] args) { final int NUMEROLANCI = 1000000; int[] freq = new int[7]; for (int i = 1; i <= NUMEROLANCI; i++) freq[lanciaDado()]++; System.out.println("Numero" + "\t" + "Frequenza"); for (int i = 1; i <= 6; i++) System.out.println(i + "\t" + freq[i]); } } --------------------------------------- >java ProvaRandom Numero Frequenza 1 166595 2 167517 3 166736 4 166169 5 165865 6 167118 --------------------------------------- class ProdottoMatrici { static int leggiIntero() { byte[] b = new byte[9]; int res = 0; try { System.in.read(b); } catch (Exception e) {} for (int i = 0; i < b.length; i++) if (b[i] >= '0' && b[i] <= '9') res = res * 10 + b[i] - '0'; else break; return res; } static void leggiMatrice(int[][] m) { for (int i = 0; i < m.length; i++) for (int j = 0; j < m[i].length; j++) { System.out.print("m[" + i + "][" + j + "] = "); m[i][j] = leggiIntero(); } } static void prodottoMatrice(int[][] A, int[][] B, int[][] C) { for (int i = 0; i < C.length; i++) for (int j = 0; j < C[i].length; j++) C[i][j] = 0; for (int i = 0; i < C.length; i++) for (int j = 0; j < C[i].length; j++) for (int k = 0; k < B.length; k++) C[i][j] = C[i][j] + A[i][k] * B[k][j]; } static void stampaMatrice(int[][] m) { for (int i = 0; i < m.length; i++) { for (int j = 0; j < m[i].length; j++) System.out.print(m[i][j] + "\t"); System.out.println(); } } public static void main (String[] args) { int m1[][], m2[][], m3[][], righeM1, righeM2; System.out.print( "Numero di righe di m1 (o di colonne di m2): "); righeM1 = leggiIntero(); System.out.print( "Numero di colonne di m1 (o di righe di m2): "); righeM2 = leggiIntero(); m1 = new int[righeM1][righeM2]; m2 = new int[righeM2][righeM1]; m3 = new int[righeM1][righeM1]; System.out.println("Valori di m1: "); leggiMatrice(m1); System.out.println("Valori di m2: "); leggiMatrice(m2); prodottoMatrice(m1, m2, m3); System.out.println("m1: "); stampaMatrice(m1); System.out.println("m2: "); stampaMatrice(m2); System.out.println("m3: "); stampaMatrice(m3); } } --------------------------------------- >java ProdottoMatrici Numero di righe di m1 (o di colonne di m2): 2 Numero di colonne di m1 (o di righe di m2): 3 Valori di m1: m[0][0] = 1 m[0][1] = 2 m[0][2] = 3 m[1][0] = 2 m[1][1] = 2 m[1][2] = 1 Valori di m2: m[0][0] = 3 m[0][1] = 1 m[1][0] = 0 m[1][1] = 1 m[2][0] = 0 m[2][1] = 1 m1: 1 2 3 2 2 1 m2: 3 1 0 1 0 1 m3: 3 6 6 5