dal c a java (2/3)

26
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])

Upload: marcello-missiroli

Post on 23-Jan-2018

50 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Dal C a Java (2/3)

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])

Page 2: Dal C a Java (2/3)

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!

Page 3: Dal C a Java (2/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.

Page 4: Dal C a Java (2/3)

Calcolatrice (C++)

package calcolatrice;

public class Calcolatrice {

public static void main(String[] args) {

}

}

Dichiarazione di variabili.

Page 5: Dal C a Java (2/3)

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.

Page 6: Dal C a Java (2/3)

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!

Page 7: Dal C a Java (2/3)

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.

Page 8: Dal C a Java (2/3)

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.

Page 9: Dal C a Java (2/3)

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

Page 10: Dal C a Java (2/3)

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

Page 11: Dal C a Java (2/3)

Input in Java

Non così semplice. Vediamo un dettaglio.

cin >> scelta;

Page 12: Dal C a Java (2/3)

Input in Java

Occorre utilizzare un oggetto di tipo Scanner... solitamente quando si dichiarano le variabili

Scanner in = new Scanner(System.in);

...

cin >> scelta;

Page 13: Dal C a Java (2/3)

Input in Java

...indicare esplicitamente il tipo di dato...

(nextFloat, nextLine, ecc..)

Scanner in = new Scanner(System.in);

...

scelta=in.nextInt();

Page 14: Dal C a Java (2/3)

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();

Page 15: Dal C a Java (2/3)

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.

Page 16: Dal C a Java (2/3)

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).

Page 17: Dal C a Java (2/3)

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

Page 18: Dal C a Java (2/3)

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.

Page 19: Dal C a Java (2/3)

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.

Page 20: Dal C a Java (2/3)

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.

Page 21: Dal C a Java (2/3)

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.

Page 22: Dal C a Java (2/3)

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

Page 23: Dal C a Java (2/3)

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

Page 24: Dal C a Java (2/3)

Agenda StyleS

org

en

ti

http://www.pierotofy.it/pages/so

rgenti/browse/15787/1797/

Originale C++

https://pastebin.com/fxwScxGb

Versione Java

Page 25: Dal C a Java (2/3)

Grazie

per l'attenzione

Spero di essere stato chiaro....

Page 26: Dal C a Java (2/3)

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