Tecniche della Programmazione, lez.15

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tecniche della Programmazione, lez.15"

Transcript

1 Tecniche della Programmazione, lez.15 - Richiamo su (perche' serono molto da qui in poi) - scansione di ay con puntatori - Varie applicazioni dell uso di puntatori - Scansione e ricerca in ay - Riuso di una funzione su ay - Uso di puntatori per gestire parametri di output - Tecniche della Programmazione, M.Temperini, Lez uso di puntatori Cogito ergo sum: riflettere sulla differenza nell'uso dell'asterisco in int * pi; e *pi=3; nel primo caso si tratta di una definizione e l'asterisco e' usato per dire che stiamo definendo una ariabile puntatore; nel secondo caso stiamo usando una ariabile puntatore pi, per eseguire l'assegnazione di 3 nella locazione intera puntata da pi

2 Chiamata ed Attiazione di funzione 1/2 int mcd(int n, int m) { int risult; while (n!=m) if (m>n) m=m-n; else n-=m; risult = n; /* (o m ) */ return risult; #include <stdio.h> int main() { int primo, secondo; printf("numeri "); scanf("%d %d", &primo, &secondo); printf("mcd=%d\n", mcd(primo, secondo)); return 0; funzione mcd, PARAMETRI FORMALI: n, m VARIABILI LOCALI: risult VALORE RISULTATO di tipo int CHIAMATA di funzione, - PARAMETRI ATTUALI: primo, secondo ATTIVAZIONE 1) passaggio dei parametri: ATTUALI ---> FORMALI 2) esecuzione del codice della funzione 3) restituzione del risultato Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 2/20

3 Chiamata ed Attiazione di funzione 2/2 #include <stdio.h> int main() { int primo, secondo; printf("mcd=%d\n", mcd(primo, secondo)); return 0; CHIAMATA di funzione, - PARAMETRI ATTUALI: primo, secondo ATTIVAZIONE (alloc. ) 1) passaggio dei parametri: ATTUALI ---> FORMALI 2) esecuzione del codice della funzione nell' 3) restituzione del risultato e dealloc. int mcd(int n, int m) { int risult; return risult; primo secondo Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 3/20 5 Record di Attiazione: area di riserata per l'esecuzione di una chiamata mcd(primo, secondo) AREA PARAMETRI n RISULTATO 5 AREA VAR LOCALI risult m ALTRE AREE

4 Scansione ay in ari modi 1/ esercizio funzione che riceendo stampa #define N oid stampaarray1 (int [N]) { int i; for (i=0; i<n; i++) printf("componente %d = %d\n", i, [i]); return; int main() { int [N] = {; stampaarray1(); un ay () di N interi, (noto N come costante) stiamo passando un indirizzo stampaarray1() 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori /20 i PAR LOC

5 Scansione ay in ari modi 2/ come sopra, ma stampaarray2 e 3 hanno un parametro puntatore: dato che quel che si passa nella chiamata e' un puntatore, non c'e' problema. NB in stampaarray3 usiamo un puntatore come se fosse il nome di un ay oid stampaarray2 (int * ) { int i; for (i=0; i<n; i++) printf cosa? return; CHIAMATA: stampaarray2() [i] *(+i) stampaarray() PAR LOC i oid stampaarray3 (int * ) { int i; for (i=0; i<n; i++) [i] *(+i) printf notazione alternatia a quella sopra? return; CHIAMATA: stampaarray3() 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 5/20

6 Scansione ay in ari modi 2/ come sopra, ma stampaarray2 e 3 hanno un parametro puntatore: dato che quel che si passa nella chiamata e' un puntatore, non c'e' problema. NB in stampaarray3 usiamo un puntatore come se fosse il nome di un ay oid stampaarray2 (int * ) { int i; for (i=0; i<n; i++) printf("componente %d = %d\n", i, *(+i)); return; CHIAMATA: stampaarray2() stampaarray() PAR LOC i oid stampaarray3 (int * ) { int i; for (i=0; i<n; i++) printf("componente %d = %d\n", i, [i]); return; CHIAMATA: stampaarray3() [i] *(+i) 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori /20

7 Scansione ay in ari modi 3/ come sopra: ma stampaarray ricee un parametro di tipo ay e lo usa come se fosse un puntatore oid stampaarray (int [N]) { int i; stampaarray() PAR for (i=0; i<n; i++) printf("componente %d = %d\n", i, *(+i)); return; CHIAMATA: stampaarray() [i] *(+i) i LOC NB Le chiamate funzione() sembrano tutte uguali: prendono il medesimo parametro: A liello di tipi nei parametri delle funzioni int * e int [] sono equialenti 2 (discorso dierso se int * o int [N] fossero ariabili locali in una funzione ero? Perché??) Tecniche della Programmazione, M.Temperini, Lez uso di puntatori /20

8 Scansione ay in ari modi / come sopra: ora pero' la funzione usa un puntatore per scandire l'ay (e non piu' l'intero i) #define N oid stampaarraypunt (int *) { int *pi; pi punta dopo l ultima locazione stampaarraypunt() PAR for (pi= ; pi< ; pi++) printf(" - %d\n", *pi); return; pi punta sulla prima locazione pi LOC int main() { int [N] = {; stampaarraypunt(); 2 +N-1 +N Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 8/20

9 Scansione ay in ari modi / come sopra: ora pero' la funzione usa un puntatore per scandire l'ay (e non piu' l'intero i) #define N oid stampaarraypunt (int *) { int *pi; stampaarraypunt() PAR for (pi=; pi<+n; pi++) printf(" - %d\n", *pi); return; pi LOC int main() { int [N] = {; stampaarraypunt(); 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori /20 +N-1

10 Scansione ay in ari modi / come sopra: ora pero' la funzione usa un puntatore per scandire l'ay (e non piu' l'intero i) #define N oid stampaarraypunt (int *) { int *pi; for (pi=; pi<+n; pi++) printf(" - %d\n", *pi); return; &[N] stampaarraypunt() PAR LOC pi int main() { int [N] = {; stampaarraypunt(); 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 10/20 +N-1

11 Uso di Puntatori per scandire ay 1/2 esercizio funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (m) restituisca la somma dei primi m elementi di (o tutti se m>=n) /* 1a fase: ambiente di calcolo */ #define DIM (**) int main() { int [DIM]={; int quanti, sommaelem; quanti = ; sommaelem = sommaprimi(, DIM, quanti); printf(" %d ", sommaelem); return 0; /* scanf( %d, &quanti); */ /* 2a fase: PROTOTIPO (dichiarazione) (**) */ int sommaprimi (int *, int, int);, DIM, quanti sommaprimi(,, ); 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 11/20 n m ? +??

12 Uso di Puntatori per scandire ay 1/2 esercizio funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (m) restituisca la somma dei primi m elementi di (o tutti se m>=n) /* 1a fase: ambiente di calcolo */ #define DIM (**) int main() { int [DIM]={; int quanti, sommaelem; quanti = ; sommaelem = sommaprimi(, DIM, quanti); printf(" %d ", sommaelem); return 0; /* scanf( %d, &quanti); */ /* 2a fase: PROTOTIPO (dichiarazione) (**) */ int sommaprimi (int *, int, int);, DIM, quanti sommaprimi(,, ); 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 12/20 n m

13 Uso di Puntatori per scandire ay 2/2 Il prototipo sere a DICHIARARE la funzione, in modo che il codice successio la conosca (cioè il compilatore sappia come preparare la chimata, conoscendo 1) il tipo del risultato della funzione, 2) il nome della funzione, e 3) i nomi e tipi dei parametri). Se la funzione e dichiarata, la sua effettia DEFINIZIONE puo essere ritardata a dopo quella della funzione chiamante. /* 3a fase: definizione funzione */ int sommaprimi (int *, int n, int m) { int i, somma=0; for (i=0; i<m; i++) somma += *(+i); return somma; if (m>n) m=n; a fase? Test m < n / m == n m > n / m < 0, DIM, quanti sommaprimi(,, ); Tecniche della Programmazione, M.Temperini, Lez uso di puntatori /20 n m ? +??

14 Riuso di un modulo e gioco di puntatori esercizio dato un ay di elementi interi, stampare la somma A) dei primi 5 B) di quelli dal 2 o al 5 o /* 1a fase: ambiente di calcolo */ #define DIM int sommaprimi(int *, int, int); int main() { int [DIM]={; /* A) */ printf("somma primi 5: %d\n", sommaprimi(, DIM, 5)); sottoay di elem /* B) nell'ay di indirizzo iniziale +1 e lunghezza (DIM-1) sommare i primi (5-1) */ printf("somma da sec a quinto: %d\n", sommaprimi(+1, DIM-1, 5-1)); return 0; Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 1/20

15 Ricerca in ay, mediante puntatori 1/3 esercizio funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (chi) restituisca il puntatore al 1 o elemento di che e' uguale a chi /* definizione della funzione */ int * troaelemento(int *, int n, int chi) { int *pi = ; /* NB init in def; sarebbe equi. fare while (pi!= +n) if (*pi == chi) return pi; else pi++; return NULL; int *pi; pi=; */ - quando pi == +n (+n), uol dire che poco prima pi puntaa sull'ultimo elem. e ora punta fuori dell'ay; - se si scopre che chi==*pi, pi e' l'ind. cercato e si esce restituendo pi; - se nessun elemento e' == chi, iati fuori dell'ay si rest. NULL Test - chi e' in ay (in mezzo)? - chi non c'e'? - chi c'e' al primo posto? - chi c'e' all'ultimo posto? troaelemento(,, ) n-2 + n-1 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 15/20 PAR n chi 2 RISULT. LOC pi

16 Ricerca in ay, mediante puntatori 2/3 esercizio funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (chi) restituisca il puntatore alla ultima occorrenza di chi in (opp. NULL) /* 1a fase: ambiente di calcolo */ #define DIM int * troaultima (int *, int, int) int main() { int datroare=, [DIM]; int *pris; /* risultato */ /* lettura ay */ RISULT. troaultima(,, ) n chi pris = troaultima(, DIM, datroare); if (pris!= NULL) printf("troato %d\n", *pris); else printf("tsk tsk \n"); return 0; risultato e non n-2 + n-1 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 1/20

17 Ricerca in ay, mediante puntatori 3/3 esercizio ultima occorrenza /* definizione funzione */ int * troaultima (int *, int n, int chi) int *pr = NULL, /* risultato (se non cambia mai restituiremo NULL) */ *pi = ; /* per scandire ay */ while( pi < +n) { if (*pi == chi) pr = pi; pi++; return pr; un po' dierso dal caso precedente: qui quando troiamo "chi" (cioe' quando *pi == chi) dobbiamo -segnarci che all'indirizzo pi c'e' chi; -ma poi continuare a cercare chi (e quindi non si finisce qui, ma si incrementa comunque pi, in modo che alla prossima scansione si controllera' il prossimo elemento) -a meno che non sia finito l'ay (pi==+n) troaultima(,, ) Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 1/20 n chi n-2 + n-1 RISULT. pr pi

18 Uso di puntatori per PARAMETRI DI OUTPUT 1/ esercizio funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (chi) restituisca 1) puntatore alla ultima occorrenza di chi in (opp. NULL) due cose 2) numero di occorrenze di chi in (restituisce 2 risultati?!) un risultato (il primo) iene restituito dalla chiamata tramite return(come nell'esercizio precedente; l'altro risultato iene gestito come parametro di output: una ariabile passata alla funzione nella chiamata, che subisce modifiche (side effect - effetti collaterali) durante l'esecuzione della chiamata. ma non è esattamente così: iiamoci Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 18/20

19 Uso di puntatori per PARAMETRI DI OUTPUT 2/ esercizio Primo risultato: funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (chi) restituisca - puntatore alla ultima occorrenza di chi in (opp. NULL) - numero di occorrenze di chi in int main() { int datroare =, [DIM], numeroocc, *pris; pris = troaeconta(, DIM, datroare); /* modifica numeroocc)*/ pris?? numeroocc al momento della chiamata 2 troaeconta(, DIM, datroare) n chi Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 1/20

20 Uso di puntatori per PARAMETRI DI OUTPUT 2/ esercizio funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (chi) restituisca - puntatore alla ultima occorrenza di chi in (opp. NULL) - numero di occorrenze di chi in Primo risultato: oiamente OK what about the second? int main() { int datroare =, [DIM], numeroocc, *pris; pris = troaeconta(, DIM, datroare); /* modifica numeroocc)*/ pris? numeroocc al momento della chiamata 2 troaeconta(, DIM, datroare) n chi Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 20/20

21 Uso di puntatori per PARAMETRI DI OUTPUT 3/ esercizio funzione che riceendo un ay () di interi, la dimensione (n) di, e un intero (chi) restituisca - puntatore alla ultima occorrenza di chi in (opp. NULL) - numero di occorrenze di chi in Secondo risultato: int main() { int datroare =, [DIM], numeroocc, *pris; pris = troaeconta(, DIM, datroare); /* modifica numeroocc)*/ ariabili di proprietà della funzione chiamante - main() pris Tentatio ingenuo?? numeroocc al momento della chiamata 2 (tsk) una istruzione della funzione, che modifichi numeroocc e' illegale (la funzione non "ede" numeroocc). troaeconta(, DIM, datroare) n chi numeroocc = 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 21/20

22 Uso di puntatori per PARAMETRI DI OUTPUT / In qualche modo ci dee essere un parametro, collegato a numeroocc, che permetta di modificare numeroocc dall interno della funzione. int * troaeconta (int *, int n, int chi, int occorrenze) { (tsk, tsk ) int main() { int datroare =, [DIM], numeroocc, *pris; pris = troaeconta(, DIM, datroare, numeroocc); al momento della chiamata pris 2 troaeconta(, DIM, datroare, numeroocc) n? numeroocc chi occorrenze? 2 occorrenze = 2 Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 22/20

23 Uso di puntatori per PARAMETRI DI OUTPUT / In qualche modo ci dee essere un parametro, collegato a numeroocc, che permetta di modificare numeroocc dall interno della funzione. int * troaeconta (int *, int n, int chi, int occorrenze) { (tsk, tsk ) int main() { int datroare =, [DIM], numeroocc, *pris; pris = troaeconta(, DIM, datroare, numeroocc); dopo la chiamata pris 2? numeroocc Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 23/20

24 Uso di puntatori per PARAMETRI DI OUTPUT / In qualche modo ci dee essere un parametro, collegato a numeroocc, che permetta di modificare numeroocc dall interno della funzione. int main() { int datroare =, [DIM], numeroocc, *pris; pris = troaeconta(, DIM, datroare, numeroocc); al momento della chiamata (tsk, tsk ) pris? 2 troaeconta(, DIM, datroare, numeroocc) n pris? numeroocc? numeroocc 2 DOPO la chiamata Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 2/20 chi occorrenze = 2 ma occorrenze? 2 1) il parametro occorrenze corrisponde ad una locazione interna al (DIVERSA DALLA numeroocc della main() 2) il passaggio di un parametro e' "per alore" (QUI alore non definito!!) 3) occorrenze (parametro formale) iene modificata. La numeroocc della main() NO.

25 Uso di puntatori per PARAMETRI DI OUTPUT 5/! La soluzione, per gestire PARAMETRI DI OUTPUT, e' nell'uso della tecnica del PASSAGGIO DI INDIRIZZO: un escamotage per riuscire a ottenere effetti collaterali (indiretti ma effettii) con le funzioni C - non a passato numeroocc (cioe' il suo alore) - a passato &numeroocc, cioe' l'indirizzo della locazione - la funzione ricee l'indirizzo e usandolo riesce a modificare la ariabile esterna numeroocc al momento della chiamata pris? 2 troaeconta(, DIM, datroare, &numeroocc) n? numeroocc chi pocc *pocc = 2 con questa istruzione, eseguita nell'ambiente della funzione, iene modificata una locazione che appartiene ad un ambiente dierso Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 25/20

26 Uso di puntatori per PARAMETRI DI OUTPUT /!! /* definizione funzione */ int * troaeconta (int *, int n, int chi, int *pocc) int *pr = NULL, /* risultato (se non cambia mai restituiremo NULL */ *pi = ; /* per scandire ay */ *pocc = 0; /* contatore occorrenze NB da inizializzare!*/ while( pi < +n) { if (*pi == chi) { pr = pi; *pocc += 1; pi++; return pr; risultato pris Tecniche della Programmazione, M.Temperini, Lez uso di puntatori 2/20? datroare? numeroocc 2 troaeconta(, DIM, datroare, &numeroocc) n chi pocc *pocc += 1 Dopo il passaggio indietro del risultato deallocazione del

- 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

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

Tecniche della Programmazione, M.Temperini, Liste Concatenate 3 1/18

Tecniche della Programmazione, M.Temperini, Liste Concatenate 3 1/18 Tecniche della Programmazione, M.Temperini, Liste Concatenate 3 1/18 Eliminazione di un elemento da una typedef int TipoElem; int main() { TipoLista ; TipoElem ; /* costruzione */ /* l'el. da eliminare

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 4 Operatori e introduzione a funzioni Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Soluzioni ad alcuni esercizi Alcuni commenti sugli

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

Ambienti di Programmazione per il Software di Base

Ambienti di Programmazione per il Software di Base Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" Cosa e aux? Di che tipo e e cosa contiene?

Previously on TDP. LISTA rappresentata mediante struct e puntatori Cosa e aux? Di che tipo e e cosa contiene? Previously on TDP lis ^ ^ 7 21 ** ** 14 *** memoria 9 NULL LISTA rappresentata mediante "struct e puntatori" *** lis->info == cosa? lis->next == ^^; /*cosa e ^^?*/ che cosa e' (*lis)? Cosa e aux? Di che

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux.

Previously on TDP. LISTA rappresentata mediante struct e puntatori TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux. Previously on TDP lis 7 21 ** ** 14 *** *** memoria 9 LISTA rappresentata mediante "struct e puntatori" TipoLista lis lis->info == cosa? lis->next == ; /*cosa e?*/ che cosa e' (*lis)? Dichiarare DISEGNARE

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

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

Tecniche della Programmazione, lez.9

Tecniche della Programmazione, lez.9 Tecniche della Programmazione, lez.9 Funzioni e programmazione modulare 1/73 What s Modulo? Sappiamo gia che il programma e composto da una collezione di oggetti #include int main () { int n=4;

Dettagli

Compito A. Compito A Sintesi (main(

Compito A. Compito A Sintesi (main( a) chieda all utente il numero di giorni G del mese preso in esame e che controlli che G abbia valore tra 28 e 31 compresi b) chieda all utente di inserire G temperature in ordine dal primo all ultimo

Dettagli

Lezione 23 - ADT LISTA

Lezione 23 - ADT LISTA Lezione 23 - ADT LISTA Rappresentazione concreta del Tipo di Dati Astratto LISTA. - Cenni sulla rappresentazione mediante array (puah!) - Rappresentazione concreta mediante struct e puntatori. - concetto

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

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

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

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

Tecniche della Programmazione, lez.15

Tecniche della Programmazione, lez.15 Tecniche della Programmazione, lez.15 Uso dell'allocazione dinamica; gestione di stringhe; gestione di una struttura dati per una collezione di stringhe - impostazione esercizio arraydouble (vedi video

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

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

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

E12 Esercizi su Strutture dati dinamiche in C

E12 Esercizi su Strutture dati dinamiche in C E12 Esercizi su Strutture dati dinamiche in C Esercizio 1. Si vuole realizzare una lista caratteri in C utilizzando una rappresentazione semplicemente collegata. Scrivere una struttura nodo che contiene

Dettagli

Capitolo 11. Puntatori

Capitolo 11. Puntatori 1 Capitolo 11 Puntatori 2 Variabili puntatore Cerchiamo di capire come le informazioni sono memorizzate nella memoria del computer La memoria è un sequenza di byte Ogni byte è composto da 8 bit: Ogni byte

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

Manualistica 3 Le strutture di controllo

Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione: Le strutture di controllo 1 Le strutture di controllo Strutture di

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

Capitolo 12. Puntatori ed array

Capitolo 12. Puntatori ed array 1 Capitolo 12 Puntatori ed array Introduzione 2 Il C permette di eseguire addizioni e sottrazioni con i puntatori Pertanto possiamo gestire gli array usando i puntatori al posto degli indici L interconnessione

Dettagli

Prof. G. Ascia. I puntatori. Fondamenti di Informatica

Prof. G. Ascia. I puntatori. Fondamenti di Informatica I puntatori 1 Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include

Dettagli

LE FUNZIONI PARTE II. Manuale linguaggio C

LE FUNZIONI PARTE II. Manuale linguaggio C LE FUNZIONI PARTE II Manuale linguaggio C Principio di funzionamento int main(void) int x,y; /* leggi un numero compreso tra 50 e 100 e memorizzalo in x */ /* leggi un numero compreso tra 1 e 10 e memorizzalo

Dettagli

cons: L E L (...), e (e,...) Operatori tradizionali sulle liste car: (e,...) cdr: What s LISTE? null: () TRUE (...) FALSE Una lista e' una

cons: L E L (...), e (e,...) Operatori tradizionali sulle liste car: (e,...) cdr: What s LISTE? null: () TRUE (...) FALSE Una lista e' una What s LISTE? Una lista e' una ( es. λ = {4, 9, 1 E = dominio degli elementi di lista (persone, voli, interi, lettere...) L = {λ / λ e' una lista di elementi in E Bool = {TRUE, FALSE cons: L E L (...),

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

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

Associazione Variabile-Indirizzo

Associazione Variabile-Indirizzo I puntatori Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include

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

L'Allocazione Dinamica della Memoria nel linguaggio C

L'Allocazione Dinamica della Memoria nel linguaggio C L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni

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

Introduzione al C. Unità 6 Puntatori. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi

Introduzione al C. Unità 6 Puntatori. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 6 Puntatori S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Sommario

Dettagli

ESERCIZIO: Analisi di un programma. Dato il seguente programma C:

ESERCIZIO: Analisi di un programma. Dato il seguente programma C: : Analisi di un programma Dato il seguente programma C: #include #define D 4 float A(float V[], int k) {int i; float s=0.0; for(i=0;i

Dettagli

Il linguaggio C Puntatori

Il linguaggio C Puntatori Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi

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

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

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali

Dettagli

Tipi di dato STRUTTURATI

Tipi di dato STRUTTURATI Tipi di dato STRUTTURATI I tipi di dato si differenziano in scalari e strutturati In C si possono definire tipi strutturati: array e strutture [ ] (array) Un array è una collezione finita di N variabili

Dettagli

Puntatori. Fondamenti di Programmazione

Puntatori. Fondamenti di Programmazione Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale

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

Manualistica 3 Le strutture di controllo

Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione: Le strutture di controllo 1 Le strutture di controllo Strutture di

Dettagli

La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre

La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre Unica particolarità: viene chiamata dal Sistema Operativo, appena il programma viene avviato Non

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

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

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

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

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano.venturini@isti.cnr.it URL del corso http://www.cli.di.unipi.it/doku/doku.php/informatica/all-b/start Lezioni - Lunedì 16-18 Aula M - Martedì

Dettagli

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

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

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica C: costanti introdotte con #define Laboratorio di informatica Ingegneria meccanica Lezione 4 22 ottobre 2007 Forma: #define nome valore Effetto: ogni occorrenza successiva di nome sarà rimpiazzata con

Dettagli

Istruzioni di controllo

Istruzioni di controllo Istruzioni di controllo Le istruzioni in C Assegnazione Sequenza I/O Test Cicli Controllo = che cosa è la prossima cosa da fare La prossima cosa da fare è quella che segue La prossima cosa da fare dipende

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

I puntatori. DD Cap.7 pp KP Cap.6 pp

I puntatori. DD Cap.7 pp KP Cap.6 pp I puntatori DD Cap.7 pp.245-280 KP Cap.6 pp.219-235 Cos è un puntatore Un puntatore è una variabile che assume come valore un indirizzo di memoria. Il nome di una variabile fa quindi riferimento ad un

Dettagli

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto: ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti

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

5. Quinta esercitazione autoguidata: liste semplici

5. Quinta esercitazione autoguidata: liste semplici 22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto

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

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1) Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Strutture e Unioni DD Cap. 10, pp. 379-391, 405-406 KP Cap. 9, pp. 361-379 Strutture Strutture Collezioni di variabili correlate (aggregati)

Dettagli

Funzioni in C. Informatica Generale - Funzioni in C Versione 1.0, aa p.1/25

Funzioni in C. Informatica Generale - Funzioni in C Versione 1.0, aa p.1/25 Funzioni in C Informatica Generale - Funzioni in C Versione 1.0, aa 2005-2006 p.1/25 Definizione di funzione () è

Dettagli

Le funzioni. La Forma Generale di Funzione

Le funzioni. La Forma Generale di Funzione 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

Le funzioni. La Forma Generale di Funzione

Le funzioni. La Forma Generale di Funzione 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

Esercitazione 7. Soluzione:

Esercitazione 7. Soluzione: Esercitazione 7 Esercizio 1: Scrivere una funzione ricorsiva che calcoli il MCD di due numeri interi positivi. Ricordare che la funzione MCD(N,M) termina quando N == M e si ritorna N. int MCD(int N, int

Dettagli

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Introduzione al C Lez. 4. Allocazione Dinamica della memoria Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria

Dettagli

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica Laboratorio di informatica Ingegneria meccanica Esercitazione 8 21 Novembre 2007 Funzioni in C Un programma C si compone di funzioni E' disponibile una collezione predefinita di funzioni che possono essere

Dettagli

PUNTATORI. Introduzione. puntatore. L operatore

PUNTATORI. Introduzione. puntatore. L operatore PUNTATORI Introduzione Dichiarazione ed inizializzazione delle variabili di tipo puntatore L operatore puntatore Chiamata di funzioni per indirizzo Espressioni ed aritmetica dei puntatori Puntatori ed

Dettagli

ESERCIZIO: Lettura/Scrittura Array

ESERCIZIO: Lettura/Scrittura Array ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Esercizi C su array e matrici

Esercizi C su array e matrici Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]

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

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri Funzioni (Passaggio dei parametri per riferimento) Passaggio dei parametri Per passaggio dei parametri si intende l associazione fra parametri attuali e parametri formali che avviene al momento della chiamata

Dettagli

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica Laboratorio di informatica Ingegneria meccanica Lezione 7 19 novembre 2007 Concetto di modulo di un programma (1) Lo sviluppo di programmi complessi avviene tipicamente per composizione di moduli, ognuno

Dettagli

Lezione X Definizione di vettori a run-time

Lezione X Definizione di vettori a run-time Programmazione e Laboratorio di Programmazione Lezione X Definizione di vettori a run-time Programmazione e Laboratorio di Programmazione: Definizione di vettori a run-time 1 Definizione statica di vettori

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 al C++ (continua)

Introduzione al C++ (continua) Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 4 2/0/20 Esercizi sui tipi in C I codici e le soluzioni degli esercizi sono nella cartella parte. Dato il seguente codice, trovare gli errori, correggerli

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2017, 2018 Moreno

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

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

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

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria Vettore = puntatore Vettore come parametro a funzione Puntatori e stringhe Vettori di puntatori 2 2006 Politecnico di Torino 1 Vettore = puntatore Data una

Dettagli

Funzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati

Funzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati Funzioni con numero variabile di parametri: Funzioni Variadiche in C Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati Funzioni «variadiche» Le funzioni che ricevono un numero variabile di

Dettagli

T = { D, {F 1,...,F n }, {P 1,...,P m } }

T = { D, {F 1,...,F n }, {P 1,...,P m } } TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme i di predicati P 1,..,P m sul ldominio i D T = { D, {F 1,...,F n }, {P

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

Introduzione al C. Lez. 1 Elementi

Introduzione al C. Lez. 1 Elementi Introduzione al C Lez. 1 Elementi Introduzione al C Strumento che adotteremo in queste esercitazioni per implementare e testare gli algoritmi visti a lezione Configurazione minimale suggerita: Editing

Dettagli