Search Header Logo
Java 6. Dichiarazione e chiamata di metodi ausiliari

Java 6. Dichiarazione e chiamata di metodi ausiliari

Assessment

Presentation

Computers

11th Grade

Practice Problem

Hard

Created by

Lucia Intelisano

FREE Resource

18 Slides • 0 Questions

1

Dichiarazione e chiamata di metodi ausiliari

2

Programmazione procedurale

Fino ad ora abbiamo realizzato programmi costituiti da un unico metodo (il metodo main).

Quando il programma da realizzare è articolato diventa conveniente identificare sottoproblemi che possono essere risolti individualmente, scrivere sottoprogrammi che risolvono i sottoproblemi,

richiamare i sottoprogrammi dal programma principale (main). Questo approccio prende il nome di programmazione procedurale (o astrazione funzionale).

In Java i sottoprogrammi si realizzano tramite metodi ausiliari Sinonimi usati in altri linguaggi di programmazione: funzioni, procedure e (sub)routines

I metodi| Informatica

3

Programmazione procedurale

Un esempio: somma e prodotto dei primi 10 numeri naturali Scriviamo un programma SommaProdottoDieci che calcola, a scelta dell’utente, la somma o il prodotto dei numeri da 1 a 10.

Identifichiamo i sottoproblemi:

-calcolare la somma dei numeri da 1 a 10

-calcolare il prodotto dei numeri da 1 a 10

Realizzeremo quindi i metodi ausiliari: somma10 e prodotto10 che risolvono i due sottoproblemi il risultato di entrambi i metodi dovrà essere di tipo int.

I metodi| Informatica

4

Programmazione procedurale

Definizione del metodo ausiliario somma10

(il metodo prodotto10 `e analogo)

private static int somma10 () {

int ris =0;

for (int i =1; i <=10; i ++) {

ris = ris+i ;

return ris ;

}

}

I metodi| Informatica

5

Programmazione procedurale

-private specifica che si tratta di un metodo ausiliario (di aiuto a un altro metodo della stessa classe... non utilizzabile dalle altre classi)

-int è il tipo del risultato calcolato dal metodo

-somma10 è il nome del metodo

-return `e il comando che termina l’esecuzione del metodo e fornisce il risultato

I metodi| Informatica

6

import java.util.Scanner;

public class SommaProdottoDieci { // metodo principale

public static void main ( String [] args ) {

Scanner input = new Scanner (System.in);

System.out.println(" Inserisci 1 per la somma , 2 per il prodotto ");

int scelta = input.nextInt();

if (scelta==1) {

int risultato = somma10 (); // chiamata del metodo somma10

System.out.println(risultato);

} else if(scelta==2) {

int risultato = prodotto10 (); // chiamata del metodo prodotto10

System.out.println(risultato);

} else System.out.println("ERRORE");

} // metodo ausiliario che calcola la somma da 1 a 10

private static int somma10 () { int ris =0; for (int i =1; i <=10; i ++) ris += i ; return ris ; }

I metodi| Informatica

7

// metodo ausiliario che calcola il prodotto da 1 a 10

private static int prodotto10 () {

int ris =1;

for (int i =1; i <=10; i ++) {

ris = ris *i ;

}

return ris ;

}

} // FINE CLASSE

I metodi| Informatica

8

I metodo possono anche prevedere parametri

Esempio: metodo che calcola la somma di due numeri

public class SommaConMetodo {

public static void main ( String [] args ) {

int a =10 , b =20;

System.out.println(somma (a ,b ));

}

private static int somma ( int x , int y) {

return x+y ;

} }

I metodi| Informatica

Parametri

9

Nella dichiarazione di somma tra le parentesi tonde sono indicati i parametri attesi (parametri formali) con i rispettivi tipi — x e y

Nella chiamata di somma tra le parentesi tonde sono indicati i valori (parametri attuali, o argomenti) che sono passati al metodo per calcolare il risultato — a e b

I metodi| Informatica

Parametri

10

I parametri formali di un metodo sono variabili locali al corpo del metodo.

Un metodo non “vede” i parametri e le variabili di un altro (nemmeno del main, che è un metodo come tutti gli altri).

I valori dei parametri attuali vengono copiati (assegnati) nelle variabili usate come parametri formali del metodo un metodo deve sempre essere chiamato con parametri attuali di tipi compatibili con quelli dei parametri formali (e nell’ordine giusto).

I metodi| Informatica

Parametri

11

I nomi dei parametri formali e delle variabili di metodi diversi non interferiscono tra loro:

public static void main ( String [] args ) {

int y =10 , x =20;

int ris = ilPrimo(y , x );

System.out.println(ris); // stampa 10

}

private static int ilPrimo (int x , int y) {

return x;

}

I metodi| Informatica

Parametri

12

I nomi dei parametri formali e delle variabili di metodi diversi non interferiscono tra loro:

public static void main ( String [] args ) {

int y =10 , x =20;

int ris = ilPrimo(y , x );

System.out.println(ris); // stampa 10

}

private static int ilPrimo (int x , int y) {

return x;

}

I metodi| Informatica

Parametri

13

L’espressione che segue ogni return di un metodo deve avere un tipo compatibile con il tipo del metodo

private static int prova () {

return 3.5; // errore !

}

Il comando return può essere usato più volte in un metodo

if (x <0)

return 0;

else

return x;

I metodi| Informatica

Il comando return

14

Il compilatore controlla che il comando return sia sempre raggiungibile

private static int prova (int x) {

if (x >0)

return 3; // return non sempre raggiungibile

// ( condizionato dalla guardia dell ’if)

}

private static int prova () {

if ( true )

return 3; // ATTENZIONE : anche qui da ’ errore !! }

I metodi| Informatica

Il comando return

15

Quando un metodo non prevede un risultato si usa il tipo void

private static void stampaMessaggio () {

System.out.println(" Messaggio di prova ");

}

L’invocazione di un metodo di tipo void avviene senza assegnamento ... stampaMessaggio (); ...

I metodi| Informatica

Il tipo void

16

In questi casi il comando return è solitamente omesso, ma può essere usato (privo di espressione successiva) per interrompere l’esecuzione del metodo:

private static void stampaAsterischi ( int n) {

if (n <=0) {

System.out.println(" valore errato ");

return ; // corretto , ma usare con cautela !

}

for(int i=0;i<n;i++) {System.out.println("*");}

I metodi| Informatica

Il tipo void

17

Questo modo di usare return va usato con cautela (solo se effettivamente semplifica il programma senza confondere il lettore). E’ decisamente meglio evitare di usare return all’interno di cicli

I metodi| Informatica

Il tipo void

18

import java.util.Scanner;

public class OrarioMetodo {

public static void main (String[] args) {

Scanner input = new Scanner (System.in);

int ore , minuti ;

System.out.println (" Inserire ore e minuti :");

ore = input.nextInt();

minuti = input.nextInt();

if (orarioOk(ore,minuti))

System.out.println("E’ un orario ");

else System.out.println("Non e’ un orario ");

}

private static boolean orarioOk ( int o , int m) {

boolean ore_ok = (o >=0) && (o <24);

boolean minuti_ok = (m >=0) && (m <60);

return ore_ok && minuti_ok ; } }

I metodi| Informatica

Controllo orario

Dichiarazione e chiamata di metodi ausiliari

Show answer

Auto Play

Slide 1 / 18

SLIDE