Concetto di Funzione e Procedura METODI in Java



Похожие документы
Funzioni in C. Violetta Lonati

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Le variabili. Olga Scotti

Java: Compilatore e Interprete

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Corso di Informatica

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Inizializzazione, Assegnamento e Distruzione di Classi

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Struttura di un programma Java

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Algoritmi di Ricerca. Esempi di programmi Java

Arduino: Programmazione

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Linguaggio C - Funzioni

GESTIONE INFORMATICA DEI DATI AZIENDALI

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Laboratorio di programmazione

LINGUAGGI DI PROGRAMMAZIONE

Programmazione in Java Parte I: Fondamenti

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Visibilità dei Membri di una Classe

3. La sintassi di Java


INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Programmazione a Oggetti Modulo B

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

puntatori Lab. Calc. AA 2007/08 1

Allocazione dinamica della memoria - riepilogo

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Introduzione alla programmazione in C

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Introduzione a Classi e Oggetti

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Esercizi della lezione 5 di Java

Java? Sì, grazie. Scopo del corso

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Oggetti Lezione 3. aspetti generali e definizione di classi I

Cosa è un foglio elettronico

Modulo 4: Ereditarietà, interfacce e clonazione

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

10 - Programmare con gli Array

Object Oriented Programming

Fasi di creazione di un programma

RISOLUTORE AUTOMATICO PER SUDOKU

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

costruttori e distruttori

Generalizzazione di funzioni e di classi. Macro come funzioni generiche

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Multithreading in Java. Fondamenti di Sistemi Informativi

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Lezione 8. La macchina universale

Capitolo 13. Interrogare una base di dati

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

GESTIONE DEI PROCESSI

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Soluzione dell esercizio del 2 Febbraio 2004

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Descrizione di un algoritmo

I puntatori e l allocazione dinamica di memoria

MANUALE PARCELLA FACILE PLUS INDICE

Struttura del calcolatore

Programmazione a Oggetti Lezione 10. Ereditarieta

Calcolare il massimo di una lista

Tipi di Dato Ricorsivi

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Gestione della memoria centrale

Programmare in Java. Olga Scotti

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Funzioni. Il modello console. Interfaccia in modalità console

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Definizione di classi con array di oggetti

Definizione di nuovi tipi in C

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Richiesta pagina PHP (es: index.php)

Prova di Laboratorio di Programmazione

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Транскрипт:

Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1

Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile definire nuovi tipi di dati, tramite i metodi è possibile definire nuove operazioni sulla base delle operazioni predefinite (istruzioni). I metodi in Java realizzano sottoprogrammi: programmi che sono definiti per scopi particolari ma che non possono "vivere" da soli. Essi hanno un tipo, un nome, dei parametri di input dove sono contenuti i dati di ingresso, sono composti da un insieme di istruzioni, e dei parametri di output dove sono contenuti i risultati. Fondamenti di Informatica - D. Talia - UNICAL 2

Funzioni e Procedure Nei linguaggi imperativi di alto livello ci sono due tipi di sottoprogrammi: Funzioni e Procedure Nei linguaggi object-oriented (come Java) le funzioni e le procedure sono dette metodi. La programmazione tramite funzioni e procedure ha notevoli benefici: codice non ripetuto, modularità, leggibilità, "debuggabilità". Fondamenti di Informatica - D. Talia - UNICAL 3

Funzioni : definizione Le funzioni nei linguaggi imperativi hanno punti in comune con le funzioni matematiche, ma non sono esattamente la stessa cosa (vedi gli effetti collaterali). Definizione delle funzioni Testata Variabili locali Parte esecutiva tipo nome-funzione (parametri formali ) tipo1 var1; tipo2 var2; { } istruzioni; I parametri rappresentano il dominio della funzione, mentre il risultato (ritornato tramite l istruzione return espr) ne rappresenta il codominio. Fondamenti di Informatica - D. Talia - UNICAL 4

Procedure : definizione Le procedure sono simili alle funzioni, ma non hanno il compito di calcolare un risultato e ritornarlo come un valore. Lo scopo di una procedura non è quindi di produrre un valore, ma di modificare lo stato, cioè il contenuto della memoria di un programma. Esempi di procedure sono la stampa di un insieme di dati, l'inserimento di un elemento in una struttura dati, etc. Definizione delle procedure Testata Variabili locali Parte esecutiva void nome-procedura(parametri formali) tipo1 var1; tipo2 var2; { } istruzioni; Non c è un risultato da ritornare (non si usa l istruzione return espr). Fondamenti di Informatica - D. Talia - UNICAL 5

Funzioni : esecuzione Chiamata di funzioni Una volta dichiarate, le funzioni si possono utilizzare nei programmi tramite la cosiddetta chiamata di funzione. Ad esempio, se si è dichiarata la funzione int max(int a, b, c) Si può chiamare nelle istruzioni y = max(1, 2, 3); y = max(x, y, z); y = max(10, x, 45); Ad y sarà assegnato il valore argomento della return. I parametri della chiamata, se esistono, sono detti parametri attuali e devono essere dello stesso tipo dei parametri formali. Fondamenti di Informatica - D. Talia - UNICAL 6

Procedure : esecuzione Chiamata di procedure Una volta dichiarate, le procedure si possono utilizzare nei programmi tramite la cosiddetta chiamata di procedura. Le procedure lavorano su variabili globali e modificano il loro contenuto, mentre le funzioni lavorano su variabili locali e ritornano un risultato. Ad esempio, se si è dichiarata la procedura void stampa(char a, b) Si può chiamare/eseguire tramite le istruzioni stampa( A, B ); stampa(x, y); Non c è assegnamento perchè le procedura non ritorna un valore! Fondamenti di Informatica - D. Talia - UNICAL 7

Metodi : definizione Il concetto di funzione e procedura nei linguaggi orientati agli oggetti è stato realizzato ed esteso tramite i metodi. Definizione di un metodo Intestazione Variabili locali Parte esecutiva o corpo spec tipo nome (parametri formali) tipo1 var1; tipo2 var1; { } istruzioni; return espressione; I parametri rappresentano il dominio del metodo, mentre il risultato (ritornato tramite l istruzione return) ne rappresenta il co-dominio. Fondamenti di Informatica - D. Talia - UNICAL 8

Metodi : intestazione L intestazione contiene Uno specificatore di accesso public, private specifica quali altri metodi possono chiamare/eseguire il metodo Il tipo di dati restituito int, float,..., void indica il tipo di dato del valore che calcola il metodo (deve essere uguale alla espressione indicata nell istruzione return). Senza espressione il tipo è void. Il nome del metodo max, stampa, dividi,... è l identificatore da usare quando si chiama/esegue il metodo. Un elenco dei parametri formali rappresentano l input del metodo e si indicano con tipo e nome separati da virgole: public float dividi(float a, int b); Fondamenti di Informatica - D. Talia - UNICAL 9

Metodi : overloading La firma o segnatura indica l'insieme del nome e dei parametri di un metodo, essa deve essere unica. In Java possono esistere due metodi con lo stesso nome a patto che abbiano parametri formali di numero e/o tipo differente. Ad esempio: void stampa (char x) void stampa (int x) void stampa (int x, int y) In questo caso di parla di overloading o sovraccarico. Il tipo restituito non contribuisce alla firma del metodo. Ad esempio int somma(int x, int y) e float somma(int x, int y)hanno la stessa firma è quindi non sono ammissibili. In questo caso occorre usare un nome diverso o parametri di tipo diverso. Fondamenti di Informatica - D. Talia - UNICAL 10

Metodi : Chiamata o Invocazione Nell'invocazione di un metodo in Java i parametri attuali devono essere compatibili con i parametri formali per numero, ordine e tipo. public static int power (int b, int n) { int i, p; p=1; for (i=1; i<=n; ++i) p=p*b; return p; } parametri formali variabili locali valore del metodo parametri attuali public void static main ( ) { int potenza, esp, base; potenza=power(base, esp); } Fondamenti di Informatica - D. Talia - UNICAL 11

Metodi : visibilità delle variabili Ogni dichiarazione di un dato ha una sua visibilità o scope. La visibilità ci indica l'ambiente dove il nome dichiarato potrà essere usato. I parametri formali di un metodo possono essere usati solo nell'ambito del metodo e Anche le variabili locali al metodo possono essere usate solo nel metodo stesso. Non si possono avere variabili con lo stesso nome all'interno di un metodo. Tuttavia si possono avere variabili con lo stesso nome all'interno di metodi diversi. Si noti che il nome del parametro formale non deve essere necessariamente uguale a quello del parametro attuale. Fondamenti di Informatica - D. Talia - UNICAL 12

Metodi : return Per ritornare i valori si usa l'istruzione return seguita da una espressione. return ris; La return deve tornare un valore dello stesso tipo o di un tipo compatibile con quello del metodo. Se l espressione non c è come argomento della return questa serve solo a far terminare un metodo. return; Se non viene eseguita una return o viene eseguita senza argomenti, nel metodo chiamante non bisogna eseguire un assegnamento ma solo l invocazione. stampa(car); Fondamenti di Informatica - D. Talia - UNICAL 13

Metodi : passaggio dei parametri Passaggio dei parametri nell invocazione di un metodo Passaggio per valore Ogni metodo ha il proprio ambiente locale di esecuzione. L'informazione tra l'ambiente del main e l'ambiente del metodo passa copiando i valori passati nelle celle di memoria dei parametri e il ritorno del risultato assegnando il valore dell'espressione in una variabile del main. potenza = power(base, esp); Quando viene effettuata la chiamata, il controllo passa alle istruzioni del metodo per ritornare al main dopo l'esecuzione dell'operazione return, che se non viene eseguita non si ha ritorno di valori. Fondamenti di Informatica - D. Talia - UNICAL 14

Metodi : passaggio dei parametri per valore Esempio della chiamata del metodo potenza=power(base, esp); base esp b n p potenza main power Fondamenti di Informatica - D. Talia - UNICAL 15

Metodi : passaggio dei parametri per riferimento Passaggio dei parametri per riferimento Passando i parametri per valore non si ha la modifica dei loro valori al termine della chiamata del metodo. Questo avviene perché viene fatta una copia dei parametri attuali nell ambiente del metodo chiamato. Per ottenere l effetto della modifica al termine della chiamata, i linguaggi di alto livello usano il meccanismo di passaggio dei parametri per riferimento o indirizzo. In questo caso, invece di fare una copia dei parametri nell'ambiente locale, si passano gli indirizzi delle celle di memoria dell'ambiente globale che contengono i parametri. Fondamenti di Informatica - D. Talia - UNICAL 16

Metodi : passaggio dei parametri per riferimento Nel metodo l'accesso avviene tramite l'indirizzo e quindi le modifiche avverranno nelle locazioni originali. Parametri attuali Parametri formali Ind(X) = 2056 X=75 a =75 Passaggio per valore Ind(Y) = 3010 Y=14 b=3010 Passaggio per riferimento In questo secondo caso non opero su una copia ma sulla cella originale. Un assegnamento nel metodo cambia il valore nel main. Fondamenti di Informatica - D. Talia - UNICAL 17

Passaggio dei parametri in Java In Java il passaggio dei parametri avviene solo per valore. Quindi nessuna modifica nel metodo sui parametri formali cambierà i valori dei parametri attuali passati come argomenti. Il passaggio per riferimento si ha implicitamente quando si hanno parametri formali di tipo array o oggetti. In questo caso viene passata la referenza e quindi si passa implicitamente l'indirizzo di memoria dell'array o dell'oggetto. Questo implica che le eventuali modifiche verranno effettuate nell'area di memoria globale che contiene l'array o l'oggetto. Fondamenti di Informatica - D. Talia - UNICAL 18

Passaggio dei parametri in Java Nel seguente esempio public class parametri2 { public static void main(string args[]) { int x = 1; double d[] = new double[2]; d[0] = 25; metodo1(d, x); System.out.println("Il valore di d[0] = " + d[0]); System.out.println("Il valore di x = " + x); } static void metodo1(double s[], int i) { s[0] = 100; } } i = 18; Il valore stampato nel main sarà pari a 100. Perché l'assegnamento effettuato nel metodo viene eseguito nella stessa locazione di memoria originale di d. Mentre il valore di x non cambia e sarà stampato il valore 1. Fondamenti di Informatica - D. Talia - UNICAL 19