dal c a java (2/3)

Post on 23-Jan-2018

50 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related