Laurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione
|
|
- Fabiana Gigli
- 4 anni fa
- Visualizzazioni
Transcript
1 Laurea In Ingegneria dell Informazione Esercitazioni Guidate di Tecniche della Programmazione Note introduttive: 1) Le soluzioni agli esercizi e le versioni di programmi menzionate nel testo delle esercitazioni sono raggiungibili tramite la pagina web del corso. Nel titolo di ogni sezione di questo documento è specificato tra parentesi il nome del (o dei) file in cui è proposta una soluzione (se disponibile...). 2) I programmi che scriveremo dovranno essere in accordo con la definizione standard ANSI C del linguaggio C; perciò, prima di cominciare vogliamo assicurarci che l ambiente di programmazione che usiamo usi anche lui la medesima definizione. 3) Così, se si usa il Dev C++, ad esempio nella versione (lingua inglese) bisogna andare nel menu Tools, selezionare Compiler Options, scegliere Settings e poi C Compiler (selezionare almeno Support all ANSI Standard C Programs ). 4) In questo blocco abbiamo due EG: la 6 sulle strutture, e la 7 relativa all esercizio Gestione Voli 6. Esercitazione Guidata Uso di struct (punto.c, punto2.c). Scrivere un programma in cui - sia definito il tipo struct punto adatto a rappresentare i punti colorati nel piano cartesiano (due dimensioni); - vengano lette coordinate e colori di due punti e venga costruito il punto intermedio, stampandone i dati (il punto intermedia ha il medesimo colore dei due punti letti, se questi hanno il medesimo colore; altrimenti ha colore NERO ). Scrivere poi il medesimo programma, in cui il tipo dei punti colorati sia TipoPunto, definito mediante typedef ed usato nelle dichiarazioni dei punti usati nel programma Uso di struct (distanze.c). Scrivere un programma in cui viene letta una sequenza di punti colorati (definiti come negli esercizi precedenti) e, per ogni punto letto, dal secondo in poi, viene stampata la distanza colorata tra esso e il precedente. Ci sono dei colori prestabiliti come ammissibili: bianco, rosso, giallo, celeste, blu, NERO Quando viene letto il colore di un punto, se questo e al di fuori dei colori prestabiliti, sara considerato NERO. 1
2 La distanza colorata tra due punti e definita come la coppia <dl, dc>, dove - dl=distanza lineare tra i due punti e - dc=distanza tra i colori dei due punti (stabilita in base alla definizione dei colori prestabiliti data in precedenza: ad es. la distanza tra bianco e rosso e 1, quella tra bianco e giallo e 2, quella tra giallo e nero e 3). Qualche suggerimento per la soluzione segue: non li leggete tutti d un fiato... Suggerimento 0 Quando il programma compila, probabilmente siamo solo a meta dell opera. Provare il programma anche usando le funzionalita di debugging: debugging? What s debugging?? - la linea rossa che si vede in figura e una linea su cui e stato impostato un breakpoint (basta cliccare accanto alla linea per impostare il breakpoint o per rimuoverlo). - Un breakpoint nel punto indicato e utile: cosi possiamo scegliere l opzione di compilazione con debug (F8) e usare F7 (Next Step) per far avanzare l esecuzione del programma passo passo (un istruzione alla volta). - Durante l esecuzione passo passo e utile tener d occhio il contenuto di alcune variabili significative: in figura si vede che e stata impostata la visualizzazione del contenuto delle variabili p1, p2, dc: e stato usato il comando Add Watch. (Nell aggiungere una nuova watch, puo essere necessario eseguire il passo successivo F7 prima di vederla effettivamente.). - La figura mostra un momento dell esecuzione in cui tutte le istruzione di lettura del punto p1 sono state eseguite (la watch su p1 mostra quei valori: 1, 5, rosso). - Se una watch corrisponde a variabili non nello scope dell istruzione in esecuzione, cio viene indicato (ad esempio nel punto del programma in esecuzione non potremmo vedere il contenuto della variabile i definita nella funzione coloreprestabilito(). - Quando e in esecuzione un istruzione di lettura, bisogna andare nella finestra di esecuzione e inserire il dato da leggere 2
3 - Se non si vuole piu procedere passo passo, Shift F7 (Continue) procura l avanzamento dell esecuzione fino alla prossima occorrenza di un breakpoint. Suggerimento 1di5 la struttura del TipoPunto e quella gia vista; inoltre potrebbe convenire dare una definizione di un tipo apposito per la DistanzaColorata. (una struct con un campo double per la distanza lineare e uno int per la distanza tra i colori. Inoltre e bene che sia data una chiara definizione dei colori prestabiliti. Questa potrebbe anche non essere la definizione di un tipo vero e proprio. Una possibilita e quella di usare un array top level di stringhe inizializzato opportunamente COLORI[]={bianco, rosso, giallo, celeste, blu, nero}. 3
4 Suggerimento 2di5 All array COLORI potrebbe essere affiancata una funzione coloreprestabilito che, ricevendo un colore, col, dica se col e o no uno di colori ammessi. Nella soluzione proposta questa e una funzione intera che restituisce 1 se col non e ammissibile, oppure l indice di col nell array COLORI. Suggerimento 3di5 La funzione coloreprestabilito (sempre nella soluzione proposta) viene usata anche per calcolare lo seconda parte della distanza colorata (infatti se il colore di p1 e k1 e il colore di p2 e k2, la distanza tra i colori sara k1-k2 o k2-k1...) Suggerimento 4di5 Schema del programma - lettura primo punto (p1) - ciclo del tipo while (continua!=0) {... } con richiesta finale all utente di inserire 1 se vuole continuare o 0 se vuole terminare (scelta che viene letta in continua). Suggerimento 5di5 4
5 - durante ogni iterazione del ciclo o si legge il punto p2 (si leggono le sue coordinate e colore) o si calcola la distanza colorata tra p1 e p2 (e la si stampa) o l utente indica la sua scelta (se continuare o meno) e di conseguenza viene assegnata la variabile continua. o Infine viene copiato p2 in p1, così in p1 ci sarà l ultimo punto letto da input, e se ne potrà calcolare la distanza da quello successivamente inserito 6.3. Funzioni che ricevono e/o restituiscono struct (punto3.c). Riscrivere il programma del punto 1.1, definendo ed usando le seguenti funzioni: /*funzione che riceve un punto e lo stampa */ void stampapunto(struct Punto p) /* funzione che riceve due punti e ne restituisce il punto medio */ struct Punto puntomedio(struct Punto pr, struct Punto sec) 6.4. Funzioni che ricevono puntatori a struct (punto4.c). Scrivere un programma che soddisfi i seguenti requisiti: - il programma legge i dati relativi a due punti colorati (definiti come in precedenza) - il programma calcola e stampa i dati relativi al punto medio tra i due letti da input; - poi il programma chiede in input un colore e assegna tale colore a tutti e tre i punti, stampandone successivamente i dati in output. Il programma deve far uso delle funzioni definite nell esercizio precedente e della funzione void cambiacolorea(tipopunto *p, char col[]) che, ricevendo un punto (o meglio, il suo indirizzo), e un colore (col), modifica il punto assegnandogli col come colore. Suggerimento: conviene prendere come punto di partenza il programma fatto per l esercizio precedente, aggiungendo la nuova funzione e modificando opportunamente la main(). 5
6 6.5. Funzioni che ricevono puntatori a struct (punto5.c). Ripetere l esercizio del 2.3, definendo e utilizzando, per la lettura di ciascun punto, una funzione leggipunto(...) Suggerimento 1di2: la funzione deve ricevere un punto e riempirlo con dati letti da input. Suggerimento 2di2: quindi la funzione deve ricevere l indirizzo del punto da riempire Funzioni che restituiscono puntatori a struct (punto6.c). Rifacendosi a quanto fatto in precedenza, scrivere una funzione creapuntomedio(...) che, ricevendo due punti, restituisce una struct appositamente allocata dinamicamente, contenente la rappresentazione del punto medio tra i due parametri. Suggerimento 1di2: Si tratta di rifare l esercizio precedente, ma sostituendo la funzione puntomedio con quella qui richiesta (che restituisce un puntatore a struct Punto e non una struct Punto. Suggerimento 2di2: ecco uno stralcio del programma PUNTO6.C in cui si vede come viene usata la funzione creapuntomedio: int main(){ TipoPunto p1, p2, *pm; /* puntatore per il punto medio */ printf("primo punto:"); leggipunto(&p1); printf("secondo punto:"); leggipunto(&p2); pm = creapmedio(p1, p2); /* la chiamata a pmedio restituisce il puntatore ad una struct che e' stata allocata appositamente, e che rappresenta il punto medio tra p1 e p2 */ printf(" - adesso i tre punti sono:\n - p1 = "); 6
7 6.7. Quadrilateri (quadri.c). L oggetto di questo esercizio e un programma capace di gestire quadrilateri dati in input. Un quadrilatero viene specificato come l insieme dei suoi quattro vertici, che sono punti colorati sul piano (cioe variabili del tipo TipoPunto definito precedentemente). Supponiamo che i punti dati in input siano tutti distinti e diano luogo ad una figura in cui i lati sono a 90 gradi. Cio assunto, il programma - costruisce un quadrilatero allocando dinamicamente un array di quattro punti e leggendo i dati relativi ai quattro vertici; - verifica se il quadrilatero e un quadrato - verifica se il quadrilatero e isotetico, cioe i suoi lati sono paralleli agli assi cartesiani; - stampa i dati dei quattro vertici e stampa un messaggio in cui sia specificato se il quadrilatero e o no un quadrato ed e o no isotetico. Se quad e l identificatore usato per il quadrilatero nel programma, si assume anche che i punti siano distribuiti come nel disegno qui sotto: quad[0] quad[1] quad[3] quad[2] Usare nel programma le seguenti funzioni: - void stampapunto(tipopunto ) (per stampare i dati di un punto passato per parametro) - void leggipunto( TipoPunto *) (per leggere un punto) - void leggiquadrilatero(tipopunto q[4]) (per leggere l intero quadrilatero, usando leggipunto); - void stampaquadrilatero(tipopunto q[4]) (per stampare i dati del quadrilatero, ad esempio come sequenza dei punti che ne sono vertici); - double lunghezza(tipopunto primo, TipoPunto secondo) (per calcolare la distanza tra due punti) Suggerimento 1di2: 7
8 per verificare che il quadrilatero quad sia un quadrato basta verificare che siano uguali le misure dei suoi lati (cioe' delle distanze tra vertici consecutivi: quad[0]--quad[1], quad[1]-- quad[2], quad[2]--quad[3], quad[3]--quad[0],). Per calcolare la lunghezza del lato quad[k]quad[h] si usa la funzione lunghezza(...). Suggerimento 2di2: per verificare che i lati sono paralleli agli assi, bisogna verificare che i lati - quad[0]--quad[1] e quad[2]--quad[3] sian paralleli all'asse delle ascisse - quad[1]--quad[2] e quad[3]--quad[0] sian paralleli all'asse delle ordinate. 8
9 7. Esercitazione Guidata 7 Qui ci occupiamo di scrivere un programma abbastanza lungo, dedicato alla gestione di una tabella di dati. Una tabella e una struttura dati che rappresenta all interno di un programma, un archivio di dati del mondo reale Cos e una tabella (in breve...) Di solito la tabella viene definita per permettere la gestione automatizzata di una collezione di dati strutturati (dati composti da varie informazioni di tipo disomogeneo e quindi normalmente rappresentati mediante struct). Un esempio di tabella e l elenco telefonico (una collezione di elementi; ciascu elemento e l insieme di dati relativi ad una persona, come il nome, l indirizzo, il numero di telefono, titoli professionali etc...). Un altro esempio e l elenco degli iscritti ad una associazione (anche qui ogli elemento in tabella e una collezione di dati relativi ad una persona, come il nome e indirizzo, ma anche l anzianita d iscrizione, la quota associativa pagata etc...). Le funzioni generiche di gestione di una tabella sono - l aggiunta di un elemento nella tabella, - l eliminazione di un certo elemento, - la modifica dei dati memorizzati in un un certo elemento - e la ricerca di un certo elemento tra quelli memorizzati nella tabella. Di solito uno dei dati memorizzati in ciascun elemento lo caratterizza univocamente e permette di distinguere quell elemento da tutti gli altri: ad esempio il codice fiscale permette di specificare una certa persona; la matricola permette di indicare univocamente uno degli associati al club, etc... Questi dati caratteristici vengono denominati chiavi di ricerca, o piu brevemente, chiavi, e vengono usati quando si stanno effettuando operazioni di ricerca e selezione di un certo elemento nella tabella Gestione voli (primo passo VOLI1.C) Il programma deve permettere la gestione di un archivio contenente informazioni sui voli aerei di un certo giorno. Un volo e' caratterizzato da o codice (5 caratteri alfanumerici) o destinazione (stringa di caratteri) o ora di partenza (ore, minuti: due interi) o numero di posti attualmente liberi (un intero) La tabella dei voli di quel giorno e una collezione di voli (informazioni su voli) su cui e possibile eseguire le seguenti operazioni di gestione: - stampare un volo della tabella, caratterizzato da un certo codice - stampare i voli della tabella - aggiungere un volo alla tabella - eliminare un volo avente caratterizzato da un certo codice - modificare l'ora di partenza di un volo caratterizzato da un certo codice 9
10 - prenotare k posti in un volo caratterizzato da un certo codice (cioe' modificarne il numero di posti liberi, diminuendolo, se possibile, di k) - memorizzare i dati di una tabella di voli in un file di voli - caricare nella tabella dati da un file di voli Si vede che in questa tabella il campo codice e' la chiave di ricerca per i voli memorizzati. Scrivere un abbozzo del programma che dovra permettere tutte le operazioni sopra indicate. In questo abbozzo di programma ci limitiamo a fornire - la definizione della struttura dati che useremo per rappresentare la tabella dei voli; - la dichiarazione e implementazione (programmazione) delle funzioni necessarie a realizzare le prime tre operazioni elencate sopra; - una funzione main in cui venga stampato un menu di scelte (stampa di un volo, stampa dei voli in tabella, aggiunta di un volo in tabella, termine programma) e vengano conseguentemente usate le funzioni definite. Il programma va scritto e testato. Una proposta di soluzione e in VOLI1.C. Suggerimento 1di3: (sulle strutture dati, tratto da VOLI1.C) tabelle di 10 voli, per scrivere e testare il programma. Dopo potremo cambiare questa dimensione #define MAXVOLI 10 il tipo struct per rappresentare un volo contiene un campo orapartenza. L'ora e' ben rappresentabile con un'altra struct struct ora { int ore, minuti; }; segue il volo 10
11 struct volo { char codice[6]; char * destinazione; struct ora orapartenza; int postiliberi; }; per i voli, decidiamo di definire un sinonimo di tipo typedef struct volo TipoVolo; /* la tabella di voli consiste di un array di MAXVOLI voli, ma anche di un intero quantivoli che in ogni momento specifica quanti sono i voli effettivamente presenti in tabella. Faremo in modo che, se in un dato momento ci sono k voli in tabella, essi siano i primi k elementi dell'array e quantivoli sia uguale a k. Ogni scansione della tabella si limitera' agli elementi di indice da 0 a quantivoli-1. Quindi una tabella di voli e' una struttura a due campi. */ typedef struct { TipoVolo arrayvoli[maxvoli]; /* sostegno di memoria */ int quantivoli; /* quanti voli presenti nel sostegno */ } TipoTabella; Suggerimento 2di3: ipotesi su alcune funzioni che useremo (solo intestazioni) void stampatabella(tipotabella t); /* stampa tutti i voli della tabella */ /*!!! */ /* per entrambe le precedenti funzioni sara' comodo usare una funzione come la seguente... */ void stampavolo(tipovolo v); /* stampa il volo v */ 11
12 int aggiungivolo(tipotabella *t); /* aggiunge un nuovo volo nella tabella *t, chiedendo e leggendo opportunamente i dati relativi Restituisce 1 o 0 a seconda della riuscita dell'ahggiunta. Passiamo l indirizzo t della tabella da modificare, in modo che le modifiche vengano fatte direttamente sulla tabella *t (e non su una sua copia). Sia (*t).arrayvoli (nell'elemento di indice dipendente da quantivoli), che (*t).quantivoli saranno modificati. L elemento in cui si inserisce il nuovo volo e (*t).arrayvoli[kkk] dove k deve essere uguale al campo quantivoli della tabella (KKK=(*t).quantiVoli). Poi (*t).quantivoli deve crescere di uno, perche abbiamo aggiunto un volo in tabella. */ Suggerimento 3di3: ecco la main() int main() { TipoTabella tabvoli; int riuscita, scelta; /* scelta nel menu' */ char buffer[40]; /* per leggere stringhe */ tabvoli.quantivoli=0; do { /* STAMPA MENU */ /* inizializzazione del numero di voli presenti in tabella (cosa ci sia effettivamente in tabvoli.arrayvoli e' di poco interesse. Tanto le scansioni che faremo saranno sempre limitate da quantivoli*/ printf(" - scegli -\n"); printf(" - stampa dei voli (1) -\n"); printf(" - stampa di un certo volo (2) -\n"); printf(" - aggiunta di un volo (3) -\n"); printf(" - fine (0) -\n"); scanf("%d", &scelta); /* SCELTA ESPRESSA DALL UTENTE */ 12
13 switch (scelta) { /* ELABORAZIONE IN BASE ALLA SCELTA */ case 1: printf("- %d voli in tabella:\n", tabvoli.quantivoli); stampatabella(tabvoli); break; case 2: /* funzione non ancora implementata; (rimanadata al prossimo esercizio) printf(" - codice volo? "); scanf("%s", buffer); stampaquelvolo(tabvoli, buffer); */ break; case 3: riuscita=aggiungivolo(&tabvoli); if(!riuscita) printf(" - aggiunta non effettuata -\n"); else printf(" - fatto -\n"); break; case 0: printf(" - USCITA DAL PROGRAMMA\n"); break; default: printf(" - opzione sballata\n"); } /* fine switch */ } while (scelta!=0); /* fine do_while*/ } printf("\nfine\n"); return 0; 7.3. Gestione voli (secondo passo VOLI2.C) Incrementare il programma costruito al passo precedente, con la funzionalita di stampa di un volo, dato il codice. (E poi testarlo...) Suggerimento 1di2: La funzione da implementare e la seguente: void stampaquelvolo(tipotabella t, char cod[]); 13
14 Suggerimento 2di2: Pero per stampare il volo di codice cod, bisogna cercarlo nella tabella. Questo problema di cercare un volo di codice dato ricorre, verosimilmente spesso nel resto del programma. Ecco come risolvere il problema una volta per tutte, con una funzione: int indicevolo(tipotabella t, char cod[]); /* cerca il volo di codice cod in t; cioe cerca nell array t.arrayvoli, limitando la scansione agli elementi che vanno da indice 0 a indice t.quantivoli-1 restituisce l'indice del volo oppure, se non lo ha trovato, -1 */ 7.4. Gestione voli (terzo passo VOLI3.C) Incrementare il programma costruito al passo precedente, con la funzionalita di eliminazione di un volo di codice dato. (E poi testarlo...). Suggerimento 1di2: Bisogna realizzare la funzione di eliminazione ed estendere la main() in modo che permetta di scegliere anche l opzione di eliminazione. Quando viene scelta questa opzione, il programma chiede il codice del volo da eliminare e poi chiama la funzione di eliminazione. La funzione da implementare e la seguente: int eliminavolo(tipotabella *t, char cod[]); /* elimina il volo di codice cod dalla tabella *t (cambiano arrayvoli e quantivoli) restituisce 0 o 1 a seconda del successo dell'operazione Si cerca l'elemento da eliminare, assegnando ad un indice il valore ritornato dalla funzione di ricerca, ad esempio k=indicevolo(*t, cod); e lo si ricopre copiandoci sopra l'ultimo elemento della tabella; ad esempio t->arrayvoli[k] = t->arrayvoli[ultimo]; (quanto vale l indice ultimo?) 14
15 poi si decrementa quantivoli ad esempio t->quantivoli-=1; */ Suggerimento 2di2: ultimo=t->quantivoli-1; 7.5. Gestione voli (quarto passo VOLI4.C) Incrementare il programma costruito al passo precedente, con le funzionalita di modifica richieste, cioe cambio dell ora di partenza di un volo di codice dato e prenotazione di un ecrto numero k di posti su un volo di codice dato. (E poi testarlo...). Bisogna realizzare due funzioni apposite, cambiaorapartenza(...) e cambiapostiliberi(...); e poi modificare la main() in modo che anche queste nuove operazioni siano accessibili dal menu. Suggerimento: le funzioni da realizzare potrebbero essere le seguenti: int cambiaorapartenza (TipoTabella *t, char cod[], int nuovaora, int nuovimin); /* restituisce 0 o 1 a seconda del successo dell'operazione */ int cambiapostiliberi(tipotabella *t, char cod[], int k); /* diminuisce di k i posti liberi, SE POSSIBILE restituisce 0 o 1 a seconda del successo dell'operazione */ Il parametro tabella qui deve essere l indirizzo della tabella attuale da modificare... 15
16 7.6. Gestione voli (quinto passo VOLI5.C) Incrementare il programma costruito al passo precedente, con le funzionalita di salvataggio su file della tabella e caricamento da file della tabella. (E poi testarlo...). Bisogna realizzare due funzioni apposite, void databellainfile(tipotabella t, char *nmf); /* riceve - una tabella da scaricare in memoria secondaria e - il niome del file in cui memorizzare le informazioni; e scarica i dati della tabella nel file di nome nmf*/ void dafileintabella(char *nmf, TipoTabella *t); /* riceve - l indirizzo di una tabella in cui memorizzare i dati contenuti in un file e - il nome del file da cui trarre i dati per riempire la tabella; e carica nella tabella puntata da t (cioe *t) i voli contenuti nel file di nome nmf */ e poi modificare la main() in modo che anche queste nuove operazioni siano accessibili dal menu Gestione voli (sesto passo VOLI6.C) Qui si richiede di risolvere il problema della gestione dei voli con un approccio piu dinamico, cioe facendo in modo che la memoria occupata dall array di voli arrayvoli (campo della tabella TipoVoli) non occupi un numero fissato MAXVOLI di locazioni di tipo TipoVolo (struct) ma modifichi l occupazione di memoria in ragione delle necessita (cioe del numero di voli effettivamente memorizzati nella tabella). Per realizzare questo scopo si suggerisce di adottare il seguente schema: - il tipo TipoTabella viene modificato, in modo che il campo arrayvolo non isa piu un array statico di MAXVOLI voli, ma il puntatore ad un array di voli dinamicamente allocato: TipoVolo * arrayvoli; - l inizializzazione della tabella non si limita piu all azzeramento del campo.quantivoli, ma deve anche procedere ad una prima allocazione del blocco di voli.arrayvoli. Questa allocazione fa in modo che arrayvoli punti ad una blocco di MAXVOLI voli (dove MAXVOLI e un simbolo di costante definito opportunamente, per il quale si consiglia un valore abbastanza basso, es 5 o 6); - la funzione di caricamento dei dati da file a tabella viene modificata, in modo che venga 16
17 o deallocato il blocco eventualmente puntato da arrayvoli e o allocato (e assegnato ad arrayvoli) un blocco di voli che verra riempito con i dati contenuti nel file; in particolare il primo dato letto dal file dice quanti sono i voli presenti nel file; il blocco viene allocato con un numero di voli di circa il 30% superiore a quelli effettivamente necessari, cosi dopo il caricamento dei dati, ci sara spazio per aggiungere nella tabella nuovi voli, ma senza esagerare con lo spazio occupato; - La funzione di aggiunta di un nuovo volo in tabella viene cambiata in modo che quando l aggiunta non e possibile per mancanza di spazio in arrayvoli, anziche lasciar perdere o si fa in modo che arrayvoli punti ad un blocoo di voli esteso (un po piu grande, ad esempio del 30%) o e poi si aggiunge il volo come si faceva prima Per fare in modo che arrayvoli punti ad un blocco di voli che contiene i voli gia presenti in tabella piu qualche altro spazio per nuovi voli, si possono usare varie soluzioni. La piu immediata consiste nel o salvare la tabella in un file TEMP.TXT o ricaricare subito la tabella, con la funzione di caricamento modificata, discussa in un punto precedente. Si consiglia di procedere facendo una copia del file in cui era stato risolto completamente il punto presedente (la cui proposta di soluzione era in VOLI5.C) e modificare questa copia, seguendo l ordine delle suggerimenti elencati sopra; Durante questa opera ci si potrebbe rendere conto che, aproposito di modifiche alla struttura dati di Tabella dei Voli, non tutto e stato detto fin qui: potrebbe essere necessario aggiungere un altra modifica. La scoperta di questa modifica è bella se viene fatta autonomamente... ma comunque se ne parla nel prossimo suggerimento. Suggerimento: visto che la dimensione del blocco di voli puntato da arrayvoli non e piu fissa (sempre uguale a MAXVOLI) durante l esecuzione del programma, diventa necessario averla memorizzata in una variabile. Questa variabile deve contenere, in qualsiasi momento, il numero di voli effettivamente allocati nel blocco arrayvoli, indipendentemente se occupati o disponibili. Quindi deve essere un valore associato stabilmente alla singola tabella (tab) con cui si sta lavorando. Ad esempio, durante l operazione di aggiunta di un nuovo volo si deve verificare che il numero di voli effettivamente memorizzato (.quantivoli) non sia diventato uguale al numero di strutture allocate nel blocco (altrimenti l aggiunta non si puo fare subito). Ne concludiamo che la variabile contenente il numero di voli allocati nel blocco arrayvoli deve essere un campo della tabella. E sara il terzo campo, che in VOLI6.C abbiamo chiamato.voliallocati. 17
Esercitazioni di Tecniche di Programmazione
Esercitazioni di Tecniche di Programmazione 2. Seconda esercitazione autoguidata due avvertenze: 1) Le soluzioni agli esercizi, le versioni di programmi dati nel testo delle esercitazioni e quant'altro
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
DettagliTecniche della Programmazione lezione 17
Tecniche della Programmazione lezione 17 strutture di dati: astratte e concrete - metodologia di rappresentazione (e programmazione) di dati del mondo reale, mediante STRUTTURE DATI - tipo astratto di
DettagliRappresentazione di dati
Rappresentazione di dati oggetti del mondo reale: - caratteristiche - caratteristiche obiettivo della rappresentazione analisi e progettazione strutture dati teoriche (ADT) - domini ( ) - dominio di interesse
DettagliRappresentazione di dati
Rappresentazione di dati oggetti del mondo reale: - caratteristiche - caratteristiche obiettivo della rappresentazione analisi e progettazione strutture dati teoriche (ADT) - domini ( ) - dominio di interesse
DettagliLaurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione
Laurea In Ingegneria dell Informazione Esercitazioni Guidate di Tecniche della Programmazione Note introduttive: 1) Le soluzioni agli esercizi e le versioni di programmi menzionate nel testo delle esercitazioni
Dettagli- tipo - costruttori di tipo - typedef: alias per i nuovi tipi
Tecniche della Programmazione, lez.16 variazioni sul tema dei puntatori... typedef, struct e definizione di tipi strutturati... - tipo - costruttori di tipo - typedef: alias per i nuovi tipi - struct (Record),
DettagliEsercizio (o esempio?)
Esercizio (o esempio?) programma che legge un intero n e n double; li memorizza in un array dinamico esatto calcola e stampa minimo, massimo e media dei double #include 1) Lettura e memorizzazione
DettagliEsercitazioni di Tecniche di Programmazione. 4. Quarta esercitazione autoguidata: liste concatenate rappresentate mediante struct e puntatori
Esercitazioni di Tecniche di Programmazione 4. Quarta esercitazione autoguidata: liste concatenate rappresentate mediante struct e puntatori due avvertenze: 1) Le soluzioni agli esercizi, le versioni di
Dettagli5. 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
DettagliTecniche della Programmazione, lez.28
Tecniche della Programmazione, lez.28 Problema dell'ordinamento di una sequenza di elementi lavorare sulla sequenza ordinata puo' essere utile in parecchi casi - ricerca di un elemento - unicita' di un
DettagliStrutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.
Consideriamo l esercizio assegnato la scorsa lezione per rappresentare il libretto di uno studente. Per memorizzare i dati si sono utilizzati tre array: char* nomiesami[max ESAMI] Array dei nomi degli
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO II.2017
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2015 2016 22.II.2017 VINCENZO MARRA Indice Esercizio 1 1 Strutture dati e prime funzioni. 1 Punti: 8.
DettagliEsercitazioni di Tecniche di Programmazione. 6. Sesta esercitazione autoguidata: file binari e ricorsione
Esercitazioni di Tecniche di Programmazione Due avvertenze: 1) Le soluzioni agli esercizi, le versioni di programmi dati nel testo delle esercitazioni e quant'altro sono raggiungibili tramite la pagina
DettagliLaurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione
Laurea In Ingegneria dell Informazione Esercitazioni Guidate di Tecniche della Programmazione Note introduttive: 1) Le soluzioni agli esercizi e le versioni di programmi menzionate nel testo delle esercitazioni
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
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
DettagliInformatica per Statistica Riassunto della lezione del 21/10/2011
Informatica per Statistica Riassunto della lezione del 1/10/011 Igor Melatti Costrutti del linguaggio C: ripasso Si consideri il programma C alla Figura 1 ci sono due dichiarazioni di funzioni, insertion
DettagliEsercizio 1: media di numeri reali (uso funzioni e struct)
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le
DettagliC: 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
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
DettagliLe classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
DettagliI Dati Strutturati ed il Linguaggio C
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Dati Strutturati Esigenze Vettori
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
DettagliEsercizi. Filtraggio
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)
DettagliInformatica B Allievi Meccanici con cognome da Cl a L II prova intermedia del 13/02/01 Prof. Elisabetta Di Nitto
Informatica B Allievi Meccanici con cognome da Cl a L II prova intermedia del 13/02/01 Prof. Elisabetta Di Nitto Tema d esame con soluzioni NOTA: Per la soluzione delle parti teoriche si faccia riferimento
DettagliEsercitazioni di FONDAMENTI DI INFORMATICA MODULO B
Università di Ferrara Dipartimento di Ingegneria Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Tutor Arnaud Nguembang Fadja: ngmrnd@unife.it Damiano Azzolini: damiano.azzolini@student.unife.it Esercizio
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliLo scopo. Il primo esperimento. Soluzione informale. Le variabili
Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4
DettagliStrutture dati dinamiche in C. Emilio Di Giacomo
Strutture dati dinamiche in C Emilio Di Giacomo Strutture dati Una struttura dati è un contenitore in cui i dati sono organizzati in maniera che possano essere recuperati e manipolati efficientemente Un
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.VI.2015 VINCENZO MARRA Indice Esercizio 1 1 Definizione dei tipi P e T, e calcolo dell area.
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi C e diagrammi a blocchi. Preparazione prima prova intermedia
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C e diagrammi a blocchi Preparazione prima prova intermedia Indice 1 Array... 3 1.1 Filtraggio...3 1.2 Trasformazione...3 2 Struct e array... 5 2.1
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliLab 13 Strutture e programmi su più file "
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 13 Strutture e programmi su più file " Lab13 1 n Sia data la struttura Esercizio 1" struct time { int hour, minute,
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
DettagliLe strutture. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA
UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I" Prof. Franco FRATTOLILLO Dipartimento di Ingegneria Università degli Studi del Sannio Le strutture
DettagliLezione 6: Array e puntatori
Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci
DettagliLaboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)
Laboratorio Due 1) Switch 2) Costrutti Iterazione (For, While, do while) GLI ARGOMENTI DI OGGI Istruzione switch I costrutti di iterazione (For, while, do while) Le funzioni (e ricorsione) Terza Esercitazione
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using
Dettagli9 - 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
DettagliLe Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia
Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il
DettagliCorso di Informatica
Corso di Informatica Modulo T -Struttura vettore 0/08/0 Prerequisiti Programmazione elementare Passaggio parametri per indirizzo 0/08/0 Introduzione I dati di tipo semplice (Intero, Reale, Carattere, Booleano)
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliLab 09 Strutture e programmi su più file
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 09 Strutture e programmi su più file Lab13 1 Alcune Informazioni Utili Funzioni per manipolare stringhe (in string.h)!
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
DettagliTitolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.
Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
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
DettagliLa copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine)
La copia di un file Nell'esercizio di oggi cerchiamo di implementare un programma che permetta di effettuare la copia di un file di testo. L'operazione di copia, oltre a permettere di creare un nuovo file
DettagliDebug di un programma
Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal
DettagliIngresso ed Uscita in C. Informatica 1 / 15
Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita
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
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout
DettagliSTRUTTURE DI CONTROLLO DEL C++
STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto
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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati
Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il
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
DettagliVariabili e input/ Alessandra Giordani Lunedì 18 marzo
Variabili e input/ output da tastiera Alessandra Giordani agiordani@disi.unitn.it Lunedì 18 marzo 2013 http://disi.unitn.it/~agiordani/ Es. compilazione helloworld.c 2 Variabili e valori Una variabile
DettagliPassare 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
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 27 novembre 2007 In C una stringa è rappresentata da una sequenza di caratteri terminante con il carattere nullo \0 il cui valore è
DettagliDati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
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
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University
DettagliLaboratorio 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
DettagliLezione 23 - ADT LISTA
Lezione 23 - ADT LISTA Rappresentazione concreta del Tipo di Dati Astratto LISTA. - Cenni sulla rappresentazione mediante array (puah!) - Rappresentazione concreta mediante struct e puntatori. - concetto
DettagliTipi di dato, variabili, istruzioni
Tipi di dato, variabili, istruzioni Esercizio 1 Implementare un servizio che estrae due numeri random tra 1 e 100, stampa a video i due numeri ed esegue le seguenti operazioni: se almeno uno dei due numeri
DettagliAssegnazione di una variabile
Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
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
DettagliPassaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet
Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment esterno Per riferimento
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
DettagliAlgoritmi 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
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018
Esercitazioni di Fondamenti di Informatica - Lez. 4 2/0/20 Esercizi sui tipi in C I codici e le soluzioni degli esercizi sono nella cartella parte. Dato il seguente codice, trovare gli errori, correggerli
DettagliPassaggio dei parametri. Passaggio dei parametri
Per valore Il valore viene copiato dal mondo esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sul mondo esterno rimangono circoscritti all environment
DettagliNella propria home directory creare una sottodirectory chiamata es08, in cui metteremo tutti i file C di oggi.
Laboratorio 8 Nella propria home directory creare una sottodirectory chiamata es08, in cui metteremo tutti i file C di oggi. Note Quando dovete usare o ritornare dei valori booleani, usate la seguente
DettagliOgni parte non cancellata a penna sarà considerata parte integrante della soluzione.
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 13 Novembre 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene
DettagliPuntatori e array. Violetta Lonati
Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VII.2019
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2018 2019 8.VII.2019 VINCENZO MARRA Indice Esercizio 1 2 Strutture dati e visualizzazione 2 Punti: 3.
DettagliGli array. impone al programma, in fase di esecuzione, di riservare dello spazio in memoria per 10 variabili di tipo int
Gli array Gli array rappresentano una modalità molto compatta per accedere ad un gruppo di variabili; tale gruppo è identificato dal nome dell'array; i tipi delle variabili appartenenti al gruppo devono
DettagliImplementazione di DFA in C
Implementazione di DFA in C Dispensa di Laboratorio di Linguaggi di Programmazione Sommario Corrado Mencar, Pasquale Lops, Stefano Ferilli Questa dispensa fornisce le linee guida per l implementazione,
DettagliDispensa 18 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratori
ORSO I LURE IN INGEGNERI E SIENZE INFORMTIHE ESEN ORSO I PROGRMMZIONE.. 2016-17 ispensa 18 Laboratori ott. Mirko Ravaioli e-mail: mirko.ravaioli@unibo.it http://www.programmazione.info orso di Programmazione..
DettagliProgetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO. Modulo I: Le tavole dei simboli (TS)
Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO Modulo I: Le tavole dei simboli (TS) Stefano Guerrini A.A. 2002/03 Canale P-Z Versione del 20 giugno 2003 1 Modulo I:
Dettagli7. Settima esercitazione autoguidata: alberi binari
7. Settima esercitazione autoguidata: alberi binari 31 7.1. Costruzione di un albero (ALBERI1.C) Scrivere un programma che - riceve il nome di un file contenente la rappresentazione parentetica di un albero
DettagliIndovina la lettera...
Indovina la lettera... La lezione di oggi consiste nel preparare un programma che chiede all'utente di indovinare quale sia il carattere generato dal programma stesso in modo casuale. Il numero totale
DettagliC: primi elementi. Lezione 4
C: primi elementi Lezione 4 Evoluzione del BCPL (1967) e B (1970), entrambi typeless Sviluppato da Dennis Ritchie nel 1972 ed implementato per il PDP-11 Usato per lo sviluppo del sistema operativo UNIX
DettagliLaboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:
Corso di Ingegneria Biomedica Corso di Ingegneria Elettronica Insegnamento di Informatica I a.a. 2007-08 Laboratorio 1 Durante le esercitazioni verra utilizzato il compilatore a riga di comando DJGPP,,
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 4 Dott. Michele Zanella Ing. Gian Enrico Conti Puntatori I puntatori sono delle variabili che contengono l
DettagliListe concatenate e allocazione dinamica
Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide, e seguita
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliIl 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;
DettagliFondamenti Teorici e Programmazione
Fondamenti Teorici e Programmazione Modulo A Elementi di Programmazione Claudio Gallicchio, Ph.D. Array 2 Dati Strutturati I tipi di dati visti finora sono numeri (interi o razionali) booleani (valori
DettagliQuadrato Magico. Fondamenti di Programmazione
Quadrato Magico Si richiede lo sviluppo di un programma che permette all utente l inserimento di una matrice quadrata di numeri interi positivi e verifica se si tratta di un quadrato magico Una matrice
DettagliLaboratorio di Informatica
Record Laboratorio di Informatica Ingegneria Meccanica Lezione 9, 6 dicembre 2007 versione 18 dicembre 2007 Renato Menicocci Array: collezione di dati omogenei
DettagliEsame Laboratorio di Programmazione
Esame Laboratorio di Programmazione 20 Giugno 2014 NOA Non è possibile usare le classi del package prog.io del libro di testo L obiettivo è scrivere una applicazione che permette di costruire delle torri
Dettagli