TIPI DI DATO. T = { D, {F 1,...,F n }, {P 1,...,P m } } Un tipo di dato T è definito come:

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

Tipi di dato STRUTTURATI

TIPI DI DATO TIPI DI DATO. [ ] (array) struct (strutture) ARRAY (VETTORI) ARRAY (VETTORI)

TIPI DI DATO TIPI DI DATO

TIPI DI DATO. I tipi di dato si differenziano in scalari e strutturati. tipi di dato. costruttori predefiniti. definiti dall'utente

TIPI DI DATO TIPI DI DATO

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

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

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

Tutorato Elementi di Informatica 2018

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2007/2008

Università degli Studi di Brescia. Vettori di variabili. ! Sono variabili aggregate in grado di memorizzare una collezione (organizzata) di oggetti

Università degli Studi di Ferrara

Introduzione al linguaggio C Puntatori

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

Concetti chiave. Gli Array o Vettori. Array Elementi dell array Indici e lunghezza dell array Inizializzazione di vettori Array multidimensionali

C: panoramica. Violetta Lonati

Esercitazione 6. Array

Linguaggio C: Array Valeria Cardellini

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

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

ESERCIZIO: Lettura/Scrittura Array

Struttura dei programmi C

Esercizi. Filtraggio

Esercizi. La funzione swapint() primo tentativo

STRUCT - ESERCIZIO 1

Esercitazione 11. Liste semplici

array: vettori, matrici e stringhe

Introduzione al linguaggio C Puntatori

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

Struttura di un. Struttura dei programmi C

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

La formalizzazione dell informazione: Dati e Diagrammi di Flusso


Strutture Dati Dinamiche

Laboratorio di Informatica I

Dati due punti sul piano calcolare la loro distanza

Esercizi C sui tipi definiti dall utente

Tipi definiti dall'utente

Dichiarazioni e tipi predefiniti nel linguaggio C

Corso di Informatica 1 Esercitazione n. 2

FONDAMENTI DI PROGRAMMAZIONE ESERCITAZIONI Corso di Laurea in MATEMATICA a.a. 2018/19

Lezione 6: Array e puntatori

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Esercizio 1: media di numeri reali (uso funzioni e struct)

Array multidimensionali e stringhe

Allocazione dinamica della memoria

Il costruttore struct

IL PRIMO PROGRAMMA IN C

Tipi definiti dall'utente

ESERCIZIO Grammatiche (1) ESERCIZIO Grammatiche (1) Espressioni algebriche

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Programmazione in C. La struttura del programma Variabili, espressioni, operazioni

Stringhe e allocazione dinamica della memoria

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

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

Esercitazione di Reti degli elaboratori

Tipi di dato strutturati: Array

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Tipi di dato strutturati: Array

Corso di Informatica A.A

Struttura dei programmi e Variabili

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

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

Fondamenti di Informatica 2

I Dati Strutturati ed il Linguaggio C

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

Introduzione al C. Lez. 1 Elementi

Es 1. Scrivere un programma che verifica se una terna di numeri interi e' pitagorica

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Ingresso ed Uscita in C. Informatica 1 / 15

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

Array. Aggragati di variabili omogenee...

I tipi strutturati e i record in C++

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

2 Operatori matematici e costrutto if

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

Introduzione alla programmazione in linguaggio C

Ricerca binaria ricorsiva!

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

Array e puntatori. Indice. Tipi di dati strutturati: Array Puntatori Tipi di dati strutturati: Array Esempio. Corso di Informatica A.

- matrici - stringhe - file (lettura/scrittura, di testo/binari) - strutture, puntatori - allocazione dinamica della memoria (malloc)

Introduzione al C. Lez. 2 Funzioni e Puntatori

Tipi di dato semplici

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

Introduzione al C. Lez. 2. Funzioni e Puntatori

Esercizi Programmazione I

Esercizio 1: calcolo insieme intersezione

Transcript:

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

TIPI DI DATO: ESEMPIO Il tipo di dato INTERO è definito come: un dominio di valori, Z un insieme di funzioni F 1,..,F n sul dominio D esempio SOMMA, SOTTRAZIONE, PRODOTTO. un insieme di predicati P 1,..,P m sul dominio D ad esempio MAGGIORE, MINORE, UGUALE...

TIPI DI DATO I tipi di dato si differenziano in scalari e strutturati. tipi di dato scalari strutturati puntatori predefiniti int char float double definiti dall'utente costruttori predefiniti enum [] struct union definiti dall'utente Non saranno trattati nel corso

TIPI DI DATO In C si possono definire tipi strutturati. Vi sono due costruttori fondamentali: [ ] (array) struct (strutture)

STRUTTURE Una struttura è una collezione finita di variabili non necessariamente dello stesso tipo, ognuna identificata da un nome. struct persona nome età stipendio stringa di 20 char intero float

ARRAY (VETTORI) Un array è una collezione finita di N variabili dello stesso tipo, ognuna identificata da un indice compreso fra 0 e N-1 v 0 1 2 3 v[0] v[1] v[2] v[3]

ARRAY (VETTORI) Definizione di una variabile di tipo array: <tipo> <nomearray> [ <costante> ]; Esempi: int v[4]; char nome[20]; ATTENZIONE: Sbagliato!! int N; char nome[n]; v[0] v v[1] 0 1 2 3 Il compilatore non sa come dimensionare l array v[2] v[3]

ESEMPIO Problema: leggere da tastiera gli elementi di un vettore #include <stdio.h> #define N 3 void main() { int k; int A[N]; Direttiva gestita dal preprocessore: sostituzione di testo for(k=0; k < N; k++) {printf("dammi elemento %d: ", k); scanf("%d", &A[k]); } }

ESEMPIO Problema: inizializzare un vettore con il prodotto degli indici #include <stdio.h> #define N 3 void main() { int i=0; int A[N]; while (i<n) { A[i]=i*i; /*gli elementi del vettore sono 0,1,4*/ i++; } }

ESEMPIO Problema: scrivere un programma che, dato un vettore di N interi, determini il valore massimo.

ESEMPIO Problema: scrivere un programma che, dato un vettore di N interi, determini il valore massimo. Specifica di I livello: Inizialmente, si assuma come massimo di tentativo il primo elemento. m 0 = v[0] m 0 v[0] Poi, si confronti via via il massimo di tentativo con gli elementi del vettore: nel caso se ne trovi uno maggiore del massimo di tentativo attuale, si aggiorni il valore del massimo. m i = max(m i-1,v[i]) m i v[0],v[1]..v[i] Al termine, il valore del massimo di tentativo coincide col valore massimo ospitato nel vettore. m n-1 v[0],v[1] v[n-1] cioè m n-1 è il max cercato.

ESEMPIO Codifica: #define DIM 10 void main() { int v[dim]; int i, max; for(i=0; i < DIM; i++) /* INIZIO LETTURA */ {printf("dammi elemento %d: ", i); scanf("%d", &v[i]);} /* FINE LETTURA */ max=v[0]; for (i=1; i<dim; i++) if (v[i]>max) max = v[i]; /* ora max contiene il massimo */ printf("massimo = %d", max); }

DIMENSIONE FISICA VS. LOGICA Un array è una collezione finita di N celle dello stesso tipo Questo non significa che si debbano per forza usare sempre tutte! La dimensione logica di un array può essere inferiore (mai superiore!) alla sua dimensione fisica Spesso, la porzione di array realmente utilizzata dipende dai dati d ingresso.

DIMENSIONE FISICA VS. LOGICA Esempio È data una serie di rilevazioni di temperature espresse in gradi Kelvin. Ogni serie è composta di al più 10 valori, ma può essere più corta. Il valore -1 indica che la serie delle temperature è finita. Scrivere un programma che, data una serie di temperature, calcoli la media delle temperature fornite.

ESEMPIO Il vettore deve essere dimensionato per 10 celle (caso peggiore)... ma la porzione realmente usata può essere minore! Specifica di I livello: leggere le temperature e memorizzarle nel vettore calcolare la somma di tutti gli elementi del vettore, e nel frattempo contare quanti sono il risultato è il rapporto fra la somma degli elementi così calcolata e il numero degli elementi.

ESEMPIO Specifica di II livello: Leggi gli elementi del vettore finché è minore della dimensione massima e l elemento letto non è -1 Al termine (quando o un elemento vale -1, oppure hai esaminato N elementi), l indice i rappresenta il numero totale di elementi ossia la dimensione LOGICA del vettore.

ESEMPIO Specifica di II livello (continua): Inizialmente, poni uguale a 0 una variabile S che rappresenti la somma corrente s = 0 A ogni passo (da 0 a i), aggiungi l elemento corrente a una variabile S che funga da somma. s = s + v[k], Al termine (dopo i elementi), si ottiene il valore finale della somma: il risultato è il rapporto S/k.

#define DIM 10 Dimensione fisica = 10 void main() { int k, v[dim], i = 0, d_log; } float media, s=0; printf("inserisci temp. - 1 per terminare"); scanf("%d", &v[0]); while ((v[i]!= -1) && (i < DIM - 1)) {i++; Dimensione logica = i printf("inserisci temp."); scanf(" %d", &v[i]);} for (k=0; k < i ; k++) s = s + v[k]; media = s / i; ESEMPIO printf("media = %f", media);

INPUT OUTPUT Non è possibile leggere/scrivere un intero vettore (a parte come vedremo le stringhe); occorre leggere/ scrivere le sue componenti: void main() { } int i,frequenza[25]; for (i=0; i<25; i++) { scanf( %d,&frequenza[i]); frequenza[i]=frequenza[i]+1; } /* legge a terminale le componenti del */ vettore frequenza e le incrementa

ASSEGNAMENTO Anche se due variabili vettore sono dello stesso tipo, non è possibile l assegnamento diretto: int F[25], frequenza[25]; F=frequenza; /* NO */ ma occorre copiare componente per componente: for (i=0; i<25; i++) F[i]=frequenza[i];