La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Fondamenti di informatica 1 parte 5 D.U.1 fondamenti di informatica parte 5 appunti per il D.U. in Ingegneria Informatica, di Telecomunicazioni e di Meccanica,

Presentazioni simili


Presentazione sul tema: "Fondamenti di informatica 1 parte 5 D.U.1 fondamenti di informatica parte 5 appunti per il D.U. in Ingegneria Informatica, di Telecomunicazioni e di Meccanica,"— Transcript della presentazione:

1 fondamenti di informatica 1 parte 5 D.U.1 fondamenti di informatica parte 5 appunti per il D.U. in Ingegneria Informatica, di Telecomunicazioni e di Meccanica, a.a.1999-2000 di anna maria carminelli gregori

2 fondamenti di informatica 1 parte 5 D.U.2 E per emulare la memoria? zLe matrici non bastano: per i dati ci vorrebbe un vettore a dimensione variabile di int ove porre valori interi e poi un altro di float, uno di char …; per gli indirizzi e le istruzioni in linguaggio macchina un altro di unsigned... zinsomma un contenitore (a fisarmonica) di elementi di tipo diverso, non omogenei … zUn tipo di variabile strutturata che permette di mantenere in memoria un insieme di elementi non omogenei e la struct del C e C++ simile al record del Pascal.

3 fondamenti di informatica 1 parte 5 D.U.3 Esempio di struct in C e C++ zstruct studente z{char nome[20]; zchar cognome[25]; zint eta; zfloat peso; zfloat altezza; z}; Concettualmente con la keyword struct si definisce un tipo di tabella non omogenea con elementi di vari tipi che in C e C++ possono essere anche funzioni: cosi fatta la struct introduce la class del C++ … ma questa e un altra storia ! Meo 2 lez. 5 & seg. Meo 2 lez. 5 & seg.

4 fondamenti di informatica 1 parte 5 D.U.4 Esempi di struct (e class) zsi trovano nei prg. in program8: in strutt.c una variabile di tipo struct e usata in C insieme ad un file sequenziale di cui si dira +oltre; zsi NOTI che le variabili di tipo struct sono dichiarate dopo la definizione della struct che fornisce il loro scheletro; zstruct appare cosi come un costruttore di tipi, comune ossia esterno a tutte le function, (come accade per dichiarazioni di nuovi tipi fatte con la frase typedef, e quindi estraibili e posizionabili in un file header). zL accostamento di struct e file e spesso usato per costruire/gestire archivi nel senso indicato in parte 1...… ma questi sono solo cenni.

5 fondamenti di informatica 1 parte 5 D.U.5 L emulazione della C.M. riporterebbe all Hardware zma prima di fare nuovi discorsi, occorrono precisazioni sull uso di array e sulla sinteticita del C e C++. E bene ricordare le 2 versioni della procedura: zvoid strcp(char *s, char *t) /* strcp copia la stringa puntata da t in quella puntata da s */ z{ while ((*s=*t)!=\0) /*fintantoche il contenuto di t assegnato alla cella puntata da s e diverso da \0 (=fine stringa) fai*/ s++; t++}; // + sintetica ?! zwhile (*s++=*t++) // perche manca != \0 ?? z; }

6 fondamenti di informatica 1 parte 5 D.U.6 Frasi sintetiche zQuesto tipo di sintesi e normale nei programmi in C o in C++ ed e utile conoscerla ed abituarcisi per poter leggere programmi C e C++ in circolazione; zsi tratta di compattare alcuni tipi di frasi in una sola. zEs. lettura e calcolo indicate nel progetto logico posto in parte 4 diapo 59: fintantoche il carattere letto non e il punto, aggiungi 1 all elemento che indica la frequenza del carattere letto… ma come si scrive in C o C++ ?

7 fondamenti di informatica 1 parte 5 D.U.7 Sinteticamente … ? zNon e in linea con la sintesi leggere la sequenza di caratteri in un vettore di char e poi analizzare il vettore... Sarebbe comunque corretto farlo se fosse necessario tenere memoria della sequenza di caratteri per altri scopi per es. per successive analisi. Se invece l analisi e solo quella indicata allora: zwhile( (cin >> ch) /* fintantoche ce un ch (carattere) da leggere*/ && ( ch !=.) ) /* e inoltre questo ch e diverso da punto: FAI */...

8 fondamenti di informatica 1 parte 5 D.U.8 In definitiva zil significato di queste considerazioni riguarda l utilizzo di matrici e/o vettori. zE bene usarli solo quando esiste la necessita di tenere memoria dei valori calcolati o letti: se tale necessita manca allora usare il valore corrente (per es. appena letto) per i calcoli ad esso relativi e passare ad altro valore (per es. il successivo).

9 fondamenti di informatica 1 parte 5 D.U.9 Il ritorno all hardware zha lo scopo di introdurre il linguaggio di E.E. zSi ricordi: zC.M. & CPU: indirizzo di ogni locazione di C.M. => in registri della CPU ( es. registro P =Punta- tore, registro I.C.= Instruction Counter...); zContenuto di ogni locazione di C.M. => in altri registri della CPU (per es. A = Accumulatore...); zC.M. (RAM): scandibile e rintracciabile per es. col Registro P : Indirizzi Memoria Registro P; zCPU = Unita Centrale = Unita Elaborativa = MicroProcessore per Personal Computer Mezzalama 2 lez. 18 & seg. Vai a pag. 31 Mezzalama 2 lez. 18 & seg. Vai a pag. 31

10 fondamenti di informatica 1 parte 5 D.U.10 … e la struttura funzionale di EE gia presentata: zTemporizzator e zUnita Centrale di Controllo Unita Aritmetico - Logica zUnita di controllo di I/O zMemoria Centrale zPeriferiche zMemorie di massa z CP U z Registri Flag

11 fondamenti di informatica 1 parte 5 D.U.11 La CPU controlla tutte le operazioni di E.E. zLe operazioni possono essere: zinterne alla CPU (per es. Somma i contenuti di 2 Registri); zesterne come trasferimenti di dati verso la (o dalla) C.M. o verso le (o dalle) interfacce (Controller Unit) dei dispositivi periferici. zNotare: la CPU non invia i dati al dispositivo, ma alla sua interfaccia!

12 fondamenti di informatica 1 parte 5 D.U.12 La CPU lavora zin stretto contatto con la C.M. zLa CPU per svolgere i suoi compiti usa i registri, i Flag (indicatori di stato) e inoltre le Unita di Controllo e Aritmetico-Logica (A.L.U.). I registri piu usati sono: zRegistri P e I.C. (Istruction Counter) per tenere gli Indirizzi, zAccumulatore (A) per i Dati, zRegistro Istruzione (I.R.) per le Istruzioni del linguaggio di macchina.

13 fondamenti di informatica 1 parte 5 D.U.13 CPU: funzionamento ciclico zOgni ciclo della CPU si compone di 3 fasi: fase di fetch ( = prelievo), zfase di decodifica, zfase di esecuzione dell istruzione. zIn ogni fase sono usati alcuni Registri. zLe operazioni relative ad ogni fase sono:

14 fondamenti di informatica 1 parte 5 D.U.14 Prelievo e decodifica zfase di fetch ( = prelievo: uso dei Reg. IC e IR): z1) Esame del Reg. I.C.; z2) Accesso alla locazione di C.M. indirizzata da I.C.; z3) Trasferimento del contenuto della locazione di C.M. in I.R.; zfase di decodifica: (uso del Reg. IR): z4) Interpretazione del contenuto di I.R.; z5) SE non e un' istruzione ALLORA segnalazione ERRORE e STATO DI ATTESA

15 fondamenti di informatica 1 parte 5 D.U.15 Esecuzione istruzione z… altrimenti fase esecuzione: zSE si tratta di un istruzione di salto alla locazione di memoria di indirizzo xxxx allora I.C.= xxxx ed il controllo delle operazioni passa a xxxx e da qui si prosegue in sequenza; zALTRIMENTI: l' istruzione viene eseguita ed e incrementato I.C.= I.C.+(lunghezza istruz.) per passare all istruzione successiva. zSi noti: in assenza di istruzioni di salto esiste un ordinamento sequenziale tra le istruzioni.

16 fondamenti di informatica 1 parte 5 D.U.16 Accesso alla Memoria: zper estrarre info. = leggere dalla Memoria; zper deporre info. = scrivere in Memoria; zOperazioni realizzabili: z a Hardware con codici propri della CPU z a Software con istruzioni di un Linguaggio Artificiale, tradotte nei codici della CPU (ossia nelle Istruzioni del linguaggio della macchina) dal programma traduttore. zEsempio fase di esecuzione con uso del reg. P zSia: Istruzione = Leggi un dato dal disco e ponilo in C.M. all' indirizzo 001 16

17 fondamenti di informatica 1 parte 5 D.U.17 Registro P di 4 bit =>16 byte indirizzabili (qui la freccia sintetizza il contenuto di P) z CPU = Ragnetto z REG. P. z Central Memory z 00 00 z 00 01 z 111 1 z Registro P.= Pointer Accumulat.

18 fondamenti di informatica 1 parte 5 D.U.18 Esempio: continua zC.P.U. pone 001 16 nel Registro P ossia P= 001 16 (cfr. grafico precedente) e passa il controllo all Unita di Controllo della Periferica disco. zQuesta, attivato il lettore che legge il dato (per es. 3.14), lo pone in un proprio registro: da qui e poi trasferito nell Accumulatore ossia A = 3.14 zInfine C.P.U. trasferisce il contenuto di A nella Memoria indirizzata da P ossia Mem(P)=A (cfr. grafico seguente) z

19 fondamenti di informatica 1 parte 5 D.U.19 Registro P di 4 bit => 16 byte indirizzabili z CPU = Ragnetto z REG. P. z Central Memory z 00 00 z 00 01 z 111 1 z Registro P.= Pointer Accumulat. 3.14

20 fondamenti di informatica 1 parte 5 D.U.20 Ancora esempi zAnalogo comportamento se Istruzione = Visua- lizza un dato su video … Se poi Istruzione = Somma i dati delle locazioni di indirizzo 555 16 e 123 16 e metti il risultato in C.M. all' indirizzo 666 16 allora C.P.U. effettua le operazioni seguenti dove => significa sposta: z555 16 => P zMem(P) => A (per es. 8917 10 => A) z123 16 => P zA+Mem(P) => A (per es. 8917 10 +89 10 => A) z666 16 => P zA => Mem(P)

21 fondamenti di informatica 1 parte 5 D.U.21 Deduzioni logiche zCosa vogliono evidenziare i precedenti esempi? z1) ogni accesso in C.M. avviene con il deposito in un registro di CPU (I.C., P, …) dell indirizzo della locazione (cella, byte, voce …) di C.M; z2) ogni insieme di istruzioni (ossia ogni programma) per essere eseguito deve risiedere in C.M. z3) se un salto rimanda ad un indirizzo dove non ce un istruzione, ma un dato: ERRORE!

22 fondamenti di informatica 1 parte 5 D.U.22 Le istruzioni zdel linguaggio macchina sono praticamente comandi in codice. Il codice e quello capito dalla CPU di E.E. con comandi indicati con sigle, da immaginare in binario. zPer es. somma avra il codice ADD z poni in memoria STORE z carica in un registro LOAD z salta (branch) B zsalta e torna indietro(back) BB zconfronta (compare) avra il codice CMP zetc.

23 fondamenti di informatica 1 parte 5 D.U.23 Il formato delle istruzioni zdel linguaggio della macchina varia da C.P.U. a C.P.U. col vincolo che ogni istruzione deve poter stare nel registro I.R. della C.P.U. per essere decodificata e poi eseguita. Il numero dei bit di I.R. varia da C.P.U. a C.P.U…. zSe per es. IR ha 32 bit allora si potrebbero usare: 8 bit per il codice operativo (leggi, scrivi, somma …), 4 bit indicare il supporto, 4 bit il tipo di indirizzamento ( immediato, diretto, indiretto ) e 20 bit per indirizzare la memoria o altro. zSegue un esempio in un ipotetico linguaggio macchina.

24 24 Come fare la somma S= i = 3 in linguaggio macchina ? zIn C++ : { int somma =0; zfor (int i=0; i<8; i=++) somma = somma+3;} zIn ling.macchina le addizioni si fanno in A=Acc. per gli indici si usano i Registri e cosi a parole: z Azzera A e Carica in Reg. 1 0 zCOME Confronta Reg. 1 con 8 z Se sono uguali salta a VIA z (se no) Aggiungi ad A 3 z Incrementa Reg. 1 di 1 z Salta a COME zVIA Memorizza A in S (A => Mem(S)) z

25 fondamenti di informatica 1 parte 5 D.U.25 E quindi: z CLEAR A z LOAD R 1 #0 zCOME CMP R 1 #8 ( se il compare da 0 Flag Zero =1 ) z BZ VIA (salta a VIA se Flag Zero =1) z ADD A #3 z INC R 1 (incrementa di 1 R 1 ) z B COME zVIA STORE A ADDR S (--> ADDR S => P && A => Mem(P))

26 fondamenti di informatica 1 parte 5 D.U.26 o anche e meglio (con 1 istr. in meno): z CLEAR A z LOAD R 1 #7 zCOME ADD A #3 z DEC R 1 ( decrementa di 1 R 1 : quando R 1 = 0. Flag Zero =1 ) z BZ VIA (salta a VIA se Flag Zero =1) z B COME zVIA STORE A ADDR S

27 fondamenti di informatica 1 parte 5 D.U.27 BUS zTra le unita di E.E. viaggiano dati e indirizzi … z DOVE? Nei BUS ! zBUS = l' insieme dei collegamenti (cavi e connettori) tra C.P.U. e le altre componenti su cui sono trasferiti le informazioni in parallelo a pacchetti di n bit zBUS indirizzi => n da 8 a 20 bit e zBUS dati => n da 8 a 64 "

28 fondamenti di informatica 1 parte 5 D.U.28 Memoria di massa : zFunzione: uguale, ma Tecnologia di tipo magnetico... zCaratteristica: permanenza zTempo di accesso: (dipende dal tipo) 10-100msec. (enorme divario con la C.M. !!!) zSupporto: disco fisso, dischetto, nastro, C.D.... zLettura/scrittura: Unita di Lettura/scrittura dotata di una testina apposita.

29 fondamenti di informatica 1 parte 5 D.U.29 Tipo di accesso: zsequenziale e, per dischi, diretto o casuale (random) tramite gli indirizzi di settore e traccia creati con l' operazione di formattazione (cfr.parte 2) che divide il disco in tracce ed ogni traccia in settori a partire da punti di riferimento. RICORDARE che la Formattazione annulla il contenuto preesistente! PERICOLO! zCapacita dei dischetti: 360, 780, 1200 Kbyte e oltre zCapacita dei dischi: da 10 Mbyte a 10 Gigabyte zCapacita dei nastri: da 100 Kbyte a 200 Mbyte

30 fondamenti di informatica 1 parte 5 D.U.30 Sistema video (periferiche): zcostituito da un display e da una scheda grafica ha 2 modalita di funzionamento: alfanumerica (p.e. 25righe x 80colonne di testo) grafica con necessita di un software pilota (=driver) della scheda grafica posto in un file con estensione.BGI che permette diverse modalita, risoluzioni … num. di colori; zelemento base: PIXEL (PIcture ELement) in un raster o matrice (griglia) di PIXEL (1280x1024; …) usabili singolarmente in alta risoluzione, a gruppi in bassa risoluzione.

31 fondamenti di informatica 1 parte 5 D.U.31 Comunicazioni tra elaboratori zSi basano su strumenti Hard./Soft. che permettono di collegare elaboratori di vari tipi in reti locali (LAN) e geografiche (WAN); zoccorrono dispositivi di interfaccia tra elaboratori (p.e. schede di rete) e protocolli (regole) di comunicazione; zsi puo anche usare la rete telefonica con l uso del modem dispositivo che permette di convertire il segnale analogico (voce) a segnale digitale (bit) e viceversa.

32 fondamenti di informatica 1 parte 5 D.U.32 E inoltre … zparlando di comunicazioni, il mezzo piu semplice per trasferire qualunque informazione sia da C.M. a memoria di massa sia tra Elaboratori di tipo diverso resta il file tipo testo sequenziale memorizzato su memoria di massa. zNel file tipo testo i byte sono interpretati come caratteri (in altri file binari ogni byte e considerato come 8 bit di un dato binario, per es. float); zI file tipo testo possono essere usati in lettura, scrittura e aggiornamento.

33 fondamenti di informatica 1 parte 5 D.U.33 Come si costruisce un file tipo testo in C, C++ ? zOccorre usare le librerie e le funzioni giuste … ma comunque sempre le informazioni al / dal file sequenz. sono trasferite a blocchi, 1 blocco per volta, da / a una zona di C.M. che funge da tampone o buffer (= interfaccia tra i 2 tipi di memoria) e da qui smistate ( Cfr. parte2, file & C.M. ) zIl C e C++ considerano un file sequenziale come un flusso (stream) o successione continua di byte proveniente da/inviata a memoria di massa (analogia con cin e cout). Per gestirlo pero usano procedure diverse.

34 fondamenti di informatica 1 parte 5 D.U.34 Tipi di File zI file si distinguono in sequenziali e ad accesso diretto o casuale (random qui non trattati). zLa differenza sta nella struttura del file: zconcettualmente il file sequenziale si puo assimilare ad una successione di informazioni dove per raggiungere l informazione i-esima occorre leggere le precedenti i-1; zil file ad accesso diretto si puo assimilare ad una tabella dove per mezzo di un indice si puo raggiungere qualunque informazione direttamente.

35 fondamenti di informatica 1 parte 5 D.U.35 Gestione di file sequenziali zIl C usa le funzioni i cui prototipi sono dichiarati in stdio.h e una struttura FILE anche definita in stdio.h e accessibile con puntatori definiti nel programma-utente. ( La struttura FILE contiene al suo interno anche puntatori al buffer. ) Il collegamento con il file fisico si ottiene con la funzione fopen che associa il nome del file al puntatore a FILE dichiarato nel programma utente: lo definisce. zI nomi delle altre funzioni utilizzate sono: fscanf, fprintf (analoghe a scanf e printf) per leggere informazioni e registrarle. Dove ?

36 fondamenti di informatica 1 parte 5 D.U.36 …dove ? zLettura e registrazione avvengono sul file aperto e identificato tramite il puntatore a FILE definito con la fopen che fa il collegamento con il file fisico. Tale collegamento e terminato dalla fclose che lo chiude quando il file non serve piu. zVedere i programmi in C che usano le funz. prototipate in stdio.h per costruire un file ( mat2 e strutt ) ed i programmi per leggerlo ( fileper, filequa ) tutti in program8.

37 fondamenti di informatica 1 parte 5 D.U.37 Uso di header file fstream.h zIl C++ usa le funzioni con prototipi dichiarati in fstream.h dove sono anche definiti nuovi tipi di dati (classe fstream con sottoclassi) come per es. il flusso di input e il flusso di output (ifstream, ofstream) da/a un file. zIncluso fstream.h nel programma si deve definire una variabile flusso e poi collegarla con un file fisico presente su disco (quindi da leggere) o col file da creare (registrare) su disco o da aggiornare.

38 fondamenti di informatica 1 parte 5 D.U.38 apertura del file zQuesta operazione di collegamento si chiama apertura del file e richiede l indicazione sul tipo di gestione del file: lettura, scrittura, aggiornamento ? zIl C++ fornisce ifstream come tipo di flusso di input e ofstream come tipo di flusso di output (seguono esempi); per l aggiornamento si usa invece un altra specifica qui non trattata.

39 fondamenti di informatica 1 parte 5 D.U.39 Lettura file sequenziale in C++ zPer leggere il file numeri.txt si puo scrivere: z… int n, elabora(int); zifstream fi; // fi=var. tipo flusso input zfi.open(numeri.txt); /* si richiede di aprire il file numeri.txt e di collegarlo a fi */ zif (!fi) // se fi = 0 l apertura e fallita z{ cout<< non trovo il file<<endl; exit(1); } zelse while (!fi.eof) { fi >> n; /* finche non trovi EOF, leggi, poni in n e visualizza n e il risultato*/ zcout <<\nN=;<<n<< Ris=<< elabora(n);} zfi.close //si richiede di chiudere il file numeri.txt z...

40 fondamenti di informatica 1 parte 5 D.U.40 Costruzione file sequenziale zPer registrare nel file risult.ati una sequenza di interi in C++ si puo per esempio scrivere : z… int i, elabora(int), n [100]; /* si pensi ad inizializzare il vettore n con un for... */ zofstream fa; // fa=var. tipo flusso output zfa.open(risult.ati); /* si richiede di aprire il file risult.ati e di collegarlo a fa */ zif (fa) // se fa = 1 il file gia esiste zcout<<il file gia esiste: lo copro<<endl; zfor (i =0; i<99; i++) fa << n[i]<<endl; /* con endl si registra un numero per linea (=record !) */ zfa.close //si richiede di chiudere il file z...

41 fondamenti di informatica 1 parte 5 D.U.41 Altri esempi zVedere il programma ( filepe ) in C++ che usa le funzioni con i prototipi in fstream.h per leggere un file ed i programmi (fileper, strutt ) in C per costruire invece altri file, tutti in program8. zIl programma strutt usa una tabella di struct definita (in questa anteprima) come variabile globale per semplicita nell attivazione di sottoprogrammi. zPer strutture locali il passaggio da sottopr. chiamante a chiamato avviene per indirizzo usando un puntatore alla struct da passare.

42 fondamenti di informatica 1 parte 5 D.U.42 Argomenti del main zPer trasmettere ad un programma C o C++ informazioni (per es. il nome del file di lavoro) si usano i parametri della main function che finora era sempre scritta main(). La main function ha 2 forme di intestazione: zint main() zint main(int argc, char* argv[]) zdalle quali si nota che il valore di ritorno e int (come quello indicato nella frase return (0) !!).

43 fondamenti di informatica 1 parte 5 D.U.43 main zNella seconda forma si notano: int argc che e il numero di parametri trasmessi, char* argv[] che e un vettore di puntatori a stringhe= nomi dei parametri trasmessi. zIn argv[0] c e il puntatore al nome del programma, primo argomento presente sulla linea di attivazione del programma stesso; nei successivi ci sono puntatori alle stringhe che sono gli altri argomenti presenti sulla linea di attivazione del programma stesso. Es. linea di attivazione: fileper.exe dati.per

44 fondamenti di informatica 1 parte 5 D.U.44 Grafica zCapitolo importante della programmazione, ma qui solo un accenno indicativo: vedere e capire il programma fileper che disegna 2 rettangoli uno col solo perimetro, l altro colorandolo dopo aver letto le lunghezze dei lati da un file. zNOTA: per far funzionare il prg. assicurarsi che nel direttorio di lavoro dove e il file EXE ci sia il software pilota (=driver) della scheda grafica (file con estensione.BGI)

45 fondamenti di informatica 1 parte 5 D.U.45 Fileper & Filepe zsono esempi di programmi con uso della grafica ed un file di dati da leggere con le librerie il primo del C, il secondo del C++. Il file-name (per es. dati.per) e fornito in argv[1]: analizzare, far funzionare, modificare … FARE ! zUltimo esempio e contator.cpp, contator.h, conta.cpp con uso delle classi … come indicato. zPer imparare occorre FARE e poi provare e riprovare … zfine.

46 fondamenti di informatica 1 parte 5 D.U.46 Appendice: perplessita zRICORDARSI: l operatore >> preleva un dato dal un flusso di input: che tipo di dato? Il tipo che e stato dichiarato: char, int, float,... z2) RICORDARSI: non abusare di matrici e/o vettori; usarli solo quando esiste la necessita di tenere memoria dei valori calcolati o letti: se tale necessita manca allora usare il valore letto per i calcoli necessari e passare al successivo. z3) RICORDARE: il pilota (=driver) della scheda grafica posto in un file con estensione.BGI deve stare nel direttorio di lavoro ove sono i file EXE.


Scaricare ppt "Fondamenti di informatica 1 parte 5 D.U.1 fondamenti di informatica parte 5 appunti per il D.U. in Ingegneria Informatica, di Telecomunicazioni e di Meccanica,"

Presentazioni simili


Annunci Google