5. Quinta esercitazione autoguidata: liste semplici
|
|
- Chiara Villani
- 6 anni fa
- Visualizzazioni
Transcript
1 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 da input) - la stampa - chiede un nuovo intero e lo inserisce in testa alla lista - stampa di nuovo la lista Per la costruzione della lista usare la funzione di costruzione costruiscilista() che, ricevendo un parametro intero n, costruisca una lista di n elementi mediante inserimenti in testa. Per la stampa degli elementi della lista si usa la funzione stampalista()che, ricevendo il puntatore al primo elemento di una lista, stampa la lista. Ecco i prototipi delle funzioni richieste (+1): void instestalista(tipolista * plis, TipoElemLista elem); /* inserisece elem nella lista; plis e' l'indirizzo della variabile puntatore che punta all'inizio della lista */ TipoLista costruiscilista (int n); /* costruisce una lista di n elementi e ne restituisce il puntatore all'inizio (usa instestalista() */ void stampalista(tipolista lis); /* stampa tutti i dati contenuti nella lista */ Suggerimento2: questi potrebbero essere i tipi utilizzati: NB tutte queste strutture dati devono essere definite "top level", in modo che siano visibili a tutte le funzioni definite poi (la main() e le altre funzioni). Infatti se definissimo queste strutture dati direttamente nella main(), esse non sarebbeo poi utilizzabili da stampalista o costruiscilista() o quant'altro typedef int TipoElemLista; /* si tratta di liste di interi quindi il tipo delle informazioni nei nodi della lista e' int */ struct StructLista { /* il tipo per i singoli nodi della lista */ TipoElemLista info; struct StructLista *next; ; typedef struct StructLista * TipoLista; /* il tipo delle variabili che rappresentano liste all'interno del programma */
2 23 typedef TipoLista PuntNodoLista; /* un tipo ausiliario: sara' il tipo delle variabili puntatore a nodi di liste, ad esempio usate per le scansioni di lista */ 5.2. Funzioni adatte al tipo delle informazioni contenute in lista (LISTE2.C) Per rendere il programma meno dipendente dal tipo di elementi contenuti nei nodi della lista, non sarebbe male corredare i programma di due funzioni stampaelemlista() e leggielemlista() adatte per leggere e stampare singoli elementi della lista. ecco i prototipi delle funzioni richieste: void stampaelemlista(tipoelemlista v); /* stampa l'oggetto v di tipo TipoElemLista */ void leggielemlista(tipoelemlista *pelem); /* legge un oggetto di tipo TipoElemLista; e lo memorizza nella locazione puntata da pelem */ In questo programma l'uso di tali funzioni puo' sembrare ridondante: si tratta di semplici usi di printf e scanf su variabili intere; ma in programmi in cui l'informazione associata ai nodi della lista e' di tipo piu' complesso queste funzioni permetteranno di una migliore strutturazione del programma Liste di caratteri (LISTE3.C) Analogamente al caso precedente, scrivere un programma che - costruisce una lista di k CARATTERI (con k letto da input) - la stampa Si puo sfruttare il programma precedente, avendo l accortezza di adattare le funzioni di lettura e stampa di elementi da inserire in lista (e solo quelle...) 5.4. Liste di caratteri senza sapere prima quanti sono (LISTE4.C) Scrivere un programma che legga una sequenza di caratteri inserita da tastiera e terminata da un \n (invio) e costruisca e stampi la lista corrispondente. Diversamente dall esercizio precedente, qui non sappiamo prima della costruzione quanti saranno i dati da inserire in lista. Dobbiamo realizzare un ciclo di inserimenti in testa che termina quando il carattere letto da input e \n. Suggerimento 2: uno schema possibile, facendo a meno della funzione costruiscilista() e realizzando il ciclo di lettura dati ed inserimento direttamente nella funzione main():
3 - lettura primo dato - mentre il dato letto non e \n o inserimento del dato lettpo precedentemente (con instestalista()) o lettura del prossimo dato (con leggielemlista()) 24 Suggerimento 3: ecco uno stralcio del programma LISTE4.C: mostriamo solo il cicloche esegue l inserimento dell ultimo dato letto (diverso da \n e la lettura del prossimo. Le variabili citate sono definite nel main, con significato comprensibile dai rispettivi identificatori) while (datiterminati==0) { instestalista(&list, el); leggielemlista(&el); /* lettura elemento successivo */ datiterminati=(el=='\n'); /* assegnazione variabile per la condizione di ripetizione */ 5.5. Inserimento in coda (LISTE5.C) Scrivere un programma che legga una sequenza di caratteri inserita da tastiera e terminata da un \n (invio) e costruisca e stampi la lista corrispondente. Ma stavolta e richiesto che l ordine degli elementi in lista corrisponda esattamente a quello di inserimento: il primo elemento in lista deve essere quello inserito in input per primo e cosi via... Si consiglia di costruire il ciclo di inserimenti in coda direttamente nella main(). ecco i prototipi delle funzioni definite nel file LISTE5.C: int ugualielem(tipoelemlista, TipoElemLista); /* aggiunta, per confrontare elemnti della lista */ void stampalista(tipolista lis); void stampaelemlista(tipoelemlista v); void leggielemlista(tipoelemlista *pelem); 5.6. Inserimento in coda (LISTE6.C) Si richiede di eseguire l esercizio precedente utilizzando la tecnica di inserimento in coda con l uso del record generatore: - pgen sia il puntatore al record generatore (una struttura fittizia che rimane vuota di informazione ma ha come nodo successore quello che alla fine sara il primo nodeo della lista); - inizialmente ultimo=pgen; - poi si esegue un ciclo di inserimenti in coda, usando e aggiornando ultimo: o allocazione di un nodo puntato da ultimo->next o aggiornamento di ultimo in modo che punti al nuovo nodo allocato in coda o inserimento del dato in ultimo->info o lettura del prossimo dato (quello da inserire alla prossima iterazione, o quello che fara terminare il ciclo di inserimenti).
4 5.7. Inserimento in coda 2 (LISTE7.C) 25 Eseguire l esercizio precedente, ma definendoo ed utilizzando una funzione apposita per eseguire gli inserimenti in coda, il cui prototipo sia il seguente: int inscodalista(tipolista * plis, TipoElemLista elem); questa funzione inserisce elem in coda alla lista; plis e' l' indirizzo della variabile puntatore che punta all' inizio della lista. (Quindi si usa questa funzione per eseguire un inserimento in lista). Ed ecco come viene usata: leggielemlista(&el); /* prima lettura */ while (!ugualielem(el, '\n')) { /* inserimento in coda del dato letto precedentemente */ ins=inscodalista(&list, el); if (ins==0) { /* se c sono stati problemi usciamo dal ciclo */ printf("\nproblemi in inserimento\n"); break; leggielemlista(&el); /* lettura elemento successivo */ 5.8. Inserimento in coda 3: i file (LISTE8.C) Scrivere un programma che - costruisca una lista con i dati (interi) letti da un file di testo - stampi la lista il nome del file di testo deve essere ricevuto da input ecco i prototipi delle funzioni usate nel programma LISTE8.C void stampalista(tipolista lis); void stampaelemlista(tipoelemlista v); int inscodalista(tipolista * plis, TipoElemLista elem); /* aggiunta per leggere da file gli elementi della lista */ void leggielemlistadafile(file * fin, TipoElemLista *pelem); /* aggiunta per costrire la lista: la funzione riceve il nome di un file di testo e produce una lista con i dati del file, restituendo il puntatore all'inizio della lista */ TipoLista costruiscilistadafile (char nmf[31]); Suggerimento 2: ed ecco la funzione main() del programma LISTE8.C int main() { TipoLista list;
5 TipoElemLista el; char nomefile[31]; 26 printf(" - nome del file: "); scanf("%s", nomefile); list = costruiscilistadafile(nomefile); printf(" - ecco la lista:\n"); stampalista(list); printf("\nfine\n"); return 0; 5.9. eliminazion da lista (LISTE9.C) Scrivere un programma che - costruisca una lista con i dati (interi) letti da un file di testo - stampi la lista - per due volte chieda un intero da input e lo elimini dalla lista (se lo trova) - stampi di nuovo la lista - scarichi i dati in lista nello stesso file di testo il nome del file di testo deve essere ricevuto da input. Ovviamente si opera in modo da estendere il programma precedente, aggiungendo ed usando funzioni opportune. Ecco le due funzioni principali aggiunte nel file LISTE9.C /* aggiunta per eliminare un elemento da una lista */ void eliminadalista(tipolista * plis, TipoElemLista elem); /* aggiunta per scaricare i dati della lista lis nel file di nome nmf */ void listainfile (TipoLista lis, char nmf[31]); inserimento ordinato in lista (LISTE10.C) Scrivere un programma in cui venga costruita e poi stampata una lista di interi, i cui elementi siano ordinati in senso crescente. I dati da inserire in lista vengono forniti da input come una sequenza (disordinata) di interi, terminata da 0 La soluzione da adottare consiste nel costruire la lista mediante una serie di inserimenti ordinati. Ogni inserimento viene effettuata dia una chiamata all opportuna funzione insordlista(). L algoritmo di inserimento ordinato che si consiglia e quello che fa uso del record generatore e di due puntatori di appoggio.
6 Ecco i prototipi delle funzioni necessarie (oltre a quelle immaginabili, gia sviluppate in esercizi precedenti). int precedeelem(tipoelemlista el1, TipoElemLista el2); /* aggiunta per determinare se un certo elemento va inserito prima o dopo di un altro: restituisce 1 se el1 precede el2 in ordinamento crescente (0 altrimenti) */ int insordlista(tipolista * plis, TipoElemLista elem); /* aggiunta per eseguire l'inserimento: inserisece elem ordinatamente in lista; plis e' l'indirizzo della variabile puntatore che punta all'inizio della lista */ 27
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
DettagliStrutture 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
DettagliEsercitazione 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
DettagliProf. 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
Dettaglidott. 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;
DettagliADT 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
DettagliImplementazione 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
DettagliEsercizi 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
DettagliRappresentazione di liste mediante puntatori in linguaggio C
Rappresentazione di liste mediante puntatori in linguaggio C Specifica del tipo degli elementi typedef... TipoElemLista; struct StructLista TipoElemLista key; struct StructLista *next; ; typedef struct
DettagliProgrammazione 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
DettagliEsercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
DettagliLinguaggio C. Esercizio 1
Linguaggio C Esercizi su puntatori e liste Walter Didimo (e-mail:didimo@dia.uniroma3.it) supplemento al Corso di Calcolatori Elettronici (Riccardo Torlone) 1 Esercizio 1 Siano p e q due puntatori a variabili
Dettagliliste ogni nodo ha un successore, tranne l ultimo della lista che ne ha zero; alberi binari ogni nodo ha zero, uno oppure due figli
Alberi generali Gli alberi visti fino a questo momento erano insiemi di nodi collegati fra di loro, in cui ogni nodo poteva avere al massimo due figli. Negli alberi generali, ogni nodo può avere un numero
DettagliLezione 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
DettagliLa programmazione nel linguaggio C
Cancellazione : versione ricorsiva Sfruttiamo la visione ricorsiva della struttura dati per realizzare la cancellazione in modo ricorsivo 1. la cancellazione della vuota non richiede alcuna azione 2. la
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da
DettagliEsercitazioni di Tecniche di Programmazione. 7. Settima esercitazione autoguidata: liste di punti e liste di voli
Esercitazioni di Tecniche di Programmazione 7. Settima esercitazione autoguidata: liste di punti e liste di voli 7.1. Liste di punti (LSTPUNTI.C) Scrivere un programma che, usando un opportuno insieme
DettagliPROVA 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
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Alberi, ABR StudentiDIA
DettagliLa Struttura Dati Pila
La Struttura Dati Pila La pila o stack è una particolare struttura dati in cui l'inserimento e la cancellazione sono consentite solo in una specifica posizione, chiamata cima (top) dello stack. La gestione
DettagliStrutture 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));
DettagliListe 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
DettagliArgomenti 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
DettagliInserimento 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
Dettagli3. Terza esercitazione autoguidata: progetto gestione voli
9 3. Terza esercitazione autoguidata: progetto gestione voli Qui ci occupiamo di scrivere un programma abbastanza lungo, dedicato alla gestione di una tabella di dati. Una tabella e una struttura dati
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
DettagliFondamenti di Informatica II
Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura
DettagliPROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008
PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (5 punti) Descrivere
DettagliEsercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
DettagliRappresentazione collegata mediante puntatori di una lista
Rappresentazione collegata mediante puntatori di una lista 1 Rappresentazione collegata di una lista Gli elementi di una lista possono essere rappresentati mediante delle struct contenenti, oltre al dato
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliInserimento di un elemento in coda. quale va collegato quello nuovo. ultimo. *lista 8 3. aux. ultimo. *lista 8 3. aux
Inserimento di un elemento in coda Se la è vuota coincide con l inserimento in testa = è necessario il passaggio per indirizzo! Se la non è vuota, bisogna scandirla fino in fondo = dobbiamo usare un puntatore
DettagliFUNZIONI che operano su LISTE
U N D I C E S I M A ESERCITAZIONE 2007/2008 L. MANDELLI FUNZIONI che operano su LISTE Sfruttando i tipi pelemento (puntatore ad un tipo elemento) e/o ELEMENTO codificare le seguenti funzioni che operano
DettagliIl 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
DettagliUn esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
DettagliParte 4. Liste. P. Picasso Guernica, AA. 2015/16
Parte 4 Liste - AA. 2015/16 P. Picasso Guernica, 1937 4.1 4.2 Strutture dati complesse Per la risoluzione di alcuni problemi vi è la necessità di utilizzare strutture dati dinamiche e complesse Si consideri
DettagliAlberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
DettagliEsercizio 1 Liste: calcolo perimetro di un poligono
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di
DettagliArray. 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
DettagliEsercitazione 12. Esercizi di Ricapitolazione
Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,
DettagliARRAY 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
DettagliFondamenti di Informatica AA 2016/2017
Fondamenti di Informatica AA 2016/2017 Eng. Ph.D. Michela Paolucci DISIT Lab http://www.disit.dinfo.unifi.it Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze,
DettagliStruttura 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
DettagliEsercizi 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
DettagliPuntatori a Funzioni e Callback. Massimo Benerecetti
Puntatori a Funzioni e Callback Massimo Benerecetti Puntatori a Funzione Un «puntatore a funzione» è un puntatore che punta all indirizzo di memoria in cui è contenuto il codice eseguibile di una funzione.
DettagliLinguaggio 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
DettagliLinguaggi di programmazione + laboratorio a.a. 2012/2013
Linguaggi di programmazione + laboratorio a.a. 2012/2013 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a
Dettagliin 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,...
DettagliLE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
DettagliLaboratorio 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
DettagliEsercizio 1: calcolo insieme intersezione
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 19 ottobre 2005 Esercizi su array e matrici Esercizio 1: calcolo insieme intersezione Problema: *******************************************************************
DettagliScope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano
Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di
DettagliGestione 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
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliLaboratorio 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
DettagliERRATA 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
DettagliInformatica 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
DettagliSommario. 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
DettagliCaratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
DettagliEsercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
DettagliListe 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
DettagliStruct, 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
DettagliEsercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
DettagliCALCOLATRICI, APPUNTI, LIBRI E QUADERNI,
Non è consentito l'utilizzo di CALCOLATRICI, APPUNTI, LIBRI E QUADERNI, ad eccezione dei manuali disponibili sulla cattedra. Rispondere alle domande scrivendo le risposte negli spazi disponibili. NON CONSEGNARE
DettagliLa 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
DettagliLinguaggio C - Strutture
Strutture: Le strutture (talvolta chiamate aggregati), così come gli array, sono tipi di dati derivati. Indicano collezioni di variabili collegate sotto un unico nome. Le strutture possono contenere variabili
DettagliEsercizio 1: Puntatori impiegati che sono manager
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 10 Esercitazione: 25 gennaio 2006 Esercizi di riepilogo Problema: Esercizio 1: Puntatori impiegati che sono manager Si
DettagliRealizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.
Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VII.2017
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2016 2017 17.VII.2017 VINCENZO MARRA Indice Esercizio 1 2 Strutture di dati, funzioni diam, dist e centr.
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliGESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliEsercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
DettagliEsercizi. 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
DettagliLezione 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
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliLABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice
LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 18.III.2015 VINCENZO MARRA Indice Parte 1. L algoritmo euclideo 3 Esercizio 1 3 L algoritmo euclideo
DettagliAssociazione Variabile-Indirizzo
I puntatori Associazione Variabile-Indirizzo Tutte le volte che in un programma si dichiarano delle variabili, l'esecutore associa alla variabile un indirizzo. Es. Dato il programma #include
DettagliLa Struttura Dati Lista
La Struttura Dati Lista Introduzione Nella definizione di un programma mirato alla risoluzione di un determinato problema, la scelta delle strutture dati è di fondamentale importanza per un efficiente
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliOperazioni su file di caratteri
Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si
DettagliEsercizio 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
DettagliFile e puntatori a file
File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di
DettagliLezione 9 Alberi binari di ricerca
Lezione 9 Alberi binari di ricerca Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Lista monodirezionale Scrivere
DettagliL'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
DettagliAlcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli
Alcuni esercizi 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Stampa di voti Esempio 1 (switch) Realizzare un programma che legge da input un voto (carattere tra A ed E ) e ne
DettagliLaboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliProgrammazione di base
Fondamenti di Informatica Testo A Secondo Appello 016-17 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliLinguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
Dettagligiapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
DettagliEsercitazione: 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
DettagliTipi astratti pila e coda
Tipi astratti pila e coda Una pila è un tipo astratto che consente di rappresentare un insieme di elementi in cui ogni eliminazione ha per oggetto l elemento che è stato inserito per ultimo. Questa disciplina
DettagliLinguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
DettagliInput/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari
Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del
DettagliScrittura formattata - printf
Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri
DettagliI puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
DettagliGestione 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