Upload
marcello-missiroli
View
50
Download
1
Embed Size (px)
Citation preview
www.googleslidesppt.com _ 30+ Ready Made Google Slides & PowerPoint Presentation for Free
Dal C/C++ a Java (in 3*30 minuti)Se sapete già programmare...non riscopriamo l'acqua calda!
Parte 2
Marcello Missiroli ([email protected])
Di
che
si
tratta?
01
02
03
04
Ipotesi
Voi conoscete già un linguaggio di
programmazione (C e/o C++)
Tesi
Non occorre rispiegare tutto daccapo:
applicheremo un insegnamento differenziale
Metodologia
Trasformeremo un programma che ben
conoscete (in C/C++) in un programma Java
Verifica
Poi toccherà a voi convertire un programma!
Calcolatrice
Un altro programma classico.
Partiremo da un codice reperibile su Internet,
completo e ben fatto, con licenza GPL.
Partiamo con lo scheletro di un programma
Java funzionante (eliminando quindi già
include e namespace).
Aggiungeremo il codice poco per volta (non ci
sta in una intera schermata!) e lo
convertiremo.
Calcolatrice (C++)
package calcolatrice;
public class Calcolatrice {
public static void main(String[] args) {
}
}
Dichiarazione di variabili.
Passo 1
package calcolatrice;
public class Calcolatrice {
public static void main(String[] args) {
int scelta, numero1, numero2, resto;
float risultato;
float numero_pot, esponente, potenza=1;
int for_potenza;
float radice, risultato_radice;
char operazione;
}
}
Dichiarazione di variabili.
Passo 1
package calcolatrice;
public class Calcolatrice {
public static void main(String[] args) {
int scelta, numero1, numero2, resto;
float risultato;
float numero_pot, esponente, potenza=1;
int for_potenza;
float radice, risultato_radice;
char operazione;
}
}
Dichiarazione di variabili.
Wow! Tutto OK!
Passo 2
...
char operazione;
do { // Inizio Ciclo D-WHILE
system("cls"); // Pulisci La Schermata
cout << endl << " .:::::::::::::::::::::::::.";
cout << endl << " .: Calcolatrice C++ by SkirK
:.";
cout << "\n" << "
:::::::::::::::::::::::::::::::";
cout << endl << " :: 1 Calcolatrice";
cout << endl << " :: 2 Potenza";
cout << endl << " :: 3 Radice Quadrata";
cout << endl << " :: 4 Esci" << endl;
cout << endl << " :: > "; cin >> scelta;
} while(scelta!=4);return 0;
}
}
Scroll in basso. Gestione menu.
Passo 2
...
char operazione;
do { // Inizio Ciclo D-WHILE
system("cls"); // Pulisci La Schermata
System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" .: Calcolatrice Java by
SkirK & Piffy :."); System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" :: 1 Calcolatrice");
System.out.println(" :: 2 Potenza");
System.out.println(" :: 3 Radice Quadrata");
System.out.println(" :: 4 Esci\n");
System.out.println(" :: > "); cin >> scelta;
} while(scelta!=4);
}
}
Applichiamo trasformazioni già note.
Passo 2
...
char operazione;
do { // Inizio Ciclo D-WHILE
system("cls"); // Pulisci La Schermata
System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" .: Calcolatrice Java by
SkirK & Piffy :."); System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" :: 1 Calcolatrice");
System.out.println(" :: 2 Potenza");
System.out.println(" :: 3 Radice Quadrata");
System.out.println(" :: 4 Esci\n");
System.out.println(" :: > "); cin >> scelta;
} while(scelta!=4);
}
}
Applichiamo trasformazioni già note.
While, e strutture di controllo,
sono identiche in C e Java
Non esiste equivalente
semplice per clsCommenti
Passo 2
...
char operazione;
do { // Inizio Ciclo D-WHILE
system("cls"); // Pulisci La Schermata
System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" .: Calcolatrice Java by
SkirK & Piffy :."); System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" :: 1 Calcolatrice");
System.out.println(" :: 2 Potenza");
System.out.println(" :: 3 Radice Quadrata");
System.out.println(" :: 4 Esci\n");
System.out.println(" :: > "); cin >> scelta;
} while(scelta!=4);
}
}
Applichiamo trasformazioni già note.
while e do..while
sono identici in C e Java
Non esiste equivalente
semplice per clsCommenti
Questo richiede un discorso
più approfondito
Input in Java
Non così semplice. Vediamo un dettaglio.
cin >> scelta;
Input in Java
Occorre utilizzare un oggetto di tipo Scanner... solitamente quando si dichiarano le variabili
Scanner in = new Scanner(System.in);
...
cin >> scelta;
Input in Java
...indicare esplicitamente il tipo di dato...
(nextFloat, nextLine, ecc..)
Scanner in = new Scanner(System.in);
...
scelta=in.nextInt();
Input in Java
…e importare l'oggetto nel progetto (prima della classe).
import java.util.Scanner;
...
Scanner in = new Scanner(System.in);
...
scelta=in.nextInt();
Passo 2
...
char operazione;
Scanner in = new Scanner(System.in);
do { // Inizio Ciclo D-WHILE
System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" .: Calcolatrice Java by
SkirK & Piffy :."); System.out.println("
.::::::::::::::::::::::::::::::::::::::.");
System.out.println(" :: 1 Calcolatrice");
System.out.println(" :: 2 Potenza");
System.out.println(" :: 3 Radice Quadrata");
System.out.println(" :: 4 Esci\n");
System.out.println(" :: > ");
scelta=in.nextInt();
} while(scelta!=4);
}
}
Inseriamo le modifiche.
Passo 3
...
scelta=in.nextInt();
if(scelta==1) {
cout << endl << " :: Num1 Operazione Num2"
<< endl; cout << " :: > "; cin >> numero1 >>
operazione >> numero2;
switch(operazione) { // Swicth Per Vedere Quale
Operazione Deve Svolgere
case '+':
risultato = numero1+numero2; break;
case '-':
risultato = numero1-numero2; break;
case '*':
risultato = numero1-numero2; break;
case '/':
risultato = numero1/numero2; break;
}
cout << "\n" << " :: Risultato: " << risultato <<
"\n\n" << " :: Premi un tasto";
system("pause>nul");}
Scelta che effettua le quattro operazioni (modificato).
Passo 3
...
scelta=in.nextInt();
if(scelta==1) {
System.out.println(" :: Num1
Operazione Num2"); System.out.print(" :: > ");
cin >> numero1 >> operazione >> numero2;
switch(operazione) { // Swicth Per Vedere Quale
Operazione Deve Svolgere
case '+':
risultato = numero1+numero2; break;
case '-':
risultato = numero1-numero2; break;
case '*':
risultato = numero1-numero2; break;
case '/':
risultato = numero1/numero2; break;
}
System.out.println("\n :: Risultato: "+ risultato +
"\n\n" + " :: Premi un tasto");
in.nextLine();}
Scelta che effettua le quattro operazioni (modificato).
if e switch uguali al C
Lettura di una stringa
Attenzione qui
Il “+” concatena le stringhe
Passo 3
...
scelta=in.nextInt();
if(scelta==1) {
System.out.println(" :: Num1
Operazione Num2"); System.out.print(" :: > ");
numero1 = in.nextInt();in.nextLine();
operazione = in.nextLine().charAt(0);
numero2 = in.nextInt();in.nextLine();
switch(operazione) { // Swicth Per Vedere Quale
Operazione Deve Svolgere
case '+':
risultato = numero1+numero2; break;
case '-':
risultato = numero1-numero2; break;
case '*':
risultato = numero1-numero2; break;
case '/':
risultato = numero1/numero2; break;
}
Scelta che effettua le quattro operazioni (modificato).
Ci sono altre soluzioni.
Più complesse ancora.
Passo 4
...
if(scelta==2) { // Blocco Esponente
cout << endl << " :: Numero: "; cin >>
numero_pot;cout << " :: Potenza: "; cin >> esponente;
for(for_potenza=0;for_potenza<esponente;for_potenza++
) potenza=potenza*numero_pot;
cout << endl << " :: Risultato: " <<potenza<< endl;
cout << endl << " :: Premi un tasto";
system("pause>nul");
}
if(scelta==3) { // Blocco Radice
cout << endl << " :: Numero: "; cin >> radice;
risultato_radice=sqrt(radice);
cout << endl << " :: Risultato: " <<
risultato_radice << endl;
cout << endl << " :: Premi un tasto";
system("pause>nul");
}
} while(scelta!=4);
Scelta che effettua le due operazioni anomale.
Passo 4
...
if(scelta==2) { // Blocco Esponente
System.out.println(" :: Numero: ");
numero_pot=in.nextInt();
System.out.println(" :: Potenza: ");
esponente=in.nextInt();
for(for_potenza=0;for_potenza<esponente;for_potenza++
) potenza=potenza*numero_pot;
System.out.println(" :: Risultato: "+potenza);
System.out.println(" :: Premi un
tasto");in.nextLine(); }
if(scelta==3) { // Blocco Radice
System.out.println(" :: Numero: ");
radice=in.nextInt();
risultato_radice=sqrt(radice);
System.out.println(" :: Risultato: "+
risultato_radice);
System.out.println(" :: Premi un
tasto");in.nextLine(); }
} while(scelta!=4);
Operazioni note.
Passo 4
...
if(scelta==2) { // Blocco Esponente
System.out.println(" :: Numero: ");
numero_pot=in.nextInt();
System.out.println(" :: Potenza: ");
esponente=in.nextInt();
for(for_potenza=0;for_potenza<esponente;for_potenza++
) potenza*=pot;
System.out.println(" :: Risultato: "+potenza);
System.out.println(" :: Premi un
tasto");in.nextLine(); }
if(scelta==3) { // Blocco Radice
System.out.println(" :: Numero: ");
radice=in.nextInt();
risultato_radice=sqrt(radice);
System.out.println(" :: Risultato: "+
risultato_radice);
System.out.println(" :: Premi un
tasto");in.nextLine(); }
} while(scelta!=4);
Funzioni matematiche: come inserirle
for uguale al C
(vedrete qualche opzione
in più in futuro)
Le funzioni matematiche
sono metodi statici dell'
oggetto Math
Per le quattro operazioni
potete usare
la notazione veloce
+=, *=, ++ ecc.
Passo 4
...
if(scelta==2) { // Blocco Esponente
System.out.println(" :: Numero: ");
numero_pot=in.nextInt();
System.out.println(" :: Potenza: ");
esponente=in.nextInt();
for(for_potenza=0;for_potenza<esponente;for_potenza++
) potenza*=pot;
System.out.println(" :: Risultato: "+potenza);
System.out.println(" :: Premi un
tasto");in.nextLine(); }
if(scelta==3) { // Blocco Radice
System.out.println(" :: Numero: ");
radice=in.nextInt();
risultato_radice=(float) Math.sqrt(radice);
System.out.println(" :: Risultato: "+
risultato_radice);
System.out.println(" :: Premi un
tasto");in.nextLine(); }
} while(scelta!=4);
Funzioni matematiche: come inserirle
Restituisce un double, per cui è necessario
utilizzare il cast analogamente al C
Agenda StyleR
ias
su
nto
lLe istruzioni di calcolo incluso
quelle logiche
lVale la notazione veloce
lLe strutture di controllo if,
while, case, switch, for sono
pressoché identiche
lIl cast (anche se meno
automatico)
Similitudini
lIl “+” concatena le stringhe
lL'input utilizza metodi diversi a
seconda del tipo di dato da
leggere; meno flessibile.
Richiede inoltre di importare
un oggetto esterno (Scanner)
lLe funzioni matematiche sono
in un oggetto esterno (Math)
già importato.
Differenze
Agenda StyleS
org
en
ti
http://www.pierotofy.it/pages/so
rgenti/browse/15787/1797/
Originale C++
https://pastebin.com/fxwScxGb
Versione Java
Grazie
per l'attenzione
Spero di essere stato chiaro....
Agenda StyleC
om
pit
o
CONVERTITE O SCRIVETE UN
PROGRAMMA CHE RISOLVE LE
EQUAZIONI DI SECONDO GRADO,
INDICANDO ANCHE I CASI
INSOLITI (senza soluzione,
coincidenti)
SE SIETE PIGRI, POTETE
PARTIRE DA QUESTO SORGENTE
http://www.pierotofy.it/page
s/extras/forum/2/25428-
programma_che_risolve_le_equ
azioni_di_secondo_grad/
C++
?
Java