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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 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 necessariamente il medesimo tipo. Nell'esercizio che segue (e nelle prossime lezioni sulle strutture) svilupperemo un programma che permetta di implementare le funzionalità necessarie per la gestione del database di una biblioteca. Prima di iniziare lo sviluppo del codice, è necessario stabilire quale sia il prototipo di struttura da utilizzare per rappresentare nel programma la singola unità del database, ovvero un libro. Gli attributi di tale oggetto che utilizzeremo per sviluppare il prototipo di struttura sono: il suo titolo, il nome ed il cognome dell'autore ed il numero di pagine. struct temp {char titolo[200]; int pagine; ; typedef struct temp libro; In alternativa, per usare una notazione più compatta, si può scrivere: typedef struct {char titolo[200]; int pagine; libro; Le istruzioni appena scritte permettono di creare un nuovo TIPO di variabile, un tipo composto da due array di char e da un intero; a tali istruzioni NON CORRISPONDE ALCUNA ALLOCAZIONE DI MEMORIA. Grazie allo specificatore typedef, a partire da struct temp, per questioni di comodità e per marcare l'analogia con gli altri tipi fondamentali del C, è possibile modificare il nome del nuovo tipo di variabile.

2 Alcune note su typedef Lo specificatore typedef, oltre che a venir utilizzato per definire un nuovo tipo di dato, serve anche ad aumentare la portabilità del codice e non è detto debba essere per forza utilizzato solo su nuovi tipi. Ad esempio /* inizio implementazione */ #define NUM 40 typedef int newtype; void ordina(newtype *vettore) {newtype temp; int i=0,scambi=1; while(scambi) {scambi=0; for(i=0;i<num;i++) {if(vettore[i]>vettore[i+1]) {temp=vettore[i]; vettore[i]=vettore[i+1]; vettore[i+1]=temp; scambi=1; /* fine implementazione */ Sostituendo al tipo int il tipo double, dopo lo specificatore typedef, posso automaticamente applicare l'ordinamento ad un nuovo tipo di variabile. Usando la direttiva #ifdef (ovvero la compilazione condizionale), la potenzialità del codice aumenta ulteriormente. /* inizio implementazione */ #ifdef INTERO typedef int newtype; #ifdef FLOAT typedef float newtype; #ifdef DOUBLE typedef double newtype; #define NUM 40 void ordina(newtype *vettore) {newtype temp; int i=0,scambi=1;

3 while(scambi) {scambi=0; for(i=0;i<num;i++) {if(vettore[i]>vettore[i+1]) {temp=vettore[i]; vettore[i]=vettore[i+1]; vettore[i+1]=temp; scambi=1; /* fine implementazione */ Prima di iniziare a scrivere il codice, alcune precisazioni; si farà sempre riferimento al tipo di struttura definito sopra: typedef struct {char titolo[200]; int pagine; libro; 1. Per individuare uno dei caratteri della stringa titolo, ad esempio il quarto /* dichiaro una variabile di tipo libro */ libro my_var; gets(my_var.titolo); /* titolo è una variabile di tipo char *, contenuta all'interno della struttura. Per scrivere dei caratteri nella corrispondente area di memoria devo perciò individuarla, specificando che essa è uno dei membri della struttura my_var */ temp = my_var.titolo[3]; /* ora temp ha il valore del quarto carattere della stringa */ temp = *(my_var.titolo +3); /* stessa cosa, usando l'aritmetica dei puntatori */ temp = *(my_var.(titolo +3)); /* GRAVE ERRORE! */ 2. Le stesse funzionalità possono essere implementate utilizzando un puntatore a struttura

4 /* dichiaro una variabile di tipo libro */ libro my_var; libro* Punt_libro; gets(punt_libro->titolo); temp = Punt_libro->titolo[3]; temp = *(Punt_libro->titolo +3); /* stessa cosa, usando l'aritmetica dei puntatori */ temp = *(Punt_libro->(titolo +3)); /* GRAVE ERRORE! */ o anche, usando l'allocazione dinamica libro* Punt_libro; Punt_libro = (libro*) malloc(sizeof(libro)); gets(punt_libro->titolo); temp = Punt_libro->titolo[3]; temp = *(Punt_libro->titolo +3); /* stessa cosa, usando l'aritmetica dei puntatori */ temp = *(Punt_libro->(titolo +3)); /* GRAVE ERRORE! */ IMPORTANTE: per determinare la dimensione in byte di una variabile di tipo struttura utilizzare l'operatore sizeof(). NON è sempre vero che la somma delle dimensioni in byte delle variabili contenute nella struttura equivalga alla dimensione in byte della struttura stessa. 3. Alle variabili di tipo struttura NON possono essere applicati tutti gli operatori. Gli unici operatori utilizzabili sono quello di assegnazione, =, e l'operatore &. E' perciò possibile fare la COPIA di una struttura, membro a membro, e passare una struttura ad una funzione per valore.

5

Le strutture /2. Iniziamo ora a progettare il codice per la gestione del database. Quali sono le funzionalità da implementare?

Le strutture /2. Iniziamo ora a progettare il codice per la gestione del database. Quali sono le funzionalità da implementare? Le strutture /2 Iniziamo ora a progettare il codice per la gestione del database. Quali sono le funzionalità da implementare? Per ora è possibile gestire l'elenco dei libri (e quindi delle strutture) mediante

Dettagli

Le strutture /3. Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri.

Le strutture /3. Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri. Le strutture /3 Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri. typedef struct {char titolo[200]; char autore[100];

Dettagli

I puntatori /2. Ad esempio. // inizio codice. #include <stdio.h> void mostra(int); int main() {int a = 10; mostra(a); return 0;}

I puntatori /2. Ad esempio. // inizio codice. #include <stdio.h> void mostra(int); int main() {int a = 10; mostra(a); return 0;} I puntatori /2 In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta il parametro stesso nel

Dettagli

Corso di Programmazione I

Corso di Programmazione I Corso di Programmazione I I puntatori in C e C++ I puntatori in C Il C prevede puntatori a funzione e puntatori a dati di qualsiasi natura, semplici o strutturati. In particolare il puntatore viene utilizzato

Dettagli

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Università di Ferrara Dipartimento di Ingegneria Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Tutor Arnaud Nguembang Fadja: ngmrnd@unife.it Damiano Azzolini: damiano.azzolini@student.unife.it Esercizio

Dettagli

in alternativa Quanto spazio occupa in memoria una variabile di tipo struct? dipende...

in alternativa Quanto spazio occupa in memoria una variabile di tipo struct? dipende... Strutture Mentre un array consente di raggruppare, sotto un unico nome, vari elementi tutti dello stesso tipo, una struttura permette di gestire, mediante un unico nome, elementi di QUASI tutti i tipi.

Dettagli

Esercizio 1. Tavola ordinata in memoria centrale

Esercizio 1. Tavola ordinata in memoria centrale Esercizio 1. Tavola ordinata in memoria centrale E dato un programma che realizza una rubrica telefonica come tavola in memoria centrale. In particolare, ogni elemento della tavola è caratterizzato dalle

Dettagli

Gli array. impone al programma, in fase di esecuzione, di riservare dello spazio in memoria per 10 variabili di tipo int

Gli array. impone al programma, in fase di esecuzione, di riservare dello spazio in memoria per 10 variabili di tipo int Gli array Gli array rappresentano una modalità molto compatta per accedere ad un gruppo di variabili; tale gruppo è identificato dal nome dell'array; i tipi delle variabili appartenenti al gruppo devono

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

Le strutture. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA

Le strutture. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I" Prof. Franco FRATTOLILLO Dipartimento di Ingegneria Università degli Studi del Sannio Le strutture

Dettagli

Dispensa di Informatica II.6

Dispensa di Informatica II.6 STRUTTURE La dispensa di seguito proposta si pone come tutorial per poter porre le basi per la creazione di strutture e la loro gestione dinamica nel linguaggio C / C ++ La struttura ( struct ) Le strutture

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

Lezione 6 Struct e qsort

Lezione 6 Struct e qsort Lezione 6 Struct e qsort Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Struct Struct Fino ad ora abbiamo utilizzato

Dettagli

Capitolo 10 - Strutture

Capitolo 10 - Strutture 1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la

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

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione

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

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

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

Lezione 20: Tipi derivati: struct e union

Lezione 20: Tipi derivati: struct e union Lezione 20: Tipi derivati: struct e union Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Tipi di dati derivati: strutture (struct)

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VI Tatiana Zolo zolo@cs.unipr.it 1 Dichiarazione (forma generale): LE STRUCT struct nome_struttura { tipo var1; tipo var2;... tipo vark; } variabili_struttura; (soltanto

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Array k-dimensionali

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

Dettagli

Il linguaggio C. Notate che...

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

Dettagli

Linguaggio C: 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

Elementi di Informatica A. A. 2016/2017

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

Dettagli

Lezione di Laboratorio di Prgrammazione: /04/2019 a.a. 2018/2019 R.Prevete

Lezione di Laboratorio di Prgrammazione: /04/2019 a.a. 2018/2019 R.Prevete Lezione di Laboratorio di Prgrammazione: 15 09/04/2019 a.a. 2018/2019 R.Prevete Dati aggregati: struct Dicharazione di struttura con identificatore: struct { ;

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

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

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

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

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

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

Dettagli

Riepilogo della puntata precedente

Riepilogo della puntata precedente Riepilogo della puntata precedente Da quanto detto la volta scorsa, la scelta di passare un array mediante un puntatore è giustificata solo dal risparmio, in termini di memoria, che tale scelta comporta.

Dettagli

Strutture, Unioni, Enumerazioni in C. Emilio Di Giacomo

Strutture, Unioni, Enumerazioni in C. Emilio Di Giacomo Strutture, Unioni, Enumerazioni in C Emilio Di Giacomo Strutture Una struttura è una collezione di variabili raggruppate sotto uno stesso nome da questo punto di vista è simile a un array Le variabili

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

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

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

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

Costruiamo un programma per crittografare del testo

Costruiamo un programma per crittografare del testo Costruiamo un programma per crittografare del testo Per codificare un messaggio in modo tale che il suo testo non risulti leggibile a persone che non siano in possesso dell'opportuna procedura di decodifica,

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

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

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

Aritmetica dei puntatori

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

Dettagli

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

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 6 Aprile 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int x = -1; Scrivere la porzione di codice che inserisce

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

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C Es typedef ; typedef char stringa[10]; dichiara che il tipo stringa è un array

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

parte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure

parte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure Tipi user-defined Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per definire nuovi tipi (tipi user-defined) Vediamo le regole generali che governano

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

parte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure

parte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure Tipi user-defined Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per definire nuovi tipi (tipi user-defined) Vediamo le regole generali che governano

Dettagli

Elementi di Informatica

Elementi di Informatica Corso di Laurea triennale in Ingegneria Chimica in condivisione con Corso di Laurea triennale in Ingegneria Navale e Scienze dei Materiali Elementi di Informatica A.A. 2016/17 prof. Mario Barbareschi Puntatori

Dettagli

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

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

Dettagli

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

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

Lezione 13: Strutture dati dinamiche

Lezione 13: Strutture dati dinamiche Lezione 13: Strutture dati dinamiche Laboratorio di Elementi di Architettura e Sistemi Operativi 7 Maggio 2013 Riepilogo lezioni Data Argomento Compitino mar 07/05 Programmazione C: strutture mer 08/05

Dettagli

Gli array, le stringhe e le strutture

Gli array, le stringhe e le strutture INFORMATICA B Ingegneria Elettrica Gli array, le stringhe e le strutture Limiti dei tipi di dato semplici Utilizzare solo i tipi di dato semplici può essere limitante e rendere il programma poco flessibile

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

Dettagli

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in

Dettagli

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico Francesco Tortorella Le strutture Gli array permettono la sola aggregazione di variabili dello stesso tipo. Quindi

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

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

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 puntatori)!

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 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 (allocata

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

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

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

Costruire nuovi tipi Strutture,enumerazioni,unioni e typedef

Costruire nuovi tipi Strutture,enumerazioni,unioni e typedef Il linguaggio C++ Costruire nuovi tipi Strutture,enumerazioni,unioni e typedef Tipi definiti dall utente 1 Dichiarazione di tipo Tipi semplici User-Defined 2 Tipi semplici User-Defined Tipi semplici User-Defined

Dettagli

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

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

Dettagli

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

Programmazione template

Programmazione template Programmazione template Funzionalità ed operatori Anche se con comportamenti simili, i vari tipi (int, float, double) in C++ non sono interscambiabili automaticamente una medesima azione (es. la somma)

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 7 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in

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

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

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

! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente

! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente ! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili

Dettagli

Allocazione dinamica memoria

Allocazione dinamica memoria Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo

Dettagli

Esercizi. Filtraggio

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

Dettagli

Laboratorio di Algoritmi

Laboratorio di Algoritmi Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-12.30 in Aula 2 Giovedì 8.30-10.30 in

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

- 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

Fondamenti di Informatica 12. Linguaggio C -4

Fondamenti di Informatica 12. 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 Fondamenti di Informatica 12. Linguaggio C -4 Strutture Dati

Dettagli

Puntatori. Grazie ai puntatori:

Puntatori. Grazie ai puntatori: Puntatori Grazie ai puntatori: 1) è possibile permettere ad una funzione di modificare il contenuto di un area di memoria; 2) invece di passare ad una funzione tutto un blocco di memoria, si passa alla

Dettagli

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine)

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine) La copia di un file Nell'esercizio di oggi cerchiamo di implementare un programma che permetta di effettuare la copia di un file di testo. L'operazione di copia, oltre a permettere di creare un nuovo file

Dettagli

PROVA SCRITTA DEL MODULO DI

PROVA SCRITTA DEL MODULO DI PROVA SCRITTA DEL MODULO DI MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (4 punti) Convertire in notazione binaria il valore 289 utilizzando al massimo

Dettagli

Tipi derivati. Strutture Matrici typedef enum

Tipi derivati. Strutture Matrici typedef enum Tipi derivati Strutture Matrici typedef enum Le strutture Una struttura, o struct, è un tipo di dato derivato che permette di aggregare un insieme di elementi, detti campi, all'interno di un unica entità

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando

Dettagli

PUNTATORI. Ivan Lanese

PUNTATORI. Ivan Lanese PUNTATORI Ivan Lanese Argomenti Puntatori Liste Puntatori Un puntatore è un tipo di dato che contiene l'indirizzo di memoria di un altro tipo di dato In c+o i puntatori sono tipati: avremo puntatori a

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

Esonero di Informatica I. Ingegneria Medica

Esonero di Informatica I. Ingegneria Medica Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Introduzione >> Sommario Sommario Panoramica Alcuni Esempi

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