24 aprile Qualche minuto di laboratorio

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "24 aprile Qualche minuto di laboratorio"

Transcript

1 24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente, piano terra. Speciale 1 o Esonero : soluzioni, commenti, correzioni compiti prossima lezione (giovedì 2 maggio). Progetti: gia disponibili nella pag. WEB. Esercizio 6.19 Qualche minuto di laboratorio Scrivere un programma C che simuli il lancio di due dadi. Il programma dovra utilizzare rand per lanciare il primo dado e poi invocarla nuovamente per lanciare il secondo dado: poi calcolera la somma dei due valori. (Nota: tale somma puo variare tra 2 e 12). Tale programma dovra lanciare i due dadi volte e poi dovra visualizzare i seguenti risultati: Un vettore di frequenze F per i risultati di ogni lancio cioe tale che F(i) rappresenta quante volte la somma dei due dadi e stata uguale ad i con i=2,3, 12. Una matrice D 6x6 tale che D(i,j) rappresenta quante volte si e ottenuto i col primo dado e j con il secondo dado con i,j=1,2,,6. Vediamo le soluzioni proposte da voi 1

2 Chiamata di funzioni per riferimento Chiamata per riferimento usando puntatori come argomenti Si passa l indirizzo di un argomento usando l operatore & Consentono di cambiare il valore nella locazione di memoria Gli array non si possono passare con & perche il nome dell array e gia un puntatore operatore* Usato come alias per una variabile all interno di una funzione void double(int *number) {*number = 2 * (*number);} *number si usa come alias per la variabile passata 1. /* Elevare al cubo mediante una chiamata per valore */ 2. #include <stdio.h> 3. int cubebyvalue(int); 4. main() 5. { 6. int number = 5; 7. printf("the original value of number is %d\n", number); 8. number = cubebyvalue(number); 9. printf("the new value of number is %d\n", number); 10. return 0; 11. } 12. int cubebyvalue(int n) 13. { 14. return n * n * n; /* eleva al cubo */ 15. } The original value of number is 5 The new value of number is 125 Output 2

3 1 /* Fig. 7.7: fig07_07.c 2 Elevare al cubo mediante chiamata per riferimento 3 mediante puntatori */ 4 5 #include <stdio.h> 6 7 void cubebyreference( int * ); Notare che viene dato 8 l indirizzo di number 9 int main() infatti cubebyreference 10{ aspetta un puntatore 11 int number = 5; (indirizzo di una variabile) printf( "The original value of number is %d", number 14 cubebyreference( ); &number ); 15 printf( "\nthe new value of number is %d\n", number 16 ); 17 return 0; 18} 19 20void cubebyreference( int *nptr ) 21{ 22 *nptr = *nptr * *nptr * *nptr; 23} All interno dicubebyreference, si usa *nptr (*nptr e number). The original value of number is 5 The new value of number is 125 Output Usare il qualificatore Const con i puntatori Qualificatore const una variabile non puo essere cambiata Utile avere const se la funzione non deve cambiare una variabile Tentativi di cambiare un const produce errore in compilazione Puntatori const puntano alla stessa locazione di memoria Devono essere inizializzati quando sono dichiarati int *const myptr = &x; Tipo int *const puntatore costante a unint const int *myptr = &x; Puntatori regolari a const int const int *const Ptr = &x; const puntatore a const int x puo essere cambiato, ma non*ptr 3

4 1. /* Fig7_10 Converting lowercase letters to uppercase letters */ 2. /* using a non-constant pointer to non-constant data */ 3. #include <stdio.h> 4. void converttouppercase(char *); 5. main() 6. { 7. char string[] = "characters"; 8. printf("the string before conversion is: %s\n", string); 9. converttouppercase(string); 10. printf("the string after conversion is: %s\n", string); 11. return 0; 12. } 13. void converttouppercase(char *s) 14. { 15. while (*s!= '\0') { 16. if (*s >= 'a' && *s <= 'z') 17. *s -= 32; /* convert to ASCII uppercase letter */ s; /* increment s to point to the next character */ 19. } 20. } The string before conversion is: characters The string after conversion is: CHARACTERS Output 4

5 1. /* Fig7_11 Printing a string one character at a time using */ 2. /* a non-constant pointer to constant data */ 3. #include <stdio.h> 4. void printcharacters(const char *); 5. main() 6. { 7. char string[] = "print characters of a string"; 8. printf("the string is:\n"); 9. printcharacters(string); 10. putchar('\n'); 11. return 0; 12. } 13. void printcharacters(const char *s) 14. { 15. for ( ; *s!= '\0'; s++) /* no initialization */ 16. putchar(*s); 17. } The string is: print characters of a string Output 1. /* Fig7_12.c Attempting to modify data through a */ 2. /* non-constant pointer to constant data */ 3. #include <stdio.h> 4. void f(const int *); 5. main() 6. { 7. int y; 8. f(&y); /* f attempts illegal modification */ 9. return 0; 10. } 11. void f(const int *x) 12. { 13. *x = 100; /* cannot modify a const object */ 14. } 13 Warning: assignment of read-only location Dev-C++ 13 ERROR: Cannot modify a const object Borland 5

6 1. /* Fig Attempting to modify a constant pointer to */ 2. /* non-constant data */ 3. #include <stdio.h> 4. main() 5. { 6. int x, y; 7. int * const ptr = &x; 8. ptr = &y; /* attempt to modify a const pointer*/ 9. return 0; 10. } 10 Warning: assignment to read-only variable ptr Dev-C++ 10 ERROR: Cannot modify a const object Borland 1 /* Fig. 7.14: fig07_14.c 2 Attempting to modify a constant pointer to 3 constant data */ 4 5 #include <stdio.h> 6 7 int main() 8 { 9 int x=5, y; const int * const ptr = &x; *ptr = 7; 16 ptr = &y; return 0; 19 } FIG07_13.c: Error E2024 FIG07_13.c 15: Cannot modify a const object in function main 16: Cannot modify a const object in function main *** 2 errors in Compile *** 6

7 Bubble Sort usando chiamata per riferimento Implementare bubblesort usando puntatori Scambia due elementi La funzione swap deve ricevere un indirizzo (usando &) degli elementi dell array Gli elementi dell array hanno una chiamata-pervalore per default Usando puntatori e l operatore *, la funzione swap puo scambiare elementi dell array 1 /* Fig. 7.15: fig07_15.c 2 This program puts values into an array, sorts the values into 3 ascending order, and prints the resulting array. */ 4 #include <stdio.h> 5 #define SIZE 10 6 void bubblesort( int *, const int ); 7 8 int main() 9 { 11 int a[ SIZE ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; 12 int i; printf( "Data items in original order\n" ); for ( i = 0; i < SIZE; i++ ) 17 printf( "%4d", a[ i ] ); bubblesort( a, SIZE ); /* ordina l array */ 20 printf( "\ndata items in ascending order\n" ); for ( i = 0; i < SIZE; i++ ) 23 printf( "%4d", a[ i ] ); printf( "\n" ); 27 return 0; 28 } Bubblesort prende l indirizzo dell array. Il nome di un array e un puntatore.. 7

8 29 30 void bubblesort( int *array, const int size ) 31 { 32 void swap( int *, int * ); 33 int pass, j; 34 for ( pass = 0; pass < size - 1; pass++ ) for ( j = 0; j < size - 1; j++ ) if ( array[ j ] > array[ j + 1 ] ) 39 swap( &array[ j ], &array[ j + 1 ] ); 40 } void swap( int *element1ptr, int *element2ptr ) 43 { 44 int hold = *element1ptr; 45 *element1ptr = *element2ptr; 46 *element2ptr = hold; 47 } Data items in original order Data items in ascending order Output Nelle lezioni precedenti 103 void bubblesort( int a[] ) 104 { 105 int pass, j, hold; for ( pass = 1; pass <= SIZE - 1; pass++ ) for ( j = 0; j <= SIZE - 2; j++ ) if ( a[ j ] > a[ j + 1 ] ) { 112 hold = a[ j ]; 113 a[ j ] = a[ j + 1 ]; 114 a[ j + 1 ] = hold; 115 } 116 } 8

9 Aritmetica con i puntatori Alcune operazioni aritmetiche possono essere utilizzate con i puntatori Incrementa/decrementa puntatori (++ o--) Si puo aggiungere/sottrarre un intero a/da un puntatore (+ o+=, - o -=) Puntatori possono essere sottratti uno dall altro Attenzione: Sono operazioni senza significato a meno che non siano effettuate su array. int v[5] Aritmetica con i puntatori (supp int e di 4 byte) vptr = v oppure vptr = &v[0] vptr punta al primo elementov[0]nella locazione (vptr = 3000) vptr +=2; assegna avptr valore3008 vptr punta a v[2], ma un int vale 4 byte! locazione v[0] v[1] v[2] v[3] v[4] variabile puntatore vptr 9

10 Aritmetica con i puntatori Sottrarre puntatori Restituisce il numero di elementi tra uno e l altro vptr2 = &v[2]; vptr = &v[0]; vptr2 - vptr = 2. (numero di elementi del vettore tra vptr2 e vptr ) Confronti tra puntatori ( <, ==, > ) Per vedere quale puntatore punta all elemento dellarray di indice maggiore Anche per controllare se un puntatore punta a Aritmetica con i puntatori Puntatori dello stesso tipo possono essere assegnati uno all altro Se non sono dello stesso tipo, deve essere usato un operatore cast Eccezione: puntatori avoid (tipovoid *) Puntatori generici, rappresentano qualunque tipo Non occorre casting per convertire un puntatore ad un puntatorevoid Puntatori void non possono essere dereferenziati 10

Capitolo 7 I puntatori in C

Capitolo 7 I puntatori in C 1 Capitolo 7 I puntatori in C 7.2 Dichiarazione e inizializzazione di puntatori Variabili puntatore Contengono gli indirizzi di memoria come valore Le normali variabili contengono uno specifico valore

Dettagli

FIL I Puntatori. Michele Nappi biplab.unisa.it. 15/12/2014 M. Nappi/FIL 1

FIL I Puntatori. Michele Nappi biplab.unisa.it. 15/12/2014 M. Nappi/FIL 1 FIL I Puntatori Michele Nappi mnappi@unisa.it biplab.unisa.it 15/12/2014 M. Nappi/FIL 1 Introduzione I puntatori Una delle caratteristiche più potenti del C, ma difficile da padroneggiare Si usano per

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

Programmazione C. Puntatori Array come puntatori

Programmazione C. Puntatori Array come puntatori Programmazione C Puntatori Array come puntatori Perché usare gli indirizzi Tutto in C ha un valore int a = 4; significa che il valore della variabile a è 4, e che potrà essere modificato dal programma

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

Capitolo 7 I puntatori in C

Capitolo 7 I puntatori in C Capitolo 7 I puntatori in C Introduzione Dichiarazione e inizializzazione dei puntatori Gli operatori sui puntatori Chiamata di funzioni per riferimento Utilizzare il qualificatore const con i puntatori

Dettagli

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo

Dettagli

Gli array. slides credit M. Poneti

Gli array. slides credit M. Poneti Gli array slides credit M. Poneti Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome e lo

Dettagli

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo Programmazione C Funzioni e procedure: passaggio per indirizzo Activation record 2. PASSAGGIO PER INDIRIZZO Dire alla funzione l indirizzo di memoria cui accedere Se occorre passare un array ad una funzione,

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 in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime

Dettagli

Puntatori (in C) Emilio Di Giacomo

Puntatori (in C) Emilio Di Giacomo Puntatori (in C) Emilio Di Giacomo Puntatori In questa lezione parleremo di uno dei costrutti più potenti del C: i puntatori I puntatori vengono utilizzati per realizzare il passaggio di parametri per

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 2017

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

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

POINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria.

POINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria. POINTERS Una variabile pointer è una variabile che ha come valore un indirizzo di memoria. Es. Sia y una variabile intera di valore e sia yptr una variabile pointer avente come valore l indirizzo di y.

Dettagli

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) { JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int

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

dott. Sabrina Senatore

dott. Sabrina Senatore dott. Sabrina Senatore Dipartimento di Informatica I puntatori 1 I puntatori Si usano per simulare la chiamata per riferimento Stretta correlazione con vettori e stringhe In generale, in C ogni variabile

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

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

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

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

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

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

Linguaggio C: PUNTATORI Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori

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

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

Introduzione al C Lez. 3. Puntatori

Introduzione al C Lez. 3. Puntatori Introduzione al C Lez 3 Puntatori Variabili e memoria Variabile tradizionale Es: int a = 10; Proprietà: - nome: a - tipo: int - valore: 10 - dimensione in byte: 4 ( usare sizeof(tipo) ) - indirizzo: 104

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

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

Introduzione al C Lez. 4

Introduzione al C Lez. 4 Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso

Dettagli

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio RICORSIONE, PUNTATORI E ARRAY Quarto Laboratorio 16 DICEMBRE 2011 SCADENZA TERZA ESERCITAZIONE FUNZIONI RICORSIVE ESERCIZIO Scrivere una funzione ricorsiva che, assegnati due interi N1 ed N2, restituisca

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

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Tipi e Valori 2 / 26 Ringraziamenti prof. Mirko Viroli, Università

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

puntatori Lab. Calc. AA 2006/07 1

puntatori Lab. Calc. AA 2006/07 1 puntatori Lab. Calc. AA 2006/07 1 Attributi di un oggetto nome o identificatore; tipo; valore (o valori); indirizzo; Lab. Calc. AA 2006/07 2 Indirizzo Consideriamo la dichiarazione con inizializzazione:

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

Informatica (A-K) 14. Linguaggio C -4

Informatica (A-K) 14. Linguaggio C -4 Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Informatica (A-K) 14. Linguaggio C -4 Strutture Dati tipiche

Dettagli

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Tipi e Valori 2 Ringraziamenti prof. Mirko Viroli,

Dettagli

Linguaggio C: Array Valeria Cardellini

Linguaggio C: Array Valeria Cardellini Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica -- Conversione di tipo in C (V) -- Laboratorio di Informatica Ingegneria Meccanica Lezione 7, 22 novembre 2007 versione 24 novembre 2007 Renato Menicocci

Dettagli

Puntatori in C Lucidi della Pof.ssa Pazienza

Puntatori in C Lucidi della Pof.ssa Pazienza Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *

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

Linguaggio C I puntatori

Linguaggio C I puntatori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C I puntatori 2001 Pier Luca Montessoro - Davide Pierattoni

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

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

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

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 10 Lezione 10 1 Inside C : Puntatori Puntatori Referenziazione e Dereferenziazione Pointers: Puntatori Le variabili finora incontrate sono caratterizzate da

Dettagli

Verso i puntatori: Cosa è una variabile?

Verso i puntatori: Cosa è una variabile? Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per

Dettagli

&v restituisce l indirizzo della zona di memoria allocata per v.

&v restituisce l indirizzo della zona di memoria allocata per v. Puntatori Sia v una variabile di tipo T. Al momento della creazione della variabile v il sistema alloca memoria sufficiente a contenere i valori appartenenti al tipo T. &v restituisce l indirizzo della

Dettagli

Programmazione I (Classe 1) - prova da 12 fu

Programmazione I (Classe 1) - prova da 12 fu Programmazione I (Classe 1) - prova da 12 fu Quinto appello 27 Gennaio 2017 Docenti: De Prisco - Deufemia - Zizza Cognome: Nome: Matricola: Ritirato Riservato alla commissione d esame 1 2 3 4 5 6 7 8 TOT

Dettagli

3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita!

3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita! 3 aprile 2002 Avvisi: 1 o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri si raccomanda la puntualita! Qualche informazione sull esonero Argomenti trattati: svolti nelle

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

Array. Aggragati di variabili omogenee...

Array. Aggragati di variabili omogenee... Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno

Dettagli

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

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

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

Un array è una collezione finita di N variabili dello stesso tipo, ognuna identificata da un indice compreso fra 0 e N-1

Un array è una collezione finita di N variabili dello stesso tipo, ognuna identificata da un indice compreso fra 0 e N-1 ARRAY: STRUTTURA FISICA Un array è una collezione finita di N variabili dello stesso tipo, ognuna identificata da un indice compreso fra 0 e N-1 v 0 1 2 3 v[0] v[3] v[1] v[2] Praticamente, le cose non

Dettagli

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso Introduzione al C Lezione 1 Elementi Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso C Mercoledì 19 Giovedì

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

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc() Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili

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

2 maggio 2002. Avvisi:

2 maggio 2002. Avvisi: 2 maggio 2002 Avvisi: Risultati I Esonero disponibili nella pag. WEB e affissi nella bacheca piano terra secondo dente Soluzioni I Esonero disponibili nella pag. WEB Lezione di oggi Conclusione su puntatori/array

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

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

Programmazione I (Classe 1)

Programmazione I (Classe 1) Programmazione I (Classe 1) Appello 12 CFU 8 Settembre 2017 Docenti: Fuccella - Zizza Cognome: Nome: Matricola: Ritirato Riservato alla commissione d esame 1 2 3 4 5 6 7 8 TOT (/40) Da codice etico Unisa

Dettagli

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

8 maggio Le lezioni di giovedi 9 maggio e giovedi 16 maggio saranno tenute dalla dott.ssa Di Ianni. Vediamo le vostre soluzioni per

8 maggio Le lezioni di giovedi 9 maggio e giovedi 16 maggio saranno tenute dalla dott.ssa Di Ianni. Vediamo le vostre soluzioni per 8 maggio 2002 Avvisi: Le lezioni di giovedi 9 maggio e giovedi 16 maggio saranno tenute dalla dott.ssa Di Ianni. Vediamo le vostre soluzioni per Esercizio 6.28 (Eliminazione dei duplicati) Scrivere un

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

Capitolo 3. Input/Output formattato

Capitolo 3. Input/Output formattato 1 Capitolo 3 Input/Output formattato 2 La funzione printf Per stampare i valori di variabili con printf dobbiamo specificare un stringa di formato seguita dai valori che devono essere inseriti nella stringa:

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

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

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

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

Dettagli

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

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

Fondamenti di Programmazione

Fondamenti di Programmazione A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome

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. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Puntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

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

ESERCITAZIONE N.2 LINGUAGGIO C. In preparazione alla prova in Itinere

ESERCITAZIONE N.2 LINGUAGGIO C. In preparazione alla prova in Itinere ESERCITAZIONE N.2 LINGUAGGIO C In preparazione alla prova in Itinere ORDINARE UN ARRAY INVERTIRE IL VALORE DI DUE VARIABILI Le due operazioni di assegnamento non possono essere contemporanee (deve esserci

Dettagli

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono

Dettagli

Laboratorio di linguaggi

Laboratorio di linguaggi lezioni: lunedi 9-11, aula A al corso Laboratorio di linguaggi laboratorio in tre turni: martedi 11-13 () giovedi 9-11 () venerdi 11-13 (Andrea Grosso) laboratorio: iscriversi all esame Corso A LABORATORIO

Dettagli

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Dettagli

Corso di Laboratorio di Sistemi Operativi A.A

Corso di Laboratorio di Sistemi Operativi A.A Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 9 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche e

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

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

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 12 Corso di Informatica 2009-2010 Lezione 12 1 Allocazione dinamica della memoria La funzione calloc() La funzione calloc() alloca memoria dinamicamente. Numero

Dettagli

Puntatori, array, incrementi Array come parametri Array di puntatori. Programmazione 1. Lezione 12. Vincenzo Marra.

Puntatori, array, incrementi Array come parametri Array di puntatori. Programmazione 1. Lezione 12. Vincenzo Marra. Programmazione 1 Lezione 12 Vincenzo Marra vincenzo.marra@unimi.it Dipartimento di Matematica Federigo Enriques Università degli Studi di Milano 28 maggio 2014 Puntatori ed array Nel linguaggio C esiste

Dettagli