Dal c a Java (3/3)

20
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 3 Marcello Missiroli ([email protected])

Transcript of Dal c a Java (3/3)

Page 1: Dal c a Java (3/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 3

Marcello Missiroli ([email protected])

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

Rubrica

Grande classico, nel quale si introducono

struct e array.

Partiremo da un codice gentilmente offerto

dall'università di Bologna (è C e non C++, ma

poco cambia ai nostri fini).

Partiamo con lo scheletro di un programma

Java funzionante (eliminando quindi già

include e namespace).

Page 4: Dal c a Java (3/3)

Rubrica (C++)

package rubrica;

public class Rubrica {

public static void main(String[] args) {

}

}

Dichiarazione di variabili.

Page 5: Dal c a Java (3/3)

Passo 1

package rubrica;

public class Rubrica {

#define N 4

struct studente{

char Nome[20];

char Cognome[20];

int Voto;};

void leggi(int n, struct studente Vet[]);

float media(int n, struct studente Vet[]);

public static void main(String[] args) {

int i; struct studente V[N];

leggi(N,V);

for(i=0;i<N;i++){

printf("%s\n",V[i].Nome);

printf("%s\n", V[i].Cognome); }

printf("\nVoto medio: %f\n",media(N,V));

}

}

Conversioni note e dichiarazioni di variabili

Page 6: Dal c a Java (3/3)

Passo 1

package rubrica;

public class Rubrica {

public static final int N = 4;

struct studente{

char Nome[20];

char Cognome[20];

int Voto;};

void leggi(int n, struct studente Vet[]);

float media(int n, struct studente Vet[]);

public static void main(String[] args) {

int i; struct studente V[N];

leggi(N,V);

for(i=0;i<N;i++){

System.out.print(V[i].Nome+" ");

System.out.println(V[i].Cognome);}

System.out.println("Voto medio:

"+media(N,V));}

}

Conversioni note e dichiarazioni di variabiliNon esiste equivalente per il define. Per le

costanti si usano variabili modificate da final

Le struct non esistono,

esistono gli OGGETTI,

determinanti dalle classi.

Un oggetto richiede un

file a parte.

Occupiamoci di questo

Page 7: Dal c a Java (3/3)

Passo 2

package rubrica;

public class Studente {

char Nome[20];

char Cognome[20];

int Voto;};

}

Un oggetto equivalente alla struct

Page 8: Dal c a Java (3/3)

Passo 2

package rubrica;

public class Studente {

String nome;

String cognome;

int voto;

}

Un oggetto equivalente alla struct

Qualche convenzione sui nomi:

Package: iniziano con minuscola

Classi: iniziano con Maiuscola

Variabili: iniziano con minuscola,

tranne le final, in MAIUSCOLO

Si usa il CamelCase.

Page 9: Dal c a Java (3/3)

Passo 2

package rubrica;

public class Rubrica {

public static final int N = 4;

struct studente{

char Nome[20];

char Cognome[20];

int Voto;};

void leggi(int n, struct studente Vet[]);

float media(int n, struct studente Vet[]);

public static void main(String[] args) {

int i; struct studente V[N];

leggi(N,V);

for(i=0;i<N;i++){

System.out.print(V[i].Nome+" ");

System.out.println(V[i].Cognome);}

System.out.println("Voto medio:

"+media(N,V));}

}

Torniamo al file originale e adattiamo.

Page 10: Dal c a Java (3/3)

Passo 2

package rubrica;

public class Rubrica {

public static final int N = 4;

void leggi(int n, struct studente Vet[]);

float media(int n, struct studente Vet[]);

public static void main(String[] args) {

int i;

Studente v[];

v=new Studente[N];

leggi(N,V);

for(i=0;i<N;i++){

System.out.print(V[i].Nome+" ");

System.out.println(V[i].Cognome);}

System.out.println("Voto medio:

"+media(N,V));}

}

Torniamo al file originale e adattiamo.

Page 11: Dal c a Java (3/3)

Passo 2

package rubrica;

public class Rubrica {

public static final int N = 4;

void leggi(int n, struct studente Vet[]);

float media(int n, struct studente Vet[]);

public static void main(String[] args) {

int i;

Studente v[];

v=new Studente[N];

leggi(N,V);

for(i=0;i<N;i++){

System.out.print(V[i].Nome+" ");

System.out.println(V[i].Cognome);}

System.out.println("Voto medio:

"+media(N,V));}

}

Torniamo al file originale e adattiamo.Studente non deve essere

Importato perché parte dello stesso

progetto e package

Per usare un array occorrono due istruzioni

Dichiarazione (come è fatta)

Istanziazione (quanti elementi)

Corollario: tutti gli array

in java sono dinamici

Page 12: Dal c a Java (3/3)

Passo 3

void leggi(int n, struct studente Vet[]){

int i,j;

for(i=0;i<n;i++){

printf("Inserisci Nome, Cognome e

Voto");

scanf("%s",Vet[i].Nome);

scanf("%s",Vet[i].Cognome);

scanf("%d",&Vet[i].Voto);

}

}

float media(int n, struct studente Vet[]){

int i;

float m=0.0;

for(i=0;i<n;i++)

m=m+Vet[i].Voto;

return m/n;

}

Tocchi finali: le due funzioni/metodi.

Page 13: Dal c a Java (3/3)

Passo 3

static void leggi(int n, Studente vet[]){

int i,j; Scanner in = new

Scanner(System.in);

for(i=0;i<n;i++){

System.out.println("Inserisci Nome,

Cognome e Voto");

//ATTENZIONE QUI!

vet[i].nome=in.nextLine();

vet[i].cognome=in.nextLine();

vet[i].voto=in.nextInt();

}

}

static float media(int n,Studente vet[]){

int i;

float m=0.0f;

for(i=0;i<n;i++)

m=m+vet[i].voto;

return m/n;}

Tocchi finali: adattiamo parametri...

Page 14: Dal c a Java (3/3)

Passo 3

static void leggi(int n, Studente vet[]){

int i,j; Scanner in = new

Scanner(System.in);

for(i=0;i<n;i++){

System.out.println("Inserisci Nome,

Cognome e Voto");

vet[i]=new Studente();

vet[i].nome=in.nextLine();

vet[i].cognome=in.nextLine();

vet[i].voto=in.nextInt();

}

}

static float media(int n,Studente vet[]){

int i;

float m=0.0f;

for(i=0;i<n;i++)

m=m+vet[i].voto;

return m/n;}

Tocchi finali: adattiamo parametri...

MOLTO IMPORTANTE:

In Java, un array di oggetti non riserva

alcuno spazio di memorizzazione!

Peranto, ogni oggetto va inizializzato

prima di esere usato.

Page 15: Dal c a Java (3/3)

Passo 3

static void leggi(int n, Studente vet[]){

int i,j; Scanner in = new

Scanner(System.in);

for(i=0;i<n;i++){

System.out.println("Inserisci Nome,

Cognome e Voto");

vet[i]=new Studente();

vet[i].nome=in.nextLine();

vet[i].cognome=in.nextLine();

vet[i].voto=in.nextInt();

}

}

static float media(int n,Studente vet[]){

int i;

float m=0.0f;

for(i=0;i<n;i++)

m=m+vet[i].voto;

return m/n;

}

Tocchi finali: e l'I/O

Page 16: Dal c a Java (3/3)

Agenda StyleR

iassu

nto

l Esistono classi, e struct

l Costanti definite tramite

const o #define.

l Array statici (dinamici con

difficoltà)

l

C/C++

l Non esistono struct, solo

classi di oggetti.

l Array dinamici (non esistono

statici). Se si tratta di

oggetti, l’array non

inizializza lo spazio dei

singoli oggetti (riferimenti)

l Non esistono #define

Java

Page 17: Dal c a Java (3/3)

Agenda StyleS

org

en

ti

http://lia.deis.unibo.it/Courses/L

abA0102/esercitazioni/Sol-

sett7.html

Originale C++

https://pastebin.com/iw7pHGui

Versione Java

Page 18: Dal c a Java (3/3)

Avete

le

basi!

Conoscenze del

C/C++

Conoscenze

minimali di Java

Algoritmica

Esercizi

Java è un

linguaggio

complesso, che

richiede una

buona conoscenza

del paradigna di

programmazione a

oggetti! Buon

lavoro!

E’ solo l’inizio...

That’s all folksOra si parte sul serio

Page 19: Dal c a Java (3/3)

Grazie

per l'attenzione

Spero di essere stato chiaro....

Page 20: Dal c a Java (3/3)

Agenda StyleC

om

pit

o

CONVERTITE O SCRIVETE UN

PROGRAMMA CHE LEGGE UNA

STRINGA DI CARATTERI E NE

STAMPA LA SUA CODIFICA IN

LINGUAGGIO MORSE

C++

?

Java