SlideShare a Scribd company logo
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 (prof.missiroli@gmail.com)
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 Escin");
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 Escin");
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 Escin");
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 Escin");
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 <<
"nn" << " :: 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 +
"nn" + " :: 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 Style
Riassunto
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 Style
Sorgenti
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 Style
Compito
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

More Related Content

Similar to Dal C a Java (2/3)

Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacyTommaso Torti
 
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Donato Clun
 
Php mysql3
Php mysql3Php mysql3
Php mysql3
orestJump
 
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Idriss Riouak
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
Dominopoint - Italian Lotus User Group
 
Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams
graphitech
 
Devianze
DevianzeDevianze
Devianze
scrivano
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Rest sdk
Rest sdkRest sdk
Rest sdk
Raffaele Rialdi
 
TYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le NovitàTYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le Novità
Roberto Torresani
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
Luciano Colosio
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
Michele Capra
 
How create a single page apps using html5 and javascript
How create a single page apps using html5 and javascript How create a single page apps using html5 and javascript
How create a single page apps using html5 and javascript
Stefano Marchisio
 
SplunkLive! Milan 2015 - UNIBO
SplunkLive! Milan 2015 - UNIBOSplunkLive! Milan 2015 - UNIBO
SplunkLive! Milan 2015 - UNIBO
Splunk
 
Effective Code Transformations in C++
Effective Code Transformations in C++Effective Code Transformations in C++
Effective Code Transformations in C++
Marco Arena
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
Sergio Ronchi
 
BanovazDiego-Slides Prelaurea
BanovazDiego-Slides PrelaureaBanovazDiego-Slides Prelaurea
BanovazDiego-Slides Prelaurea
Diego Banovaz
 

Similar to Dal C a Java (2/3) (20)

Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacy
 
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
 
Php mysql3
Php mysql3Php mysql3
Php mysql3
 
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
 
Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams Recognizing Hand Gestures using WebCams
Recognizing Hand Gestures using WebCams
 
Devianze
DevianzeDevianze
Devianze
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
Rest sdk
Rest sdkRest sdk
Rest sdk
 
TYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le NovitàTYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le Novità
 
X2 Linux Riassunti
X2 Linux RiassuntiX2 Linux Riassunti
X2 Linux Riassunti
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
How create a single page apps using html5 and javascript
How create a single page apps using html5 and javascript How create a single page apps using html5 and javascript
How create a single page apps using html5 and javascript
 
CleanCode
CleanCodeCleanCode
CleanCode
 
SplunkLive! Milan 2015 - UNIBO
SplunkLive! Milan 2015 - UNIBOSplunkLive! Milan 2015 - UNIBO
SplunkLive! Milan 2015 - UNIBO
 
Effective Code Transformations in C++
Effective Code Transformations in C++Effective Code Transformations in C++
Effective Code Transformations in C++
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
 
BanovazDiego-Slides Prelaurea
BanovazDiego-Slides PrelaureaBanovazDiego-Slides Prelaurea
BanovazDiego-Slides Prelaurea
 

More from Marcello Missiroli

Workshop: Introduzione ad TDD
Workshop: Introduzione ad TDDWorkshop: Introduzione ad TDD
Workshop: Introduzione ad TDD
Marcello Missiroli
 
Variabili
VariabiliVariabili
Sviluppo degli algoritmi
Sviluppo degli algoritmiSviluppo degli algoritmi
Sviluppo degli algoritmi
Marcello Missiroli
 
5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo
Marcello Missiroli
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
Marcello Missiroli
 
Big O Notation
Big O NotationBig O Notation
Big O Notation
Marcello Missiroli
 
Insegnare Agile
Insegnare AgileInsegnare Agile
Insegnare Agile
Marcello Missiroli
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
Marcello Missiroli
 
L'avvento del programmatore sociale
L'avvento del programmatore socialeL'avvento del programmatore sociale
L'avvento del programmatore sociale
Marcello Missiroli
 
Il ciclo for
Il ciclo forIl ciclo for
Il ciclo for
Marcello Missiroli
 
Lo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in JavaLo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in Java
Marcello Missiroli
 
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Marcello Missiroli
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
Marcello Missiroli
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
Marcello Missiroli
 
Moodle: i compiti (homework)
Moodle: i compiti (homework)Moodle: i compiti (homework)
Moodle: i compiti (homework)
Marcello Missiroli
 
Uefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il maleUefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il male
Marcello Missiroli
 
Corso Moodle: presentazione
Corso Moodle: presentazioneCorso Moodle: presentazione
Corso Moodle: presentazione
Marcello Missiroli
 
Corso Moodle: perché?
Corso Moodle: perché?Corso Moodle: perché?
Corso Moodle: perché?
Marcello Missiroli
 
Il sistema binario
Il sistema binarioIl sistema binario
Il sistema binario
Marcello Missiroli
 
Routing dinamico
Routing dinamicoRouting dinamico
Routing dinamico
Marcello Missiroli
 

More from Marcello Missiroli (20)

Workshop: Introduzione ad TDD
Workshop: Introduzione ad TDDWorkshop: Introduzione ad TDD
Workshop: Introduzione ad TDD
 
Variabili
VariabiliVariabili
Variabili
 
Sviluppo degli algoritmi
Sviluppo degli algoritmiSviluppo degli algoritmi
Sviluppo degli algoritmi
 
5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
Big O Notation
Big O NotationBig O Notation
Big O Notation
 
Insegnare Agile
Insegnare AgileInsegnare Agile
Insegnare Agile
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
 
L'avvento del programmatore sociale
L'avvento del programmatore socialeL'avvento del programmatore sociale
L'avvento del programmatore sociale
 
Il ciclo for
Il ciclo forIl ciclo for
Il ciclo for
 
Lo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in JavaLo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in Java
 
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Moodle: i compiti (homework)
Moodle: i compiti (homework)Moodle: i compiti (homework)
Moodle: i compiti (homework)
 
Uefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il maleUefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il male
 
Corso Moodle: presentazione
Corso Moodle: presentazioneCorso Moodle: presentazione
Corso Moodle: presentazione
 
Corso Moodle: perché?
Corso Moodle: perché?Corso Moodle: perché?
Corso Moodle: perché?
 
Il sistema binario
Il sistema binarioIl sistema binario
Il sistema binario
 
Routing dinamico
Routing dinamicoRouting dinamico
Routing dinamico
 

Dal C a Java (2/3)

  • 1. 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 (prof.missiroli@gmail.com)
  • 2. 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!
  • 3. 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.
  • 4. Calcolatrice (C++) package calcolatrice; public class Calcolatrice { public static void main(String[] args) { } } Dichiarazione di variabili.
  • 5. 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.
  • 6. 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!
  • 7. 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.
  • 8. 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 Escin"); System.out.println(" :: > "); cin >> scelta; } while(scelta!=4); } } Applichiamo trasformazioni già note.
  • 9. 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 Escin"); 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
  • 10. 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 Escin"); 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
  • 11. Input in Java Non così semplice. Vediamo un dettaglio. cin >> scelta;
  • 12. Input in Java Occorre utilizzare un oggetto di tipo Scanner... solitamente quando si dichiarano le variabili Scanner in = new Scanner(System.in); ... cin >> scelta;
  • 13. Input in Java ...indicare esplicitamente il tipo di dato... (nextFloat, nextLine, ecc..) Scanner in = new Scanner(System.in); ... scelta=in.nextInt();
  • 14. 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();
  • 15. 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 Escin"); System.out.println(" :: > "); scelta=in.nextInt(); } while(scelta!=4); } } Inseriamo le modifiche.
  • 16. 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 << "nn" << " :: Premi un tasto"; system("pause>nul");} Scelta che effettua le quattro operazioni (modificato).
  • 17. 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 + "nn" + " :: 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
  • 18. 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.
  • 19. 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.
  • 20. 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.
  • 21. 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.
  • 22. 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
  • 23. Agenda Style Riassunto 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
  • 25. Grazie per l'attenzione Spero di essere stato chiaro....
  • 26. Agenda Style Compito 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

Editor's Notes

  1. 2