Esempi JAVA: differenze tra le versioni
Da Bioingegneria Elettronica e Informatica.
(→Prodotto tra matrici) |
|||
Riga 193: | Riga 193: | ||
== Prodotto tra matrici == | == Prodotto tra matrici == | ||
+ | <syntaxhighlight lang="java" line> | ||
+ | public class Principale { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | new Principale().run(); | ||
+ | } | ||
+ | |||
+ | public void run() { | ||
+ | int r1, c1; | ||
+ | int r2, c2; | ||
+ | int k; | ||
+ | |||
+ | // Affinchè il prodotto tra matrici possa essere eseguito è necessario che c1 = r2; | ||
+ | |||
+ | // Dimensioni prima matrice | ||
+ | r1 = 2; | ||
+ | c1 = 3; | ||
+ | |||
+ | // Dimensioni della seconda matrice | ||
+ | r2 = 3; | ||
+ | c2 = 5; | ||
+ | |||
+ | // Valorizzazzione matrice1 con numeri interi da 0 (r1*c1)-1 | ||
+ | k = 0; | ||
+ | |||
+ | int[][] mat1 = new int[r1][c1]; | ||
+ | |||
+ | for (int i = 0; i < r1; i++) { | ||
+ | for (int j = 0; j < c1; j++) { | ||
+ | mat1[i][j] = k; | ||
+ | k++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Valorizzazzione matrice1 con numeri interi da 0 (r2*c2)-1 | ||
+ | k = 0; | ||
+ | |||
+ | int[][] mat2 = new int[r2][c2]; | ||
+ | for (int i = 0; i < r2; i++) { | ||
+ | for (int j = 0; j < c2; j++) { | ||
+ | mat2[i][j] = k; | ||
+ | k++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Stampa delle matrici mat1 e mat2 | ||
+ | System.out.println("La prima matrice vale: "); | ||
+ | stampaMatrice(mat1, r1, c1); | ||
+ | System.out.println("La seconda matrice vale: "); | ||
+ | stampaMatrice(mat2, r2, c2); | ||
+ | |||
+ | /* Controllo che le dimensioni delle matrici rispettano r2 == c1 | ||
+ | * affinchè sia possibile effettuare il prodotto tra le due matrici | ||
+ | */ | ||
+ | if (r2 != c1) { | ||
+ | System.out.println("Non è possibile fare il prodotto tra matrici"); | ||
+ | } | ||
+ | else { | ||
+ | // Dichiarazione della matrice prodotto mat3 di dimensioni r1*c2 | ||
+ | int[][] mat3 = new int[r1][c2]; | ||
+ | |||
+ | // Il prodotto tra le matrici è effettuato nella relativa funzione | ||
+ | prodottoMatrici(mat1, r1, c1, mat2, r2, c2, mat3); | ||
+ | |||
+ | // Stampa della matrice prodotto mat3 | ||
+ | System.out.println("La matrice prodotto vale: "); | ||
+ | stampaMatrice(mat3, r1, c2); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Funzione per la stampa della matrice mat note le sue dimensioni r e c | ||
+ | * @param mat | ||
+ | * @param r | ||
+ | * @param c | ||
+ | */ | ||
+ | public void stampaMatrice(int[][] mat, int r, int c) { | ||
+ | int i = 0; | ||
+ | int j = 0; | ||
+ | |||
+ | for (i = 0; i < r; i++) { | ||
+ | for (j = 0; j < c; j++) { | ||
+ | System.out.print(mat[i][j] + "\t"); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Funzione che effettua il prodotto tra matrici | ||
+ | * @param A prima matrice | ||
+ | * @param r1 numero di righe della prima matrice | ||
+ | * @param c1 numero di colonne della prima matrice | ||
+ | * @param B seconda matrice | ||
+ | * @param r2 numero di righe della seconda matrice | ||
+ | * @param c2 numero di colonne della seconda matrice | ||
+ | * @param C matrice prodotto | ||
+ | */ | ||
+ | public void prodottoMatrici(int[][] A, int r1, int c1, int[][] B, int r2, int c2, int[][] C) { | ||
+ | int i = 0; | ||
+ | int j = 0; | ||
+ | int k = 0; | ||
+ | |||
+ | // Algoritmo per il prodotto tra matrici | ||
+ | for (i = 0; i < r1; i++) { | ||
+ | for (k = 0; k < c2; k++) { | ||
+ | C[i][k] = 0; | ||
+ | for (j = 0; j < c1; j++) { | ||
+ | C[i][k] = C[i][k] + A[i][j] * B[j][k]; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> |
Versione delle 10:52, 22 mar 2017
Indice
Hello World
Esercizio introduttivo a JAVA. Il seguente codice mostra a video la stringa "Hello World !"
/* Questo è il primo programma in JAVA
* e inizia con un commento multilinea
*/
// Commento su singola linea
/**
* Uso della javadoc
* Questo programma deve stampare sullo standard output, ovvero la console,
* la stringa "Hello World !"
*
* @author antonio
*
*/
public class Principale {
/**
* Metodo di avvio del programma
* @param args argomenti passati dalla linea di comando
*/
public static void main(String[] args) {
// Standard output
System.out.println("Hello World !");
}
}
Uso delle funzioni: Doppio e Somma
/** Programma per mostrare il funzionamento di:
* 1. Funzione chiamante (main) e funzione chiamata;
* 2. Variabili locali e parametri (valori) attuali;
* 3. Passaggio per Valore;
*
* @author antonio
*
*/
public class Principale {
public static void main(String[] args) {
new Principale().run();
}
public void run() {
// Dichiarazione e inizializzazione delle variabili origin, origin2 e result
int origin = 3;
int origin2 = 5;
int result = 0;
System.out.println("Doppio di una variabile");
// Stampa in console del valore attuale di origin
System.out.println("Il valore di origin è: " + origin);
/* Calcolo il doppio della variabile origin:
* 1. chiamo la funzione doppio
* 2. salvo il risultato nella variabile result
*/
result = doppio(origin);
// Stampa in console il valore di result
System.out.println("Il valore di result è: " + result);
System.out.println("Somma di due variabili");
// Stampa in console del valore attuale di origin e origin2
System.out.println("Il valore di origin è: " + origin);
System.out.println("Il valore di origin2 è: " + origin2);
// Calcolo la somma di origin e origin2
result = somma(origin, origin2);
// Stampa in console il valore di result
System.out.println("Il valore di result è: " + result);
}
/**
* Funzione per calcolare il doppio di un valore
* @param val
* @return
*/
public int doppio(int val) {
// Dichiaro la variabile res per salvare il doppio della variabile val
int res = 0;
res = val * 2;
// Restituzione di res
return res;
}
/**
* Funzione per calcolare la somma di due addendi
* @param add1
* @param add2
* @return
*/
public int somma(int add1, int add2) {
// Codice compatto che fa la somma di add1 e add2 e restituisce il risultato
return add1 + add2;
}
}
Scambio di due elementi all'interno di un vettore
public class Principale {
public static void main(String[] args) {
new Principale().run();
}
public void run() {
// Vettore formato da due elementi
int[] v = {3,5};
// Stampo il valore delle due variabili prima dello scambio
System.out.println("La prima componente del vettore vale: " + v[0]);
System.out.println("La seconda componente del vettore vale: " + v[1]);
// Effettuo lo scambio
scambia(v);
// Stampo il valore delle due variabili dopo lo scambio
System.out.println("La prima componente del vettore vale: " + v[0]);
System.out.println("La seconda componente del vettore vale: " + v[1]);
// Generalizzazione a vettore formato da N elementi in cui indico le componenti da scambiare
// Vettore formato da N elementi
int N = 10;
int i = 0;
int[] vett = new int[N];
for(i = 0; i < N; i++)
vett[i] = i+1;
int ind1 = 3;
int ind2 = 8;
// Stampo il vettore prima dello scambio
for(i = 0; i < N; i++)
System.out.print(vett[i] + " ");
System.out.println();
// Effettuo lo scambio
scambia_componenti(vett, ind1, ind2);
// Stampo il vettore dopo dello scambio
for(i = 0; i < N; i++)
System.out.print(vett[i] + " ");
System.out.println();
}
/**
* Funzione scambia funzionante
* @param V
*/
public void scambia(int[] V) {
int temp;
temp = V[0];
V[0] = V[1];
V[1] = temp;
}
/**
* Funzione di scambio delle componenti in posizione c1 e c2 del vettore V
* @param V
* @param c1
* @param c2
*/
public void scambia_componenti(int[] V, int c1, int c2) {
int temp;
temp = V[c1];
V[c1] = V[c2];
V[c2] = temp;
}
}
Prodotto tra matrici
public class Principale {
public static void main(String[] args) {
new Principale().run();
}
public void run() {
int r1, c1;
int r2, c2;
int k;
// Affinchè il prodotto tra matrici possa essere eseguito è necessario che c1 = r2;
// Dimensioni prima matrice
r1 = 2;
c1 = 3;
// Dimensioni della seconda matrice
r2 = 3;
c2 = 5;
// Valorizzazzione matrice1 con numeri interi da 0 (r1*c1)-1
k = 0;
int[][] mat1 = new int[r1][c1];
for (int i = 0; i < r1; i++) {
for (int j = 0; j < c1; j++) {
mat1[i][j] = k;
k++;
}
}
// Valorizzazzione matrice1 con numeri interi da 0 (r2*c2)-1
k = 0;
int[][] mat2 = new int[r2][c2];
for (int i = 0; i < r2; i++) {
for (int j = 0; j < c2; j++) {
mat2[i][j] = k;
k++;
}
}
// Stampa delle matrici mat1 e mat2
System.out.println("La prima matrice vale: ");
stampaMatrice(mat1, r1, c1);
System.out.println("La seconda matrice vale: ");
stampaMatrice(mat2, r2, c2);
/* Controllo che le dimensioni delle matrici rispettano r2 == c1
* affinchè sia possibile effettuare il prodotto tra le due matrici
*/
if (r2 != c1) {
System.out.println("Non è possibile fare il prodotto tra matrici");
}
else {
// Dichiarazione della matrice prodotto mat3 di dimensioni r1*c2
int[][] mat3 = new int[r1][c2];
// Il prodotto tra le matrici è effettuato nella relativa funzione
prodottoMatrici(mat1, r1, c1, mat2, r2, c2, mat3);
// Stampa della matrice prodotto mat3
System.out.println("La matrice prodotto vale: ");
stampaMatrice(mat3, r1, c2);
}
}
/**
* Funzione per la stampa della matrice mat note le sue dimensioni r e c
* @param mat
* @param r
* @param c
*/
public void stampaMatrice(int[][] mat, int r, int c) {
int i = 0;
int j = 0;
for (i = 0; i < r; i++) {
for (j = 0; j < c; j++) {
System.out.print(mat[i][j] + "\t");
}
System.out.println();
}
}
/**
* Funzione che effettua il prodotto tra matrici
* @param A prima matrice
* @param r1 numero di righe della prima matrice
* @param c1 numero di colonne della prima matrice
* @param B seconda matrice
* @param r2 numero di righe della seconda matrice
* @param c2 numero di colonne della seconda matrice
* @param C matrice prodotto
*/
public void prodottoMatrici(int[][] A, int r1, int c1, int[][] B, int r2, int c2, int[][] C) {
int i = 0;
int j = 0;
int k = 0;
// Algoritmo per il prodotto tra matrici
for (i = 0; i < r1; i++) {
for (k = 0; k < c2; k++) {
C[i][k] = 0;
for (j = 0; j < c1; j++) {
C[i][k] = C[i][k] + A[i][j] * B[j][k];
}
}
}
}
}