PROGRAMMAZIONE AVANZATA JAVA E C. Massimiliano Redolfi. Lezione 7: Code, Stack, Liste PAJC. Ricerca. prof. Massimiliano Redolfi PAJC
|
|
- Adelaide Claudia Bianchi
- 8 anni fa
- Visualizzazioni
Transcript
1 PROGRAMMAZIONE AVANZATA JAVA E C Massimiliano Redolfi Lezione 7: Code, Stack, Liste Ricerca 2
2 Ricerca Se dobbiamo cercare un elemento in un array possiamo trovarci in due situazioni Elementi non ordinati Elementi ordinati Ricerca sequenziale Ricerca binaria 3 Ricerca sequenziale La ricerca sequenziale è molto semplice: si passano tutti gli elementi dell array, dal primo all ultimo, alla ricerca dell elemento chiave: int search_seq(const char *items, int count, char key) for(int i=; i<count; i++) if(items[i] == key) return i; // corrispondenza trovata return -1; // nessuna corrispondenza trovata La ricerca restituisce l indice dell elemento trovato oppure, se nessun elemento corrisponde alla chiave -1. Evidentemente una ricerca richiederà, in media, count/2 confronti. 4
3 Ricerca sequenziale E possibile migliorare l efficienza dell algoritmo scorrendo l array tramite puntatori e non tramite il sistema di indicizzazione: int search_seq(const char *items, int count, char key) char *p = items; for(int i=; i<count; i++) if(*p++ == key) return i; // corrispondenza trovata return -1; // nessuna corrispondenza trovata 5 Ricerca binaria Se i dati non sono ordinati non c è altra possibilità di ricerca, bisogna scorrere i dati uno alla volta e se i dati sono molti è chiaro che i tempi si allungano (con progressione lineare) Ma se i dati sono ordinati c è un alternativa molto efficiente al posto della ricerca sequenziale, la ricerca binaria! 6
4 Ricerca binaria Supponiamo di voler cercare il numero 4 all interno di un array ordinato: L idea è semplice: confrontiamo il valore centrale dell array rispetto alla chiave se è maggiore allora ripeteremo la ricerca nella prima metà altrimenti nella seconda. A questo punto basta ripetere il procedimento ricorsivamente sino a quando non si trova l elemento cercato oppure non ci sono più elementi da cercare. 7 Ricerca binaria Cerco il numero 4: Poiché 5 è maggiore di 4 cerco nella prima metà: Poiché 2 è minore di 4 cerco nella seconda metà: Trovato! Ogni volta divido per 2 lo spazio su cui agisco à Il numero di confronti è al più pari a log 2 n 8
5 int search_bin(char *items, int count, char key) int low=, high=count-1, mid; while(low <= high) mid = (low + high) / 2; if(key < items[mid]) high = mid-1; else if (key > items[mid]) low = mid+1; else return mid; /* Trovato!! */ return -1; /* nessuna corrispondenza */ Ricordarsi che funziona SOLO SU ARRAY ORDINATI! Supposto key = 4 low mid Ricerca binaria high low mid high mid lowhigh low mid high Code, Stack, Liste ed Alberi 1
6 Rappresentazione astratta dei dati Un programma è composto da due parti fondamentali: gli algoritmi i dati Abbiamo visto che i dati possono essere strutturati in vario modo dai tipi semplici (int, char, ) ad insiemi omogenei (gli array) a tipi di dati complessi come le strutture. 11 Rappresentazione astratta dei dati I dati possono essere rappresentati da due punti di vista distinti: - a livello macchina: in cui ci si concentra sulla rappresentazione fisica del dato (numero di bit, MIPS, ) - a livello astratto: in cui ci si concentra sugli aspetti funzionali legati al dato, tralasciando i dettagli fisici (si ha già un esempio di questo nel passaggio da int a float ) Quando si progetta un sistema, un software è buona cosa immaginare i dati come oggetti astratti, senza preoccuparsi particolarmente dei dettagli fisici che subentreranno solo in un secondo momento, quando si dovranno implementare effettivamente le funzionalità del sistema. 12
7 astrazione? strutture float int Rappresentazione astratta dei dati Sino a questo momento ci siamo occupati di dati via via sempre più astratti ma sempre legati ad una caratterizzazione fisica del dato (anche le strutture non sono altro che raggruppamenti di tipi ben associabili ad elementi fisici). Il livello successivo trascende questi aspetti astraendo ulteriormente il concetto di dato e comprendendo in questo le funzionalità stesse che permettono di accedere ad un elemento, ovvero le routine di inserimento, estrazione, ricerca del dato stesso. 13 astrazione motori di elaborazione strutture float int Rappresentazione astratta dei dati In questo senso il livello di astrazione che affrontiamo oggi include la logica stessa di accesso al dato in modo indipendente dal tipo trattato. Analizzeremo alcuni tra i principali di motori per l elaborazione dei dati: 1. le code 2. gli stack 3. le liste concatenate 14
8 Code 15 Code Una coda è un elenco lineare di in cui gli accessi avvengono secondo un ordinamento di tipo FIFO (first-in, firstout). Questo significa che il primo oggetto inserito è anche il primo che verrà estratto. dato inserito E D C B A dato estratto E la tipica situazione della coda in posta od al supermercato chi prima arriva prima viene servito 16
9 Le operazioni ammesse su una coda sono due: c_ins, c_ret per aggiungere e recuperare un oggetto rispettivamente. Notiamo che non ci sono funzioni ad accesso diretto ad una coda. Code Azione c_ins(a) c_ins(b) c_ret(), ottiene A c_ins(c) c_ins(d) c_ret(), ottiene B c_ret(), ottiene C Contenuto della coda A AB B BC BCD CD D 17 Code Si noti che, come per gli altri motori di elaborazione dei dati, poco ci importa di che cosa siano i dati trattati, quello che ci interessa è come i dati vengono gestiti. Utilità delle code: - buffer - elenchi di task - ritardi - Com è implementabile una coda? 18
10 Code insert retrive Possiamo vederla come un array di una certa lunghezza (il numero massimo di elementi gestibili dalla coda) e due puntatori o indici: uno punta alla posizione di inserimento, l altra a quella di estrazione 19 Code insert stato iniziale retrive insert c_ins(a) A retrive insert c_ins(b) A B retrive 2
11 Code insert c_ret() B retrive insert c_ins(c) B retrive C insert c_ins(d) B C D retrive 21 Code insert c_ret() C D retrive insert c_ret() D retrive insert c_ret() retrive 22
12 Code: un semplice esempio #include <stdio.h> #define MAX_EL 255 char coda[max_el]; int ipos =, rpos = ; void c_ins(char ch) if(ipos >= MAX_EL) printf( Coda piena!\n ); return; coda[ipos] = ch; ipos++; Utilizziamo nell esempio come buffer un array di char globale chiamato coda che contiene al più MAX_EL elementi. ipos e rpos sono rispettivamente gli indici in cui inserire ed estrarre i dati 23 Code: un semplice esempio ch c_ret(void) if(rpos >= ipos) printf( Coda vuota!\n ); return \ ; char ch = coda[rpos]; rpos++; return ch; int main(void) c_ins( A ); c_ins( B ); printf( \nret: %c, c_ret()); c_ins( C ); c_ins( D ); printf( \nret: %c, c_ret()); printf( \nret: %c, c_ret()); printf( \nret: %c, c_ret()); 24
13 Che fare quando si raggiunge la fine della coda (del buffer)? Code circolari O ci si ferma oppure si ricomincia dall inizio (memorizzando i dati nelle celle che nel frattempo si sono liberate). Quando scrittura e lettura proseguono in questo modo, dalla fine della coda all inizio si parla di code circolari. Come si modifica il sistema precedente per gestire le code circolari? (si devono modificare solo le funzioni c_ins e c_ret) 25 Code circolari: un semplice esempio void c_ins(char ch) // la coda è piena quando un inserimento cancellerebbe un // elemento non ancora letto, cioè quando ipos è uguale a rpos-1 // oppure ipos è alla fine dell array e rpos all inizio if( (ipos+1 == rpos) (ipos+1 == MAX_EL && rpos == ) ) print( Coda piena!\n ); return; coda[ipos++] = ch; if(ipos >= MAX_EL) ipos = ; // riprendi dall inizio 26
14 char c_ret() // la coda è vuota se i due indici coincidono if(rpos == ipos) printf( Coda vuota\n ); return \ ; Code circolari: un semplice esempio char ch = coda[rpos++]; if(rpos >= MAX_EL) rpos = ; // riprendi dall inizio return ch; 27 Stack 28
15 Stack Uno stack ha un funzionamento opposto a quello della coda in quanto gli gli accessi avvengono secondo un meccanismo di tipo LIFO (last-in, first-out). Questo significa che il primo oggetto inserito è l ultimo che verrà estratto. Si può immaginare una pila (stack) di piatti, i piatti vengono aggiunti e tolti dalla sommità della pila quindi l ultimo piatto appoggiato sulla pila sarà anche il primo ad essere estratto. 29 Le operazioni ammesse su uno stack sono due: c_ins, c_ret per aggiungere e recuperare un oggetto rispettivamente. Notiamo che non ci sono funzioni ad accesso diretto ad uno stack. Azione Contenuto dello stack inserisci Stack estrai c_ins(a) c_ins(b) c_ret(), ottiene B c_ins(c) c_ins(d) c_ret(), ottiene D c_ret(), ottiene C A BA A CA DCA CA A 3
16 Stack Per convenzione le funzioni di inserimento ed estrazione dei dati da uno stack sono dette push e pop rispettivamente. Un esempio classico di gestione della memoria di tipo LIFO è rappresentato dallo stack di sistema in cui vengono memorizzate le variabili locali Com è implementabile uno stack? 31 Stack: un semplice esempio #include <stdio.h> #define MAX_EL 255 int stack[max_el]; int tos = ; void push(int i) if(tos >= MAX_EL) printf( Stack pieno!\n ); return; stack[tos++] = i; Utilizziamo nell esempio come buffer un array di int globale chiamato stack che contiene al più MAX_EL elementi. Ci basta un solo indice che indica la cima dello stack (tos) 32
17 Stack: un semplice esempio int pop(void) if(--tos < ) printf( Stack vuoto!\n ); return tos = ; return stack[tos]; int main(void) push( A ); push( B ); printf( \nret: %c, pop()); push( C ); push( D ); printf( \nret: %c, pop()); printf( \nret: %c, pop()); printf( \nret: %c, pop()); 33 Liste concatenate 34
18 Liste concatenate Code e stack richiedono che la lettura del dato implichi l eliminazione dello stesso dalla memoria della coda, o dello stack. I dati inoltre sono memorizzati in celle di memoria contigue secondo una dimensione prefissata. Le liste danno invece la possibilità all utente di accedere ad un dato in esse contenute senza rimuoverlo automaticamente. Inoltre mantengono le in modo diverso senza la necessità di preallocare un buffer. Una lista concatenata può essere letta in modo più flessibile in quanto ogni record di informazione contiene un collegamento, un puntatore, al record successivo come in una sorta di catena. 35 Esistono due tipi di liste concatenate: Liste concatenate - liste concatenate semplici: ogni oggetto contiene un puntatore all oggetto successivo - liste concatenate doppie: ogni oggetto contiene due puntatori, uno all oggetto successivo l altro a quello precedente 36
19 Liste a concatenamento semplice: Liste a concatenamento semplice puntatore puntatore Notiamo che il dato proprio della lista (informazione) è solo una parte dell oggetto che compone l elemento della lista che deve prevedere anche il puntatore all elemento successivo. In genere l oggetto gestito dalla lista può essere visto come una struttura composta da un elemento il cui tipo dipende dall informazione gestita più un puntatore. 37 Liste a concatenamento semplice Supponiamo di realizzare una lista per una rubrica. L informazione è costituita da una struttura address tipo: struct address char nome[5]; char via[1]; char telefono[15]; ; L oggetto complessivo trattato dalla lista sarà: puntatore struct list_item struct address info; // è l informazione vera e propria struct list_item *next; ; 38
20 Inserire un oggetto alla fine della lista: Prima Liste a concatenamento semplice info info info NUOVO Dopo info info info NUOVO 39 Liste a concatenamento semplice Chiamiamo la funzione list_add, questa dovrà avere in input l elemento da aggiungere più un puntatore all ultimo elemento della lista (in modo da agganciare i due oggetti). struct list_item struct address info; struct list_item *next; ; void list_add(struct list_item *new_item, struct list_item **last_item) if(!*last_item) *last_item = i; // è il primo elemento della lista else (*last_item)->next = i; i->next = NULL; *last_item = i; Si noti che viene passato un puntatore all ultimo elemento della lista in modo da poter modificare il valore dello stesso. 4
21 Liste a concatenamento semplice Risulta particolarmente semplice visualizzare il contenuto di una lista, è sufficiente scorrerla dal primo all ultimo elemento: void list_show(struct list_item *first_item) struct list_item *p = first_item; int n = ; while(p) printf( \n[%d]: %s, ++n, p->info.nome); p = p->next; 41 Liste a concatenamento semplice: Liste a concatenamento semplice puntatore puntatore Oltre alle operazioni di inserimento e visualizzazione possiamo avere però altre situazioni: - inserire oggetti in una posizione iniziale o mediana - eliminare oggetti all inizio, alla fine o in posizione mediana Vediamo come si svolge concettualmente la cosa (per un esempio di codice si veda l esercitazione libretto_3) 42
22 Inserire un oggetto all inizio: Prima Liste a concatenamento semplice NUOVO puntatore puntatore Dopo NUOVO info info info 43 Liste a concatenamento semplice Inserire un oggetto in una posizione qualsiasi: Prima NUOVO info info info Dopo info NUOVO info info 44
23 Eliminare un oggetto all inizio: Prima Liste a concatenamento semplice info info info Dopo cancellato info info 45 Eliminare un oggetto alla fine: Prima Liste a concatenamento semplice info info info Dopo info info cancellato 46
24 Eliminare un oggetto mediano: Prima Liste a concatenamento semplice info info info Dopo info cancellato info 47 Liste a concatenamento doppio Liste a concatenamento doppio: ogni elemento è legato al successivo ed al precedente Chiaramente valgono tutte le osservazioni precedenti solo che ora i puntatori devono essere aggiornati a coppie 48
25 Liste a concatenamento semplice Riprendendo l esempio l oggetto trattato dalla lista a concatenamento doppio sarà: struct list_item struct address info; // è l informazione vera e propria struct list_item *next; struct list_item *previous; ; prev info next 49
Il tipo di dato astratto Pila
Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
DettagliUna funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.
Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliInformatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing
Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliStrutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
DettagliB+Trees. Introduzione
B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
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
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliBreve riepilogo della puntata precedente:
Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta
DettagliAlgoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
DettagliI tipi di dato astratti
I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato
DettagliSistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory
FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File
DettagliInformatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees
Informatica 3 LEZIONE 23: Indicizzazione Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Informatica 3 Lezione 23 - Modulo 1 Indicizzazione lineare, ISAM e
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliPROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI
PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento
Dettagli10 - Programmare con gli Array
10 - Programmare con gli 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
DettagliPlate Locator Riconoscimento Automatico di Targhe
Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliCALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU
Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi
DettagliMac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliFIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev. 2014.3.1 www.firesoft.it
FIRESHOP.NET Gestione completa delle fidelity card & raccolta punti Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 3 La gestione delle fidelity card nel POS... 4 Codificare una nuova fidelity
DettagliAccess. P a r t e p r i m a
Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
DettagliStruttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura
Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione
DettagliArchivio CD. Fondamenti di Programmazione
Archivio CD Una persona possiede un certo numero di CD musicali e desidera organizzare il proprio archivio tramite uno strumento software. Il programma deve permettere: - l inserimento di un nuovo CD nella
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Visita dell albero inorder Ricerca Ricerca minimo, massimo e successore. Inserimento ed eliminazione di un nodo Problema del bilanciamento dell albero Albero binario
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Operazioni su Liste Doppie e Circolari 2 1 Indice Liste puntate semplici: Gli elementi sono
DettagliGestione dinamica di una pila
Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
DettagliAppunti 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
DettagliDefinire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
DettagliRealizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
DettagliCosa è un foglio elettronico
Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti
DettagliAPPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture
DettagliFIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it
FIRESHOP.NET Gestione del taglia e colore www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione iniziale... 5 Gestione delle varianti... 6 Raggruppamento delle varianti... 8 Gestire le varianti
DettagliL algoritmo di ricerca binaria. Daniele Varin LS Ing. Informatica Corso di Informatica teorica Docente: prof. Paolo Sipala
L algoritmo di ricerca binaria Daniele Varin LS Ing. Informatica Corso di Informatica teorica Docente: prof. Paolo Sipala L algoritmo di ricerca binaria (o dicotomica) In informatica,, la ricerca dicotomica
DettagliLe Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31
Le Liste Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Le Liste 1 / 31 Cos è una Lista Una lista è una collezione di elementi omogenei che: potrebbero
DettagliMatematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
DettagliAlgoritmi e Strutture Dati
schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o
DettagliFONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
DettagliManuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015]
Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015] Realizzato e distribuito da LeggeraSoft Sommario Premessa... 2 Fase di Login... 2 Menù principale... 2 Anagrafica clienti...
DettagliNote su quicksort per ASD 2010-11 (DRAFT)
Note su quicksort per ASD 010-11 (DRAFT) Nicola Rebagliati 7 dicembre 010 1 Quicksort L algoritmo di quicksort è uno degli algoritmi più veloci in pratica per il riordinamento basato su confronti. L idea
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
Dettagli[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008
Se devo memorizzare più valori che sono in qualche modo parenti dal punto di vista logico, posso usare il concetto di vettore di variabili (array). Ad esempio, se devo memorizzare le temperature di tutti
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento Scopo di questa esercitazione: Comprendere la complessità del problema ordinamento cerchiamo di valutare il costo di una soluzione (confrontandola con un altra ) Modifiche al codice
DettagliDispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
Dettagli1. PRIME PROPRIETÀ 2
RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,
DettagliEsempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante
Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliAppello di Informatica B
Politecnico di Milano Facoltà di Ingegneria Industriale 19 febbraio 2004 Appello di Informatica B Prof. Angelo Morzenti - Prof. Vincenzo Martena Cognome e nome: Matricola: Tipo di prova: recupero I prova
DettagliIng. Paolo Domenici PREFAZIONE
Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte
DettagliRicorsione. (da lucidi di Marco Benedetti)
Ricorsione (da lucidi di Marco Benedetti) Funzioni ricorsive Dal punto di vista sintattico, siamo in presenza di una funzione ricorsiva quando all interno della definizione di una funzione compaiono una
DettagliCorso di Informatica
Corso di Informatica Modulo T Scorrimento-Rotazione-Ricerca Prerequisiti Programmazione elementare Conoscenza ed uso di vettori Introduzione Lo scopo di questa Unità è approfondire il concetto di vettore
DettagliMatematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
DettagliLe stringhe. Le stringhe
Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliInvio SMS. DM Board ICS Invio SMS
Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove
DettagliTesti di Esercizi e Quesiti 1
Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
Dettagli2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliAA 2006-07 LA RICORSIONE
PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella
DettagliCapitolo 11 -- Silberschatz
Implementazione del File System Capitolo 11 -- Silberschatz Implementazione del File System File system: Definizione dell aspetto del sistema agli occhi dell utente Algoritmi e strutture dati che permettono
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliFondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
DettagliAppunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo
Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliSISTEMI DI NUMERAZIONE DECIMALE E BINARIO
SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono
DettagliLUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014
LUdeS Informatica 2 EXCEL Seconda parte AA 2013/2014 STAMPA Quando si esegue il comando FILE STAMPA, Excel manda alla stampante tutte le celle del foglio di lavoro corrente che hanno un contenuto. Il numero
DettagliIl principio di induzione e i numeri naturali.
Il principio di induzione e i numeri naturali. Il principio di induzione è un potente strumento di dimostrazione, al quale si ricorre ogni volta che si debba dimostrare una proprietà in un numero infinito
DettagliAbstract Data Type (ADT)
Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo
DettagliLezione 4 Le code. Informatica. 26 Aprile 2016. Le pizze devono essere preparate e consegnate seguendo l ordine di arrivo degli ordini
Lezione 4 Le code Informatica 26 Aprile 2016 Bender il pizzaiolo robot Bender ha aperto una pizzeria da asporto con i suoi amici: Dr. Zoidberg risponde al telefono e riceve gli ordini Bender prepara le
DettagliEsercitazione Informatica I AA 2012-2013. Nicola Paoletti
Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.
DettagliLa Metodologia adottata nel Corso
La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema
DettagliProgrammazione. Laboratorio. Roberto Cordone DI - Università degli Studi di Milano
Gestione della memoria p. 1/11 Programmazione Laboratorio Roberto Cordone DI - Università degli Studi di Milano Tel. 02 503 16235 E-mail: roberto.cordone@unimi.it Ricevimento: su appuntamento Lezioni:
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Implementazioni di Liste Doppiamente Puntate e Circolari Corso di Laurea Codice insegnamento Email docente Anno accademico Informatica 13917
DettagliAccess. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database
Microsoft Access Introduzione alle basi di dati Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale limitato Meccanismi di sicurezza, protezione di dati e gestione
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliMon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni
Prerequisiti Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni L opzione Produzione base è disponibile per le versioni Azienda Light e Azienda Pro. Introduzione
Dettaglijt - joetex - percorsi didattici
jt - joetex - percorsi didattici Regedit.1 - Creare Stringhe, valori binari, multistringa, stringa espandibile e dword con blocco note Avvertenza: le informazioni contenute in questo sito hanno soltanto
Dettagli1 CARICAMENTO LOTTI ED ESISTENZE AD INIZIO ESERCIZIO
GESTIONE LOTTI La gestione dei lotti viene abilitata tramite un flag nei Progressivi Ditta (è presente anche un flag per Considerare i Lotti con Esistenza Nulla negli elenchi visualizzati/stampati nelle
DettagliRICERCA DI UN ELEMENTO
RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare
DettagliA intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
DettagliAppunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
DettagliTraccia di soluzione dell esercizio del 25/1/2005
Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello
DettagliTipi classici di memoria. Obiettivo. Principi di localita. Gerarchia di memoria. Fornire illimitata memoria veloce. Static RAM. Problemi: Dynamic RAM
Obiettivo Tipi classici di memoria Fornire illimitata memoria veloce Problemi: costo tecnologia Soluzioni: utilizzare diversi tipi di memoria... Static RAM access times are 2-25ns at cost of $100 to $250
Dettagli16.3.1 Alberi binari di ricerca
442 CAPITOLO 16. STRUTTURE DI DATI DINAMICHE root 7 5 11 2 8 13 10 Figura 16.11 Esempio di albero binario: ogni nodo contiene il dato da immagazzinare e tre puntatori che definiscono le sue relazioni di
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
Dettagli