Funzioni e procedure

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Funzioni e procedure"

Transcript

1 Funzioni e procedure

2 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 che l'istruzione V1[132] = 190 è un errore scanf (&i); V1[i] = 190 non è verificabile durante la compilazione perché dipende dalla lettura del dato i Se eseguo il programma 1, 2, n volte e non viene segnalato un errore a run-time ciò non è garanzia di immunità dall errore!

3 Sottoprogrammi I meccanismi di astrazione sui dati visti finora non corrispondono in pieno al concetto di tipo di dato astratto: mancano le operazioni typedef struct{ int numfat; DescrFat seq[maxnumfat]; ElencoFatture; typedef struct { int /* come sopra */ ElencoCosti;

4 Consideriamo le operazioni Consideriamo operazioni come Calcolo del fatturato complessivo, Fatturato relativo al periodo x, Calcolo della somma dei costi complessivi ecc. Un codice del tipo risultatodigestione = fatturatototale(archiviofatture) sommacosti(archiviocosti);

5 è certo meglio di fatturatototale = 0; for (cont = 0; cont < arcfatture.numfat; cont++) { fatturatototale = fatturatototale + arcfatture.seq[cont].importo; sommacosti= 0; for (cont = 0; cont < arccosti.numcosti; cont++) { sommacosti = sommacosti + arccosti.seq[cont].importo; risultatodigestione = fatturatototale sommacosti;

6 Sottoprogrammi I sottoprogrammi sono lo strumento per realizzare astrazioni sulle operazioni Arricchiamo quindi la struttura di un programma Una parte dichiarativa globale Contiene la dichiarazione di tutti gli elementi che sono condivisi, ossia usati in comune, dal programma principale e dai sottoprogrammi Una successione di definizioni di funzioni Il programma principale e ciascun sottoprogramma possono usare Tutti gli elementi dichiarati nella loro propria parte dichiarativa Tutti gli elementi dichiarati nella parte dichiarativa globale

7 Funzioni (definizione e uso) La sua definizione consiste in una testata (header) la parte dichiarativa (detta parte dichiarativa locale) la parte esecutiva (detta corpo della funzione) La testata contiene tipo del risultato identificatore del sottoprogramma lista dei parametri (formali) cui la funzione viene applicata con il relativo tipo Una funzione non può restituire array o funzioni ma può restituire un puntatore a qualsiasi tipo

8 Qualche esempio di testata Int fatturatototale(elencofatture par) Boolean precede(stringa par1, Stringa par2) Boolean esiste(int par1, SequenzaInteri par2) MatriceReali10Per10 *matriceinversa (MatriceReali10Per10 *par)

9 Funzioni complete int fatturatototale (ElencoFatture parametro) { int totale, cont; totale = 0; for (cont = 0; cont < parametro.numfat; cont++) totale = totale + parametro.seq[cont].importo; return totale; int radiceintera(int par) { int cont; cont = 0; while (cont*cont <= par) cont = cont + 1; return (cont 1);

10 Chiamata delle funzioni Identificatore della funzione seguito dalla lista dei parametri attuali Ogni parametro può essere un espressione qualsiasi La corrispondenza tra parametri segue l ordine della dichiarazione Il tipo dei parametri attuali deve essere compatibile con il tipo dei corrispondenti parametri formali La stessa funzione può essere chiamata in diversi punti dello stesso programma con diversi parametri attuali

11 Alcuni esempi x = sin(y) cos(pigreco alfa); x = cos(atan(y) beta); x = sin(alfa); y = cos(alfa) sin(beta); z = sin(pigreco) + sin(gamma); risultatodigestione = fatturatototale(archiviofatture) sommacosti(archiviocosti); det1 = determinante(matrice1); det2 = determinante(matriceinversa(matrice2)); totaleassoluto = sommatoria(lista1) + sommatoria(lista2); elencoordinato = ordinamento(elenco); ordinatialfabeticamente = precede(nome1, nome2);

12 Prototipo delle funzioni All interno di un programma C una funzione può essere chiamata purché risulti definita oppure dichiarata La dichiarazione di una funzione (prototipo) si limita a richiamarne la testata Aiuta il compilatore ed è buono stile di programmazione Riassumendo, la parte dichiarativa del programma principale e quella dichiarativa di una funzione contengono i seguenti elementi dichiarazioni di costanti dichiarazioni di tipo dichiarazioni di variabili prototipi delle funzioni

13 /* Programma Contabilità */ /* Parte direttiva */ #include <stdio.h> #define MaxNumFatture 1000 /* Parte dichiarativa globale */ typedef char String [30]; typedef struct {String indirizzo; int ammontare; Data datafattura; DescrizioneFatture; typedef struct {int NumFatture; DescrizioneFatture sequenza[maxnumfatture]; ElencoFatture; int main() { ElencoFatture archiviofatture1, archiviofatture2; int fatt1, fatt2, fatt; int fatturatototale(elencofatture parametro); /* Prototipo */... fatt1 = fatturatototale(archiviofatture1); fatt2 = fatturatototale(archiviofatture2); fatt = fatt1 + Fatt2;... /* Fine del main del programma Contabilità */ int fatturatototale(elencofatture parametro) { int totale, cont; return totale;

14 Invocazione archiviofatture1 archiviofatture2 fatt1 fatt2 parametro totale cont fatturatototale

15 Le procedure Non tutte le operazioni astratte sono formalizzabili come funzioni nel senso matematico del termine AggiornaSemaforo diminuisce di un valore costante il campo CodaSinistra o CodaDestra a seconda che lo stato del semaforo sia VerdeSinistra o VerdeDestra dà al campo Stato il valore VerdeSinistra se CodaSinistra > Coda Destra e viceversa

16 Procedure e funzioni Da un punto di vista sintattico le procedure si distinguono dalle funzioni per Il tipo speciale void del risultato La chiamata non produce un valore e non può trovarsi quindi all interno di un espressione

17 typedef struct {String indirizzo; int ammontare; Data datafattura; DescrizioneFatture; typedef struct {int numfatture; DescrizioneFatture sequenza[maxnumfatture]; ElencoFatture; ElencoFatture archiviofatture; int main() { Data dataodierna; DescrizioneFatture fattura1, fattura2; void inseriscifattura(descrizionefatture fattura); boolean precede(data num1, Data num2); /* Sequenza di istruzioni che leggono i dati di una fattura in Fattura1 */ inseriscifattura(fattura1); /* Sequenza di istruzioni che leggono i dati di una fattura in Fattura2 */ if (precede(fattura2.dataemissione, dataodierna)) inseriscifattura (Fattura2); void inseriscifattura(descrizionefatture fattura) { if (archiviofatture.numfatture == MaxNumFatture) printf("l'archivio è pieno.\n"); else { archiviofatture.numfatture = archiviofatture.numfatture + 1; archiviofatture.sequenza[archiviofatture.numfatture 1] = fattura;

18 Procedure e funzioni archiviofatture Ambiente globale dataodierna fattura1 fattura2 fattura Ambiente locale di inseriscifattura Ambiente del main L esecuzione di una procedura non produce un risultato ma cambia lo stato del programma Le varie procedure e funzioni (main compreso) non possono accedere agli ambienti locali altrui

19 Problema void InserisciFattura(DescrizioneFatture fattura, ElencoFatture archiviofatture) { /* Sia la fattura da inserire sia l'archivio in cui inserirla sono dei parametri */ if (archiviofatture.numfatture == MaxNumFatture) printf("l'archivio è pieno."); else { archiviofatture.numfatture = archiviofatture.numfatture + 1; archiviofatture.sequenza[archiviofatture.numfatture 1] = fattura; /*Fine della procedura InserisciFattura */ inseriscifattura(fattura1, archiviofatture5); L esecuzione della procedura produce l effetto di inserire il valore di fattura in archiviofatture, ma non in archiviofatture5, che è invece rimasto esattamente come prima! Infatti l operazione viene eseguita sul parametro formale, non sul corrispondente parametro attuale

20 Come risolvere il problema Alcuni linguaggi offrono al programmatore un diverso modo di passare: passaggio parametri per indirizzo Esso si contrappone al modo usato finora, detto passaggio per valore Parametri attuali Parametri formali x A Ind(x) = Passaggio per valore Ind(y) = 1004 y A Passaggio per indirizzo Quando un parametro è passato per indirizzo, al momento della chiamata del sottoprogramma, invece di copiare il valore del parametro attuale nella corrispondente cella del parametro formale, si copia semplicemente l indirizzo della cella contenente il parametro attuale in un opportuna cella attribuita al parametro formale In C la modalità di passaggio dei parametri a un sottoprogramma è sempre quella di passaggio per valore

21 Passaggio per indirizzo in C Dobbiamo arrangiarci facendo noi in qualche modo ciò che in altri linguaggi fanno direttamente utilizzando il costruttore di tipo puntatore per la definizione dei parametri formali della funzione usando l operatore di dereferenziazione di puntatore (operatore * o >) all interno del corpo della funzione passando al momento della chiamata della funzione come parametro attuale un indirizzo di variabile

22 /*Programma Contabilità */ int main() { ElencoFatture archiviofatture5; /* Si noti che srchiviofatture5 è in questo caso una variabile locale del main. Appartiene all'ambiente del programma chiamante */ Data dataodierna; DescrizioneFatture fattura1, fattura2; /* Prototipo della procedura InserisciFattura */ void inseriscifattura(descrizionefatture fattura, ElencoFatture *parchiviofatture); /* Prototipo della funzione Precede */ boolean precede(data num1, Data num2); /* Sequenza di istruzioni che leggono i dati di una fattura in Fattura1 */ /* Chiamata della procedura InserisciFattura: alla procedura viene passato il valore di fattura1 e l'indirizzo di archiviofatture5 */ inseriscifattura(fattura1, &archiviofatture5); /* Sequenza di istruzioni che leggono i dati di una fattura in Fattura2 */ if (precede(fattura2.dataemissione, dataodierna) inseriscifattura(fattura2, &archiviofatture5); /* Nuova chiamata della procedura InserisciFattura: alla procedura viene passato il valore di fattura2 e l'indirizzo di archiviofatture5 (ma potrebbe essere un altro) */

23 /* Definizione della procedura InserisciFattura */ void inseriscifattura(descrizionefatture Fattura, ElencoFatture *parchiviofatture) { /* La fattura da inserire e l'indirizzo dell'archivio in cui inserirla sono dei parametri */ if (parchiviofatture >numfatture == MaxNumFatture) /* parchiviofatture è una variabile che punta a una struttura avente un campo di nome NumFatture. La notazione parchiviofatture >numfatture si riferisce al campo numfatture della variabile strutturata cui punta parchiviofatture */ printf ("L'archivio è pieno.\n"); else { parchiviofatture >numfatture = parchiviofatture >numfatture + 1; parchiviofatture > dequenza[parchiviofatture >numfatture 1] = fattura;

24 Struttura generale di un programma C Parte direttiva Parte dichiarativa globale che comprende dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di procedure e funzioni Programma principale Funzioni e procedure

25 Blocco Un blocco è composto da due parti sintatticamente racchiuse tra parentesi graffe una parte dichiarativa (facoltativa) una sequenza di istruzioni Diversi blocchi possono comparire internamente al main o alle funzioni che compongono un programma C I blocchi possono risultare paralleli o annidati La raccomandazione è di non abusarne...

26 #include <stdio.h> /* Parte dichiarativa globale */ int g1, g2; char g3; int f1 (int par1, int par2); main () { int a, b; int f2 (int par3, int par1); /* blocco1 */ {char a, c;... /* blocco2 annidato nel blocco1 */ {float a; /* Fine blocco2 */ /* Fine blocco1 */ /* Fine main */ Esempio (I)

27 Esempio (II) int f1(int par1, int par2) { int d; /* blocco 3 */ {int e; /* Fine blocco 3 */ /* blocco4 */ {int d; /* Fine blocco4 */ /* Fine f1 */ /* Definizione della funzione f2 */ int f2 (int par3, int par4) { int f;... /* Fine f2 */

28 Modello a contorni

29 Regole di visibilità il main può accedere alle variabili globali g1, g2 e g3 e a quelle locali a e b Il main può inoltre chiamare sia la funzione f1 sia la funzione f2 il blocco blocco1 può accedere alle variabili globali g1, g2, g3, alla variabile locale al main b e alle variabili a e c del proprio ambiente (a è stata ridefinita da blocco1) Il blocco blocco1 può inoltre richiamare sia f1 sia f2 il blocco blocco2 può accedere alle variabili globali g1, g2, g3, alla variabile locale al main b, alla variabile del blocco blocco1 c e alla variabile a del proprio ambiente (a è stata ridefinita da blocco2) Il blocco blocco2 può inoltre richiamare sia f1 sia f2

30 Regole di visibilità la funzione f1 può accedere alle variabili globali g1, g2 e g3 e a quella locale d. La funzione f1 può inoltre chiamare la funzione f2 o richiamare se stessa ma non può accedere alle variabili a, b, c, f il blocco blocco3 può accedere alle variabili globali g1, g2, g3, alla variabile d, locale a f1, e alla variabile e del proprio ambiente Il blocco blocco3 può inoltre richiamare sia f1 sia f2 il blocco blocco4 può accedere alle variabili globali g1, g2, g3, e alla variabile d del proprio ambiente (d è stata ridefinita da blocco4) il blocco blocco4 non può invece accedere alla variabile e propria del blocco blocco3 Il blocco blocco4 può inoltre richiamare sia f1 sia f2 la funzione f2 può accedere alle variabili globali g1, g2 e g3 e a quella locale f. La funzione f2 può chiamare la funzione f1 o richiamare se stessa e non può accedere alle variabili a, b, c, d, e

31 Durata delle variabili Variabili globali o statiche (static): i loro valori vengono mantenuti anche all esterno del loro ambito di visibilità Variabili automatiche (auto): i loro valori non vengono mantenuti all esterno del proprio ambito di visibilità Quando il controllo passa a una particolare funzione -o blocco- viene allocato in memoria lo spazio per le variabili locali e tale spazio viene rilasciato quando il controllo ritorna all ambiente chiamante

32 Variabili statiche int f1(int par1, int par2) { static int d; /* blocco3 */ {int e; /* blocco4 */ {int d; È possibile usare la variabile d (a durata fissa) ad esempio per contare il numero di chiamate effettuate alla funzione f1 durante l esecuzione del programma globale La variabile d è allocata in memoria quando f1 viene chiamata per la prima volta ma non viene distrutta al termine dell esecuzione della funzione

33 Parametri di tipo array Quando un array viene passato a una funzione come parametro formale, l indirizzo di base dell array viene passato per valore alla funzione Di fatto si realizza quindi un passaggio di parametro per indirizzo : il parametro formale dichiarato nella testata della funzione viene trattato come puntatore typedef double TipoArray[MaxNumElem] le tre testate di funzione riportate di seguito sono in C di fatto equivalenti: double sum (TipoArray a, int n) /* n è la dimensione dell'array passato */ double sum (double *a, int n) double sum (double a[ ], int n)

34 Esempio double mul(double a[], int n) { int i; double ris = 1.0; for (i=0; i < n; i=i+1) ris = ris * a[i]; return ris; Una funzione C non può mai restituire un array, ma soltanto un puntatore all array

35 Parametri di tipo struttura Una struttura può essere passata per valore anche quando contiene un componente di tipo array In tal caso, viene copiato nel parametro formale, l intero valore del parametro attuale, contenuto dell array, incluso Una funzione C può anche restituire per valore o per indirizzo una struttura (anche quando contiene un componente di tipo array)

36 Procedure e funzioni int primoesempio(int par) { return (par + x); x = 1; x = primoesempio(1); x = primoesempio(1); /* la sua chiamata produce, la prima volta, il risultato 2, la seconda volta 3 */

37 Altri esempi int secondoesempio(int *par) { *par = *par + 1; return *par; /* y = SecondoEsempio (&z) assegna alla variabile y il valore di z+1, ma anche z assume lo stesso valore (side effect) */ int terzoesempio(int par) { x = par + 2; return (par + 1); /* z = terzoesempio(4) assegna a z il valore 5, ma anche il valore 6 a x */

38 Ulteriore esempio Si supponga di voler esaminare l ultima fattura inserita nella variabile afatture e di volerla eliminare se il giorno di emissione corrisponde a quello desiderato DescrizioneFatture esaminaelimina(giorno g) { DescrizioneFatture flocale; flocale = afatture.sequenza[afatture.nfatture 1]; if (FatturaLocale.DataEmissione.Giorno == g) afatture.nfatture = afatture.nfatture 1; return flocale;

39 Uso interscambiabile di procedure e funzioni int f(int par1) {... return risultato; /* oppure */ void f(int par1, int *par2) { int risultato; par2 = &risultato; y = f (x); /* oppure */ f(x, &y);

40 Librerie standard Operazioni di ingresso/uscita Operazioni su file Operazioni matematiche e aritmetiche: operazioni trigonometriche, operazioni esponenziali e logaritmiche e l operazione per il calcolo del valore assoluto Operazioni di gestione della memoria Operazioni di gestione di caratteri e di gestione di stringhe Operazioni di ricerca e ordinamento applicabili ad array, operazioni di gestione di date e tempo, operazioni di utilità generale quali la generazione di numeri casuali Operazioni di comunicazione con l ambiente del sistema operativo e una operazione per la gestione degli errori che hanno provocato un fallimento nell esecuzione di una funzione

41 /* Programma Concatenazione di stringhe */ #include <stdio.h> #include <string.h> #define LunghezzaArray 50 main() { char PrimaStringa[LunghezzaArray], SecondaStringa[LunghezzaArray], StringaConc[2 * LunghezzaArray]; unsigned LunghezzaConc; scanf( %s, PrimaStringa); 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( La stringa ottenuta concatenando le due stringhe lette è %s. Essa è lunga %d caratteri\n, StringaConc, LunghezzaConc);

42 I file header Le funzioni della libreria sono disponibili in C come file di codice compilato, non leggibili direttamente dal programmatore È comunque compito del programmatore inserire nel programma i prototipi delle funzioni che verranno usate Per facilitare questo compito, la libreria C comprende alcuni file, chiamati header file, che contengono i prototipi di un insieme di funzioni di libreria Ciò spiega finalmente la #include <stdio.h> e le altre #include <xxx.h> Il preprocessore copia il contenuto del file stdio.h nel programma, inserendo i prototipi delle funzioni che appartengono al gruppo di cui xxx.h è il file testata

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

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

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

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

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

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

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

Sottoprogrammi: motivazioni. Funzioni e procedure. Un esempio motivante. Un esempio motivante 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

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

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

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

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

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

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

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

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

Dove vengono definiti? il concetto di sottoprogramma

Dove vengono definiti? il concetto di sottoprogramma ROADMAP Funzioni e struttura di un programma Tipi, operatori, espressioni Strutture di controllo Livello 1 Input/Output Strutture dati FUNZIONI E STRUTTURA DI UN PROGRAMMA Livello 2 funzioni procedure

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

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

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

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

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

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. 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

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

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, 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

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

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

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

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

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

Array e puntatori. Indice. Tipi di dati strutturati: Array Puntatori Tipi di dati strutturati: Array Esempio. Corso di Informatica A.

Array e puntatori. Indice. Tipi di dati strutturati: Array Puntatori Tipi di dati strutturati: Array Esempio. Corso di Informatica A. Array e puntatori Corso di Informatica A Vito Perrone 1 Indice Tipi di dati strutturati: Array Puntatori Tipi di dati strutturati: Array Esempio 2 I tipi strutturati: 1. Il costruttore array Definizione

Dettagli

Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java

Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java Prof.Angela Bonifati 1 Istruzione while int vet1[] = new int[20]; int vet2[] = new int[20]; for(int

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

Linguaggio C - Stringhe

Linguaggio C - Stringhe ISTITUTO SECONDARIO DI ISTRUZIONE SUPERIORE "Guido Tassinari" di POZZUOLI Informatica Prof. A.S. 2011/2012 Linguaggio C - Stringhe 27/04/2012 Array di caratteri Una stringa è: Un array di caratteri Termina

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

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

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10 Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

La Programmazione. Cos è la programmazione? Concetti preliminari

La Programmazione. Cos è la programmazione? Concetti preliminari La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione

Dettagli

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main() Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

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

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

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

Struttura di un. Struttura dei programmi C

Struttura di un. Struttura dei programmi C Parte 4 Struttura di un Programma Struttura dei programmi C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume in un file): 1. Una parte contenente direttive

Dettagli

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

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

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

Introduzione alla Ricorsione

Introduzione alla Ricorsione Introduzione alla Corso di Informatica A Vito Perrone Indice La formulazione in termini ricorsivi di problemi e algoritmi La ricorsione come strumento di programmazione L esecuzione dei sottoprogrammi

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

Lezione XI Le stringhe

Lezione XI Le stringhe Programmazione e Laboratorio di Programmazione Lezione XI Le stringhe Programmazione e Laboratorio di Programmazione: Le stringhe 1 Premessa: Il tipo char Dimensione: 1 byte Range: da 0 a 255 Definizione:

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.

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

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

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

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

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C Introduzione 2 Introduzione al C Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali

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

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

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

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

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

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

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 2016

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

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

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07 Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri

Dettagli

Corso Programmazione

Corso Programmazione Corso Programmazione 2011-2012 (docente) Fabio Aiolli E-mail: aiolli@math.unipd.it Web: www.math.unipd.it/~aiolli Dipartimento di Matematica Pura ed Applicata Torre Archimede, Via Trieste 63 Puntatori,

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

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

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

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

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Stringhe Ricerca binaria

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Stringhe Ricerca binaria Informatica A (per gestionali) A.A. 2004/2005 Esercizi di programmazione C Stringhe Ricerca binaria Indice 1 Stringhe... 3 1.1 Codice di Cesare...3 1.2 Ricerca binaria...4 1.3 Indirizzi Internet...7 1.4

Dettagli

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO PROGRAMMA Aspetti fondamentali della programmazione con riferimento ad un linguaggio di programmazione: astrazione

Dettagli

Lezione 6: Array e puntatori

Lezione 6: Array e puntatori Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci

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

Introduzione al C. Introduzione

Introduzione al C. Introduzione Introduzione al C Introduzione 2 Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali

Dettagli

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

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

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

Puntatore. Ritorniamo sul problema dell accesso alle variabili

Puntatore. Ritorniamo sul problema dell accesso alle variabili Puntatori Puntatore Ritorniamo sul problema dell accesso alle variabili Nel linguaggio di von Neumann attraverso il loro indirizzo Nei linguaggi di alto livello attraverso il loro nome Però in taluni casi

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

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

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14 Stringhe in C Nicu Sebe Informatica Nicu Sebe 1 / 14 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

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

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani

Dettagli