Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005...

49
fond. di informatica1 p arte 5 1 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori

Transcript of Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005...

Page 1: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 1

fondamenti di informatica parte 5

appunti per Nettuno a.a. 2004-2005dianna maria carminelli gregori

Page 2: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 2

E per emulare la memoria?Le matrici non bastano: per i dati occorrerebbe

un vettore a dimensione variabile (che si puo’ ottenere con l’uso di funzioni come malloc o new) di int ove porre valori interi e poi un altro di float, uno di char …; per gli indirizzi e le istruzioni in linguaggio macchina poi, occorrerebbe un altro vett… di unsigned, etc.

insomma un contenitore di elementi di tipo diverso, non omogenei ed anche a dimensione variabile. Un 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.

Page 3: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 3

Esempio di struct in C e C++struct studente{char nome[20];char cognome[25];int eta;float peso;float altezza;}; 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 puo’ servire a introdurre la class del C++…ma questa e’ un’ altra storia (II corso!)

Meo 2

lez. 5 & seg.

Meo 2

lez. 5 & seg.

Page 4: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 4

L’ emulazione della C.M. riporterebbe all’ Hardware

ma 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:

void strcp(char *s, char *t) /* strcp copia la stringa puntata da t in quella puntata da s */

{ 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 ?!

while (*s++=*t++) // perche’ manca != ‘\0’ ??

; }

Page 5: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 5

Frasi sinteticheQuesto 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;

si tratta di “compattare” alcuni tipi di frasi in una sola.

Es. lettura e calcolo indicate nel progetto logico posto in parte 4 diapo 69: 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++ sintetic … ?

Page 6: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 6

Sinteticamente … ?Non 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:

while( (cin >> ch) /* fintantoche’ c’e’ un ch (carattere) da leggere*/ && ( ch != ‘.’) ) /* e inoltre questo ch e’ diverso da punto: FAI */...

Page 7: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 7

In definitiva

il significato di queste considerazioni riguarda l’ utilizzo di matrici e/o vettori.

E’ 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).

Page 8: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 8

Il ritorno all’ hardware ha lo scopo di introdurre il linguaggio di E.E. Si ricordi:C.M. & CPU: indirizzo di ogni locazione di C.M.

=> in registri della CPU ( es. registro P =Punta- tore, registro I.C.= Instruction Counter ...);

Contenuto di ogni locazione di C.M. => in altri registri della CPU (per es. A = Accumulatore...);

C.M. (RAM): scandibile e rintracciabile per es. col Registro P : IndirizziMemoria <=> Registro P;

CPU = 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

Page 9: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 9

… e la struttura funzionale di EE gia’ presentata:

Temporizzatore

Unita’ Centrale di Controllo Unita’ Aritmetico - Logica

Unita’ di controllo di I/O

Memoria Centrale

PerifericheMemorie di massa

CPU

Registri Flag

Page 10: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 10

La CPU controlla tutte le operazioni di E.E.

Le operazioni possono essere:interne alla CPU (per es. Somma i

contenuti di 2 Registri);esterne come trasferimenti di dati verso la

(o dalla) C.M. o verso le (o dalle) interfacce (Controller Unit) dei dispositivi periferici.

Notare: la CPU non invia i dati al dispositivo, ma alla sua interfaccia!

Page 11: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 11

La CPU lavorain stretto contatto con la C.M. e 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:

Registri P e I.C. (Istruction Counter) per tenere gli Indirizzi,

Registri tipo Accumulatore (A, B, C … ed anche Reg.1, Reg.2 ...) per tenere i Dati ,

Registro Istruzione (I.R.) per tenere le Istruzioni del linguaggio di macchina.

Page 12: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 12

CPU: funzionamento ciclico

Ogni ciclo della CPU si compone di 3 fasi: fase di fetch (=prelievo),

fase di decodifica, fase di esecuzione dell’ istruzione.In ogni fase sono usati alcuni Registri.Le operazioni relative ad ogni fase

sono:

Page 13: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 13

Prelievo e decodifica

fase di fetch (=prelievo: uso dei Reg. IC e IR):1) Esame del Reg. I.C.; 2) Accesso alla locazione di C.M. indirizzata

da I.C.;3) Trasferimento del contenuto della

locazione di C.M. in I.R.;

fase di decodifica: (uso del Reg. IR):4) Interpretazione del contenuto di I.R.;5) SE non e’ un' istruzione ALLORA

segnalazione ERRORE e STATO DI ATTESA

Page 14: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 14

Esecuzione istruzione… altrimenti fase di esecuzione: SE si tratta di un’ istruzione di salto alla

locazione di memoria di indirizzo xyzv allora I.C.= xyzv ed il controllo delle operazioni passa a xyzv e da qui si prosegue in sequenza;

ALTRIMENTI: l' istruzione viene eseguita ed e’ incrementato I.C.= I.C.+(lunghezza istruz.) per passare all’ istruzione successiva.

Si noti: in assenza di istruzioni di salto esiste un ordinamento sequenziale tra le istruzioni.

Page 15: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 15

Accesso alla Memoria:per estrarre info. = leggere dalla Memoria;per deporre info. = scrivere in Memoria;Operazioni realizzabili: a Hardware con codici propri della CPU a Software con istruzioni di un Linguaggio

Artificiale, tradotte nei codici della CPU (ossia nelle Istruzioni del linguaggio della macchina) dal programma traduttore.

Esempio fase di esecuzione con uso del reg.P (e non I.C. per brevità di scrittura)

Sia: Istruzione = Leggi un dato dal disco e ponilo in C.M. all' indirizzo 00116

Page 16: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 16

Registro P di 4 bit =>16 byte indirizzabili (qui la freccia sintetizza il contenuto di P)

CPU = “Ragnetto”

REG. P .

Central Memory

0000

0001

1111

Registro P.= Pointer

Accumulat.

Page 17: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 17

Esempio: continuaC.P.U. pone 00116 nel Registro P cioe’ P=

00116 (cfr. grafico precedente) e passa il controllo all’ Unita’ di Controllo della Periferica disco.

Questa, attivato il lettore che legge il dato (per es. 3.14), lo pone in un proprio registro: da qui C.P.U. lo preleva e lo trasferisce nell’ Accumulatore ossia A = 3.14

Infine C.P.U. trasferisce il contenuto di A nella Memoria indirizzata da P ossia Mem(P)=A (cfr. grafico seguente)

Page 18: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 18

Registro P di 4 bit => 16 byte indirizzabili

CPU = “Ragnetto”

REG. P.

Central Memory

0000

0001

1111

Registro P.= Pointer

Accumulat.3.14

3.14

Page 19: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 19

Ancora esempi Analogo comportamento se Istruzione = Visualizza un

dato su video … Se poi Istruzione = Somma i dati delle locazioni di indirizzo 55516 e 12316 e metti il risultato in C.M. all' indirizzo 66616 allora C.P.U. effettua le operazioni seguenti (dove => significa sposta e il registro B A)

55516 => P Mem(P) => A (per es. 891710 => A)12316 => P Mem(P) => B (per es. 7910 => B)A+B => A (per es. 891710+7910 => A)66616 => PA => Mem(P)

Page 20: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 20

Deduzioni logicheCosa vogliono evidenziare i precedenti esempi?1) 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;

2) ogni insieme di istruzioni (ossia ogni programma) per essere eseguito deve risiedere in C.M.

3) se un salto rimanda ad un indirizzo dove non c’e’ un’ istruzione, ma un dato: ERRORE!

Page 21: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 21

Le istruzionidel 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.

Per es. somma avra’ il codice ADD poni in memoria “ “ “ STORE carica in un registro “ “ “ LOAD salta (branch) “ “ “ Bsalta e torna indietro(back)“ “ “ BBconfronta (compare) avra’ il codice CMPetc.

Page 22: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 22

Il formato delle istruzioni del 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….

Se 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 16 bit per indirizzare la memoria o altro.

Segue un esempio in un ipotetico linguaggio macchina.

Page 23: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 23

Come fare la somma S=i= 5 in linguaggio macchina ?

In C++ o C {int S = 0, i; for ( i=0; i<8; i=++) S+ = 5;}In ling.macchina le addizioni si fanno in A=Acc.

e per gli indici si usano i Reg.i e cosi’ a parole: Azzera A e Carica in Reg.1 0COME Confronta Reg.1 con 8 Se sono uguali salta a VIA (se no) Aggiungi ad A 5 Incrementa Reg.1 di 1 Salta a COMEVIA Memorizza A in S (A => MemS)

Page 24: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 24

E quindi: CLEAR A LOAD R1 #0 (#indica dato immediato)COME CMP R1 #8 (se il compare da’ 0 FlagZero=1)

BZ VIA (salta a VIA se FlagZero=1)

ADD A #5 INC R1 (incrementa di 1 R1) B COMEVIA STORE A ADDRS (--> ADDRS => P

e inoltre A => Mem(P))

Page 25: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 25

o anche e meglio (con 1 giro ed 1 istruzione in meno):

CLEAR A LOAD R1 #7COME ADD A #5 DEC R1 (decrementa di 1 R1 : quando R1= 0

. FlagZero=1)

BZ VIA (salta a VIA se FlagZero=1)

B COMEVIA STORE A ADDRS

Page 26: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 26

BUSTra le unita’ di E.E. viaggiano dati e indirizzi … DOVE? Nei BUS !BUS = 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

BUS indirizzi => n da 8 a 20 bit e BUS dati => n da 8 a 64 ”Attualmente si usano 2-3 livelli di BUS per

accellerare i trasferimenti.

Page 27: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 27

Memoria di massa :Funzione: uguale a quella della C.M. (memorizzare !!!),

ma tecnologia di tipo magnetico ... Caratteristica: permanenza delle informazioni (come

la ROM !!!), ma il Tempo di accesso che dipende dal tipo, 10-100msec. Enorme divario con la C.M. !!! Questo divario deve essere “compensato” con operazioni di input/output che scambino un notevole numero di informazioni in ogni accesso (cfr. diapo 32)

Supporto: disco fisso, dischetto (floppy), nastro, C.D. ...Lettura/scrittura: Unita’ di Lettura/scrittura dotata di

una testina apposita o di raggio laser.

Page 28: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 28

Tipo di accesso:sequenziale e, per dischi (hard e floppy),

diretto o casuale (= random) tramite gli indirizzi di settore e traccia creati (cfr.parte 2) con la formattazione 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!

Capacita’ dei dischetti: 360, 780, 1200 Kbyte e oltreCapacita’ dei dischi: da 10 Mbyte a 40 Gigabyte “ “Capacita’ dei C.D.: 700 Mbyte; Capacita’ dei nastri: variabile secondo il tipo di unita’

Page 29: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 29

Unita’ periferiche: sistema video E’ costituito da un display e da una scheda

grafica ed ha 2 modalita’ di funzionamento: alfanumerica (p.e. 25righe x 80colonne di testo) e 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;

elemento base: PIXEL (PIcture ELement) in un raster o matrice (griglia) di PIXEL (1280x1024; …) usabili singolarmente in alta risoluzione, a gruppi in bassa risoluzione.

Page 30: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 30

Comunicazioni tra elaboratoriSi basano su strumenti Hard./Soft. che

permettono di collegare elaboratori di vari tipi in reti locali (LAN) e geografiche (WAN);

occorrono dispositivi di interfaccia tra elaboratori (per es. “schede di rete”) e protocolli (regole) di comunicazione;

si puo’ anche usare la rete telefonica con l’ uso del “modem” dispositivo +comunemente usato che permette di convertire il segnale analogico (voce) a segnale digitale (bit) e viceversa.

Page 31: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 31

E inoltre …parlando 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.

Nel file tipo testo i byte sono interpretati come caratteri ASCII (in altri file, quelli binari ogni byte e’ considerato come 8 bit di un dato binario, per es. float);

I file tipo testo possono essere usati in lettura, scrittura e aggiornamento.

Page 32: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 32

Come si costruisce un file tipo testo in C, C++ ?

Occorre 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.)

Il 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.

Page 33: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 33

Argomenti del main

Per trasmettere ad un programma C o C++ informazioni (per es. il nome del file di lavoro dati.per) si usano i parametri della main function che finora era sempre scritta main(). La main function ha 2 forme di intestazione:

int main()int main(int argc, char* argv[]) dalle quali si nota che il valore di ritorno e’

int (come quello indicato nella frase return (0) !!).

Page 34: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 34

mainNella 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.

In 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.

Page 35: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 35

EsempioAvendo scritto la frase main cosi’:main(int argc, char *argv[])la linea di attivazione potra’ essere cosi’ fatta:

fileper.exe dati.perdove il file di dati da leggere (dati.per) e’

fornito in argv[1], in argv[0] va fileper (nome del programma) e argc viene posto =2.

Tutto questo deve servire da guida, ma per imparare occorre FARE e poi provare e riprovare con pazienza …

fine.

Page 36: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 36

Appendice a): perplessita’ 1

RICORDARSI: l’ operatore >> preleva un dato dal un flusso di input: che tipo di dato? Il tipo che e’ stato dichiarato: char, int, float, ...

2) 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.

Page 37: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 37

Appendice a): perplessita’ 23) La funzione elabora usata in tanti esempi di

programmi indica col suo nome una elaborazione di tipo generale. Quando l’ elaborazione e’ di un tipo specificato e’ meglio usare nomi di funzioni pertinenti, come fatto nell’ esempio sulla valutazione del minimo e del massimo (parte 4) dove si usavano nomi come minimo, massimo, rivaluta e memovis. Cosi’ il programma diventa +comprensibile e -generico Come ulteriore esempio, se in un programma ...

Page 38: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 38

Appendice a): perplessita’ 3… se in un programma e’ richiesto di leggere

una matrice di valori interi e ricercarvi un certo valore (letto anch’esso da tastiera) le funzioni da usare e costruire saranno:

leggi(matrice); cin>> valore;if (ricerca(valore, matrice, &riga, &colonna))

visualizza(“\ntrovo valore in ”, riga,colonna);else cout<< “\nIl valore non c’e’ !”<<endl; QUI la funzione elabora e’ la ricerca !

Page 39: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 39

Appendice a): perplessita’ 44) RICORDARE: la codifica F.P. normalizzata fa

riferimento alla base 2 e quindi il valore dell’ esponente riguarda la base 2. Col metodo delle moltiplicazioni successive ogni moltiplicazione per la base isola una nuova cifra nella nuova base. Per es. =3.1410 avra’ 112 come parte intera e 00100011112 come parte decimale. Normalizzando +.1100100011112 E+102 con S=0, M=1100100011112, E=0102 .

Page 40: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 40

Appendice a): perplessita’ 5RICORDARSI di fare attenzione alle specifiche

di progetto di un programma: IN PARTICOLARE alle specifiche di progetto del programma da costruire all’ esame che stanno nelle relative richieste. Analizzarle e riflettere!

UN CONSIGLIO per l’ esame: scrivere il programma in modo semplice e chiaro, con qualche commento, ma senza fronzoli, badando a rispondere a tutte e sole le richieste. Privilegiare la sostanza ! Se resta tempo aggiungere … i “fiorellini” !

Page 41: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 41

Appendice b): esempi di temi d’esame del 2000

Fondamenti di Informatica 1 TEMPO = 1 ORA e 1/2, NON AMMESSI TESTI, APPUNTI, CALCOLATRICI.

1) Conversioni di base (punteggio =2) Esprimere in base 10 l' intero positivo piu' grande rappresentabile

con 6 bit in base 2. Scrivere la rappresentazione binaria normalizzata di 3/4

2) (punteggio =1) Come sono effettuate le divisioni per 2 dei numeri interi dall' Unita'

Aritmetico-Logica?

Page 42: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 42

Appendice b; continua 2 3) (punteggio =2) NO In un circuito logico a 3 ingressi (V,X,Y) la funzione Z vale 1

quando la combinazione di ingresso e’ dispari: scrivere la funzione Z.

4) (punteggio =5) Scrivere in C o C++ un programma strutturato in

sottoprogrammi che provveda a costruire in Memoria Centrale una matrice F di N*M elementi float. Ogni elemento di F deve contenere il valore della funzione

f = 0.5*x2 +1.5*y +1 per x variabile con passo dx=0.5 nell' intervallo 0.0 x

2.0 e y variabile con passo dy=0.1 nell' intervallo 0.0 y 0.3 (Estremi inclusi!)

Page 43: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 43

Appendice b; continua 3 (SI NOTI che N ed M vanno calcolati in funzione degli intervalli

di definizione di x e y e dei passi dx e dy sopra specificati). Dopo la costruzione della matrice F, il programma deve: visualizzare su video i valori N e M e la matrice F per righe.

N.B. E' SCONSIGLIATO L' USO DI VARTIABILI GLOBALI

Fondamenti di Informatica 1 TEMPO = 1 ORA e 1/2, NON AMMESSI TESTI, APPUNTI, CALCOLATRICI.

1) Conversioni di base (punteggio =2) Dare la forma normalizzata binaria Floating Point con 1 bit

per S, 3 bit per E , 4 bit per M del valore X=1/4 in base 10.

Page 44: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 44

Appendice b; continua 4 Dare la rappresentazione binaria in complemento a 2 con 8 bit di

X = 1510.

2) (punteggio =1) Indicare quante sono e quali sono le fasi di cui si compone il ciclo della CPU (Unita' Centrale di Elaboraz.)

3) (punteggio =2) Indicare sinteticamente come lavora un Sistema operativo multiprogrammato e dove si trovano i "molti" programmi da essere eseguiti.

4) (punteggio = 5) Scrivere in C++ un programma strutturato in sottoprogrammi che faccia le seguenti azioni tramite apposite procedure o funzioni:

_ costruire in Memoria Centrale un vettore (tabella) di 10 elementi interi ordinati dove ogni elemento e' divisibile per 3 e per 5 ossia 15, 30, 45, 60, ... e visualizzarlo

Page 45: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 45

Appendice b; continua 5 _ chiedere all' utente 2 valori interi (non compresi tra quelli

posti nel vettore); _ aggiungere nel vettore i 2 valori letti posizionandoli nei

posti voluti dall' ordinamento e visualizzare il vettore cosi' modificato. (Se per esempio i valori letti sono 7 e 31 il vettore modificato risultera': 7, 15, 30, 31, 45, 60, ... )

N.B. E' SCONSIGLIATO L' USO DI VARTIABILI GLOBALI

Fondamenti di Informatica 1 TEMPO = 1 ORA e 1/2, NON AMMESSI TESTI, APPUNTI, CALCOLATRICI. 1) Conversioni di base (punteggio =2) Usando l' aritmetica binaria e la notazione in complemento a

2

Page 46: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 46

Appendice b; continua 6 calcolare: la differenza tra 01012 e 10112 ;

il valore di un registro a 4 bit contenente 11112.

2) (punteggio =1) Indicare la funzione del linker e quando e' usato.

3) (punteggio =2) NO !Indicare come viene realizzata la dipendenza dal tempo nei circuiti elementari di memoria FF_SR utilizzati per memorizzare i bit. Indicare anche la loro struttura.

4) (punteggio =5) Scrivere in C++ un programma strutturato in sottoprogrammi che in Memoria Centrale utilizzi 3 matrici bidimensionali di interi e di dimensione 3x3, A, B, C, e dotato di un programma principale consistente dei passi seguenti:

Page 47: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 47

Appendice b; continua 7

P1. init (A); init (B); P2. C = A*B; P3. stampa(A), stampa(B), stampa(C). NOTE: Le matrici A e B devono essere opportunamente

inizializzate tramite una procedura di lettura da tastiera, con prototipo del tipo: void init(X) dove X e' una matrice 3x3 che in uscita da init contiene i valori letti;

Le 2 matrici A e B cosi' inizializzate, devono essere moltiplicate tramite la procedura: void product(....) con tre parametri (matrice C in uscita, matrici A e B in ingresso), ossia il risultato di product( ...) e': C = A*B (ricordando che un elemento C[i][j] e' dato dalla sommatoria in k di A[i][k] * B[k][j] );

Page 48: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 48

Appendice b; continua 8 Le matrici A, B, C devono essere visualizzate tramite la

procedura void stampa(X) che visualizza per righe sul display la matrice X di dimensioni 3x3.

N.B. E' SCONSIGLIATO L' USO DI VARTIABILI GLOBALI.

Fondamenti di Informatica 1 TEMPO = 1 ORA e 1/2, NON AMMESSI TESTI, APPUNTI, CALCOLATRICI

1) Conversioni di base (punteggio =2) da base 2 in forma Floating Point normalizzata con Segno = 0, Esponente= 0012 Mantissa Normalizzata=10102 a base 10 =? da base 10 a base 16: 12310 = ?

Page 49: Fond. di informatica1 parte 51 fondamenti di informatica parte 5 appunti per Nettuno a.a. 2004- 2005 di anna maria carminelli gregori.

fond. di informatica1 parte 5 49

Appendice b; continua 9 2) (punt. =1) Indicare la differenza tra file e directory del DOS. 3) (punteggio =2) In cosa consistono le fasi di Fetch (prelievo)

e decodifica di un' istruzione in linguaggio macchina ? chi le attua ?

4) (punteggio = 5) Scrivere in C++ un programma strutturato in sottoprogrammi che:

legga da tastiera un insieme di valori interi da memorizzare in T array monodimemnsionale (vettore) di al massimo 99 elementi;

attivi una procedura Conta che esamini T e restituisca 2 valori e cioe': il numero degli elementi effettivamente presenti in T, e il numero degli elementi che hanno un valore non divisibile per 2 ne' per 3 e visualizzi sul video tali numeri.

N.B. E' SCONSIGLIATO L' USO DI VARTIABILI GLOBALI