Accesso ai File. 1 I dati e la memoria centrale. R. Gallo ITIS A. Volta. Mar, 2010
|
|
- Luigi Pesce
- 8 anni fa
- Visualizzazioni
Transcript
1 Accesso ai File R. Gallo ITIS A. Volta Mar, 2010 La variabile File é fondamentale per la comprensione di un linguaggio di programmazione. Dal punto di vista informatico una variabile le é una struttura dati che permette la gestione di dati su memoria di massa. La trattazione in questo artcicolo é tutt'altro che esaustiva. Vi sono tantissime fonti bibliograche e link su internet dove reperire altro materiale. Convenzioni tipograche 1 1 I dati e la memoria centrale Quando scriviamo un programma in un linguaggio di programmazione, sappiamo che questo é l'ultima fase di una procedura che comporta una serie di passi quali 1. l'analisi del problema 2. la stesura di una bozza di soluzione che mostra per sommi capi quali sono i passi da seguire 3. la rappresetnazione graca, per chi vuole farlo, tramite un diagramma a blocchi che da una idea piú dettagliata e precisa del problema 4. inne, la traduzione in codice di programmazione Durante il lavoro di programmazione, bisogna introdurre le variabili sulle quali il programma esegue i calcoli. Un linguaggio di programmazione di alto livello mette a disposizione un insieme di tipi con i quali cominciare a lavorare, come ad esempio int, char, oat, double. Per problemi piú complessi possiamo dichiarare delle strutture dati derivate composte da tipi primitivi (vettori, stringhe, strutture etc). E molto importante capire approfonditamente come gestire le variabili, perché queste andranno a nire 1 L'articolo è stato scritto con dimensione caratteri superiore alla norma e gli esercizi si è cercato di concentrarli in una sola pagina, per dare l'ooportunità di vederne per intero lo svolgimento e lasciare spazio all'alunno di apporre le proprie note 1
2 2 in memoria centrale cioé in RAM. La RAM in un computer é una risorsa sempre scarsa. Una delle caratteristiche principali della RAM é la sua velocitá. Per un programma poter caricare in RAM tutte le variabili di cui ha bisogno, sarebbe la soluzione migliore. Purtroppo, ci sono applicazioni cosí complesse dove questo non é possibile. 1.1 Le variabili Le variabili sono delle locazioni di memoria che contengono un valore. Questo valore per tipi predeniti come int e double sono dei numeri. Un computer tuttavia, non capisce il sistema decimale e si deve convertire il valore decimale (intero o reale) in sistema binario (esadecimale). Una locazione di memoria cioé una variabile, non é altro che una sequenza di bit. All'interno della RAM si trovano una sequenza di tante variabili una dietro l'altra. Per leggere o scrivere una variabile c'é bisogno di conoscere la sua posizione nella RAM, cioé il suo indirizzo, che in C/C + + sappiamo essere un puntatore. La RAM é una struttura lineare e con questo intendiamo che si sviluppa in una sola dimensione. La RAM é costruita con transistor e condensatori. Le diverse tecnologie costruttive portano a RAM di tipo diverso che sono impiegate in dispositivi diversi (PC desktop, Notebook, tel cellulari, game-station) utilizzano RAM diverse Come si legge/scrive in RAM Le operazioni di lettura/scrittura in RAM sono cosí semplici che oramai nessuno presta piú attenzione. Eppure bisogna interpretarne bene il signicato. L'operazione di lettura/scrittura avviene tramite l'assegnazione, ovvero usando l'operatore =. Tuttavia il simbolo = non va trattato come in una equazione algebrica dove l'ugualianza sta a signicare che si devono eseguire calcoli opportuni perché il termine destro sia uguale al termine sinistro. L'operatore di assegnazione sarebbe piú corretto scriverlo in questo modo. Con questa operazione intendiamo che il valore della variabile che sta alla destra del simbolo, nisce nella variabile di sinistra e il valore che questa conteneva viene perso. Questa operazione praticamente é immediata e non ha senso misurarne il tempo, a meno di casi particolari che coinvolgono lo spostamento di grossi blocchi di dati da una zona all'altra della memoria. 2 I dati e le memorie di massa Le memorie di massa hanno il grosso vantaggio di essere molto grandi. Viceversa hanno una velocitá d'uso molto inferiore alla RAM. Esiste una relazione inversamente proporzionale tra velocitá e dimensione: la RAM é molto veloce, ma piccola; la memoria di massa é molto capiente, ma lenta. Questo gap di velocitá, da sempre, é stato oggetto di studio e sperimentazione da
3 Gestione File 3 parte dei tecnici hardware/software. La lentezza dei dispositivi di massa é dovuta alla loro tecnologia costruttiva. Una memoria di massa é formata da una parte meccanica e dalla elettronica di controllo che si interfaccia col PC. La parte meccanica é costituita da dischi o, no ad alcuni anni fa da nastri, il cui movimento é regolato dal principio di inerzia. Ci vuole molto tempo per metterli in moto e altrettanto per fermarli. Bisogna intenderci su cosa si intende per molto tempo. La lentezza delle memorie di massa é da rapportare alla velocitá delle RAM. Anche se un hard-disk ha una velocitá in media di 7-10ms (milli sec), non potrá mai competere con la velocitá della RAM che é dell'ordine di 10-20ns (nano sec). Per fare un esempio, durante un accesso a disco che dura 10ms, nello stesso tempo la RAM avrá fatto 10 7 operazioni 2.1 Anatomia di un Hard-Disk Concentriamo la nostra attenzione sulla periferica piú diusa come memoria di massa e cioé l'hard Disk. Un disco rigido é formato da uno o piú dischi, chiamati piatti, ricoperti da materiale ferro-magnetico. I piatti possono essere di una lega di alluminio oppure di materiale vetro-resinoso. A causa del riscaldamento a cui sono sottoposti i piatti, l'alluminio é stato abbandonato in quanto ad alte temperature puó deformarsi. Sul disco é possible scrivere su entrambe le facce. La lettura/scrittura avviene tramite delle testine magneto-resistive che volano sul piatto senza mai toccare la supercie. Questo é possibile grazie all'alta velocitá di rotazione dei dischi che crea un cuscinetto d'aria sul quale poggiano le testine. Se il disco é formato da piú piatti allora sono presenti piú testine, 2 per ciasun piatto. Le testine sono collegate a un braccio che si sposta a seconda del punto dove deve leggere/scrivere sui piatti. Il braccio con le testine formano il cosiddetto pettine. Il pettine si sposta rispetto ai piatti in modo tangenziale e non perpendicolare, questo per diminuire la dimensione di tutto il disco. L'informazione elementare che memorizza il disco é il bit. Una porzione della supercie ferro-magentica chiamata cella del bit, viene orientata in un verso o in un altro a seconda del verso della corrente che scorre nelle testine. L'orientamento della cella del bit corrisponde a memorizzare uno 0 o un Struttura logica di un Hard-Disk Terminata per sommi capi, la descrizione di come é composto un hard-disk veniamo alla parte che ci interessa di piú: il suo funzionamento logico, ovvero come il software congura e utilizza un hard-disk. La gura 1 mostra la struttura logica dell'hd dopo una formattazione. La supercie di ogni piatto viene suddivisa in cerchi concentrici chiamate tracce, ogni traccia é a sua volta suddivisa in settori; la dimensione di un settore puó variare.
4 4 La posizione di una testina rispetto ai piatti, e quindi di tutte le altre del pettine, determina il cilindo. Nel paragrafo 1.1, abbiamo descritto i passi per leggere/scrivere una variabile in RAM. La struttura lineare della RAM rende questo processo molto semplice. Allo stesso modo se vogliamo leggere/scrivere i dati su un hard-disk, ci accorgiamo subito della complessitá del procedimento. Un hard-disk possiede una struttura a tre dimensioni. Per poter indirizzare un dato su un hard-disk dobbiamo fornire tre valori: cilindro-traccia-settore: il cilindro indica la testina in uso, quindi il piatto e la relativa faccia, dopo di che la traccia e il settore individuano il dato sul piatto scelto. E' importante capire la dierenza tecnologica che esiste fra RAM e HD perché questa ha notevole inuenza sull'uso dei le in un programma Come si legge/scrive su HD Quando si deve leggere/scrivere su un dispositivo é necessario fornire un indirizzo per recuperare la posizione dove sono presenti i dati. Per una struttura lineare a una sola dimensione come la RAM, costruire questo indirizzo é molto semplice e ci consente inoltre di puntare direttamente il singolo byte. La dimensione minima della cella indirizzabile in RAM é il byte. Se volessimo riprodurre lo stesso procedimento per un HD, le cose si complicano notevolmente. Nel paragrafo abbiamo visto che i dati sono distribuiti sul disco, secondo una struttura a tre dimensioni cilindro-tracciasettore. Tutti i dati su disco sono memorizzati su unitá minime che sono i settori. Mentre per la RAM l'unitá minima di memorizzazione é il byte, per un HD l'unitá minima é il settore e la dimesione di un settore, purtroppo non é il byte. Quando si fanno operazioni di lettura/scrittura da disco viene letto/scritto un intero settore. La dimensione di un settore é fornita come parametro nel comando di formattazione e ha molta inuenza sulle performance dell'hd e della gestione dei le. La dimensione di un settore puó essere 512, 1024, 2048, 4096 byte o piú alta e dipende dal le system implementato nel sistema operativo. Proprio per questo motivo, storicamente un HD viene chiamato anche unitá a blocchi Inuenza della dimensione del settore sulle performance Un programma ben scritto che usa i le deve fare il minor numero di accessi al disco. Questa regola, seguita da tutti i programmatori, ha portato alla scrittura di una serie di algoritmi che minimizzano l'uso del disco. Alcuni di questi algoritmi sono cosí importanti da essere incorporati nel le system del sistema operativo. In alcuni casi queste tecniche sono addirittura implementate in hardware. Una variabile che inuisce sulla performance del disco é la dimensione del settore, che puó essere modicata dal programmatore. La scelta della dimensione di un settore é estremamente im-
5 Gestione File 5 Figura 1: Struttura logica HD portante per le performance dell'unitá disco nel sistema. Di seguito faremo alcuni esempi dove si evidenzierá come il valore di 512 byte non é il migliore da usare, come facilmente si potrebbe pensare.
6 6 File Generici Per cominciare, consideriamo la lettura/scrittura di un le qualsiasi. La dimensione di un le non coincide quasi mai con la dimensione di un settore o un multiplo di questo. Il le é presente in RAM prima di essere scaricato su disco. Per scrivere il le, il sistema operativo si occupa di eettuare la conversione da una struttura lineare a una dimensione come la RAM, in coordinate disco a tre dimensioni. Il le viene quindi suddiviso nella unitá minima di memorizzazione cioé il settore e sará distribuito su disco occupando i settori necessari. Per esempio un le di byte (pari a 11524/1024 = kbyte) scritto su un disco formattato con un settore di 1024 byte occuperá 11 settori e una parte del dodicesimo. Se il disco é formattato con settori da 4096 byte occuperá 11534/4096 = 2.8 settori. Il sistema registra il le nello spazio disponibile che trova, se possibile scrivendo in settori contigui. Se non esiste spazio contiguo, il le viene distribuito in settori non vicini. In ogni caso il disco presenterá una frammentazione che alla ne inuenza notevolmente le prestazioni File di grandi dimensioni Un altro caso interessante riguarda i le di grosse dimensioni, questi le si incontrano molto spesso in computer graca o applicazioni multimediali. Quando si usano le di questo tipo, la performance del disco diventano prioritarie rispetto a quelle delle altre periferiche. Poiché si é detto che l'accesso a disco avviene leggendo/scrivendo un intero settore, per questi casi la dimensione del settore conviene assegnarla a un valore molto alto (8/16kbyte). Questi le non sorono del problema della contiguitá mentre permane quello della frammentazione Partizionamento del disco Se si é sicuri del tipo di le che si usa, la prima operazione da fare consiste nel formattare il disco con la dimensione del settore corretta. Se invece come succede nella maggior parte dei casi, ci sono le grandi e piccoli, il sistema operativo consente anche di partizionare un disco in modo da creare dei dischi con dimensione piú piccola. Le partizioni sono trattate come se fossero dei dischi indipendenti. Ogni partizione puó essere formattata con le system e dimensione dei settori diversi.
7 Gestione File Misure di performance Rispetto a una operazione di lettura/scrittura eseguita in RAM (si veda 1.1.1), un accesso a disco comporta dei costi in termini di tempo. Per avere idea di quanto la nostra periferica si comporti ecientemente, ci sono alcuni parametri da misurare per calcolare la velocitá del disco. Questi parametri sono legati, ovviamente, alla presenza di parti meccaniche che come detto in 2.1, sottostanno al principio di inerzia quando si muovono. Ci sono tre parametri importanti di cui tener conto 1. tempo di ricerca: tempo che impiega la testina (pettine) a spostarsi sul piatto e trovare la traccia 2. tempo di latenza: tempo che intercore tra il posizionamento della testina sulla traccia e il passaggio del settore sotto la testina, mentre il disco ruota 3. tempo di read/write: tempo imiegato a leggere scrivere settore La somma di questi valori ci da un'idea del tempo di accesso a disco. Come si vede questi parametri non sono inuenzati, se non in minima parte, dal software scritto dal programmatore, in quanto sono valori legati alla tecnologia costruttiva. Esistono oggi in commercio periferiche con velocitá di rotazione dei dischi attorno ai 15000giri/min e bracci delle testine molto leggeri per spostarsi con piú facilitá sui piatti. Dove si puó agire invece, é sulla corretta organizzazione dei le sui disco, secondo le indicazioni date in Conclusioni Al termine di questa esposizione del funzionamento di un hard-disk ci si pone la domanda: come usare queste informazioni per scrivere un programma corretto e soprattutto eciente? A questa domanda risponderemo man mano che saranno sviluppati gli esempi. 3 La variabile File Nella pratica comune di tutti i giorni, un le é un termine che usiamo per identicare un elemento che sta su un dispositivo chiamato memoria di massa e che contiene dei dati utili al nostro lavoro. Questi dati sono persistenti nché qualcuno non cancella il le. Per quanto riguarda la denizione che si da in informatica, le cose cambiano in modo sostanziale, perché, per chi scrive un programma in un qualunque linguaggio di programmazione, la gestione di un le comporta la conoscenza, come abbiamo visto, di vari argomenti non solo legati al linguaggio, ma anche al sistema operativo e all'hardware del disco. Questo articolo illustra l'uso di un le a prescindere dal linguaggio e
8 8 dal sistema operativo. Gli esempi di codice presenti sono scritti in C perché il linguaggio ore maggiore essibilitá e permette di comprendere alcuni aspetti dell'argomento in maggiore dettaglio. 3.1 Strutture dati La scrittura di un programma in un linguaggio di programmazione imperativo, richiede che in testa del codice vengano dichiarate le variabile sulle quali il programma dovrá lavorare. L'obbligo della scrittura delle variabili non é una scelta dei progettisti del linguaggio che impongono di scrivere l'elenco delle variabili da usare prima del codice, ma una necessitá imposta dall'hardware. Un programma é un oggetto che quando va in esecusione, consuma delle risorse hardware che sono assegante al programma dal sistema operativo. Queste risorse sono, almeno per programmi semplici, la CPU e la RAM. Altri programmi piú complessi, hanno bisogno di accedere alle periferiche come i dischi rigidi, il monitor e la stampante, tanto per citarne alcune. Il codice di un programma deve essere compilato e linkato per arrivare nella forma di eseguibile. Nella fase di compilazione il codice sorgente viene tradotto in linguaggio oggetto. Questa forma intermedia rappresenta il codice sorgente tradotto in una forma numerica non ancora eseguibile. Il codice compilato contiene le informazioni relative all'occupazione della memoria, cioé quanta memoria il programma occuperá quando entra nello stato di esecuzione e diventa un processo. Quando si scrive un programma siamo abituati a elencare le variabili necessarie per risolvere il problema e quindi possiamo cancolare quanti byte occupano le variabili quando saranno allocate in memoria centrale Esempi allocazione memoria 1. Se vogliamo risolvere il problema del calcolo della media delle temperature delle cittá dei capoluoghi di regione in Italia, dichiariamo un vettore di 20 elementi di tipo double, un valore per ciascun capoluogo. Lo spazio di memoria occupato sará di 80 byte ovvero 280 = 20*8 byte, visto che un double é grande 8 byte. 2. Consideriamo il problema di registrare i voti in matematica di tutti gli alunni di una scuola come L'ITIS Volta. La popolazione della scuola é composta da circa 450 alunni, dichiareremo allora un vettore di 450 elementi di tipo unsigned int per una occupazione di memroia di 1800=450*4 byte. 3. La registrazione dei valori di temperatura all'interno di un forno effettuata ogni secondo durante una giornata, porta a dover dichiarare un vettore di 86400=60(sec)*60(min)*24(ore) posizioni che occupano =86400*8byte se esprimiamo la temperatura in double.
9 Gestione File 9 4. Altro problema interessante consiste nel ripetere la procedura del problema precedente per 30gg Come si vede negli esempi precedenti, la dimensione della struttura dati per contenere i valori, aumenta sempre di piú, sino ad arrivare al punto che l'esempio 3 e 4 non possono essere risolti con l'uso di un vettore. Non é possibile usare un vettore in quanto ci sono vincoli hardware: un vettore non puó essere allocato in ram se supera una certa dimensione. In particolare per l'esempio 4 non si puó usare neanche la ram, ma scrivere i dati su altro dispositivo. 3.2 Variabile File Nella paragrafo 3.1, abbiamo fatto alcuni esempi dove, in generale, é possibile conoscere quanti byte occupano le strutture dati in memoria centrale, allocate per un dato programma. La quantitá di memoria l'abbiamo calcolata prima di mandare in esecuzione il programma. In questo caso stiamo parlando di allocazione statica della memoria a tempo di compilazione. Il caso dell'esempio 4 peró non é del tutto risolto. Cosa succederebbe se la registrazione delle temperature deve proseguire per 2,3,4 o piú mesi. Non sappiamo di quanta ram abbiamo bisogno per registrare tutti i valori, ovvero il programma non conosce prima di andare in esecuzione di quanta memoria avrá bisogno per fare i calcoli. Siamo in presenza di un programma che alloca lo spazio di memoria solo a run-time ovvero di allocazione dinamica della memoria. E se la memoria presente nel PC non fosse suciente, a tempo di esecuzione, per registrare tutti i dati, dove potremmo scriverli? Per risolvere questi problemi si deve ricorrere all'uso di un'altra periferica, oltre la RAM, e cioé di un dispositivo di memoria di massa. Nel nostro caso faremo riferimento per semplicitá al disco rigido. In un linguaggio di programmazione quando parliamo di le usiamo una de- nizione piuttosto strana. Una variabile le é una variabile con un tempo di vita superiore a quella del programma. Torneremo in seguito su questa denizione. Per il momento cominciamo ad analizzare esempi di codice. Il linguaggio usato come detto é il C/C + +
10 File di numeri - Scrittura In questo esempio si crea un le di numeri. La classe del C/C + + che tratta i le si chiama fstream che si suddivide in ifstream se trattiamo solo le in input e ofstream se trattiamo solo le in output int main(int argc, char* argv[]) { ofstream ofs; // stream in sola scrittura int num; char str[1]; long int position; // attributo ios::out della classe ofstream indica file in scrittura ofs.open("c:\\scuola1.dat", ios::out); if (!(ofs)) // se il sistema operativo non riesce a aprire/creare file cout << "errore su apertura file in ingresso"; else { // altrimenti crea il file e restituisce un puntatore in ofs do { // l'operatore << e' polimorfico, // ora scrive su monitor che è un file con nome cout cout << "Numero... "; // l'operatore >> e' polimorfico, // ora legge dalla tasitera che è un file con nome cin cin >> num; // ora scrive sul file ofs num ofs << num << '\n'; cout << "Hai finito [s/n]?"; cin >> str; while ((strcmp(str,"s"))); // continua se l'espressione e' vera ofs.close(); // i file vanno sempre chiusi return 0; Il programma scrive su uno stream di output tanti numeri nché non premo il tasto 's'. Il nome del le viene dato nel metodo open. Il nome del le é formato dal path e dal nome vero e proprio. In questo caso si scrive nel directory c: ma un utente normale che si logga in windows o linux, non ha l'accesso alla cartella principale, quindi il path va sostituito con la cartella /documenti (in windows) o /home (in linux).
11 Gestione File File di numeri - Lettura Il codice seguente legge un le di numeri cosí come scritto in int main(int argc, char* argv[]) { ifstream ifs; int num; long int position; ifs.open("c:\\scuola1.dat", ios::in); if (!(ifs)) cout << "Errore apertura file in uscita"; else { // mentre non siamo arrivati alla fine file EOF?? while (ifs.good()) { // legge il numero dal file e lo stampa ifs >> num; cout << "Numero... " << num; // stampa anche la posizione del num nel file position = ifs.tellg(); cout << " alla posizione -> " << position << endl; getch(); // chiude il file ifs.close(); return 0;
12 File di stringhe - Scrittura In questo esempio si scrive un le di stringhe int main(int argc, char* argv[]) { ofstream ofs; char s[1], str[100]; ofs.open("c:\\scuola2.dat", ios::out); if (!(ofs)) cout << "Errore apertura fiel in uscita"; else { do { cout << "Stringa... "; cin >> str; ofs << str << '\n'; cout << "Hai finito [s/n]?"; cin >> s; while (strcmp(s, "s")); ofs.close(); return 0;
13 Gestione File File di stringhe - Lettura In questo esempio si legge il le scritto in int main(int argc, char* argv[]) { ifstream ifs; char str[100]; ifs.open("c:\\scuola2.dat", ios::in); if (!(ifs)) cout << "Errore apertura file in uscita"; else { while (ifs.good()) { // getline legge massio 100 char oppure quando torva fine stringa ifs.getline(str,100); cout << "Stringa... " << str << endl; cout << "-> Premi un tasto per finire " << endl; getch(); ifs.close(); return 0; 3.3 Osservazioni Polimorsmo Negli esempi dei paragra precedenti abbiamo fatto uso delle proprietá della programmazione orientata agli oggetti OOP. La scrittura/lettura dei dati avviene con operatore polimorco. Il polimorsmo consente di eseguire una operazione senza preoccuparci del tipo di dato impiegato. Fermiamoci un attimo. Finora non abbiamo accennato al fatto che scrivere su un le un numero o una carattere non é la stessa cosa. Se avessimo scritto gli esempi in C avremmo avuto problemi. In C esiste la funzione read/write per leggere/scrivere, ma ha bisogno di conoscere il tipo di dato che si legge/scrive Istanza di un oggetto Per usare un le si deve istanziare un oggetto dalla classe fstream (ifstream, ofstream) che sta nel le include fstream.h. Il metodo open dell'oggetto istanziato apre/crea un le a seconda del valore dell'attributo ios. Il metodo open riceve un parametro che é il nome del le
14 14 4 Lettura/Scrittura le generici Negli esempi precedenti abbiamo trattato le esclusivamente di numeri, o esclusivamente di caratteri. Chiediamoci ora cosa fare quando usiamo le di struct. Un le di strutture é la condizione piú frequente che si ritrova nel lavoro quotidiano. Viste le considerazioni dei paragra precedenti, il problema che sorge é quello di trasferire i dati da una struttura lineare come la RAM, su una memoria di massa con una tecnologia hardware diversa, le cui variabile sono accessibili tramite 3 variabili: cilindro, traccia, settore. 4.1 File Binari Negli esempi e 3.2.3, la variabile da scrivere occupa in RAM sempre lo stesso spazio, o un multiplo di questo. Per un intero 4 byte, per un vettore di interi n*4 byte se il vettore é formato da n elementi. Trasferire questa struttura su le risulta semplice. Un rapido calcolo ci dice quanti settori su disco occuprará la nostra variabile. Di seguito alcuni esempi per un vettore di 1000 elementi di interi pari a 4000 byte, lo spazio occupato su disco sará di 1 settore, se come dimensione del settore si é scelta, durante la formattazione, un valore di Numero di accessi per recuparare tutto il vettore é 1 per lo stesso vettore, i settori occupatio saranno 4, di cui uno occuapto parzialmente, se la dimensione del settore scelta é pari a 1024 byte. Si corre il rischio di avere un le frammentato con notevole diminuizione del tempo di accesso da parte delle testine su disco, in quanto queste si spostano sulla supercie per recuperare tutto il vettore Una variabile struct ci pone davanti un problema, se vogliamo piú complesso. La struct contiene var di tipo diverso e dimensione diversa: lo spazio occupato dalla variabile in RAM é la somma dei byte di ogni singola variabile della struttura. La stessa variabile su disco occuperá un numero di settori in base alla dimensione scelta in fase di formattazione, ma in fase di lettura/scrittura un ulteriore passaggio é necessario, anché i dati vengano recuperati in memoria secondo la loro dimensione e anche rispettando la stessa posizione occupata nella struttura. Piú avanti si vedrá l'esempio di una struttura particolare, trasformata secondo il meccanismo del cast che porta risultati molto interessanti. Quest'ultimo esempio é possibile grazie alla essibilitá del linguaggio C.
15 Gestione File Scrittura le binario Viene presentato il brano di codice che si occupa della scrittura di un le binario, ossia di una struttura generica struct blocco { char nome[100]; char cognome[100]; char indirizzo[100]; unsigned int stipendio; unsigned short int eta; bl; int main (int arcg, char *argv[]) { char *pbl; // crea e apre il file binario ofstream ofs("c:\\blocco.dat"); do { cout << "Nome... "; cin.getline(bl.nome,100); cout << "Cognome... "; cin.getline(bl.cognome,100); cout << "Indirizzo... "; cin.getline(bl.indirizzo,100); cout << "Stipendio... "; cin >> bl.stipendio; cout << "Eta... "; cin >> bl.eta; cout << endl << "Hai finito [s/n]??"; cin >> s; // scrive il blocco COMPOSTO DA STRINGHE E DA NUMERI pbl = (char *)&bl; ofs.write(pbl, sizeof(bl)); while (s!="s"); ofs.close(); return 0; Nel brano di codice precedente, nel pieno rispetto dello stile C, il le viene creato e successivamente riempito con i dati della struttura. A dierenza degli esempi che scrivono/leggono numeri o stringhe, non é stato creato un operatore polimorco come o. Invece si usa il metodo write che scrive una sequenza di byte. Prima dell'istruzione write viene eettuato un cast
16 16 che va letto in questo modo: preso il puntatore al blocco bl lo si trasforma in un puntatore a char, ovvero un puntatore a una sequenza di byte. Poiché la struttura é composta da tipi dierenti, risulta dicile trattare la scrittura/lettura su le con operatore polimorco, si decide allora di trasformare tutto in una sequenza di byte: come se la struttura passasse attraverso un tritacarne che scompone in pezzi piú piccoli le varie parti di cui é composta. In ultimo, per ottenere la massima essibilitá si usano i puntatori. Il metodo write richiede un altro parametro cioé la dimensione della stringa da scrivere. Lascio al lettore spiegarne il motivo Lettura le binario Il codice seguente mostra come fare la lettura di un le binario usando sempre la stessa struttura int main (int arcg, char *argv[]) { // crea e apre il file binario ifstream ifs("c:\\blocco.dat"); while (ifs.good()) { ifs.read((char*)&bl, sizeof(bl)); cout << bl.cognome << endl; cout << bl.nome << endl; cout << bl.indirizzo << endl; cout << bl.stipendio << endl; cout << bl.eta << endl; ifs.close(); return 0; dove il metodo read carica in mmemoria i dati da inserire nella struttura. Il metodo si aspetta di trovare una struttura in memoria centrale, che corrisponda sia in dimensione sia in posizione. Il rischio é quello di usare una struttura dati che corrisponde in grandezza a quella presente su disco ma con campi disposti in modo diverso o di tipo dierente ma che hanno la stessa dimensione. Il metodo eettua il cast sui campi letti, con le conseguenze che possiamo immaginare.
17 Gestione File Esercizio Si considerino le due struttura seguenti struct ST1 int n; char c[4]; float f; st1; struct ST2 { char c[4]; float f; int n; Si scriva un programma che crei/sriva/legga da le creando il le prima con la ST1 e leggendo con ST2. Quali sono i risultati? Proprietà sequenziale di un le Una variabile le indirizza un'insieme di elementi di tipo sequenziale. Un insieme possiede questa proprietá quando tra gli stessi elementi si stabilisce una relazione d'ordine. Per esempio l'insieme dei numeri Interi é sequenziale. Un elemento dell'insieme é preceduto e seguito da un altro elemento in relazione d'ordine di essere il maggiore e il minore dell'elemento precedente e dell'elemento successivo. Oltre a questa proprietá ne sono denite altre. La relazione d'ordine ci dice che un solo elemento per volta puó essere trattato. La posizione corrente dell'elemento viene espressa come se l'insieme fosse composto da due parti: la parte sinistra e la parte destra dell'elemento considerato. Nel caso specico dell'insieme le, l'elemento generico prende il nome di registrazione. La gura 1 suggerisce che é possibile recuperare una registrazione del le secondo le proprietá che abbiamo prima enunciato, ovvero accedere alla registrazione, senza scorrere le registrazioni precedenti presenti nel le. Il recupero diretto della registrazione in una struttura lineare (RAM) é una operazione molto semplice. Viceversa, la stessa operazione su memoria di massa comporta una operazione di traduzione di indirizzi, delle quali si occupa il driver del sistema operativo che comanda il controller della periferica. Queste operazioni sono trasparenti al programmatore, che opera a livello di astrazione del linguaggio di programmazione. Il C/C + +, come altri linguaggi, fornisce una serie di istruzioni, per il recupero della posizione della registrazione.
18 Accesso a File Lo stream standard di accesso alle periferiche, possiede le istruzioni tellp[ut] seekp[ut] tellg[et] seekg[et] per recuperare e accedere alla posizione della registrazione. Il susso p sta per put nel caso il usso sia aperto in scrittura, mentre il susso g sta per get se il usso é aperto in lettura. I metodi tell/seek possiedono a loro volta i seguenti attributi ::beg ::cur ::end per indicare che il recupero della posizione cercata della registrazione, va calcolata a partire dall'inizio del le, dalla ne del le e dalla posizione corrente del le
19 Gestione File Esempi uso tell/seek Recupera la registrazione x del le Si ipotizza la dichiarazione della struttura BLOCCO in le header o altra parte int main (int arcg, char *argv[]) { long int x; char *pbl; BLOCCO bl; // crea e apre il file binario ifstream ifs("c:\\blocco.dat"); cout << ``Quale registrazione recuperare dal file... ``; cin >> x; // il valore di x va moltiplicato per la dimensione in byte // del blocco che compone la registrazione, altrimenti // si recupera il byte che occupa la posizione x // recupera la posizione cercata dall'inizio del file ifs.seekg(x*sizeof(bl), ios::beg); ifs.read((char*)&bl, sizeof(bl)); cout << bl.cognome << endl; cout << bl.nome << endl; cout << bl.indirizzo << endl; cout << bl.stipendio << endl; cout << bl.eta << endl; ifs.close(); return 0;
20 20 Funzione FileSize In questo esempio si scrive sotto forma di funzione, l'istruzione FileSize che in C/C + + non é presente, mentre é fornita in altri linguaggi. Nell'esempio il le é binario long int FileSize (ofstream &file) { long int start, end, sizefile; unsigned int uiblocchi; BLOCCO bl; // crea e apre il file binario ifstream ifs("c:\\blocco.dat"); ifs.seekg (0, ios::beg); // porta il puntatore del file all'inizio start = ifs.tellg(); // recupera la prima posizione ifs.seekg (0, ios::end); // porta il puntatore del file alla fine end = ifs.tellg(); // recupera l'ultima posizione sizefile = (end - start); // dimensione file in byte uiblocchi = (end - start) / sizeof(blocco); // num di blocchi ifs.close(); return sizefile;
4 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
DettagliSISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
DettagliGestione della memoria centrale
Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti
DettagliLaboratorio di Informatica di Base Archivi e Basi di Dati
Laboratorio di Informatica di Base Archivi e Basi di Dati Introduzione La memorizzazione dei dati è un aspetto molto importante dell informatica Oggi, mediante i computer, è possibile memorizzare e modificare
DettagliCodifica: dal diagramma a blocchi al linguaggio C++
Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU
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
DettagliISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++
ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è
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
DettagliConvertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
DettagliArchitettura dei calcolatori II parte Memorie
Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Informatica ed Elementi di Statistica 3 c.f.u. Anno Accademico 2010/2011 Docente: ing. Salvatore Sorce Architettura dei calcolatori
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliDispense di Informatica per l ITG Valadier
La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di
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à
DettagliAPPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
DettagliIl memory manager. Gestione della memoria centrale
Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda
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
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliLaboratorio di Informatica
per chimica industriale e chimica applicata e ambientale LEZIONE 4 - parte II La memoria 1 La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso,
DettagliSoftware relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi
Software relazione Hardware Software di base Software applicativo Bios Sistema operativo Programmi applicativi Software di base Sistema operativo Bios Utility di sistema software Software applicativo Programmi
DettagliFasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
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
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
Dettaglihttp://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
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
DettagliFile, Modifica, Visualizza, Strumenti, Messaggio
Guida installare account in Outlook Express Introduzione Questa guida riguarda di sicuro uno dei programmi maggiormente usati oggi: il client di posta elettronica. Tutti, ormai, siamo abituati a ricevere
DettagliIl Software. Il software del PC. Il BIOS
Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:
DettagliLA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1
LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliIntroduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6
Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...
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,
DettagliMateriali per il modulo 1 ECDL. Autore: M. Lanino
Materiali per il modulo 1 ECDL Autore: M. Lanino RAM, l'acronimo per "random access memory", ovvero "memoria ad acceso casuale", è la memoria in cui vengono caricati i dati che devono essere utilizzati
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
DettagliUniversità degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica
Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica Il presente esame scritto deve essere svolto in forma individuale in un tempo massimo di 60 minuti dalla sua
DettagliInformazione analogica e digitale
L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione
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
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
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
DettagliOrganizzazione della memoria
Memorizzazione dati La fase di codifica permette di esprimere qualsiasi informazione (numeri, testo, immagini, ecc) come stringhe di bit: Es: di immagine 00001001100110010010001100110010011001010010100010
DettagliSistemi Operativi. 5 Gestione della memoria
Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria
DettagliAutomatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione
Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento
DettagliLaboratorio di Informatica
per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:
DettagliINFORMATICA - I puntatori Roberta Gerboni
1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un
Dettaglifile:///c:/formazione/photoshop-webmaster-uffici/doc/guida-winzip.htm Guida a Winzip
Guida a Winzip Winzip è uno dei programmi più famosi per comprimere file rendendoli meno pesanti (in termini di Byte) e quindi proprio per questa sua caratteristica è uno dei programmi più usati su internet
DettagliUNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA
UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA Tutti gli anni, affrontando l argomento della divisibilità, trovavo utile far lavorare gli alunni sul Crivello di Eratostene. Presentavo ai ragazzi una
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
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
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
DettagliDispensa di Informatica I.1
IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.
DettagliGestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
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
Dettaglirisulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
DettagliIl File System. Il file system
Il File System Il file system Parte di SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti astratti di file:
DettagliParte 1. Vettori di bit - AA. 2012/13 1.1
1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n
DettagliSistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate
MODULO BASE Quanto segue deve essere rispettato se si vuole che le immagini presentate nei vari moduli corrispondano, con buona probabilità, a quanto apparirà nello schermo del proprio computer nel momento
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,
DettagliARCHITETTURA CALCOLATORI: Memoria di massa (o secondaria)
ARCHITETTURA CALCOLATORI: Memoria di massa (o secondaria) Dispositivi per la memorizzazione di grandi masse di dati. I dati memorizzati su questo tipo di memoria sopravvivono all esecuzione dei programmi
DettagliDeterminare la grandezza della sottorete
Determinare la grandezza della sottorete Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host l indirizzo della rete a cui appartiene e l'indirizzo di broadcast. Quando si creano
DettagliIl file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa
Il File System 1 Il file system E quella componente del SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti astratti
DettagliBOZZA. cin per la comunicazione dal dispositivo di input standard, la tastiera, al programma (stream di input standard)
Capitolo 6 Input/output su file BOZZA 6.1 Stream e file L input/output in C ++, in particolare quello su file, avviene tramite stream. stream. Uno stream è un astrazione di un canale di comunicazione,
DettagliIl Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10
Il Software e Il Sistema Operativo Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Cosa Impareremo Programmi e Processi Struttura del Sistema Operativo Sviluppo di Programmi I files e la loro
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
DettagliGUIDA ALLA PROGRAMMAZIONE GRAFICA IN C
GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.
DettagliIstruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)
Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Il software per gli esami ICON può essere eseguito su qualunque computer dotato di Java Virtual Machine aggiornata.
Dettagli[Dimensionare la pagina-creare le tabelle-formattare le tabelle-formattare la pagina
[Dimensionare la pagina-creare le tabelle-formattare le tabelle-formattare la pagina Creare cartelle per salvare il lavoro] Per iniziare dobbiamo imparare a gestire quello spazio bianco che diverrà la
DettagliArchitettura dei computer
Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore (CPU) la memoria principale (RAM) la memoria secondaria i dispositivi di input/output Il processore
DettagliSistemi Web! per il turismo! - lezione 3 -
Sistemi Web per il turismo - lezione 3 - I computer sono in grado di eseguire molte operazioni, e di risolvere un gran numero di problemi. E arrivato il momento di delineare esplicitamente il campo di
DettagliLa memoria - generalità
Calcolatori Elettronici La memoria gerarchica Introduzione La memoria - generalità n Funzioni: Supporto alla CPU: deve fornire dati ed istruzioni il più rapidamente possibile Archiviazione: deve consentire
DettagliArchitettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
DettagliMANUALE MOODLE STUDENTI. Accesso al Materiale Didattico
MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...
DettagliIntroduzione alle tecnologie informatiche. Strumenti mentali per il futuro
Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle
DettagliPrestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.
Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell
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
DettagliInformatica per le discipline umanistiche 2 lezione 14
Informatica per le discipline umanistiche 2 lezione 14 Torniamo ai concetti base dellʼinformatica. Abbiamo sinora affrontato diversi problemi: avere unʼidentità online, cercare pagine Web, commentare il
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso
DettagliInformatica 1 Lezione 1
Informatica 1 Lezione 1 Concetti base: Hardware È l insieme delle parti fisiche, elettroniche e meccaniche che compongono il computer, quali il chip, il mouse, il lettore CDROM, il monitor, le schede,
DettagliAppunti di Sistemi Elettronici
Prof.ssa Maria Rosa Malizia 1 LA PROGRAMMAZIONE La programmazione costituisce una parte fondamentale dell informatica. Infatti solo attraverso di essa si apprende la logica che ci permette di comunicare
DettagliSistemi operativi. Esempi di sistemi operativi
Sistemi operativi Un sistema operativo è un programma che facilita la gestione di un computer Si occupa della gestione di tutto il sistema permettendo l interazione con l utente In particolare un sistema
DettagliTest di informatica. 1504 QUALE TRA I DISPOSITIVI DI MEMORIA ELENCATI HA LA CAPACITÀ PIÙ ELEVATA? a) Floppy disk b) Cd-Rom c) DVD Risposta corretta:
Test di informatica 1501 QUAL È L'UNITÀ DI MISURA PER MISURARE LA CAPIENZA DELL'HARD DISK? a) Bit b) Kbyte c) Gigabyte 1502 CHE COS'È UN BYTE? a) Un insieme di 256 bit b) Un gruppo di 8 bit c) Un carattere
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
DettagliIL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE
IL SISTEMA OPERATIVO Insieme di programmi che opera al di sopra della macchina fisica, mascherandone le caratteristiche e fornendo agli utenti funzionalità di alto livello. PROGRAMMI UTENTE INTERPRETE
DettagliPROVA INTRACORSO TRACCIA A Pagina 1 di 6
PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento
DettagliIl SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)
Il software Software Il software Il software è la sequenza di istruzioni che permettono ai computer di svolgere i loro compiti ed è quindi necessario per il funzionamento del calcolatore. Il software può
DettagliSoftware di base. Corso di Fondamenti di Informatica
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Software di base Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti
DettagliIl sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione
Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia
DettagliProva di Laboratorio di Programmazione
Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare
DettagliArchitettura di un calcolatore
2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von
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
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
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
DettagliCapitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti
Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta
DettagliAll interno del computer si possono individuare 5 componenti principali: SCHEDA MADRE. MICROPROCESSORE che contiene la CPU MEMORIA RAM MEMORIA ROM
Il computer è un apparecchio elettronico che riceve dati di ingresso (input), li memorizza e gli elabora e fornisce in uscita i risultati (output). Il computer è quindi un sistema per elaborare informazioni
DettagliManuale Utente Albo Pretorio GA
Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate
DettagliCPU. Maurizio Palesi
CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore
DettagliUso di base delle funzioni in Microsoft Excel
Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce
Dettaglipuntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
DettagliAnalisi e diagramma di Pareto
Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo
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
DettagliAlgoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
DettagliPROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
Dettagli