Sottoprogrammi: motivazioni. Funzioni e procedure. Un esempio motivante. Un esempio motivante

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sottoprogrammi: motivazioni. Funzioni e procedure. Un esempio motivante. Un esempio motivante"

Transcript

1 Sottoprogrammi: motivazioni Funzioni e procedure Riusabilità (scrivere una sola volta del codice usato più volte) Astrazione (esprimere in modo sintetico operazioni complesse) Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it Informatica A - Cugola 2 Un esempio motivante #define MaxNumMov typedef struct { int giorno; int mese; int anno; Data; typedef struct { char causale[100]; Data data; Come float importo; calcolare il Movimento; totale delle typedef struct { entrate? int nummovimenti; Movimento dati[maxnummov]; ElencoMovimenti; ElencoMovimenti entrate; ElencoMovimenti uscite; float saldo; e il totale delle uscite? Un esempio motivante Potremmo scrivere: float totentrate, totuscite; totentrate = 0; for(i=0; i<entrate.nummovimenti; i++) { totentrate += entrate.dati[i].importo; totuscite = 0; for(i=0; i<uscite.nummovimenti; i++) { totentrate += uscite.dati[i].importo; saldo = totentrate totuscite; Informatica A - Cugola 3 Informatica A - Cugola 4

2 Un esempio motivante Ma ci piacerebbe di più scrivere: saldo = tot(entrate) tot(uscite); mettendo a fattor comune il codice simile Ma per fare questo dobbiamo definire un sottoprogramma che calcola tot Si tratta di un programma asservito al programma principale Il sottoprogramma deve essere prima di tutto definito e poi può essere invocato (chiamato) Struttura di un programma in presenza di sottoprogrammi [parte di direttive] [dichiarazione degli elementi condivisi da programma principale e sottoprogrammi (costanti, tipi, variabili, )] [definizioni di sottoprogrammi (main incluso)] Informatica A - Cugola 5 Informatica A - Cugola 6 Visibilità e tipi di sottoprogrammi Programma principale e sottoprogrammi possono usare Elementi dichiarati nella propria parte dichiarativa Elementi dichiarati nella parte dichiarativa globale I sottoprogrammi possono essere di due tipi Funzioni Restituiscono un valore al chiamante Procedure Svolgono un compito per il chiamante ma non restituiscono un valore specifico Un esempio di funzione intestazione corpo float tot(elencomovimenti mov) { float totale; totale = 0; for(i=0; i<mov.nummovimenti; i++) { totale += mov.dati[i].importo; return totale; Informatica A - Cugola 7 Informatica A - Cugola 8

3 Intestazione L intestazione o testata (header) della funzione contiene informazioni rilevanti per l uso corretto della medesima Tipo del risultato Rappresenta il codominio della funzione Nome della funzione Lista degli argomenti della funzione (parametri formali) tra parentesi tonde Rappresenta il dominio della funzione Ogni parametro formale è dichiarato indicandone il tipo (built-in o user-defined) e il nome Ricevono un valore nel momento in cui la funzione viene invocata Esempi di intestazioni float tot ( ElencoMovimenti mov ) tipo del risultato nome tipo parametro parametri formali nome Altri esempi: boolean contiene( ElencoMovimenti mov, Movimento m ) ElencoMovimenti estrai( ElencoMovimenti mov, int mese, int anno ) Informatica A - Cugola 9 Informatica A - Cugola 10 Corpo della funzione Simile al corpo del programma principale Composto da: Parte dichiarativa Contiene dichiarazioni locali Parte esecutiva Contiene il codice della funzione Esempio di corpo { parte dichiarativa float totale; totale = 0; for(i=0; i<mov.nummovimenti; i++) { totale += mov.dati[i].importo; return totale; parte esecutiva Informatica A - Cugola 11 Informatica A - Cugola 12

4 Dichiarazioni locali Tipi e variabili necessari per l esecuzione del sottoprogramma ma inutili al programma principale Stesse regole della parte dichiarativa del main Nuove dichiarazioni di tipi di costanti di altri sottoprogrammi (solo prototipi) L istruzione return Termina l esecuzione della funzione restituendo il controllo al chiamante Restituisce un valore al chiamante Visto dal chiamante il valore restituito è il valore dell espressione rappresentata dall invocazione della funzione Possono esserci più istruzioni return Ovviamente a ogni chiamata se ne esegue solo una Informatica A - Cugola 13 Informatica A - Cugola 14 Invocazione di funzioni Sintassi ispirata alla notazione matematica: nome_funzione(parametri_attuali); Parametri attuali: valori degli argomenti ai quali viene applicata la funzione Ogni parametro attuale è un espressione e può contenere altre chiamate di funzione Una chiamata di funzione sintatticamente definisce un espressione Una funzione, applicata ai suoi argomenti, fornisce un valore del suo codominio Esempi float t = tot ( mieimovimenti ); nome parametro attuale Altri esempi: saldo = tot(entrate) tot(uscite); if(contiene(mieimovimenti, m)) printf( ); movdic = estrai(mieimovimenti, 12, 2002); x = sin(y) cos(pigreco alfa); x = cos(atan(y) beta); Informatica A - Cugola 15 Informatica A - Cugola 16

5 Prototipi delle funzioni Una funzione può essere invocata solo se precedentemente definita o almeno dichiarata Definizione e dichiarazione non sono sinonimi Definizione : comprende intestazione + corpo) Dichiarazione (detta prototipo) : sola intestazione della funzione seguita dal ; Va posta nella parte dichiarativa globale o nella parte dichiarativa propria dei sottoprogrammi che chiamano la funzione (main incluso) Informatica A - Cugola 17 Mettiamo insieme il tutto #define MaxNumMov direttive typedef struct { int giorno; int mese; int anno; Data; typedef struct { char causale[100]; Data data; parte float importo; dichiarativa Movimento; globale typedef struct { int nummovimenti; Movimento dati[maxnummov]; ElencoMovimenti; float tot(elencomovimenti mov); dichiarazione funzione main() { ElencoMovimenti entrate; ElencoMovimenti uscite; /* lettura dati */ printf( Saldo : %f, tot(entrate)-tot(uscite)); float tot(elencomovimenti mov) { float totale; totale = 0; for(i=0; i<mov.nummovimenti; i++) { totale += mov.dati[i].importo; return totale; definizione di sottoprogrammi (incluso il sottoprogramma principale) Informatica A - Cugola 18 Funzioni: Esercizi Si scriva la funzione: boolean contiene(elencomovimenti mov, Movimento m) Si scriva la funzione: ElencoMovimenti estrai(elencomovimenti mov, int mese, int anno) Si scriva una funzione per calcolare la distanza in giorni tra due date Procedure A volte si vuole definire un sottoprogramma che non si comporta come una funzione, ma semplicemente realizza una operazione o esegue un azione senza restituire alcun valore al chiamante Esempi Aggiungere un movimento a un elenco di movimenti Stampare un elenco di movimenti Ordinare un array di interi... In questo caso usiamo delle procedure Sono definite esattamente come le funzioni ma nell intestazione il tipo del valore di ritorno è void Informatica A - Cugola 19 Informatica A - Cugola 20

6 Esempi di procedure void stampamov(movimento m) { printf( %d-%d-%d %s %f, m.data.giorno, m.data.mese, m.data.anno, m.causale, m.importo); void stampaelenco(elencomovimenti mov) { for(i=0; i<mov.nummovimenti; i++) { stampamov(mov.datio[i]); printf( \n ); Funzioni e procedure predefinite Standard library del C include sottoprogrammi di vasto uso non riscoprire continuamente l acqua calda I/ O, trigonometriche, esponenziali, logaritmiche, gestione stringhe, Informatica A - Cugola 21 Informatica A - Cugola 22 /* Programma Concatenazione di stringhe */ #include <stdio.h> #include <string.h> #define LunghezzaArray 50 main() { char PrimaStringa[LunghezzaArray], SecondaStringa[LunghezzaArray], StringaConc[2 * LunghezzaArray]; LunghezzaConc; unsigned scanf( %s, PrimaStringa); /* NB scanf assume caratteri!= spazio */ scanf( %s, SecondaStringa); if (strcmp(primastringa, SecondaStringa) <= 0 ){ strcpy(stringaconc, PrimaStringa); strcat(stringaconc, SecondaStringa); else { strcpy(stringaconc, SecondaStringa); strcat(stringaconc, PrimaStringa); LunghezzaConc = strlen(stringaconc); printf( Concatenazione stringhe lette: %s.\n lunga %d caratteri\n, StringaConc, LunghezzaConc); Informatica A - Cugola 23 Ambiente locale e globale Le variabili dichiarate localmente ad un sottoprogramma sono visibili solo in quel sottoprogramma Vengono allocate all istante dell invocazione e deallocate al termine dell esecuzione del sottoprogramma Per ogni invocazione si ha una nuova allocazione Lo stesso vale per i parametri formali E altresì possibile dichiarare delle variabili globali Dichiarate nella parte dichiarativa globale Accessibili tanto al main quanto a tutti gli altri sottoprogrammi Vengono allocate alla partenza del programma e deallocate solo al termine del programma Informatica A - Cugola 24

7 Ambiente globale e side effects Nell istante in cui un sottoprogramma modifica una variabile globale genera ciò che si chiama un effetto collaterale ( side effect ) Gli effetti collaterali riducono la leggibilità del codice In condizioni normali un sottoprogramma vede solo le variabili dichiarate localmente e il suo ambito d azione resta così chiaramente confinato (non vede variabili dichiarate in altri sottoprogrammi) Il chiamante sa che al termine della chiamata, a meno del valore restituito, lo stato complessivo del programma è invariato Lo stesso non è più vero in presenza di effetti collaterali Effetti collaterali: Un esempio void faiqualchecosa(); main() { i = 7; faiqualchecosa(); printf( %d, i); Cosa ci aspettiamo che venga stampato? Un 7? Dipende!!! Se faiqualcosa ha effetti collaterali void faiqualchecosa() { i = 12; In questo caso il main stampa il valore 12 Informatica A - Cugola 25 Informatica A - Cugola 26 Effetti collaterali: Un altro esempio int x; int calcola(int par); main() { x = 1; x = calcola(1); /* ora x vale 2 */ x = calcola(1); /* ora x vale 3 */ int calcola(int par) { return (par + x) Gli Gli effetti collaterali diminuiscono la la leggibilità del del codice Il passaggio parametri in dettaglio Al momento dell invocazione i parametri attuali sono passati al sottoprogramma per valore (o per copia) Il valore del parametro attuale è copiato, al momento dell invocazione, nel parametro formale Parametro attuale e parametro formale hanno vita distinta Esempio: void f(int i) { i = 10; Il valore di j è: 0 main() { int j = 0; f(j); printf( Il valore di j è: %d,j); Informatica A - Cugola 27 Informatica A - Cugola 28

8 Esercizio Si scriva un programma per gestire i risultati di un compito Il programma deve permettere l inserimento dei dati, la stampa dei risultati, il calcolo della media L inserimento dei dati deve essere possibile risultato per risultato Il programma deve presentare un menu iniziale con le diverse opzioni (aggiunta di un nuovo risultato, stampa dei risultati, stampa della media) Se necessario si faccia uso di variabili globali Il blocco Può comparire ovunque la sintassi preveda una istruzione Composto da due parti racchiuse tra graffe Una parte dichiarativa (facoltativa) Una sequenza di istruzioni Due blocchi possono essere: Annidati (uno è interno all altro) Paralleli (entrambi interni a un terzo ma non annidati tra di loro) Informatica A - Cugola 29 Informatica A - Cugola 30 int g1, g2; char g3; int f1(int par1, int par2 ); / * Prototipo di f1 * / main () { int a, b; int f2(int par3, int par1 ); / * Prototipo di f2 */ { char a, c; { float a; / * Fine blocco2 * / / * Fine blocco1 * / / * Finemain * / int f1(int par1, int par2) { int d; { int e; / * Fine blocco3 * / { int d; / * Fine blocco4 * / / * Fine f1 * / int f2(int par3, int par4) { int f; / * Fine f2 * / modello a contorni Informatica A - Cugola 31 Regole di visibilità Un elemento si dice visibile in un certo punto del codice se può essere usato e referenziato tramite l identificatore in quel punto del codice Elementi dichiarati nella parte dichiarativa globale del programma: Visibili da tutti sottoprogrammi (incluso main) e i blocchi dei sottoprogrammi Identificatori predefiniti del linguaggio si intendono dichiarati nella parte dichiarativa globale Elementi dichiarati nella parte dichiarativa di un sottoprogramma Visibili da istruzioni del suo corpo, inclusi i blocchi interni Elementi dichiarati nella parte dichiarativa di un blocco Visibili nelle istruzioni del blocco, inclusi i blocchi interni Informatica A - Cugola 32

9 Deroga alla regola La dichiarazione di un elemento in un sottoprogramma o in un blocco maschera eventuali entità omonime più esterne Lifetime delle variabili Va dalla creazione (allocazione della memoria) alla distruzione (rilascio della memoria deallocata) Variabili globali Vengono allocate alla partenza del programma e deallocate al termine Variabili dichiarate nella parte dichiarativa di un sottoprogramma (main incluso) Vengono allocate alla partenza del sottoprogramma e deallocate al termine dell esecuzione del medesimo Variabili dichiarate in un blocco Vengono allocate quando l esecuzione entra nel loro ambito di visibilità e deallocate quando si esce dall ambito di visibilità N.B. Veriabili dichiarate in sottoprogrammi o blocchi eseguiti più volte vengono riallocate di volta in volta in zone di memoria potenzialmente differenti Non vengono conservati i valori prodotti da precedenti esecuzioni Informatica A - Cugola 33 Informatica A - Cugola 34 Parametri passati per indirizzo Finora i sottoprogrammi hanno potuto Restituire un valore Modificare l ambiente globale Ricevere parametri per valore (senza aver modo di modificare i parametri attuali) Il passaggio per indirizzo costituisce un altro modo per far avvenire effetti sul chiamante attraverso la chiamata di sottoprogrammi Passaggio per indirizzo: Un esempio motivante Consideriamo la seguente definizione della funzione aggiungi void aggiungi(movimento m, ElencoMovimenti mov) { strcpy(mov.dati[mov.nummovimenti].causale, m.causale); mov.dati[mov.nummovimenti].data = m.data; mov.dati[mov.nummovimenti].importo = m.importo; mov.nummovimenti++; Cosa succede dopo l esecuzione del seguente frammento di codice? ElencoMovimenti mieimov; Movimento mo; scanf( %d-%d-%d %s %f, &m.data.giorno, &m.data.mese, &m.data.anno, m.causale, &m.importo); aggiungi(mo, mieimovimenti); Purtroppo non quello che vorremmo! La procedura aggiungi modifica il parametro formale mov ma non il parametro attuale mieimov Il parametro formale è solo una copia del parametro attuale Alla fine dell esecuzione della procedura il parametro formale mov modificato è addirittura deallocato Informatica A - Cugola 35 Informatica A - Cugola 36

10 Come ottenere una modifica del parametro attuale? 1. Il parametro formale viene definito di tipo puntatore al tipo del parametro attuale desiderato 2. Alla chiamata viene passato l indirizzo (usando &) del parametro attuale Deve essere una variabile, NON una generica espressione Di una espressione non è possibile estrarre l indirizzo 3. Nel corpo della funzione viene usato l operatore di dereferenziazione per accedere al parametro attuale desiderato mediante il suo indirizzo L esempio corretto attraverso l uso del passagio per indirizzo void aggiungi(movimento m, ElencoMovimenti *mov) { strcpy(mov->dati[mov->nummovimenti].causale, m.causale); mov->dati[mov->nummovimenti].data = m.data; mov->dati[mov->nummovimenti].importo = m.importo; mov->nummovimenti++; Informatica A - Cugola 37 Informatica A - Cugola 38 Procedure e funzioni Facile trasformare una funzione in procedura (risultato come parametro aggiuntivo) funzione int f(int par1) { return risultato; chiamata con istruzione y = f(x); diventa la procedura void f(int par1,int * par2) { * par2 = risultato; chiamata con istruzione f(x, &y); Parametri di tipo array Quando un array viene passato ad un sottoprogramma come parametro attuale Viene passato per valore l indirizzo di base dell array (indirizzo della prima componente) NB: gli elementi dell array NON vengono copiati nel parametro formale Di fatto è passato per indirizzo Il parametro formale della funzione viene trattato come un puntatore Informatica A - Cugola 39 Informatica A - Cugola 40

11 Esempi Forme equivalenti typedef double TipoArray[MaxN umelem] / * n è la porzione occupata dell' array*/ double sum(tipoarray a, int n) double sum(double *a, int n) double sum(double a[ ], int n) Esempio: Moltiplicare gli elementi di un array double mul (double a[ ], int n) { /* n porzione occupata dell'array passato * / double ris; ris = 1.0; for ( i = 0; i < n; i = i + 1 ) ris = ris * a[i]; return ris; Informatica A - Cugola 41 Informatica A - Cugola 42 Parametri di tipo struttura Si possono passare per valore o per indirizzo Un risultato può essere di tipo struttura N.B.: anche se contiene un campo array! Informatica A - Cugola 43 Valore vs. Indirizzo Per valore Parametri attuale e formale sono distinti Le funzionalità del sottoprogramma restano chiaramente confinate maggiore leggibilità NON permette di restituire un risultato al chiamante Il passaggio per valore richiede una copia del parametro che porta via tempo. Il passaggio per indirizzo è più efficente Per indirizzo Parametro attuale e formale di fatto coincidono Permette di restituire risultato al chiamante Si copia l indirizzo dimensione fissa NON occorre lunga copiatura Informatica A - Cugola 44

12 Passaggio per indirizzo: Esercizi Si realizzi la funzione scambia che presi due interi come parametro li scambia Si riscriva l esercizio relativo alla gestione dei risultati di un compito sfruttando il passaggio per indirizzo ed eliminando così le variabili globali Si scrivano le funzioni per gestire uno stack di interi. Si usi lo stack per invertire una sequenza di interi Informatica A - Cugola 45

Funzioni e Procedure in C. Funzioni e Procedure in C

Funzioni e Procedure in C. Funzioni e Procedure in C Corso di Informatica A Vito Perrone 1 Motivazioni Indice Il concetto di sottoprogramma Struttura completa di un programma C Le funzioni Esecuzione delle funzioni e passaggio dei parametri Le procedure

Dettagli

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0; Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare

Dettagli

Il passaggio parametri per indirizzo

Il passaggio parametri per indirizzo Il passaggio parametri per indirizzo Cominciamo con un esempio: supponiamo di voler eseguire diversi inserimenti di nuove fatture in diversi archivi. Proviamo con questa modifica della procedura InserisciFattura:

Dettagli

Funzioni e procedure

Funzioni e procedure Funzioni e procedure Alcuni tipici errori a run-time La divisione per 0 L'uso di un indice di un array con valore al di fuori del suo campo di variabilità Int V1[100] permette al compilatore di segnalare

Dettagli

Carlo Ghezzi, Gian Pietro Picco

Carlo Ghezzi, Gian Pietro Picco Funzioni Carlo Ghezzi, Gian Pietro Picco Dipartimento di Elettronica e Informazione Politecnico di M, Italy picco@elet.polimi.it http://www.elet.polimi.it/~picco Analogia con la matematica Come nella matematica,

Dettagli

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto FUNZIONI E PROCEDURE http://www.diee.unica.it/giacinto/lab

Dettagli

FUNZIONI E PROCEDURE IN C. Docente: Giorgio Giacinto AA 2009/2010. dall utente, sia predefiniti, il C consente di creare funzioni e procedure

FUNZIONI E PROCEDURE IN C. Docente: Giorgio Giacinto AA 2009/2010. dall utente, sia predefiniti, il C consente di creare funzioni e procedure Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni

Dettagli

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/05/08 Nota Questi lucidi sono tratti

Dettagli

Introduzione. per astrarre delle operazioni complesse

Introduzione. per astrarre delle operazioni complesse Introduzione Perché i sottoprogrammi? per riutilizzare codice già scritto se si devono ripetere tante volte le stesse operazioni in punti diversi di un programma, è meglio fattorizzare il codice da ripetere

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Funzioni e Procedure. Marco D. Santambrogio Ver. aggiornata al 11 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Funzioni e Procedure. Marco D. Santambrogio Ver. aggiornata al 11 Marzo 2014 Funzioni e Procedure Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014 Obiettivi Funzioni Scope delle variabili 2 La calcolatrice! Problema Si scriva un programma in C

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 11 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 11 Marzo 2014 Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014 Immagini Struttura dati: typedef struct{ int R; int G; int B; } pixel pixel img[0][24]; Ma quanto è grossa

Dettagli

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in I Parametri di tipo vettore I Il meccanismo del passaggio per valore di un indirizzo consente il passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad

Dettagli

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Esercizi. FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo. Funzioni

Esercizi. FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo. Funzioni Politecnico di Milano Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo Definizione: Funzioni tipo_ritornato nome (lista di parametri) istruzioni; Segnatura

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

Dettagli

C funzioni à scope di variabili

C funzioni à scope di variabili C funzioni à scope di variabili Per questo motivo il parametro di una function può avere lo stesso nome del parametro effettivo del processo chiamante. Possiamo definire anche delle variabili globali e

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Array k-dimensionali

Array k-dimensionali Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 4 Aprile 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 4 Aprile 2013 Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 4 Aprile 201 WAT? WAT Lab Troppi exe, ne volevo di meno Vacanze W A Giovedì 28, Venerdì 29 e Lunedì 1 ma anche Martedì 2

Dettagli

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni

Dettagli

Introduzione al linguaggio C Funzioni

Introduzione al linguaggio C Funzioni Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Passaggio dei parametri

Passaggio dei parametri Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag. I lucidi sono una rielaborazione e integrazione di quelli messi a disposizione dei docenti nel sito relativo al testo: Informatica: arte e mestiere 2/ed Stefano Ceri, Dino Mandrioli, Licia Sbattella Copyright

Dettagli

Funzioni in C. Fondamenti di Informatica. Daniele Loiacono

Funzioni in C. Fondamenti di Informatica. Daniele Loiacono Funzioni in C Fondamenti di Informatica Organizzare il codice q Consideriamo un frammento programma che calcola il massimo di una sequenza di interi letti da tastiera: int i,x,max; for(i=1;i

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016 Puntatori Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 20 Aprile 2016 Come rappresento un pixel? Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B:

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Introduzione al C. Lez. 2. Funzioni e Puntatori

Introduzione al C. Lez. 2. Funzioni e Puntatori Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se è solo

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Esercizio (o esempio?)

Esercizio (o esempio?) Esercizio (o esempio?) programma che legge un intero n e n double; li memorizza in un array dinamico esatto calcola e stampa minimo, massimo e media dei double #include 1) Lettura e memorizzazione

Dettagli

Passaggio dei parametri. Passaggio dei parametri

Passaggio dei parametri. Passaggio dei parametri Per valore Il valore viene copiato dal mondo esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sul mondo esterno rimangono circoscritti all environment

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

Il linguaggio C. Istruzioni, funzioni, dati strutturati

Il linguaggio C. Istruzioni, funzioni, dati strutturati Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java 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

Dettagli

- tipo - costruttori di tipo - typedef: alias per i nuovi tipi

- tipo - costruttori di tipo - typedef: alias per i nuovi tipi Tecniche della Programmazione, lez.16 variazioni sul tema dei puntatori... typedef, struct e definizione di tipi strutturati... - tipo - costruttori di tipo - typedef: alias per i nuovi tipi - struct (Record),

Dettagli

Introduzione al C. Lez. 2 Funzioni e Puntatori

Introduzione al C. Lez. 2 Funzioni e Puntatori Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se e solo

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di

Dettagli

Corso di Informatica Modulo T3 2 Ambiente locale e globale

Corso di Informatica Modulo T3 2 Ambiente locale e globale Corso di Informatica Modulo T3 2 Ambiente locale e globale 1 Prerequisiti Struttura elementare della memoria Area dati e area programma Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità

Dettagli

Indirizzi e tipi puntatore a

Indirizzi e tipi puntatore a Linguaggio C Indirizzi e tipi puntatore a Università degli Studi di Brescia Prof. Massimiliano Giacomin Indirizzo e tipo puntatore a TIPO Indirizzo NOME Valore Indirizzo 0101011110011001 1101011110011111

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

LB5 FUNZIONI cap. 7 del testo

LB5 FUNZIONI cap. 7 del testo LB5 FUNZIONI cap. 7 del testo 1 necessità di strutturare i programmi main() {......... N...... O...............} main() {... } funz1 funz2 funz3 funz4 SI funz5 funz6 2 Funzioni Una funzione è un pezzo

Dettagli

METODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi

METODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi Fondamenti di Informatica METODI in Java Prof.Angela Bonifati 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile definire nuovi tipi di dati, tramite i metodi è possibile

Dettagli

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment esterno Per riferimento

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012 Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni

Dettagli

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

Esercizio 1: media di numeri reali (uso funzioni e struct)

Esercizio 1: media di numeri reali (uso funzioni e struct) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3) Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 11 Corso di Informatica 2009-2010 Lezione 11 1 Utilizzo dei puntatori Funzioni Perche i Puntatori? I puntatori hanno tre importanti applicazioni: 1. Passaggio

Dettagli

Record di Attivazione Cenni sulla ricorsione

Record di Attivazione Cenni sulla ricorsione MASTER Information Technology Excellence Road (I.T.E.R.) Cenni sulla ricorsione Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il modello a RUN-TIME

Dettagli

Informatica B Prof. Di Nitto, Morzenti Prova del 18 novembre 2004 Cognome e Nome... Numero Matricola... (in stampatello)

Informatica B Prof. Di Nitto, Morzenti Prova del 18 novembre 2004 Cognome e Nome... Numero Matricola... (in stampatello) Informatica B Prof. Di Nitto, Morzenti Prova del 18 novembre 2004 Cognome e Nome... Numero Matricola... (in stampatello) Risolvere i seguenti esercizi, scrivendo le risposte ed eventuali tracce di soluzione

Dettagli

Informatica (A-K) 12. Linguaggio C -3

Informatica (A-K) 12. Linguaggio C -3 Introduzione alle funzioni in C Informatica (A-K) 12. Linguaggio C -3 int main() int i,n, fattoriale=1; printf( Inserire Numero: ); scanf( %d, &n); for (i =2; i

Dettagli

Fondamenti di Informatica II 3. Funzioni in C++ (parte 1)

Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Introduzione alle funzioni in C++ Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Corso di Laurea in Ingegneria Informatica A.A. 2008-2009 2 Semestre Corso (A-M) int main() int n, fattoriale=1;

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 4

Dettagli

Le funzioni: la dichiarazione

Le funzioni: la dichiarazione Funzioni I Parte Indice Le funzioni: dichiarazione, definizione e chiamata Le regole di visibilità (scope) Il passaggio degli argomenti per valore e riferimento La funzione main() Le funzioni: la dichiarazione

Dettagli

Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità

Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità Funzioni I Parte Indice Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità Le funzioni: la dichiarazione

Dettagli

Programmazione (imperativa)

Programmazione (imperativa) Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00

Dettagli

Strutture di controllo

Strutture di controllo Strutture di controllo abbiamo visto if-else e while domande da punto di vista teorico: 1. algoritmi NON codificabili con if-else e while? 2. strutture di controllo più potenti di quelle viste sinora?

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Prof. G. Ascia. Le funzioni. Fondamenti di Informatica

Prof. G. Ascia. Le funzioni. Fondamenti di Informatica Le funzioni 1 La Forma Generale di Funzione La forma generale di funzione è la seguente: SpecificatoreTipo NomeFunzione(ElencoParametri) { CorpoDellaFunzione; Lo SpecificareTipo specifica il tipo dei dati

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Funzioni e Procedure. Marco D. Santambrogio Ver. aggiornata al 21 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Funzioni e Procedure. Marco D. Santambrogio Ver. aggiornata al 21 Marzo 2014 Funzioni e Procedure Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Marzo 2014 Info di servizio 1 Vi siete dimostrati volenterosi, quindi teniamo la divisione proposta da voi

Dettagli

Programmazione C. Funzioni e Procedure Call by value

Programmazione C. Funzioni e Procedure Call by value Programmazione C Funzioni e Procedure Call by value !"#$%#&'(%')*+,*&--&.%+$"'!+)/ 0+1$!!"#$%&'()*"+,("-*".//$%01.0%",.00%"*0"2(0($.'("30." +%)#'(--*1.4 1.'("#($"+3*"+,*"'*"5(6("$*-%'6($("0%0"$*(-+(".5".//$%01.$'*"0(''."'%$%"2'%&.'*1.47"80")(1%5%"

Dettagli

FUNZIONI: IL MODELLO A RUN-TIME!

FUNZIONI: IL MODELLO A RUN-TIME! FUNZIONI: IL MODELLO A RUN-TIME! Ogni volta che viene invocata una funzione si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri e per le variabili locali

Dettagli

Esercizio 1: parole nel testo

Esercizio 1: parole nel testo Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 6 Esercitazione: 11 novembre 2005 Esercizi di riepilogo in preparazione alla prima prova intermedia Problema (tratto da

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 8 Dettagli e Approfondimenti versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

ESEMPIO PROCEDURE. return IN UNA PROCEDURA. Disegnare, per un dato n, la seguente figura * *** ***** ******* ********* ***********

ESEMPIO PROCEDURE. return IN UNA PROCEDURA. Disegnare, per un dato n, la seguente figura * *** ***** ******* ********* *********** Sottoprogrammi I sottoprogrammi possono servire per creare nuovi operatori: funzioni, che possono essere usati nelle espressioni, forniscono un valore di ritorno =4*potenza(2+y,3); nuove istruzioni: procedure,

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

Un programma deve essere scritto come collezione di tante piccole funzioni perché:

Un programma deve essere scritto come collezione di tante piccole funzioni perché: Un programma deve essere scritto come collezione di tante piccole funzioni perché: ƒè più facile scrivere correttamente una funzione breve che abbia un unico compito: in questo modo sia la scrittura che

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

Dettagli

Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità

Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità Funzioni I Parte Indice Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità Le funzioni Tutti i linguaggi

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione

Dettagli

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi). Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,

Dettagli

Aritmetica dei puntatori

Aritmetica dei puntatori Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore

Dettagli