Lista concatenata. Liste. Strutture autoreferenzianti. Strutture autoreferenzianti

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Lista concatenata. Liste. Strutture autoreferenzianti. Strutture autoreferenzianti"

Transcript

1 Liste Ver. 2.4 Lista concatenata Struttura dati in cui ogni oggetto ha un collegamento ad un altro oggetto (linked list ) Il collegamento è un untatore con l indirizzo di memoria dell altro oggetto Claudio Fornaro - Corso di rogrammazione in C Strutture autoreferenzianti struct nodo int valore; struct nodo *net; }; valore net net è un untatore al tio di oggetto che si sta dichiarando in questo stesso momento, non essendo la dichiarazione della struct ancora comleta si dice avere un tio incomleto 3 Strutture autoreferenzianti E ossibile definire un untatore ad un tio incomleto, quindi ad esemio a una struttura che verrà definita successivamente, come nel caso recedente Per lo stesso motivo è lecito utilizzare la dichiarazione con tyedef seguente: tyedef struct nodo * NodoP; tyedef struct nodo int valore; NodoP net; } Nodo; 4

2 Strutture autoreferenzianti Per lo stesso motivo, è ossibile definire strutture mutuamente referenzianti: struct due int datodue; struct uno *untuno; }; struct uno int datouno; struct due *untdue; }; Un tio di dato (come struct uno) utilizzato rima di conoscerne la dim. è detto incomleto 5 Testa e coda della lista struct nodo int valore; struct nodo *net; } * = NULL; è un untatore a struct nodo, tutta la lista inizierà da questo untatore La lista termina con un elemento in cui in membro net vale NULL La lista è inizialmente vuota, quindi viene inizializzato a NULL Situazione iniziale Caso generico: la lista non è vuota Si crea la nuova struct nodo da inserire: =malloc(sizeof(struct nodo))...??

3 9 10 Si immette il valore da memorizzare nella lista: ->valore = ; Si fa untare il nuovo elemento al 1 o : ->net = ;? Si fa untare al nuovo elemento: = ; Riassumendo: if ((=malloc(sizeof(struct nodo)))!= NULL) ->value = ; ->net = ; = ; }

4 13 14 Situazione iniziale Si releva il valore dal 1 o elemento: = ->valore; Si salva il untatore all elemento da rimuovere: = ; Si fa untare al 2 o elemento: = ->net;

5 17 18 Si dealloca lo sazio del 1 o elemento: free(); free! Situazione finale 33 62? 19 Considerazioni 20 Riassumendo: if (!= NULL) = ->valore; = ; = ->net; free(); } Una lista di strutture, risetto ad un vettore di strutture: Non ha roblemi di dimensioni: varia all occorrenza Lo scambio di elementi è molto veloce (coia di untatori) L accesso è iù lento (deve ercorrere la lista)

6 Esercizi 21 Esercizi Scrivere in un file searato (con controlli di errore) le seguenti funzioni di gestione di una lista dinamica di int stabilendo er esse aroriati argomenti e valori restituiti. La struttura dati sia static. Produrre un main a menu er il test. AddToHead() AddToTail() RemoveFromHead() RemoveFromTail() ClearAll() svuota la lista 2. Utilizzando le funzioni dell esercizio 1 (senza modificare il file), scrivere le funzioni ush/o ed enqueue/dequeue con gli stessi identici rototii definiti er stack e coda realizzata con vettori. Il main deve essere lo stesso identico usato con le realizzazioni con i vettori (e quindi comatibile con la nuova realizzazione). Per evitare l over della doia chiamata a funzione (es. la chiamata a ush che a sua volta chiama AddToHead), le funzioni richieste vengano realizzate come macro (nel file.h da includere nel main). Variazioni 23 Homework 8 24 Lista con valori dummy Per semlificare il codice di alcune oerazioni (meno casi articolari) uò essere utile che la lista abbia uno o iù elementi fittizi aggiuntivi (non contengono valori significativi): come rimo elemento fisso untato da come ultimo elemento fisso della lista (sentinella) Lista circolare L ultimo elemento unta al rimo Multi-lista Ogni elemento della lista ha due o iù untatori ai nodi successivi, ci ossono essere quindi iù modi di ercorrerla (es. diversi ordinamenti) Scrivere in un file searato le funzioni di gestione di una lista di int, assando anche la testa della lista (er avere iù liste). La lista otrà avere due stati: ordinata o non ordinata; alcune funzioni riordineranno reventivamente la lista (se necessario), altre la lasceranno non iù ordinata; alcune funzioni lavoreranno in modo diverso a seconda che la lista sia ordinata o no. Può essere utile avere un untatore all ultimo elemento e un contatore degli elementi Ricordarsi di eliminare (free) tutti gli elementi che non servono iù Si scriva un main di test

7 Homework 8 (Continuazione) Funzioni di base listaddtohead (rende la lista non ordinata) listaddtotail (rende la lista non ordinata) listremovefromhead (e ne restituisce il valore) listremovefromtail (e ne restituisce il valore) listclearall (svuota la lista) listcount (restituisce il numero degli elementi della lista) listtestisemty (test se la lista è vuota) 25 Homework 8 (Continuazione) Funzioni di ordinamento e ricerca listsort (ascendente e discendente) listaddordered (aggiunge in lista ordinata al osto giusto, se necessario la lista venga ordinata) listfind (cerca il valore dato nella lista a artire dall elemento di indice indicato, restituisce l indice della rima occorrenza, se la lista è ordinata deve fermarsi aena score che l elemento non c è) listremovevalue (rimuove dalla lista l elemento contenente la rima occorrenza del valore dato e lo restituisce) 26 Homework 8 (Continuazione) Funzioni assolute di scansione della lista listgetvalueat (restituisce il valore dell elemento di indice i, il rimo abbia indice 1) listsetvalueat (cambia il valore dell elemento di indice i) listaddat (aggiunge un elemento in modo che occui la osizione di indice i, facendo avanzare gli altri elementi) listremoveat (elimina l elemento di indice i) 27 Homework 9 Per accedere ai singoli elementi della lista si uò definire un cursore (un untatore) che si riferisca (unti) ai singoli elementi della lista Il cursore uò essere sostato avanti e indietro nella lista er identificare un articolare elemento. Si continui l Homework recedente aggiungendo le seguenti funzioni er l uso dei cursori. Si faccia attenzione a gestire correttamente i cursori quando la lista viene modificata con le altre funzioni e viceversa. Il main di test sia identico a quello dell Hw 8 28

8 Homework 9 (Continuazione) Funzioni di scansione della lista con cursore listgetcursor (restituisce l indice dell elemento untato dal cursore, il rimo abbia indice 1) listsetcursor (osiziona il cursore all elemento secificato dall indice fornito) listmovecursor (muove il cursore al rimo elemento, al successivo, al recedente, all ultimo utilizzare una enum er dare i nomi delle osizioni rimo, successivo, etc.) listgetvalueatcursor (restituisce il valore dell elemento untato dal cursore) listsetvalueatcursor (cambia il valore dell elemento untato dal cursore) 29 Homework 9 (Continuazione) Funzioni di scansione della lista con cursore listaddatcursor (aggiunge un elemento alla osizione del cursore, facendo avanzare gli altri elementi) listremoveatcursor (elimina l elemento untato dal cursore) listtestcursoratfirst (test se unta al rimo elemento) listtestcursoratlast (test se unta all ultimo elemento) 30 Liste bidirezionali La bidirezionalità si ottiene mediante un link al nodo recedente (doubly-linked list ) struct nodo rev valore net int valore; struct nodo *rev; struct nodo *net; } *=NULL; 31 Homework 10 Come gli Homework 8 e 9, ma si usino liste bidirezionali. Il main deve essere identico a quello degli Homework 8 e

9 Liste di liste Alcuni dei membri dei nodi di una lista rinciale sono le teste di liste secondarie a y e 33 Considerazioni Problema: in uno stesso rogramma servono liste con nodi di tio diverso Ad es., in una lista di liste la lista rinciale e quelle secondarie hanno nodi di tio diverso Soluzione dei linguaggi rocedurali (C): una serie di funzioni diverse er ciascun tio di lista Soluzione ideale: una serie di funzioni generiche che gestiscano qualsiasi tio di elemento (oggetto) 34 Si Si usano allora linguaggi ad oggetti Tabelle di hash Per velocizzare la ricerca di un elemento in una lista, si distribuiscono gli elementi su iù liste (iù corte quindi iù veloci da utilizzare) Le teste di queste liste sono in un vettore di untatori La scelta di quale lista debba ositare i singoli elementi viene stabilito da un oortuno calcolo (funzione di hash) sull elemento stesso, il risultato è l indice che in quel vettore indica quale lista usare 35 Tabelle di hash Esemio Esemio Suddivisione dei valori in base alla cifra delle unità hashtab:

10 Tabelle di hash Esemio 37 Tabelle di hash 38 La funzione di hash è: int hash(int n) return abs(n) % 10;} Il vettore di untatori è: static struct nodo *hashtab[10]; La testa della lista relativa ad è: hashtab[hash()] Per trovare nella lista che gli comete: listfind(hashtab[hash()], ); Per inserire nella lista che gli comete: listadd(hashtab[hash()], ); Una buona funzione di hash genera valori con distribuzione uniforme, ossia le liste rodotte hanno lunghezze iù o meno uguali Esemio di funzione di hash er stringhe: unsigned hash(char *s) unsigned hashval = 0; for ( ; *s!= '\0'; s++) hashval = *s + 31 * hashval; return hashval % HASHSIZE; } Homework Si scriva un rogramma er generare l indice analitico di un (lungo) file di testo. Il rogramma deve memorizzare le singole arole (si usi una lista ordinata er ciascuna delle lettere iniziali) e er ciascuna deve memorizzare i numeri di tutte le righe dove è resente (sotto-lista ordinata). Un secondo file di testo elenca le arole da non tenere in considerazione (es. articoli, reosizioni, etc.), er questa si usi un oortuna funzione hash. Il risultato della generazione dell indice analitico sia scritto in un file.

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST) Albero binario 2 Alberi binari (introduzione) Struttura di dati bidimensionale formata da nodi costituiti ciascuno dai dati da memorizzare e da due link Ver. 2.4 20 - Claudio Fornaro - Corso di programmazione

Dettagli

L editor vi da linea comandi

L editor vi da linea comandi L editor vi da linea comandi L editor con interfaccia a caratteri, iù usato comunemente fin dalle rime versioni del sistema oerativo Unix, è vi. Il nome vi sta er visual editor, infatti è ossibile vedere

Dettagli

Abstact Data Type. Abstact Data Type. Pubblico e privato. Struttura di un ADT

Abstact Data Type. Abstact Data Type. Pubblico e privato. Struttura di un ADT Abstact Data Type 2 Abstact Data Type Ver. 2.4 ADT, definisce un concetto astratto e il suo comportamento Viene utilizzato come una scatola nera (oggetto) di cui è visibile solo che cosa fa e non come

Dettagli

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

Dettagli

Esercizi su strutture dati

Esercizi su strutture dati Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate

Dettagli

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture Linked Lists Liste linkate () La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

Liste a puntatori: un esercizio passo passo

Liste a puntatori: un esercizio passo passo Liste a puntatori: un esercizio passo passo Prof. Orazio Mirabella Liste a puntatori: un esercizio passo passo (for dummies) Prof. Orazio Mirabella 1 Ripassiamo le Liste lineari Una lista lineare è una

Dettagli

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

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

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta

Dettagli

FILE E INDICI Architettura DBMS

FILE E INDICI Architettura DBMS FILE E INDICI Architettura DBMS Giorgio Giacinto 2010 Database 2 Dati su dispositivi di memorizzazione esterni! Dischi! si può leggere qualunque pagina a costo medio fisso! Nastri! si possono leggere le

Dettagli

Strutture dati. Le liste

Strutture dati. Le liste Strutture dati Le liste Introduzione Una lista è una successione finita di valori di un tipo (insieme di valori e ordine). Come tipo di dato è qualificata dalle operazioni che ci si possono svolgere: inserimento

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2) ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 21 Strutture dinamiche Gli array ci permettono di memorizzare un insieme di dati dello stesso tipo Deve essere noto staticamente il

Dettagli

5. Quinta esercitazione autoguidata: liste semplici

5. Quinta esercitazione autoguidata: liste semplici 22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto

Dettagli

a 11 s 1 + a 12 s a 1n s n = b 1 a 21 s 1 + a 22 s a 2n s n = b 2..

a 11 s 1 + a 12 s a 1n s n = b 1 a 21 s 1 + a 22 s a 2n s n = b 2.. Matematica II 020304 Ogni sistema di m equazioni lineari in n incognite x 1 x 2 x n si uo raresentare nella forma a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a 2n x n = b 2 a m1 x 1

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Dettagli

Esercizi Strutture dati di tipo astratto

Esercizi Strutture dati di tipo astratto Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio

Dettagli

Un puntatore è una variabile che contiene l indirizzo di una variabile. Una variabile di tipo puntatore è dichiarata tramite il costruttore di tipo *

Un puntatore è una variabile che contiene l indirizzo di una variabile. Una variabile di tipo puntatore è dichiarata tramite il costruttore di tipo * PUNTATORI Un untatore è una variabile che contiene l indirizzo di una variabile var. di tio "untatore a variabile di tio T" indir. di variab. variabile di tio T valore di tio T Una variabile di tio untatore

Dettagli

Strutture dati dinamiche in C (III)

Strutture dati dinamiche in C (III) Strutture dati dinamiche in C (III) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Alcune utilities per la gestione di stringhe Gli alberi

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

Strutture Dinamiche. Fondamenti di Informatica

Strutture Dinamiche. Fondamenti di Informatica Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro

Dettagli

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di

Dettagli

Questa soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.

Questa soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento. Un ulteriore semplificazione si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine (e l inizio) di una lista. Questa soluzione va contemplata

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

Tipi di dato strutturato. Tipi strutturati: il Record. Il Record. Il Record in C: struct

Tipi di dato strutturato. Tipi strutturati: il Record. Il Record. Il Record in C: struct Tii di dato strutturato drian ilincai 2900 21.0 Marco lbergamo 31000 27.0 Leonardo mico 8000 21.0 Massimiliano rino 100 19.2 Valerio Zerillo 4000 34. Il Record Esemio: Si vuole raresentare adeguatamente

Dettagli

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; } Liste con sentinella Un ulteriore semplificazione delle operazioni sulle liste si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine e l inizio

Dettagli

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH INTRODUZIONE INTRODUZIONE Una tabella hash è una struttura dati che permette operazioni di ricerca e inserimento molto veloci: in pratica si ha un costo computazionale costante O(1). Si ricorda che la

Dettagli

Heap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero);

Heap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero); Heap Heap scenario Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero); Voglio poter: inserire: nuovi elementi, ciascuno con una data priorità

Dettagli

La classe std::vector della Standard Template Library del C++

La classe std::vector della Standard Template Library del C++ La classe std::vector della Standard Template Library del C++ Alberto Garfagnini Università degli studi di Padova 23 Ottobre 2013 Programmazione generica in C++ : i Template I templates sono probabilmente

Dettagli

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L

Dettagli

PROVA SCRITTA 23 MARZO 2010

PROVA SCRITTA 23 MARZO 2010 PROVA SCRITTA 23 MARZO 2010 In un file binario, MY_FILE.DAT, si memorizzano per ciascuno studente universitario: nome e cognome (stringhe, 20 char), matricola (intero), codice del corso di laurea (stringa

Dettagli

Struttura dati astratta Coda

Struttura dati astratta Coda CODE Struttura dati astratta Coda La coda o queue è una struttura dati astratta in cui l'inserimento e l estrazione sono consentite solo in specifiche posizioni; in particolare, l'inserimento è consentito

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

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

I puntatori e l allocazione dinamica di memoria. Esercizi risolti I puntatori e l allocazione dinamica di memoria Esercizi risolti 1 Esercizio Si vuole realizzare un tipo struct, utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero

Dettagli

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Fondamenti di Informatica II appello 6 luglio 2015 Matricola/codice persona Cognome Nome Durata prova:

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

dott. Sabrina Senatore

dott. Sabrina Senatore dott. Sabrina Senatore Dipartimento di Informatica Riepilogo strutture 1 Sintassi della dichiarazione: typedef struct nome_tipo { Dichiarazione dei campi nome_tipo; typedef struct point{ int x; int y;

Dettagli

Introduzione al C. Tipi derivati

Introduzione al C. Tipi derivati Introduzione al C Tipi derivati 1 Strutture semplici Una struttura è una collezione di una o più variabili, anche di tipi diversi, raggruppate da un nome struct tag{ struttura_elementi } istanza; struct

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Modelli dei Sistemi di Produzione Modelli e Algoritmi della Logistica 2010-11

Modelli dei Sistemi di Produzione Modelli e Algoritmi della Logistica 2010-11 Modelli dei Sistemi di Produzione Modelli e lgoritmi della Logistica 00- Scheduling: Macchina Singola CRLO MNNINO Saienza Università di Roma Diartimento di Informatica e Sistemistica Il roblema /-/ w C

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

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

Struct, enum, Puntatori e Array dinamici

Struct, enum, Puntatori e Array dinamici Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente

Dettagli

CORSO DI PROGRAMMAZIONE

CORSO DI PROGRAMMAZIONE ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE PILE E CODE DI DATI DISPENSA 11.02 11-02_Pile_Code_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative Common CC BY-NC-SA.

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

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >

Dettagli

CORSO ACCESS PARTE IV

CORSO ACCESS PARTE IV Creazione di un database / gestione tabelle Per creare un nuovo database Menu File Selezionare Nuovo Scegliere Database vuoto nella scheda Generale e confermare con Ok Impostare il nome e il percorso nella

Dettagli

Problema. Vettori e matrici. Vettori. Vettori

Problema. Vettori e matrici. Vettori. Vettori e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le

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

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array

Dettagli

Funzionalità. Il preprocessore C. Inclusione di file. Inclusione di file

Funzionalità. Il preprocessore C. Inclusione di file. Inclusione di file Il preprocessore C Ver. 2.4 Funzionalità Modifica il codice C prima che venga eseguita la traduzione vera a propria Le direttive al preprocessore riguardano: inclusione di file (#include) definizione di

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

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

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

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

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

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

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

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

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

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

a.a Codice corso: 21012, La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere:

a.a Codice corso: 21012, La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: LISTE DINAMICHE Liste semplicemente concatenate: La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: la lista vuota; oppure contiene un valore (di

Dettagli

in più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,...

in più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,... una stringa è qualcosa che si può concatenare, spezzare in più stringhe,...

Dettagli

Metodi statici. Dichiarazione e chiamata di metodi statici

Metodi statici. Dichiarazione e chiamata di metodi statici Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un

Dettagli

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi Fondamenti di Informatica T-1 modulo 2 Laboratorio 10: preparazione alla prova d esame 1 Esercizio 1 - Gestione degli impegni Gli impegni giornalieri dei dipendenti di un azienda devono essere aggiornati

Dettagli

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto

Dettagli

CALCOLO DELLE PROBABILITÀ. 1. La probabilità che una candela accesa si spenga è p = 1, perché è assolutamente certo che si esaurirà.

CALCOLO DELLE PROBABILITÀ. 1. La probabilità che una candela accesa si spenga è p = 1, perché è assolutamente certo che si esaurirà. CALCOLO DELLE PROBABILITÀ -Definizione di robabilità -Legge additiva (eventi disgiunti) -Probabilità totale -Eventi comosti -Eventi indiendenti -Legge moltilicativa -Probabilità comoste - -Definizione

Dettagli

TEORIA DELLA PROBABILITÁ

TEORIA DELLA PROBABILITÁ TEORIA DELLA PROBABILITÁ Cenni storici i rimi arocci alla teoria della robabilità sono della metà del XVII secolo (Pascal, Fermat, Bernoulli) gli ambiti di alicazione sono i giochi d azzardo e roblemi

Dettagli

Inserimento in una lista ordinata

Inserimento in una lista ordinata Inserimento in una lista ordinata Vogliamo inserire un nuovo elemento in una lista in cui gli elementi sono memorizzati in ordine crescente: Passo 1: creare un nuovo nodo della lista Passo 2: trovare il

Dettagli

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Fondamenti di Informatica II appello 5 luglio 2014 Matricola Cognome Nome Istruzioni Durata prova: 2

Dettagli

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa: Come nella Mappa: un Dizionario è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore. ogni elemento (k,v) viene detto entrata (entry) del Dizionario. chiavi

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Esercizi di programmazione in linguaggio C English Dictionary

Esercizi di programmazione in linguaggio C English Dictionary Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:

Dettagli

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5A.zip contenente i file necessari (progetto Visual Studio ed eventuali altri file di esempio). Avvertenze per la consegna:

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

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 5 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013 Le funzioni sono oggetti di prima classe in Scheme In Scheme le funzioni

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2011-12 17 settembre 2012 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

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

Allocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica

Allocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica Allocazione dinamica della memoria Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Allocazione della memoria Il termine allocazione viene utilizzato per indicare l assegnazione di un blocco

Dettagli

La ricorsione. Ver Claudio Fornaro - Corso di programmazione in C

La ricorsione. Ver Claudio Fornaro - Corso di programmazione in C La ricorsione Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C 2 Divide et impera Metodo di approccio ai problemi che consiste nel dividere il problema dato in problemi più semplici I risultati

Dettagli

Passare argomenti al programma

Passare argomenti al programma Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di

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

Programma Scienza senza frontiere CSF Italia. Guida per lo studente ai corsi di lingua italiana ICoN con tutorato

Programma Scienza senza frontiere CSF Italia. Guida per lo studente ai corsi di lingua italiana ICoN con tutorato Programma Scienza senza frontiere CSF Italia Guida per lo studente ai corsi di lingua italiana ICoN con tutorato Indice 1. Esplorare il corso 1.1 Accedere al corso 1.1.1 La pagina di benvenuto 1.2 Navigare

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

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

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza

Dettagli

Lezione 12 Tabelle Hash

Lezione 12 Tabelle Hash Lezione 12 Tabelle Hash Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 2 ABR: Visita Scrivere un programma che legga

Dettagli

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

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea

Dettagli

Da libro di testo Cormen et al. CAP 21: par 21.1, 21.2, 21.3 pagg. 468-477 Strutture dati per insiemi disgiunti Una struttura dati per insiemi disgiunti mantiene una collezione S={S 1,S 2,,S k } di insiemi

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

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3) Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di

Dettagli