Laboratorio di Informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Informatica"

Transcript

1 -- Conversione di tipo in C (V) -- Laboratorio di Informatica Ingegneria Meccanica Lezione 7, 22 novembre 2007 versione 24 novembre 2007 Renato Menicocci <rmenicocci@fub.it> <menicocci@die.uniroma1.it> Conversione esplicita di tipo può essere forzata con uno speciale operatore unario detto di conversione (o di type cast) Formati ( tipo ) ( espressione ) provoca la conversione del risultato di espressione al tipo specificato (che è tipo) (come se il risultato di espressione dovesse essere assegnato a una variabile del tipo specificato) (vedi avanti) ( tipo ) espressione ha un effetto che dipende da espressione (vedi avanti) Conversione di tipo in C (VI) Precedenza e associatività -- di utilizzazione Se r float e h e k int, allora r = ( float ) h / k ; provoca, ai fini della valutazione, la conversione di h da int a float e l assegnazione a r del valore float della divisione non intera tra h e k (ai fini della valutazione, k sarà promosso a float perchè coinvolto in un operazione con un tipo float) Per la precedenza dell operatore di conversione, se h e k int, ( float ) h / k ; equivale a ( float ) ( h ) / k ; Se h e k int, l effetto di ( float ) ( h / k ) ; è quello di convertire a float il risultato int di h / k (se r float, r = ( float ) ( h / k ) ; equivale a r = h / k ;)! (tipo) * / % + - < <= > >= ==!= && = += -= *= /= %= da destra a sinistra da destra a sinistra 3 4

2 -- Puntatori in C (I) -- Un puntatore è una variabile di un tipo speciale, detto (anch esso) puntatore, ed è caratterizzato dal fatto che il suo valore è utilizzabile per accedere a una variabile Se il valore del puntatore p è utilizzabile per accedere alla variabile v, si dice che v è puntata da p (o che p punta a v) In C, il tipo puntatore è un tipo derivato (anche l array lo è, mentre gli altri tipi visti finora sono tipi base) Formato dichiarazione tipo-puntato *nome ; int *iptr ; iptr è così dichiarato per puntare a una variabile di tipo int (attenzione: il valore di iptr è per ora indefinito) 5 -- Puntatori in C (II) -- Quando applicato a puntatori, il simbolo * indica un operatore unario detto di risoluzione del riferimento (indirection/dereferencing) Applicando l operatore * a un puntatore già dichiarato si accede alla variabile puntata da questo (il valore della variabile puntata può essere acquisito o modificato) E possibile far puntare un puntatore p a una variabile v assegnando a p il valore ottenuto applicando a v l operatore indirizzo & (attenzione: & è applicabile solo a variabili (non applicabile a costanti, espressioni, (e altro!)) Se p punta a v è possibile accedere al valore di v (per acquisirlo o per modificarlo) usando sia l espressione v sia l espressione *p 6 -- Puntatori in C (III) -- int *iptr ; /* iptr puntatore a tipo int */ int ia = 4, ib, ic = 8 ; /* ia, ib variabili int */ iptr = &ia ; /* iptr punta a variabile ia */ ib = *iptr ; /* ib assume il valore di ia (4) */ *iptr = ic ; /* ia assume il valore di ic (8) */ -- Puntatori in C (IV) -- Il significato di tipo-puntato *nome ; è: risolvendo il riferimento del puntatore nome (usando l operatore *), si accederà a una variabile di tipo tipopuntato Un puntatore è dichiarato quindi per un tipo specificato Data la dichiarazione tipo-puntato *nome ; è lecito utilizzare *nome ovunque sia accettabile la presenza di una variabile di tipo tipo-puntato 7 8

3 -- Puntatori in C (V) -- Istruzioni con esempi di espressioni con puntatori e variabili puntate (ipotesi: i, j puntatori a tipo int e x, y, z di tipo int) i = &x ; j = &y ; *i = *j x ; if ( z == *j * *i ) y = 0 ; *i = *i y ; *i += * j ; -- Puntatori in C (VI) -- A un puntatore (indipendentemente dal suo tipo-puntato) può essere assegnato lo speciale valore NULL per indicare la situazione in cui il puntatore non punta ad alcuna variabile (puntatore inattivo) int *iptr ; /* iptr ha valore indefinito */ iptr = NULL ; /* iptr ha valore definito (iptr inattivo) */ NULL può essere usato come valore di inizializzazione nella dichiarazione di un puntatore int *jptr = NULL ; Precedenza e associatività Puntatori e array in C (I) --! (tipo) * & * / % + - < <= > >= ==!= && = += -= *= /= %= da dx a sin da dx a sin E possibile far puntare un puntatore p a un elemento di un array v monodimensionale assegnando a p il valore ottenuto applicando all elemento di v l operatore indirizzo &; per puntare al primo elemento dell array (quello di indice 0) oltre ad applicare a questo l operatore indirizzo & si può anche usare il nome dell array (p puntatore a int e v array di 3 int) p = &v[ 2 ] ; /* p punta a v[ 2 ] */ *p = 21 ; /* v[ 2 ] = 21 */ p = v ; /* p punta a v[ 0 ] */ *p = 12 ; /* v[ 0 ] = 12 */ 11 12

4 -- Puntatori e array in C (II) -- Se un puntatore punta a un elemento di un array monodimensionale, si può ottenere che esso punti ad altri elementi dell array incrementando o decrementando, tramite gli operatori +, -, ++ e --, il valore del puntatore di un opportuno valore intero (vedi slide Aritmetica dei puntatori ) (p puntatore a int, v array di 7 int, b int) p = &v[ 2 ] ; /* p punta a v[ 2 ] */ p = p+1 ; /* p punta a v[ 3 ] */ p = p-2 ; /* p punta a v[ 1 ] */ b = *p ; /* b = v[ 1 ] */ b = *( p+5 ) ; /* b = v[ 6 ] */ Puntatori e array in C (III) e -- sono operatori validi per puntatori (vedi slide Aritmetica dei puntatori ) Attenzione all uso di pre/post-incremento (++) e pre/post-decremento (--) con puntatori (vedi tabella Precedenza e associatività ) Esempi (puntatore i punta a x di tipo int) ++*i ; equivale a ++( *i ) ; e la variabile puntata (x) sarà pre-incrementata (analogamente per --*i ;) *i++ ; equivale a *( i++ ) ; e il puntatore (i) sarà postincrementato (analogamente per *i-- ;) Puntatori e array in C (IV) Variabili (I) -- Si può usare il nome di un puntatore come se fosse il nome di un array monodimensionale (attenzione!) Se p è un puntatore e k un intero, p[ k ] equivale a *( p+k ) (p puntatore a int, v array di 6 int, b int) p = &v[ 2 ] ; /* p punta a v[ 2 ] */ p = p+1 ; /* p punta a v[ 3 ] */ p = p-2 ; /* p punta a v[ 1 ] */ b = p[ 4 ] ; /* b = v[ 5 ] */ 15 Il nome di una variabile (di un qualunque tipo) è associato univocamente alla locazione di memoria in cui il valore della variabile è registrato int k = 10, h ; /* valore di h indefinito (indicato con?) */ 10? L accesso alla locazione di memoria assegnata a una variabile (cioè l accesso al valore di una variabile) avviene usando il nome della variabile (questo sarà quindi equivalente all indirizzo della locazione assegnata) k h 16

5 -- Variabili (II) Variabili (III) -- indirizzo N-2 N-1 N N+1 N+2 10? k h Quanto detto vale anche per variabili di tipo puntatore int k = 10, *iptr ; iptr = &k ; /* indirizzo associato a k assegnato ora a iptr */ In questa rappresentazione 1. Si assume che una locazione di memoria abbia capacità sufficiente per la memorizzazione di un valore di tipo qualunque 2. Le posizioni di k e h in memoria sono arbitrarie 3. Si mostrano gli indirizzi delle locazioni di memoria indirizzo N-2 N-1 N 10 iptr N N+1 N+2 k int k = 10, *iptr ; iptr = &k ; /* iptr punta a k */ *iptr = 8 ; /* k assume valore 8 */ indirizzo N-2 N-1 iptr -- Variabili (IV) -- N 8 *iptr N N+1 N+2 L accesso al valore di k tramite iptr si ottiene applicando a iptr l operatore * di risoluzione del riferimento (*iptr attualmente associato alla stessa locazione a cui è associato k ) k Dimensioni delle variabili (I) -- Il numero di byte impiegati per memorizzare il valore di una variabile o di una costante dipende dal tipo di queste (già visti vari esempi) In C, ogni byte è univocamente individuabile da un indirizzo (l unità di memoria indirizzabile è il byte) L indirizzo associato a una variabile/costante è l indirizzo del primo dei byte di memoria utilizzati per registrare il valore della variabile/costante Il nome di una variabile è associato all indirizzo del primo dei byte di memoria in cui il suo valore è registrato (il tipo della variabile determina quanti altri byte devono essere considerati oltre al primo e permette quindi di accedere al valore della variabile) 20

6 indirizzo -- Dimensioni delle variabili (II) -- M-1 M M+1 M+2 M A 41 k ch In questa rappresentazione 1. Una locazione di memoria ha capacità di un byte 2. Le posizioni di k e ch in memoria sono arbitrarie 3. k (un tipo intero) occupa 2 byte e ch occupa 1 byte (tipo char) 4. I valori dei singoli byte di k e ch sono rappresentati in esadecimale 5. Non è indicato come i valori dei byte assegnati a una variabile determinano il valore di questa Operatore sizeof (I) -- La dimensione in byte di una specifica variabile o di una generica variabile di uno specificato tipo può essere ottenetuta con l operatore sizeof Un espressione contenente sizeof è valutata durante la compilazione Il valore fornito da sizeof è del tipo speciale size_t (definito in stddef.h) (size_t è assimilabile a un intero senza segno (può essere necessario l uso dell operatore type-cast per forzare la conversione al tipo (intero) desiderato) Formati sizeof variabile sizeof( tipo ) Operatore sizeof (II) -- Quando applicato a un array, sizeof fornisce il numero di byte impiegati per la memorizzazione di tutti gli elementi dell array (a condizione che la dimensione dell array risulti definita al momento della compilazione) Il numero di elementi di un array di dimensione definita può essere ottenuto dividendo il valore di sizeof nome-array (dimensione totale in byte) per il valore di sizeof( tipo-elementi-array ) (dimensione di un valore del tipo specificato in byte) o per il valore di sizeof nome-array[ indice-lecito ] (dimensione di un singolo elemento di nome-array in byte) -- Operatore sizeof (III) -- Esempi printf( ''%d'', ( int ) sizeof( double )) ; stampa il numero di byte impiegati per un double printf( ''%d'', ( int ) sizeof k ) ; stampa il numero di byte impiegati per la variabile k printf( ''%d'', ( int ) sizeof( int * )) ; stampa il numero di byte impiegati per un puntatore a int 23 24

7 -- Operatore sizeof (IV) -- Esempi /* double v[ 10 ] ; */ printf( ''sizeof v = %d'', ( int ) sizeof v ) ; stampa il numero di byte per 10 double /* int A[ 15 ], b ; */ b = (( int ) sizeof A ) / (( int ) sizeof( int )) ; assegna a b il valore 15 /* float w[ 9 ], x ; */ x = (( int ) sizeof w ) / (( int ) sizeof w[ 0 ] ) ; assegna a x il valore 9 -- Precedenza e associatività --! (tipo) * & sizeof da dx a sin * / % + - < <= > >= ==!= && = += -= *= /= %= da dx a sin Aritmetica dei puntatori (I) -- Su un puntatore possono essere eseguite le operazioni di Incremento e decremento (++/--) Somma di un intero Sottrazione di un intero Se si somma/sottrae un intero a/da un puntatore, questo viene incrementato/decrementato dell intero moltiplicato per la dimensione in byte del tipo a cui il puntatore punta (ricordare che, in C, la memoria è vista come una successione di celle, ognuna di capacità pari a un byte) -- Aritmetica dei puntatori (II) -- La regola precedente può essere compresa osservando quanto segue Gli elementi di un array sono memorizzati in successione ordinata, a partire dall elemento di indice 0 Ogni elemento di un array occupa in memoria lo stesso numero k di byte consecutivi, con k determinato dal tipo degli elementi dell array Un array di n elementi di un dato tipo occupa in memoria n*k byte, con k determinato dal tipo degli elementi dell array 27 28

8 -- Aritmetica dei puntatori (III) -- 1: Se iptr è un puntatore al tipo intero int e un intero int occupa 2 byte, iptr += 3 ; incrementa il valore di iptr di 6 /* int v[ 8 ], *p, a ; */ p = v ; /* p punta a v[ 0 ] */ a = *( p+3 ) ; /* a = v[ 3 ] */ 2: Se fptr è un puntatore al tipo reale float e un reale float occupa 4 byte, fptr += 4 ; incrementa il valore di fptr di 16 /* float w[ 5 ], *q, x ; */ q = &w[ 1 ] ; /* q punta a w[ 1 ] */ x = *( q+1 ) ; /* x = w[ 2 ] */ -- Puntatori e funzioni (I) -- E possibile dichiarare/definire funzioni con puntatori tra i propri argomenti Formato del singolo argomento puntatore (vedi avanti) tipo-puntato *nome (nome opzionale nel prototipo) Nella chiamata di una funzione, gli argomenti attuali sono sempre passati per valore Quando si passa un puntatore a una funzione, si fornisce alla funzione uno strumento per accedere alla variabile puntata dal puntatore Passare un array a una funzione equivale a passare (per valore) un puntatore al primo elemento dell array Puntatori e funzioni (II) -- Per la chiamata di una funzione con argomenti puntatori è necessario (per evitare sorprese) utilizzare argomenti attuali compatibili con il prototipo della funzione Se nella dichiarazione/definizione di una funzione si è specificato l argomento tipo-puntato *nome (nome opzionale nel prototipo) allora, per questo argomento, nella chiamata della funzione si può usare un puntatore per il tipo tipo-puntato l indirizzo di una variabile v di tipo tipo-puntato (ottenuto con espressione &v) un array monodimensionale a con elementi di tipo tipo-puntato (equivale all uso di &a[ 0 ]) Funzione con argomenti puntatori (I) -- void scambia( int *, int * ) ; void scambia( int *iptr, int *jptr ) { int temp ; temp = *iptr ; *iptr = *jptr ; *jptr = temp ; } int h, k ; scambia( &h, &k ) ; /* chiamata con espressioni &h e &k: la funzione riceve gli indirizzi di h e k e accede in memoria a questi indirizzi producendo lo scambio dei valori di h e k */ 32

9 -- Funzione con argomenti puntatori (II) -- void scambia( int *, int * ) ; void scambia( int *iptr, int *jptr ) { /* vedi slide precedente */ } int h, k ; int *p, *q ; p = &h ; q = &k ; scambia( p, q ) ; /* chiamata con puntatori p, puntante ad h, e q, puntante a k: la funzione riceve gli indirizzi di h e k e accede in memoria a questi indirizzi producendo lo scambio dei valori di h e k */ Funzione senza argomenti puntatori -- void scambia( int, int ) ; void scambia( int i, int j ) { int temp ; temp = i ; i = j ; j = temp ; } int h, k ; scambia( h, k ) ; /* chiamata con i valori di h e k: la funzione non riceve gli indirizzi di h e k e non accede in memoria a questi indirizzi (i valori di h e k resteranno invariati) */ min e max di array monodimensionale (I) -- void mm( float v[ ], int dim, float *pm, float *pm ) ; void mm( float v[ ], int dim, float *pm, float *pm ) { int i ; *pm = *pm = v[ 0 ] ; for ( i = 1 ; i < dim ; i++ ) { if ( v[ i ] < *pm ) *pm = v[ i ] ; if ( v[ i ] > *pm ) *pm = v[ i ] ; } } /* a fine esecuzione della funzione mm le variabili puntate da pm e pm avranno valori determinati da questa */ min e max di array monodimensionale (II) -- void mm( float v[ ], int dim, float *pm, float *pm ) ; float f[ 10 ], min, max ; int d ; mm( f, d, &min, &max ) ; /* si assume 0 <= d < 10 */ /* a fine esecuzione della funzione mm le variabili min e max avranno valori determinati da questa */ 36

10 -- Stringhe (I) -- Tipo char usato per la dichiarazione di variabili carattere ( : char c1 = 'A' ; ) Tecnicamente si tratta di un tipo intero i cui valori sono rappresentati su singolo byte Ordinariamente, una stringa è una sequenza di caratteri In C, il termine stringa (string) indica un array monodimensionale di elementi di tipo char contenente lo speciale carattere '\0' char deg[ 4 ] ; deg è un array di 4 caratteri: se usato come stringa, deg avrà al massimo 3 caratteri utili (il quarto sarà il carattere '\0') -- Stringhe (II) -- E possibile usare dichiarazione con inizializzazione, specificando ogni carattere, compreso quello di terminazione char deg[ 4 ] = { 'c', 'a', 'p', '\0' } ; E possibile usare dichiarazione con inizializzazione con stringa costante (sequenza di caratteri limitata da " e "): in questo caso, l inserimento del carattere '\0' di terminazione è automatico char deg[ 4 ] = "cap" ; a deg[ 3 ] sarà assegnato automaticamente il valore '\0' Stringhe (III) -- Nella dichiarazione con inizializzazione, la dimensione della stringa può essere omessa poiché risulta stabilita dalla inizializzazione stessa char deg[ ] = "cap" ; deg ha dimensione 4 (3 caratteri utili più carattere '\0') -- Stringhe (IV) -- Una stringa è un array di caratteri terminato con un carattere speciale si può accedere in lettura/scrittura a uno specifico elemento della stringa utilizzando uno specifico indice char s[ 3 ] = { 'y', 'n', '\0' }, c ; c = s[ 0 ] ; /* c vale 'y' */ s[ 0 ] = s[ 1 ] ; /* s[ 0 ] vale 'n' */ s[ 1 ] = c ; /* s[ 1 ] vale 'y' */ c = s[ 2 ] ; /* c vale '\0' */ 39 40

11 -- Stringhe (V) -- Attenzione a non confondere un singolo carattere 'c' con una stringa costante di un solo carattere "c" (che contiene 'c' e '\0') Una stringa (array di caratteri terminato con carattere '\0') può essere stampata (carattere di terminazione escluso) con funzione printf usando la specifica di conversione %s e passando a printf una stringa costante o un riferimento all array di caratteri sorgente (un riferimento è il nome dell array (indirizzo del primo carattere), o l indirizzo di uno dei caratteri dell array, o un puntatore a un elemento dell array) 41

Laboratorio di Informatica

Laboratorio di Informatica Record Laboratorio di Informatica Ingegneria Meccanica Lezione 9, 6 dicembre 2007 versione 18 dicembre 2007 Renato Menicocci Array: collezione di dati omogenei

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

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

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

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica ( 1 ) Rappresentazione di numeri reali Laboratorio di informatica Ingegneria meccanica Lezione 8 26 novembre 2007 Numerazione posizionale: d n d 1 d 0.d -1 d -2 d -m rappresenta d n B n + + d 1 B 1 + d

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

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

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

Cosa è una variabile?

Cosa è una variabile? 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 contenere il valore

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

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

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

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

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

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

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti 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

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

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

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

Programmazione (imperativa)

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

Dettagli

Parametri passati per indirizzo. Puntatori Vogliamo modificare la parte del codice di bubble che realizza lo scambio dei valori:

Parametri passati per indirizzo. Puntatori Vogliamo modificare la parte del codice di bubble che realizza lo scambio dei valori: Parametri passati per indirizzo. Puntatori Vogliamo modificare la parte del codice di bubble che realizza lo scambio dei valori: tmp = a[j-1]; a[j-1] = a[j]; a[j] = tmp; sostituiamo questa riga con un

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

Puntatori. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Puntatori. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Puntatori Stefano Ferrari Università degli Studi di Milano stefanoferrari@unimiit Programmazione anno accademico 2016 2017 Puntatori I processori organizzano la memoria in N celle di dimensione fissata

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

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica T. Linguaggio C: i puntatori Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme

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

Strutture Dati per Inserimento Ordinato. Luca Abeni

Strutture Dati per Inserimento Ordinato. Luca Abeni Strutture Dati per Inserimento Ordinato Luca Abeni Esempio: Ordinamento di Numeri A cosa servono i tipi di dato strutturati? Non bastano i tipi scalari? Capiamolo con un esempio... Problema: dato un insieme

Dettagli

Indirizzi e valori. Qualcuno afferma di avere bisogno di pane. Due possibili risposte: Fornisco l indirizzo di un panificio. Fornisco delle pagnotte

Indirizzi e valori. Qualcuno afferma di avere bisogno di pane. Due possibili risposte: Fornisco l indirizzo di un panificio. Fornisco delle pagnotte Puntatori Indirizzi e valori Qualcuno afferma di avere bisogno di pane Due possibili risposte: Fornisco delle pagnotte Fornisco l indirizzo di un panificio Passo un valore Passo un riferimento Indirizzi

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

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento Linguaggio C Gli Operatori Gli Operatori Gli operatori sono simboli (sia singoli caratteri che loro combinazioni) specificano come devono essere manipolati gli operandi dell espressione Operatori aritmetici

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

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

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

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

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

Lezione 12: Allocazione Dinamica della Memoria

Lezione 12: Allocazione Dinamica della Memoria Lezione 12: Allocazione Dinamica della Memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Aprile 2013 Puntatori e vettori Puntatori ed indirizzi Semplificando, la memoria di un computer

Dettagli

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

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

Dettagli

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

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

Variabili e assegnazione

Variabili e assegnazione Corso di Laurea Ingegneria Civile Fondamenti di Informatica Variabili e assegnazione Carla Limongelli Marzo 2009 Variabili e assegnazione 1 Contenuti Variabili a ab e assegnazionea e Variabili e aree di

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

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

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 19 14/04/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 19 14/04/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 19 14/04/2014 Puntatori I puntatori sono tipi di dati che rappresentano la posizione (indirizzi di memoria) di elementi (oggetti)

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

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2;

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Array Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Il C supporta questo uso attraverso il tipo di dati array (o vettore): int

Dettagli

Dichiarazioni e tipi predefiniti nel linguaggio C

Dichiarazioni e tipi predefiniti nel linguaggio C Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:

Dettagli

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica Interi in complemento a 2 () Laboratorio di informatica Ingegneria meccanica Lezione 5 29 ottobre 2007 Con N bit sono rappresentabili tutti gli interi nell'intervallo [-2^(N-), 2^(N-)-] Esempio: 6 bit,

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

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

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

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

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

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

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

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

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

Linguaggio C - sezione dichiarativa: costanti e variabili

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

Dettagli

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Primi esempi di programmi Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Il tipo int Un int permette di trattare numeri interi 4 byte (32 bit) con la tecnica del complemento a 2 (ma

Dettagli

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi Funzioni Introduzione Operatori & e * Passaggio by reference Passaggio di vettori Esercizio strcpy 2 Passaggio dei parametri Il linguaggio C prevede il passaggio di parametri by value Il chiamato non può

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

Inside C : Puntatori. Indirizzo: operatore & p = &v; x = a; Puntatori Referenziazione e Dereferenziazione Arrays

Inside C : Puntatori. Indirizzo: operatore & p = &v; x = a; Puntatori Referenziazione e Dereferenziazione Arrays Pointers: Puntatori (I) Le variabili finora incontrate sono caratterizzate da un nome (o identificativo), un tipo, ed occupano un area di memoria di dimensione dipendente dal tipo. Per accedere ad una

Dettagli

Il linguaggio C funzioni e puntatori

Il linguaggio C funzioni e puntatori Salvatore Cuomo Il linguaggio C funzioni e puntatori Lezione n. 8 Parole chiave: Linguaggio C, procedure, funzioni. Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio Email

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 5: Tipi di dati ed idiomi del C Vittorio Scarano Corso di Laurea in Informatica : soluzioni agli esercizi Tipi di dato Idiomi per la programmazione Priorità ed associatività

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

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

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

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

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una

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

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011 Tipi di dato, memoria e conversioni Alessandra Giordani agiordani@disi.unitn.it Lunedì 7 maggio 2011 http://disi.unitn.it/~agiordani/ Il linguaggio C è esplicitamente tipato: occorre esplicitamente associare

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

Precisazione sui tipi in ANSi C

Precisazione sui tipi in ANSi C Precisazione sui tipi in ANSi C Tipi primitivi del C Un tipo è costituito da un insieme di valori ed un insieme di operazioni su questi valori. Classificazione dei tipi primitivi del C scalari aritmetici:

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

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione

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

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

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

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

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

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

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII. Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned

Dettagli

Informatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane

Informatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane Operatori in Java Operatori in Java Corso di laurea in Informatica Operatori aritmetici Operatori di uguaglianza e relazionali Operatori logici in espressioni booleane La precedenza degli operatori L associatività

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

Lezione 8: I Puntatori

Lezione 8: I Puntatori Lezione 8: I Puntatori Laboratorio di Elementi di Architettura e Sistemi Operativi 2 Maggio 2012 Esercizi della lezione scorsa Esercizio 3: la calcolatrice 1. Realizzare un insieme di funzioni per gestire

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Strutture di dati Fondamenti di Informatica 11. Linguaggio C - Strutture / Tabelle / Puntatori Strutture /Tabelle Corso di Laurea in Ingegneria Informatica e dell Automazione A.A. 2012-2013 2 Semestre

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

Le strutture /1. struct temp {char titolo[200]; char autore[100]; int pagine; } ; typedef struct temp libro;

Le strutture /1. struct temp {char titolo[200]; char autore[100]; int pagine; } ; typedef struct temp libro; Le strutture /1 Le strutture rappresentano un tipo di variabile che, diversamente dagli array, consente di gestire in modo compatto, mediante un'unico identificatore, un insieme di valori che non possiedano

Dettagli

Puntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Puntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di

Dettagli

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2009/2010 Lab 02 Tipi semplici in C Lab02 1 Obiettivo dell esercitazione Acquistare

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli