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

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

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella

Strutture, Unioni, Enumerazioni in C. Emilio Di Giacomo

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

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

Programmazione Procedurale in Linguaggio C++

Tipi user-defined. parte dichiarativa globale:

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

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Elementi di Informatica A. A. 2016/2017

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

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

Lezione 20: Tipi derivati: struct e union

Corso di Informatica

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

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

Tutorato Elementi di Informatica 2018

Informatica (A-K) 19. Linguaggio C -6

Costruire nuovi tipi Strutture,enumerazioni,unioni e typedef

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

Fondamenti di Informatica

Fondamenti di Informatica 12. Linguaggio C -4

Introduzione al linguaggio C Puntatori

I Dati Strutturati ed il Linguaggio C

Cosa sono gli Array. int myarray[10];

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Funzioni, Stack e Visibilità delle Variabili in C

Introduzione al linguaggio C Dati aggregati

Aggregati di dati eterogenei: il tipo struct

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

Strutture Dati. Nicu Sebe. Informatica Nicu Sebe 1 / 27

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

Programmazione Procedurale in Linguaggio C++

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

Strutture. struct [<etichetta>] { { <definizione-di-variabile> } } <nomestruttura>

Laboratorio di Informatica

I tipi strutturati e i record in C++

Dati aggregati. Violetta Lonati

- tipo - costruttori di tipo - typedef: alias per i nuovi tipi

Tipi strutturati - struct

I tipi di dato strutturato sono dichiarabili in C tramite la parola chiave typedef

Programmazione Procedurale in Linguaggio C++

Laboratorio di algoritmi e strutture dati

Rappresentazione della memoria

Il linguaggio C Strutture

Strutture Dati. Luca Abeni

Dispensa di Informatica II.6

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

TIPI DI DATO. e quasi sempre anche collezioni di oggetti, mediante la definizione di tipi strutturati

Il linguaggio C. Puntatori e dintorni

Strutture. Una dichiarazione struct definisce un nuovo tipo. - Può essere seguita da una lista di variabili.

Linguaggio C: puntatori

ESERCIZIO: SHIFT ARRAY (1)

Laboratorio di programmazione

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

Programmazione Procedurale in Linguaggio C++

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Strutture dati complesse. Vettori. Tipi di dato strutturati. Strutture dati complesse nome fulvio. Esigenze. Esigenze. dato

Studente (Cognome Nome): Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a Primo scritto 14 Gennaio 2010

Tipi definiti dall'utente

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

TIPI DI DATO TIPI DEFINITI DALL UTENTE

Laboratorio di Informatica

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C

Classi ed Oggetti. Fondamenti di Informatica A-K

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a

TIPI DI DATO. Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi

Tipi definiti dall'utente

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Lezione 9 e 10. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Programmazione ad oggetti

Programmazione Procedurale in Linguaggio C++

Elementi di Informatica

Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 8 Esercitazione: 11 gennaio 2006 Esercizi su strutture dinamiche

Tutorato Elementi di Informatica 2018

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

Corso di Fondamenti di Informatica Università degli Studi di Cassino

Fondamenti di Informatica T-1

Introduzione al linguaggio C Puntatori

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

Esercizio (o esempio?)

Linguaggio C Struct e union

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

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

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

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

Fondamenti di Informatica 1 - Compito A

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Transcript:

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 non rispondono all esigenza di aggregare dati di tipo diverso, come accade, p.es., per i dati anagrafici (nome, cognome, anno nascita). Per questo scopo, il C++ mette a disposizione le strutture.

Le strutture Una struttura è una collezione di elementi denominati campi, ognuno dei quali può contenere un dato di tipo diverso. Ogni campo può essere di tipo atomico (int, float, ) o strutturato (array, stringa). Quando si dichiara una struttura vanno quindi precisati quali siano i campi componenti e a quale tipo appartengano.

Il costruttore di tipi struct La dichiarazione di una struttura avviene tramite il costruttore struct: struct nome_struttura { tipo_campoa nome_campoa; tipo_campob nome_campob; tipo_campox nome_campox; }; I campi sono identificati con etichette differenti, non con indici (come accade per gli array), visto che appartengono a tipi differenti.

Esempio di dichiarazione struct Studente { char nome[32]; char cognome[32]; int matricola; char cds[8]; }; La dichiarazione della struttura crea un nuovo tipo con identificatore studente, che può essere utilizzato nel resto del programma.

Definizione di variabili struttura Le variabili struttura possono essere definite usando l identificatore introdotto nella dichiarazione: studente s1,s2,s3; La definizione è anche possibile nell ambito della dichiarazione della struttura: struct Studente { char nome[32]; char cognome[32]; int matricola; char cds[8]; } s1, s2, s3; Si dichiara la struct studente Si definiscono le variabili s1, s2, s3

Inizializzazione di variabili struttura Come gli array, una variabile struttura può essere inizializzata all atto della definizione, facendo attenzione a che i valori siano forniti nell ordine corretto: Studente s1 = { Paolino, Paperino, 1234, LINFTLC };

Accesso ai campi delle variabili struttura Per accedere in lettura o in scrittura ad un singolo campo della struttura si utilizza l operatore punto (.): nome_var_struttura.nome_campo Ogni campo della struttura è una variabile (del proprio tipo) a tutti gli effetti: Studente s1 = { Paolino, Paperino, 1234, LINFTLC }; int a; char s[32]; a=s1.matricola; strcpy(s,s1.cds); s1.matricola=4321;

Inizializzazione di variabili struttura Al di fuori delle definizioni, l inizializzazione deve avvenire su ogni campo: Studente s1; strcpy(s1.nome, Paolino ); strcpy(s1.cognome, Paperino ); s1.matricola = 1234; strcpy(s1.cds, LINFTLC ); In questo caso, l assegnazione dei campi può avvenire in un ordine qualunque.

Assegnazione tra variabili struttura Diversamente dagli array, le variabili struttura possono essere utilizzate direttamente in un assegnazione: Studente s1 = { Paolino, Paperino, 1234, LINFTLC }, s2; s2 = s1;

Array di struct Gli array di strutture sono utili per gestire particolari elenchi: struct Studente { char nome[32]; char cognome[32]; int matricola; char cds[8]; }; Studente iscritti[100];

Le strutture come parametri In C++ è possibile passare strutture come parametri ai sottoprogrammi sia per valore che per riferimento (diversamente dagli array). Inoltre è possibile che la funzione restituisca direttamente una struttura tramite il suo nome.

Le strutture come parametri Esempio: lettura di una variabile struttura // SOLUZIONE 1 void leggi_stud1(studente& s){ } cin >> s.nome; cin >> s.cognome; cin >> s.matricola; cin >> s.cds return; // SOLUZIONE 2 Studente leggi_stud2(){ Studente s; } cin >> s.nome; cin >> s.cognome; cin >> s.matricola; cin >> s.cds return s; Quali sono le differenze?

Problema Scrivere un programma che gestisca un elenco di studenti appartenenti a diversi corsi di studi. In particolare, realizzi le operazioni di: lettura iniziale dell elenco; creazione e stampa del sottoelenco formato dagli studenti appartenenti ad uno stesso corso di studi.

typedef La dichiarazione di una struttura introduce un nuovo tipo a quelli presenti nel linguaggio. Il C++ permette l introduzione di nuovi tipi basati su tipi già esistenti tramite la parola chiave typedef che ha sintassi: typedef tipo_esistente nome_nuovo_tipo; dove tipo_esistente è un tipo C++ (fondamentale o strutturato) mentre nome_nuovo_tipo è il nuovo nome per quel tipo. Esempio: typedef double Doppio; typedef float Punto[2];

typedef I nuovi nomi possono essere utilizzati ovunque possono essere utilizzati i nomi precedenti: Doppio x,y; Punto p1, p2, p3; Sotto tutti i punti di vista i due nomi si riferiscono allo stesso tipo. Questo strumento può essere utile per definire un alias di un tipo frequentemente usato in un programma oppure per definire tipi che potrebbero essere modificati in versioni successive del programma (es. float double).

Confronto tra array e struct nella progettazione dei tipi Quando si va a definire un nuovo tipo strutturato che potrebbe essere organizzato tramite un array, potrebbe piuttosto essere conveniente utilizzare una struttura. Come esempio supponiamo di voler definire un tipo per gestire numeri complessi.

Uso dell array typedef // definizione Complesso x,y,z; float Complesso[2]; // accesso alla parte reale x[0] = 1.3; // accesso al coefficiente dell immaginario x[1] = 2.1; // espressioni modulo=sqrt(x[0]*x[0]+x[1]*x[1]); Achtung: il tipo Complesso è comunque un array

Uso della struttura struct Complesso{ float Re; float Im; }; // definizione Complesso x,y,z; // accesso alla parte reale x.re = 1.3; // accesso al coefficiente dell immaginario x.im = 2.1; // espressioni modulo=sqrt(x.re*x.re+x.im*x.im);