Sottoprogrammi: funzioni e procedure

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

C C++ &.
INFORMATICA Altre Istruzioni di I/O
Funzioni In C++ le funzioni sono caratterizzate da un nome, dal tipo della variabile ritornata e da una lista di parametri (opzionali) La lista dei parametri.
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Scomposizione funzionale
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Procedure e funzioni A. Ferrari.
Procedure e funzioni ricorsive
Procedure e funzioni In linguaggio C.
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Informatica Generale Susanna Pelagatti
Introduzione al linguaggio C
Un nuovo tipo di dati Gli array.
Funzioni definite dall’utente
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 15 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2012.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Strutture di controllo in C -- Flow Chart --
La Programmazione Ricorsiva
Le funzioni.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Elementi di Informatica
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Algoritmi e Programmazione strutturata
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Linguaggio C++ Fondamenti Un primo semplice esempio:
void binario(int n); …………………
Un esempio: Calcolo della potenza n-esima di un numero reale
Sistemi e Tecnologie Informatiche Requisiti per la realizzazione di un buon programma.
Lo sviluppo top down Le funzioni
Passaggio di parametri per indirizzo
Soluzioni e commenti esercizi 1 e 2
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento.
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
Array (ordinamento) CORDA – Informatica A. Ferrari.
Le funzioni Rassegna degli argomenti trattati LS Tron 14/15 Prof. Carla Fanchin.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015.
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
La ricorsione.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Sottoprogrammi e funzioni
Scrivere e compilare programmi
Lo stato  I domini della semantica restano invariati: Ide, Val (Int  { ,  }) Loc (locazioni di memoria), FunctDecl. ma definiamo 2 funzioni: Loc :
Algoritmi.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
C++:Strutture di Controllo
Informatica e Informatica di Base
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2016.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
Transcript della presentazione:

Sottoprogrammi: funzioni e procedure Informatica 7 Sottoprogrammi: funzioni e procedure

Definizione di sottoprogramma Sappiamo che un programma è un algoritmo scritto in un linguaggio comprensibile al calcolatore Un algoritmo è una sequenza finita e deterministica di istruzioni per risolvere un problema Un problema può essere talvolta scomposto in parti, chiamate sottoproblemi, che possono essere risolte in maniera indipendente per ottenere una soluzione al problema di partenza Se un programma è suddiviso in diverse parti, ognuna delle quali risolve un sottoproblema, allora ciascuna parte è chiamata sottoprogramma se esplicitamente separata dalle altre

Esempio: calcolo della media Problema: chiedere all’utente 3 interi, calcolarne la media aritmetica, e stamparla su schermo Il problema può essere scomposto nei seguenti sottoproblemi: richiesta numeri calcolo media stampa del risultato

Funzioni e procedure Un sottoprogramma è un algoritmo per la soluzione di un sottoproblema scritto in un linguaggio di programmazione Sottoprogrammi che restituiscono un risultato parziale tramite l’istruzione return prendono il nome di funzioni Sottoprogrammi che prevedono solo l’esecuzione di un blocco di istruzioni senza l’esplicita restituzione di un risultato si chiamano procedure

Funzioni e procedure per il calcolo della media Modelliamo come funzione il sottoprogramma per: calcolo media Risolviamo il seguente sottoproblema per mezzo di una procedura: stampa del risultato La scrittura di questi sottoprogrammi in riferimento allo stesso programma principale (main) riflette il fatto che essi sono parte della soluzione a un unico problema

Funzione: esempio nome della funzione inizio del blocco di istruzioni della funzione float media (int a, int b, int c){ int somma = a + b + c; float risultato = somma/3; return risultato; } lista dei tipi e dei nomi dei parametri formali istruzione return con cui si conclude l’esecuzione della funzione e si restituisce il risultato fine del blocco di istruzioni della funzione tipo del risultato restituito

Procedura: esempio void stampa(int m){ cout << “La media è: ” << m << “\n”; } non c’è alcun risultato restituito dal sottoprogramma, quindi il tipo del risultato è void (vuoto) non c’è alcun risultato da restituire, e infatti il blocco di istruzioni non include una istruzione return

Uso della funzione e della procedura nel programma finale … float media (int a, int b, int c){ int somma = a + b + c; float risultato = somma/3; return risultato; } void stampa(int m){ cout << “La media è: ” << m << “\n”; int main(){ int x,y,z; float r; cout << “inserisci 3 numeri:\n”; cin >> x >> y >> z; r = media(x,y,z); stampa(r); il risultato restituito dalla funzione va salvato in una variabile l’esecuzione di una procedura, invece, non prevede alcun risultato se non l’effetto delle istruzioni che la compongono

Passaggio dei parametri Nell’esempio precedente, a, b, e c sono i parametri formali della funzione media, a cui, al momento della chiamata della funzione nel main, vengono associati i valori dei parametri attuali x, y, e z Tale corrispondenza è posizionale: ad a viene associato il valore di x perché sono entrambi i primi della lista, e così via

Passaggio di parametri per valore Il passaggio del valore di x ad a consiste, di fatto, nella creazione di una variabile temporanea con lo stesso valore di x che viene usata nelle istruzioni della funzione al posto di a Per tutta l’esecuzione della funzione, la variabile x, quindi, non viene minimamente modificata: al termine della funzione sarà rimasta come prima

Possibile problema A volte, il fatto che un parametro attuale non subisca modifiche da parte della funzione può non essere ciò che desideriamo Ad es: void azzera (int n){ n = 0; } int main(){ … azzera(x); /* x rimane uguale e non viene azzerato*/ …

Passaggio di parametri per indirizzo Si ha questo tipo di passaggio quando alla funzione non è fornita una copia del valore del parametro attuale (come nel passaggio per valore) bensì l’indirizzo della cella di memoria contenente il parametro attuale In questo modo, la funzione non esegue le sue istruzioni su una copia, ma direttamente sul parametro attuale, cosicché ogni modifica del suo valore ha effetto

il simbolo & indica che il passaggio del parametro è per indirizzo Esempio void azzera (int& n){ n = 0; } int main(){ … azzera(x); cout << x; … il simbolo & indica che il passaggio del parametro è per indirizzo questa volta la variabile x è veramente azzerata e su schermo compare ‘0’

Passaggio di parametri strutturati Attenzione: nel linguaggio C++, se un parametro è un dato strutturato, viene sempre passato per indirizzo, per risparmiare la memoria che verrebbe occupata da una copia del parametro attuale Data questa regola, nella scrittura della lista dei parametri formali di un sottoprogramma si omette il simbolo ‘&’

Array come parametri In particolare, quando un array viene passato come parametro, l’informazione che il sottoprogramma riceve è solo l’indirizzo della prima cella dell’array Sarà cura del programmatore aggiungere un altro parametro che indichi la dimensione dell’array in modo che il sottoprogramma possa eseguire le istruzioni sull’array in maniera corretta

nel parametro attuale, solo il nome dell’array viene specificato Esempio int somma_valori (int v[], int dim){ int i; int somma = 0; for (i = 0; i < dim; i++) somma = somma + v[i]; return somma; } int main(){ int vettore[10]; int s; … s = somma_valori(vettore, 10); cout << “la somma dei valori dell’array e’: ” << s << “\n”; … viene segnalato che il parametro è un array, ma la sua dimensione è un parametro separato nel parametro attuale, solo il nome dell’array viene specificato