La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


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

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

2 fondamenti di informatica 1 parte 4 D.U.2 zNella sintassi delle frasi if, while et similia compare una condizione o asserzione logica che puo essere vera (True) o falsa (False). Sono due possibili valori di stato che vengono assunti da una qualsiasi asserzione logica nel caso che essa si verifichi o no. Potendo contrassegnare un asserzione logica con un identificatore di variabile, questa assumera il valore vero se l asserzione logica si verifica, falso in caso contrario. Pero il significato della variabile diventa quello di una variabile logica

3 fondamenti di informatica 1 parte 4 D.U.3 Il discorso quindi zsi apre verso una nuova direzione che e la logica, trattata da molteplici studiosi ed autori gia nel periodo greco-romano (1 es. Aristotele) zLa logica matematica studia i possibili mezzi matematici atti a descrivere la logica delle proposizioni. Tra i suoi studiosi c e per esempio il filosofo Leibnitz. Un logico- matematico molto importante e George Boole che nel 1847 publico un trattato di logica matematica che da lui prese il nome di Algebra di Boole. zA questo tipo di algebra ci introducono anche:...

4 fondamenti di informatica 1 parte 4 D.U.4 Gli operatori logici del C e C++ : zNegazione not ! zProdotto logico and && zSomma logica or || zIl loro significato sara chiarito proprio dall algebra di Boole ed anche dall esempio seguente che puo facilitarne l introduzione. L es. si riferisce al prg. While1 che converte minuscole in maiuscole. La frase if che li si usa e la seguente:

5 fondamenti di informatica 1 parte 4 D.U.5 and => e inoltre zif (car>=a) z{if (car<=z) putchar (car+A-a) } zelse putchar (car); zSignificato di questa frase: se car e compreso nellintervallo a-z allora scrivi car dopo averlo convertito in maiuscolo se no scrivilo cosi come e. Con gli operatori logici la frase puo essere cosi riscritta: zif ((car>=a) && (car<=z)) z putchar (car+A-a) zelse putchar (car); Si deduce dunque che:...

6 fondamenti di informatica 1 parte 4 D.U.6 il collegamento tra espressioni relazionali zpuo avvenire con operatori logici in modo da costruire espressioni logiche. zPreciso significato logico dell operatore && di collegamento nellesempio precedente: zse car >a e inoltre car < z allora convertilo. zL espressione car >a && car < z e di tipo logico. Il C e C++ non prevedono alcun tipo di dato logico, ma lo fanno corrispondere al tipo int con i 2 valori True=vero e False=falso rappresentati da 0 per False e 1 per True.

7 fondamenti di informatica 1 parte 4 D.U.7 Il significato zdegli operatori logici del C e C++ e il seguente: zNegazione not ! => opposto di zProdotto logico and && => e inoltre zSomma logica or || => oppure zLe costanti logiche True=Vero=1 e False=Falso=0 (che puo assumere ogni variabile e/o espressione logica) sono tipiche dell algebra di Boole.

8 fondamenti di informatica 1 parte 4 D.U.8 Algebra di Boole zL idea di G. Boole era quella di automatizzare il ragionamento. Punto di partenza del suo discorso sono le proposizioni con significato di osservazioni e/o asserzioni logiche. Es. Oggi piove; Prendo un taxi; Sono ricco; Socrate e un uomo;.…Di ciascuna di queste si puo dire che e vera o falsa. (Quali altre non hanno questo significato? Per es. le ingiunzioni: Non uscire!) zAd ogni asserzione logica si puo' associare una variabile a 2 valori (binaria) contenente uno dei 2 valori Vero o Falso, (True, False), 1 o 0. Si tratta delle variabili booleane o logiche.

9 fondamenti di informatica 1 parte 4 D.U.9 True e False zsono le 2 uniche costanti logiche dell algebra di Boole con valori: False = 0 True =1 zLe variabili booleane o logiche sono simili alle variabili numeriche usate nell algebra classica, ma possono assumere solo questi 2 valori ossia sono binarie. Oggetto dell algebra di Boole sono insiemi di variabili con nomi diversi e contenenti 1 o 0. zSulle 2 entita 1 e 0 si possono introdurre le 3 operazioni basilari dell algebra di Boole.

10 fondamenti di informatica 1 parte 4 D.U.10 Operazioni di base dell algebra sono: zil prodotto logico, zla somma logica, zla complementazione o negazione. zLa definizione di ogni operazione avviene tramite una tabellina: in quelle del prodotto e della somma compaiono 2 variabili indipendenti ed 1 variabile dipendente che contiene il risultato; in quella della negazione la variabile indipendente e solo una.

11 fondamenti di informatica 1 parte 4 D.U.11 Tabelline di Prodotto e Somma zX Y X Y con X e Y var. indipend. e X Y var. dipend. z0 0 0 z1 0 0 z0 1 0 z1 1 1 zX Y X+Y con X e Y var. indipend. e X+Y var. dipend. z0 0 0 z1 0 1 ARITMETICA ELEMENTARE, MA PARTICOLARE z0 1 1 perche 1 e il tetto oltre il quale non si va !!! z1 1 1

12 fondamenti di informatica 1 parte 4 D.U.12 Tabellina di negazione e … funzioni elementari ! zA not (A)=Ā con A var. indipend. e not(A) var. dipend. z0 1 not (A) e indicata anche con A barrato z1 0 ossia A negato o -A zOgni operazione puo essere considerata come una funzione elementare di 1 o 2 variabili zG.Boole, evidenziando la correlazione tra le var. binarie e le proposizioni logiche associabili ad esse, sottolinea come anche le operazioni booleane su tali proposizioni logiche assumono un significato logico.

13 fondamenti di informatica 1 parte 4 D.U.13 Significato logico delle operazioni booleane (esempi) zOperazione logica congiunzione = and = e inoltre zPiove Ho soldi Prendo taxi z X Y X Y z z z z zOper. logica complementazione Fa freddo Non Fa freddo zse la var. vale 1 il risultato e 0 A not (A)=Ā z z 1 0

14 fondamenti di informatica 1 parte 4 D.U.14 Operazioni algebriche ==> operazioni logiche zOperazione logica disgiunzione = or = + = oppure zPiove Fa fresco Metto impermeabile z X Y X + Y z z z z zAltro esempio: sia b = oggi piove ed e tempo brutto; z c = oggi e tempo bello; zse b = true (=1) deve essere c = false (=0) e viceversa, e poi non puo essere che sia b=c=true z

15 fondamenti di informatica 1 parte 4 D.U.15 Conclusioni: z1 a conclusione: l A.d.B. definisce operazioni di tipo matematico che permettono di interpretare operazioni logiche; z2 a conclusione: gli operatori dell A.d.B. possono effettuare automaticamente le proposizioni logiche tipiche dell intelligenza umana … primo passo verso la programmazione logica (Prolog); z3 a conclusione: data la semplicita dell A.d.B. e possibile l automazione dei suoi calcoli con circuiti elettronici.

16 16 Come si traducono le operazioni dell A.d.B. in C++ zSi definiscono le costanti True e False. In C e C++ la definizione puo avvenire in diversi modi dei quali uno usa la direttiva al precompilatore: z#define True 1 // potrebbe anche essere >1 ? z#define False 0 zLe variabili logiche sono intere e si puo usarle normalmente: ES. int ripeti = True; cfr. ripeleg zStabilito che True = 1 si capisce il significato del ciclo infinito while(1) ed anche alcune condizioni cosi poste: if (ch=getchar()) fai(bip); …. O NO ? Se NO cfr. in program6 Tasto.cpp

17 fondamenti di informatica 1 parte 4 D.U.17 Gli operatori logici del C e C++ z(come gia visto) collegano le variabili logiche o le espressioni relazionali e permettono di ottenere cosi un espressione logica. zComplementazione not ! zProdotto logico and && zSomma logica or || zEs. di uso in while2, switch4 zCon questi operatori o simili, ma di uguale significato, il C, C++ e gli altri linguaggi di programmazione come il Pascal, il Basic,... possono essere usati per costruire programmi con analisi di tipo logico (per es. gli Expert System per le diagnosi automatiche.)

18 fondamenti di informatica 1 parte 4 D.U.18 A proposito della variabile logica da usare in switch4 zQuando la funzione menu() viene attivata nella frase switch e giusto che richiami la funzione leggi(n) in quanto n deve dirottare il controllo al caso ennesimo; invece quando la funzione menu() viene attivata nelle 2 funzioni di elaborazione non occorrera una nuova lettura purche n sia ancora disponibile. Questo e il punto: n e ancora disponibile? NO se in menu non si dichiara: zstatic int n;

19 fondamenti di informatica 1 parte 4 D.U.19 Significato delle variabili automatiche e statiche zIn C e C++ ogni variabile e caratterizzata oltre che dal tipo dalla classificazione rispetto alla sua allocazione in memoria ed alla sua durata. Le variabili finora trattate sono chiamate automatiche perche iniziano ad esistere (sono allocate in memoria) quando la funzione in cui sono definite e attivata e spariscono all uscita dalla funzione, non conservando il loro valore tra una attivazione e l altra. Per conservarlo devono essere dichiarate static: senza questo attributo sono automatiche. zMeo 1 lez.33

20 fondamenti di informatica 1 parte 4 D.U.20 Static => protezione zTutte la variabili (locali o globali) definite static sono create ed inizializzate prima che il main inizi l esecuzione e sono distrutte solo al termine dell esecuzione del main program: la loro inizializzazione e eseguita una sola volta, se manca sono inizializzate a 0. zUna var. globale (o esterna) static e visibile e usabile all interno delle funzioni definite nello stesso file sorgente in cui essa e definita, ma diventa invisibile ad altri file, a sua protezione

21 fondamenti di informatica 1 parte 4 D.U.21 Conclusione per menu() zPer salvare il valore di n letto solo la prima volta bisogna dichiarare n non solo int ma anche static e quindi scrivere menu come in switch5: zint menu (int attiva) /* attiva param. formale di tipo logico che deve essere True solo al primo richiamo e False ai richiami successivi*/ z{static int n; // n inizializzata a 0 zif (attiva) leggi(&n) /*se attiva = True in n va il valore digitato che resta immutato fino a nuova lettura che non si verifica se attiva = False */ zreturn n; }

22 fondamenti di informatica 1 parte 4 D.U.22 A.d.B. e dualita zL A.d.B. si puo definire in modo molto rigoroso introducendo il concetto di reticolo caro ai matematici. In questo approccio elementare si introdurrano solo le Proprieta delle operazioni logiche. In primis: l operatore + si dice duale dell operatore. l elemento 0 duale dell elemento 1 e vale la seguente legge di dualita: zda qq. identita booleana se ne puo trarre un altra per dualita sostituendo a ogni operatore e agli elementi 0 e 1 i rispettivi duali.

23 fondamenti di informatica 1 parte 4 D.U.23 Proprieta delle operazioni logiche: si dimostrano con le ztabelle di verita e sono estensibili a n variabili. z1) associativa della somma: z (A+B)+C = A+(B+C) zNOTA: la somma di 2 o piu variabili assume il valore 0 solo se tutte la var. sono 0 e assume 1 negli altri casi z2) associativa del prodotto: z (A B)C = A(BC) zNOTA: il prodotto di 2 o piu variabili assume il val. 1 solo se tutte la var. sono 1 e assume 0 negli altri casi

24 fondamenti di informatica 1 parte 4 D.U.24 Proprieta delle operazioni dell Algebra di Boole z3) doppia negazione: z not (not A) = A z4) distributiva del prodotto: z A (B+C) = AB + AC z5) distributiva della somma: z A+(BC) = (A+B)(A+C) (piove o (fa freddo e inoltre ce vento) = (piove o fa freddo) e inoltre (piove o ce vento)) z6) assorbimento z AA = A A+A = A z7) proprieta del complemento: A+Ā =1

25 25 Proprieta fondamentali & Legge di de Morgan: znot (A+B) = not(A)not(B) il negato della somma logica = prodotto dei negati (ossia il negato di piove o fa fresco = non piove e inoltre non fa fresco) zduale: not(AB) = not(A) + not(B) zLegge di de Morgan estesa: (chiarisce la dualita ) zse in un espressione booleana si sostituisce ogni variabile col suo complemento, ogni operatore + con loperatore prodotto, ogni operatore prodotto con loperatore + si ottiene il complemento dell espressione data.

26 fondamenti di informatica 1 parte 4 D.U.26 Operazioni algebriche ==> circuiti logici zCome si e gia visto, ogni operazione eseguibile su variabili booleane (somma, prodotto, complementazione ed altre da questa deducibili) puo' essere definita tramite una tabella con variabili indipendenti e dipendenti detta tabella di verita. zE per ciascuna di queste tabelle di verita' esiste il corrispondente circuito elementare …=>Importanza delle tabelle di verita

27 fondamenti di informatica 1 parte 4 D.U.27 Tabelle di verita delle Operazioni fondamentali zche sono: not z or z and z xor or esclusivo z nand and negato z nor or negato zPer le tabelle ed i corrispondenti circuiti elementari (detti porte logiche) vedere il lucido tratto dal Bishop ed esteso. zMeo 1 lez.9 e seg.

28 fondamenti di informatica 1 parte 4 D.U.28 Realizzazione circuitale del calcolo binario zPer rappresentare grandezze binarie si usa di norma la tensione elettrica come grandezza di riferimento con valori convenzionali: alto =1 basso =0. zUn circuito elettronico elementare che rappresenti un operazione dell A.d.B. e detto porta (gate). Esso riceve in ingresso uno o due impulsi elettrici da 1 o da 2 punti di ingresso e fornisce 1 uscita nel punto di uscita: le tensioni sui 2 punti di ingresso rappresentano i valori delle variabili indipendenti; la tensione sul punto di uscita il valore della variabile dipendente.

29 fondamenti di informatica 1 parte 4 D.U.29 Grafici dei circuiti elementari = porte zI simboli dei circuiti elementari sono nel lucido tratto dal Bishop: si riconoscano le varie operazioni trattate per es. AB (ossia A and B) come e rappresentata ? e A+B ? zIn ogni circuito elettronico di E.E. sono utilizzate le porte. zI circuiti logici ottenuti combinando le porte logiche corrispondono a funzioni dell A.d.B.

30 fondamenti di informatica 1 parte 4 D.U.30 Funzioni di variabili booleane zCon solo 2 valori discreti (e non un' infinita' di valori continui come 0.001, 0.011, … ) anche le Funzioni dell A.d.B. si possono rappresentare in forma tabellare. zPer esempio siano 2 variabili booleane A, E col significato di: zA = oggi piove; E = ho l' ombrello; la funzione f(A,E) (col significato di: f(A,E) = esco in auto), si potra' scrivere cosi: zA E f(A,E) z0 0 0 oggi piove=ho lombrello=esco in auto=falso z1 0 1 vero falso vero z0 1 0 etc. z1 1 1

31 fondamenti di informatica 1 parte 4 D.U.31 Tabelle di verita' delle f(x,y) zLa tabella precedente e' la tabella di verita' della funzione f(A,E). La sua espressione booleana si costruisce "elencando" tutte le condizioni che portano f(A,E) ad assumere valore VERO. zNell esempio: f(A,E) e vera (ossia esco in auto) se A e vera e inoltre E e falsa (oggi piove e non ho l ombrello) oppure se A e vera e inoltre E e vera (oggi piove e inoltre ho l ombrello). ANCHE: f(A,E) e vera se A e vera e inoltre Ē e vera oppure se A e inoltre E sono vere.

32 fondamenti di informatica 1 parte 4 D.U.32 L espressione booleana di f ze quindi: f(A,E) = AĒ + AE zQuesto e il modo di costruire l espressione booleana di una qualunque funzione f(X,Y,Z …) dove X, Y, Z… sono variabili booleane. z(L "elenco" di tutte le condizioni che portano f ad assumere valore VERO e costruito dall' analisi di tutti i possibili valori attribuibili alle variabili che si evidenziano bene nella tabella della verita...)

33 fondamenti di informatica 1 parte 4 D.U.33 Semplificazione zL espressione ottenuta puo poi essere tradotta in un circuito logico equivalente: prima pero e meglio semplificarla applicando le fondamentali proprieta dell' algebra di Boole. zSi arriva ad un' espressione booleana semplificata che si traduce in un circuito logico piu semplice e quindi piu economico di quello che si otterrebbe utilizzando l' espressione non semplificata.

34 fondamenti di informatica 1 parte 4 D.U.34 Esempio: zA E U f z z z z z z z z z A parole: z f e VERA se A,E,U sono tutte FALSE oppure se A e E sono FALSE e inoltre U e VERA oppure se A,E,U sono tutte VERE oppure se A e inoltre U sono VERE e inoltre E e FALSA.

35 fondamenti di informatica 1 parte 4 D.U.35 Semplificazione zL' espressione booleana corrispondente e: zf= ĀĒŪ + ĀĒU + AĒU + AEU 1 a espressione da semplificare z1 o passo ĀĒŪ + ĀĒU = ĀĒ (Ū+U) = ĀĒ proprieta dist. del prodotto e del complemento (U+ Ū)=1 z2 o passo AĒU + AEU = AU(E+Ē) = AU proprieta dist. del prodotto e del complemento (E+Ē)=1 zQuindi: zf= ĀĒ + AU

36 fondamenti di informatica 1 parte 4 D.U.36 Il circuito corrispondente z(molto piu semplice di quello relativo all espressione non semplificata) e elementare: zi 2 segnali A e U entrano direttamente in una porta AND mentre i segnali A e E prima di entrare in una porta AND devono essere complementati o possono entrare direttamente in una porta NOR. Riflettere su questo: per quale legge ? Le uscite delle 2 porte AND e NOR entrano poi in una porta OR da cui esce il segnale risultante, valore della f(A,E,U).

37 fondamenti di informatica 1 parte 4 D.U.37 Conclusioni: zi circuiti logici che si ottengono combinando le porte logiche, corrispondono a funzioni dell' algebra booleana ciascuna caratterizzata da una Tabella di Verita e rappresentata da un' espressione. zL espressione si semplifica usando le relazioni fondamentali, per es. la proprieta distributiva del prodotto: A(B+C) = AB + AC; zo la proprieta distributiva della somma: A+(BC) = (A+B)(A+C); zo …

38 fondamenti di informatica 1 parte 4 D.U.38 La semplificazione si ottiene zanche usando la proprieta di assorbimento: zA+A = A; zAA = A zo le leggi di de Morgan, di dualita … zSi otttengono cosi i zCircuiti logici Combinatori che hanno la caratteristica di essere "smemorati": zi valori di uscita sono funzione dei soli valori di ingresso in un dato istante.

39 fondamenti di informatica 1 parte 4 D.U.39 Altro tipo di circuiti logici sono i circuiti sequenziali zcon memoria: i valori di uscita sono funzione dei valori di ingresso e dello Stato del circuito. zPer Stato di un sistema si intende in generale il valore della situazione in cui il sistema si trova. zEsempio del prof. Mezzalama e il sistema "apriporta a 2 Stati: porte aperte-porte chiuse e relativi comportamenti diversi. zEsempio tipico di Circuiti Combinatori e il Decodificatore; di Circuiti Sequenziali e il Registro di Memoria detto Flip-Flop. zTutti questi Circuiti si trovano nella CPU di E.E.

40 fondamenti di informatica 1 parte 4 D.U.40 Decodificatori zPer la conversione dei dati da un formato all' altro sono necessari appositi DECODIFICATORI. zUn semplice esempio di DECODIFICATORE elementare e formato da un circuito con 2 morsetti di ingresso (su cui scrivere un codice da 0 a 3) e 4 morsetti di uscita di cui solo uno deve essere attivo in un certo istante. Il codice scritto sui 2 morsetti di ingresso indica il morsetto di uscita che si vuole rendere attivo nell' istante considerato. Queste sono le specifiche del circuito DECODIFICATORE.

41 fondamenti di informatica 1 parte 4 D.U.41 L esempio di decodificatore zpresentato appare inizialmente come una scatola nera qui sotto rappresentata che per ogni segnale di input ha un segnale di output. z A _____ ______0_ z ______1_ z E _____ ______2_ z ______3_

42 fondamenti di informatica 1 parte 4 D.U.42 Sui morsetti di ingresso si scrive un codice con: zsegnale su: A E z 0 0 basso su A basso su E z 0 1 " " " alto " " z 1 0 alto " " basso " " z 1 1 " " " alto " " zDei morsetti di uscita solo uno deve essere attivo in un cero istante. zIl circuito attua quattro funzioni booleane distinte.

43 fondamenti di informatica 1 parte 4 D.U.43 Per ciascuna funzione booleana di uscita zsi puo scrivere una tabella di verita. Per es. per l'uscita 0 si ha: A E USC.0 z z z z zDalla prima riga della tabella si deduce: USC.0 = ĀĒ quindi il DECODIFICATORE prima visto come una scatola nera contiene al suo interno circuiti formati da porte anche NOR: in una di queste entrano i segnali A ed E (teorema di de Morgan).

44 fondamenti di informatica 1 parte 4 D.U.44 Sintesi di circuiti zSi e arrivati alla sintesi del circuito USC.0 tramite l' ispezione della tabella della verita che descrive la funzione logica USC.0 per ogni combinazione di valori delle due variabili A e E. E' questa una tecnica usata per la sintesi di circuiti combinatori semplici; la sintesi di ogni circuito combinatorio complesso si ottiene con la descrizione delle funzioni (= operazioni) che il circuito stesso deve realizzare. La descrizione viene espressa in un linguaggio simile ad un linguaggio di programmazione. (Corso di Reti logiche)

45 fondamenti di informatica 1 parte 4 D.U.45 Perche ? zLispezione delle tabelle di verita che descrivono funzioni logiche per ogni combinazione di valori delle variabili di ingresso, diventa pesante all aumentare del numero N delle variabili. Il numero delle righe di una tabella di N var. e pari a 2 N (num. di combinazioni diverse) ossia di tipo esponenziale e quindi al crescere di N (= 10, 20, 30...) si deve usare un altro metodo.

46 fondamenti di informatica 1 parte 4 D.U.46 Flip-Flop Set-Reset = FF_SR zCircuito elementare di memoria che memorizza un BIT = BInary digiT = cifra binaria => informazione elementare zE realizzato con 2 porte NOR retroazionate come si vede nel grafico fornito tratto da Meo, Mezzalama... zE detto anche multivibratore bistabile … zDomanda: che tipo di circuito e ?

47 fondamenti di informatica 1 parte 4 D.U.47 Q= STATO del SISTEMA circuito: o 0 o 1 zSe in ingresso S = R = 0 risulta z se Q=0 allora not(Q)=1 e z Q restera 0 z in uscita z se Q=1 allora not(Q)=0 e z Q restera 1 zIl RISULTATO e diverso pur avendo lo stesso ingresso: cio dipende dallo STATO del circuito => il valore di uscita e funzione dell ingresso e inoltre dello STATO del circuito … sequenziale

48 48 FF_SR: 8 situazioni possibili = 4 input X 2 stati zX Y NOR(X+Y) z0 0 1 z1 0 0 z0 1 0 z1 1 0 z S R Q_ora Q_poi z S=R=0 no modifiche z Q_poi=Q_ora z z S=1 forza Q_poi a 1 z z R=1 forza Q_poi a 0 z z o 1 Ambiguita da z o 1 togliere con modifiche nella struttura (FF tipo D o JK)

49 fondamenti di informatica 1 parte 4 D.U.49 La Dipendenza dal tempo zdeve essere introdotta in tutti i circuiti collegandovi il segnale di clock come ingresso ulteriore: e il segnale periodico che cadenza il funzionamento dei circuiti e permette la sincronizzazione di tutte le operazioni. zEs. i Flip-Flop non sono usati singolarmente, ma generalmente aggregati a gruppi di 4 o di 8 (=byte) o di 32 (registro). Le linee portanti l informazione entrano in porte AND col segnale di clock: le uscite delle porte AND diventano gli ingressi dei Flip-Flop => Tutti FF sono temporizzati nello stesso modo e sono attivi solo quando e attivo il segnale di clock.

50 fondamenti di informatica 1 parte 4 D.U.50 Memorie zI Flip-Flop vengono usati negli elementi di memoria di E.E. ossia nella RAM e nei registri della CPU. zLa memoria principale o C.M. di E.E. (composta con circuiti denominati RAM =Random Access Memory) ha come parametri significativi il tempo di ciclo TC e la capacita C (dimensione). zTC = intervallo tra la richiesta di un dato da parte della CPU e la fine della risposta della memoria che torna allo stato di ricezione.

51 fondamenti di informatica 1 parte 4 D.U.51 SRAM e DRAM: zsono 2 tipi di circuiti. z TC 10 nsec zSRAM = Static RAM C << C(DRAM) z + veloci, ma + costose e. + voluminose z z TC 50 nsec zDRAM = Dinamic RAM C 16 Milioni di bit / chip z + usate zL egenda: il simbolo significa dell ordine di z chip o … centopiedi

52 fondamenti di informatica 1 parte 4 D.U.52 ROM (Read Only Memory) zCircuiti con informazione memorizzata in modo permanente z 1) programmabili 1 sola volta in fabbrica zTipi 2) dall utente z 3) cancellabili e riprogrammabili. +volte z1) ROM, 2) PROM, 3) EPROM

53 fondamenti di informatica 1 parte 4 D.U.53 Emulazione della C.M. zDella C.M. di E.E. fu detto (parte 1) che nel Modello di von Neumann la memoria e di tipo lineare ossia: successione di locazioni (posizioni, celle, byte, parole) numerate (e quindi indirizzabili) sequenzialmente ! zProblema1: sua emulazione con un programma in C e C++. zProblema2: memorizzare le tavole dell A.d.B. zSoluzione: utilizzo di tabelle o array o altro ?

54 54 Array zE un tipo di variabile composta, strutturata zImportante perche permette di: zmantenere in memoria un insieme di elementi omogenei (dello stesso tipo, detto tipo base); ztutti presenti contemporaneamente, posti in memoria consecutivamente a partire da un indirizzo iniziale, ma accessibili in modo casuale o diretto usando la loro posizione; zaccessibili +volte tramite appositi indici interi che in C e C++ assumono uno tra i valori compresi in un dato intervallo a partire da 0 (a cui corrisponde il primo elemento dell array); zRichiede un opportuna definizione in cui sia dichiarata al compilatore la sua dimensione.

55 fondamenti di informatica 1 parte 4 D.U.55 Esempi di definizione di array o tabelle a + dimensioni in C+ zint a[5] array monodimensionale o vettore di 5 componenti intere memorizzabili in: za[0], a[1], a[2], a[3], a[4]. Necessario 1 indice zfloat f[2][3] array bidimensionale o matrice di 2 righe e 3 colonne memorizzabili in: zf[0][0], f[0][1], f[0][2], (tipo base=float) zf[1][0], f[1][1], f[1][2] Necessari 2 indici zint c[3][3][3] array tri dimensionale di tipo intero (3 matrici di 3 righe e 3 col.: necess. 3 indici).

56 fondamenti di informatica 1 parte 4 D.U.56 Possibili inizializzazioni: zin fase di compilazione: zfloat f[5] = {0.0, 1.0, 2.0, 3.0, 4.0}; zint g[100] = {7}; // si inizializza solo g[0]=7; zint dedo [] = { 2, 3};// inizializzazione obbligatoria: NON c e dimensione => il compilatore la calcola automaticamente in base al numero di valori di inizializzazione: UNico caso ammesso senza dimension. zin fase di esecuzione con cicli a ripetizione nota: zes. for (i=0; i<5; i++) f[i] = (float) i ; z for (i=0; i<100; i++) g[i] = 0; zMeo 2 lez.2

57 fondamenti di informatica 1 parte 4 D.U.57 Creazione-stampa di vettori zIl primo esempio duso di vettori e in program6 il prg. creastatab.cpp dove si notano i vettori tab e cop dichiarati di MAX componenti o elementi. Il vettore tab e creato nel main con un for mentre cop (non inizializzato) viene letto con la procedura leggi che fa la lettura degli elementi di un vettore uno dopo l altro; la sua copia e realizzata nella procedura copia, la visualizzazione nelle procedure scrivi e riscrivi; zin tutti i sottoprogrammi il passaggio di vettori (e array in generale) e fatto per indirizzo.

58 fondamenti di informatica 1 parte 4 D.U.58 Il nome del vettore e zsinonimo dell indirizzo del primo elemento del vettore => si puo scrivere: float ris[10]; float *p; p=ris; /*oppure*/ p=&ris[0]; // cfr. tabel zris e un puntatore, ma costante perche sigillato a puntare sempre allo stesso vettore. zEs. char* puni =sono un idea; // puni e inizializzato con l indirizzo di s, ma poi avendo: puni =punto un oggetto; // a puni si assegna un altro indirizzo: quello di p. Non si puo mai invece modificare l indirizzo in ris, il contenuto SI !!! zMeo 1 lez. 37

59 fondamenti di informatica 1 parte 4 D.U.59 Altri esempi: statisti, tabel... zPROBLEMA: calcolare la frequenza di caratteri alfabetici contenuti in una frase terminante col punto. Alla fine: visualizzare tutte le frequenze !=0 zProgetto logico: n. o caratteri alfabeto ingl. =26; zn. o contatori di frequenza=26=n. o elementi vett. da inizializzare a zero; int freq[26]={0,0,… 0}; zlettura e calcolo: fintantoche il carattere letto non e il punto, aggiungi 1 all elemento che indica la frequenza del carattere letto; poi fai la visualizzazione.

60 fondamenti di informatica 1 parte 4 D.U.60 Progetto logico: continua zCome si individua questo elemento? zNel vettore freq[26] si trova tramite l indice intero corrispondente nel codice ASCII al carattere letto, ma: zA=65; … Z=90; a=97; … z= 122 zOccorre fare un cambiamento di scala ossia riportare i valori dei codici ASCII nell intervallo 0-25 z=> per i caratteri minuscoli basta fare: car_letto - a; e poi incrementare il contatore freq [car_letto- a]++; zinvece per i maiusc. occorre prima convertirli a minus. con: car_letto = car_letto - A + a (cfr. while1) e incrementare il contatore freq [car_letto-a]++; (come sopra).

61 fondamenti di informatica 1 parte 4 D.U.61 La visualizzazione zSi puo fare con un for dove la var. di controllo e ancora il codice ASCII del carattere: zfor (char ch = a; ch<=z; ch++) zif (freq(ch- a) != 0) zcout << \nIl car.<< ch <

62 fondamenti di informatica 1 parte 4 D.U.62 Non confondere stringhe costanti con tabelle di caratteri zLa stringa char *pst= buonino; e costante. ll C C++ la vedono come una sequenza di caratt. terminanti con \0. Essa non e copiata in pst: a pst e assegnato l indirizzo del suo primo car. b. zDovendo leggere o inizializzare una stringa di caratteri qualunque e responsabilita del programmatore riservarle adeguato spazio in memoria. Una tabella (vettore) di caratteri puo servire a questo scopo, ma non e l unica soluzione.

63 fondamenti di informatica 1 parte 4 D.U.63 Es. char riga[40]; zOgni elemento della tabella riga e di tipo char e quindi disponibile a contenere un un carattere. zPer assegnare una stringa di caratteri ad una tabella ci sono varie possibilita: leggercela da tastiera (e per un es. di cio vedere il prg. Leggiora in program6) oppure occorre copiare la stringa carattere per carattere … zCome?

64 fondamenti di informatica 1 parte 4 D.U.64 Copiare stringhe: oltre il prg. creastatab ecco la proc. strcp zvoid strcp(char *s, char *t) /* s, t: puntatori a carattere e quindi a stringa; la proc. 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*/ zs++; t++}; // + sintetica ?! z{while (*s++=*t++);// perche manca !=\0 ?? z};

65 fondamenti di informatica 1 parte 4 D.U.65 Come si scrive una procedura? zL esempio precedente vuole mostrare anche questo: fissati i parametri formali del sottoprogramma basta scrivere il suo corpo usandoli in modo corretto e coerente col progetto logico fatto. zLa procedura strcp potra essere attivata da qualunque altro modulo usando come parametri effettivi o puntatori a stringa o nomi di vettori contenenti caratteri (cfr. es.) zVisti gli esempi sostituire in creastatab alla proc. copia la proc. strcp.

66 fondamenti di informatica 1 parte 4 D.U.66 Esempi zchar *ps2,*ps1 = stringa12; zchar s1[10], str[10]=abcdefghi; zstrcp(ps2,ps1); // oppure strcp(ps2, str); zstrcp(s1,str); // oppure strcp(s1,ps1); zRicordare il significato del nome di un vettore(!) (sinonimo dell indirizzo) e che le array sono sempre trasmesse tra moduli per indirizzo come indicato nel programma tabel. Nel programma statisti invece si usano vettori nel main e in 2 o 3 procedure: renderlo tutto modulare!

67 fondamenti di informatica 1 parte 4 D.U.67 Array a 2 dimensioni zil nome della matrice e sinonimo dell indirizzo del primo elemento della matrice di indici [0][0] che e anche l indirizzo del vettore prima riga; zl elemento i-esimo della prima riga e trovato dal compilatore sommando a questo indirizzo la lunghezza di un elemento moltiplicata per i ; zla matrice e memorizzata per righe, una riga di seguito all altra: l indirizzo del primo elemento della seconda riga = indirizzo primo elemento della prima riga + n.o colonne* lungh.elementi zMeo 2 lez. 2

68 fondamenti di informatica 1 parte 4 D.U.68 Esempi di definizione di array o tabelle a + dimensioni in C+ zint a[5] array monodimensionale o vettore di 5 componenti intere memorizzabili in: za[0],... a[4]. Necessario 1 indice zfloat f[2][3] array bidimensionale o matrice di 2 righe e 3 colonne memorizzabili in: zf[0][0], f[0][1], f[0][2], (tipo base=float) zf[1][0], f[1][1], f[1][2]. Necessari 2 indici: es. zfor (int i=0; i<2; i++) z for (int j=0; j<3; j++) f[i][j]=0.0;

69 fondamenti di informatica 1 parte 4 D.U.69 I nomi delle matrici zsono indirizzi di riferimento e si possono considerare come puntatori a "vettori di puntatori alle varie righe. zEcco perche il contenuto di un elemento si ottiene tramite una doppia operazione di indirezione fatta sull indirizzo ad esso relativo. zPer esempio, se float mat[N][M] e una matrice, *mat contiene l indirizzo alla prima riga di mat mentre **mat contiene il valore del suo primo elemento. Inoltre *(mat+M) contiene l indirizzo alla sua seconda riga.

70 fondamenti di informatica 1 parte 4 D.U.70 Perche mat+M ? zData la matrice mat[N][M] l elemento i-esimo della prima riga e trovato dal compilatore sommando allindirizzo della sua prima riga la lunghezza di un elemento moltiplicata per (i- 1);=> dato che lindirizzo alla prima riga di mat e *mat se si assume 1 come lunghezza di un elemento allora *(mat +M) e lindirizzo della seconda riga di mat, *(mat +2*M) e lindirizzo della terza riga di mat e cosi via. zNOTA: *(mat +1) e lindirizzo del secondo el. della prima riga di mat, *(mat +2) del terzo e cosi via!

71 fondamenti di informatica 1 parte 4 D.U.71 Aritmetica dei puntatori zLa NOTA precedente introduce all aritmetica dei puntatori. zSe char *p e un puntatore a una stringa di caratteri, *(p+1) punta al secondo carattere della stringa ossia al byte seguente il primo. zInvece nel caso di float mat[N][M] matrice di N righe ed M colonne, *(mat +1) e lindirizzo del secondo elemento della prima riga ossia punta all elemento successivo al primo che pero e scostato di almeno 4byte dal primo elemento. zQuindi: il riferimento e all elemento-tipo non al byte! zMeo 1 lez.38

72 fondamenti di informatica 1 parte 4 D.U.72 Precisazioni ed esercizi zQuando si usa un array a 2 dimensioni in un modulo deve essere specificato il numero delle colonne dell array (necessario perche il compilatore possa calcolare gli indirizzi di inizio delle varie righe), mentre il numero delle righe e ininfluente e puo essere omesso. zEsempi nei prg. mat, tabmat, … in program7. zProvare a fare procedure per: eseguire il prodotto, la somma di matrici, data una matrice costruirne la trasposta...


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

Presentazioni simili


Annunci Google