• Non ci sono risultati.

Campionato di calcio (Per altriesercizisuquestoargomento, siconsiderinoquellidelloscorsoanno) Definizioneclassi

N/A
N/A
Protected

Academic year: 2021

Condividi "Campionato di calcio (Per altriesercizisuquestoargomento, siconsiderinoquellidelloscorsoanno) Definizioneclassi"

Copied!
26
0
0

Testo completo

(1)

De fin izio ne cla ssi

(Per altriesercizisuquestoargomento, siconsiderinoquellidelloscorsoanno)

Ca m pio na to di c alc io Si v uol rea lizza re u n a rch ivio da ti ch e co ntie ne i nfo rm azio ni s uu n insie me di c am pio nati di c alcio na zion ali.



Per ogn i ca mp ion ato si m em oriz za la na zion e, l’a nno , olt re a lle s qua dre part ecip anti e il tab ello ne d ei ri sult ati



Ogn i sq uad ra è cara tter izza ta d a u n n om e e un a cit tà



Dell e p artit e si reg istra no l a d ata e il risu ltato



Per l’ins iem e d elle sq uad re p arte cipa nti a l ca mp ion ato si u si u n v etto re



Per l’ins iem e d ei c am pio nati si u si u na l ista



L’ap plic azio ne d ovrà ave re u n’in terf acc ia u ten te e si v uol seg uire il prin cipio di s epa razio ne f ra in terf acc ia e da ti

(2)

Ca m pio na to di c alc io Si d efin isca no i m eto di d ella cla sse arc hivio affi nch ésia no p oss ibili le seg uen ti o pera zion i



cre are un arc hivio co n u n n um ero m ass im o d i ca mp ion ati



inse rire un ca mp ion ato



inse rire un a sq uad ra in un ca mp ion ato



calc ola re i pun ti d i un a sq uad ra in dica ndo il n om e d ella sq uad ra, i l no me del cam pio nato e l’a nno



cerc are un a sq uad ra in dica ndo il n om e



cerc are tut te le sq uad ra p arte cipa nti a d u n ca mp ion ato un ce rto ann o



Pro gett are le c lass i ne ces sarie ind ican do l e v aria bili, i m eto die i co stru ttor i sen za im ple me nta rli



L’ap plic azio ne d ovrà ave re u n’in terf acc ia u ten te e si v uol seg uire il p rinc ipio di s epa razio ne f ra in terf acc ia e da ti

Ca m pio na to di c alc io : ch ia rim en ti



Si n oti c he l a d esc rizio ne d el p rob lem a p otre bbe ess ere no n e sau stiv a e ch e la d efin izio ne J ava po treb be r ichie dere di s pec ifica re c lass i o v aria bili corr ispo nde nti a co nce tti n on d irett am ente cita ti n el te sto .



Ad e sem pio , si sup pon ga c he s ia ri chie sta la r ealiz zaz ion e d i un arch ivio de i cors i e d egli stu den ti, t ene ndo tra ccia de lle o re s egu ite d a cia scu n st ude nte in c iasc un c orso .



Esp licita me nte so no m enz ion ati i co nce tti “ Stu den te” e “C orso ”a cui corr ispo nde ran no d ue c lass i. M entr e, p er m em oriz zare le o re s egu ite s i potr ebb e in trod urre un a cla sse “Pr ese nze ”, c he a bbia co me va riab ili u no stu den te, u n co rso e il nu me ro d i ore seg uite , e i nse rire un arr ay di P rese nze nell’ arch ivio . U n’a ltra so luzio ne c ons iste ne ll’in serir e u n a rray di P rese nze nella cla sse Stu den te ( in ta l ca so la cla sse Pre sen ze c onti ene so lo u na vari abile co rso e u na o re). Co mu nqu e, è ess enz iale ch e la so luzio ne s ia ta le da p ote r ca lcola re q uan te s ono le o re d i pre sen za d i un og ni s tud ente a o gni cors o, p erch éciò è rich iest o d al p rob lem a.

(3)

Ca m pio na to di c alc io : ch ia rim en ti

Poichési richiede di separare l’interfaccia utente e dai dati, occorreràprevedere una classe separata che implementa l’interfaccia.

E’ragionevole supporre che l’interfaccia abbia al suo interno un oggetto Archivio che contiene i dati e i metodi descritti dal testo del problema

E’anche ragionevole pensare che i metodi della classe interfacciapossono essere gli stessi della classe Archivio con la differenza che non hanno parametri in ingresso enon restituiscono e che non restituiscano niente. Di fatti ciascun metodo della classeinterfaccia potrebbe essere un metodo che permetta all’utente di chiamare i metodi dell’archivio: per ottenere questo scopo avràbisogno interagire con l’utente peravere dei dati in ingresso e per stampare i risultati

E’infine ragionevole pensare che la classe interfaccia contenga un metodo che ha lo scopo di mostrare all’utente un menùdi opzioni corrispondenti alle funzionalitàdisponibili

Sc he m a d i u n’in ter fac cia

Lo schema di una classe generica Archivio con la sua Interfaccia class Interfaccia{Archivio A;voidmenu(){while(true){//stampa il menu e attendi //che l’utente scelga un metodo da eseguireif(metodoScelto==1){metodo1();}if(metodoScelto==2){metodo2();}}}voidmetodo1(){// chiedi all’utente i dati necessari a //chiameremetodo1 della classe Archivior=A.metodo1(…..)//Stampa i risultati di metodo1}voidmetodo2(){// simile a metodo1}…. //altri metodi class Archivio{…. metodo1(….){…..}…. metodo1(….){…..}…. metodo1(….){…..}}

(4)

Ca m pio na to di c alc io : so luz io ne

class Squadra{Stringnome, citta;}class Partita{Squadra squadraDiCasa, squadraOspite;Date data;intgoalSquadraDiCasa, goalSquadraOspite; }class Campionato{Squadrapartecipanti[];Squadratabellone[][];String nazione, anno;} class ListaCampionati{ItemCampionatohead; }class ItemCampionato{Campionato value; ItemCampionatonext;}La classePartita contienele squadredi casa e quellaospite,nonostantequestonon fosse indicatoespicitamenteneltesto.D’altraparte senzaquestoinserimentonon sarebbepossibilesaperefraqualisquadresitienela partita

Ca m pio na to di c alc io : so luz io ne

class Archivio{ListaCampionatilista;Archivio(intnumeroCampionati)voidinserisci(Campionato c)voidinserisci(Squadra s, Stringnazione, Stringanno)Squadra cerca(Stringnome)Squadra[] cerca(Stringnome, Stringanno)}class Interfaccia{Archivio A;voidmenu();voidinserisciCampionato();voidinserisciSquadra();voidcercaSquadraperNome();voidcercaSquadraInCampionato();}

(5)

Olim pia di Si v uol rea lizza re u n a rch ivio da ti d elle olim pia di



Per ogn i olim pia de s i m em oriz zan o il luo go e l’an no



Si d ovra nno reg istra re a nch e p arte cipa nti e co mp etiz ion i, te nen do trac cia del risu ltato di o gni part ecip ante ch e p uò e sse re r egis trat o co me una stri nga ge neri ca



I pa rtec ipa nti e le c om peti zion i do vra nno ess ere m em oriz zati con un vett ore . L’in siem e d i olim pia di c on u na l ista



Per i pa rtec ipa nti s i re gist ran o il nom e, la da ta d i na scit a e la naz ion alità



Per le c om peti zion i si reg istra il n om e e un ca mp o ch e d efin isce se la com peti zion e è dim ostr ativ a o m eno

Olim pia di Si d efin isca no i m eto di d ella cla sse arc hivio affi nch ésia no p oss ibili le seg uen ti o pera zion i



cre are un arc hivio



inse rire un ’olim pia de



inse rire un a co mp etiz ion e in dica ndo ne i l no me , l’o lim pia de e se è dim ostr ativ a o no



calc ola re il nu me ro d elle pre sen ze d i un ce rto atle ta



cerc are tut te le olim pia di a cu i ha pa rtec ipa to u n a tleta



Pro gett are le c lass i ne ces sarie ind ican do l e v aria bili, i m eto die i co stru ttor i sen za im ple me nta rli



L’ap plic azio ne d ovrà ave re u n’in terf acc ia u ten te e si v uol seg uire il p rinc ipio di s epa razio ne f ra in terf acc ia e da ti



Si v eda no a nch e i s ugg erim enti da ti p er l’ ese rciz io p rec ede nte

(6)

Olim pia di: so lu zio ne

class Olimpiade{Stringluogo;intanno;Atleta atleti[];Partecipazione partecipazioni[];Competizione competizioni[];}class Atleta{Stringnome, mazionalita;Date dataNascita; } class List{Itemhead; }class Item{Olimpiade value; Iitemnext;} class Partecipazione{Altletapartecipante;String risultato;Competizionegara;} class Competizione{String nome;booleamdimostrativa;}

Ca m pio na to di c alc io : so luz io ne

class Archivio{List olimpiadi;Atleta atleti[];Archivio();voidinserisci(Olimpiade o);voidinserisciCompetizione(Stringnome, booleandemo. StringluogoOlimpiade, intannoOlimpiade);intcontaPresenze(Stringnome, Date dataNascita)Olimpiade[] cercaPresenze(Stringnome, Date dataNascita)}class Interfaccia{Archivio A;voidmenu();voidinserisci();voidinserisciCompetizione();voidcontaPresenze();voidcercaPresenze();}

(7)

Im ple m en taz io ne m eto di

(Per altriesercizisuquestoargomento, siconsiderinoquellidelloscorsoanno)

Es am id eg lis tud en ti

Sono date le classi sottostanti che definiscono uno studente e un esame

Si osservi che ogni studente contiene un insieme di esami organizzati in una lista

Si scriva un metodo che preso in ingresso un arraydi studenti e cerchi tutti gli esami superati con la lode, stampando il nome e il cognome dello studente e il nomedell’esame.

voidstampaLodi(Studente s[]) class Studente{Stringnome, cognome;ListaEsamiesami;}class Esame{intcorso;intvoto;booleanlode;} class ListaEsami{ItemEsamihead;}class ItemEsami{ItemEsaminext;Esame value;} metododaimplementare

(8)

Es am id eg lis tud en ti: so luz ion e

voidstampaLodi(Studente s[]){for(inti=0;i<s.length;i++){for(ItemEsamiit=s[i].esami.head;it!=null;it=it.next){if(it.value.lode){System.out.println(s[i].nome+”“+s[i].cognome+””+it.value.corso)}}}}

Nu m ero ele m en tid i u n a lb ero ter na rio



Son o d ate le c lass i ch e im ple me nta no u n a lbe ro t ern ario (og ni n odo a t re figli) di i nte ri



Si im ple me nti u n m eto do r icor sivo che ca lcola il n um ero de i no di d ell’a lbe ro



Il m eto do d a re aliz zare è rico rsio neN um ero Elm enti (ve di s otto )

class Tree{root;} class Node{intvalue;nodo child1, child2, child3;}intnumeroElementi(TreeT){return ricorsioneNumeroElmenti(T.root);}intricorsioneNumeroElmenti(nodo n);

(9)

Nu m ero ele m en tid i u n a lb ero ter na rio : s olu zio ne

intricorsioneNumeroElmenti(nodo n){if(n==null){return 0;}else {return 1 + ricorsioneNumeroElmenti(n.child1)+ ricorsioneNumeroElmenti(n.child2)+ ricorsioneNumeroElmenti(n.child3);}

}

Po lin om io ca lco la to ric ors iv am en te: so luz ion e

Si implementi un metodo ricorsivoche data una lista di interi che contiene icoefficienti di un polinomio e numero reale x, calcolidove aièl’intero contenuto nella posizione i della lista

Suggerimento: si implementi un metodo ricorsivo(vedi polinomioRicorsivosotto) che prende in ingresso il numero reale x, un nodo e un indice i che indica la posizione delnodo della lista

Si usi Math.pow(x,i) per calcolare xiintpolinomio(floatx, List L){return polinomioRicorsivo(x,L.head,0);}intpolinomioRicorsivo(floatx, Itemit, inti);

= ni iixa0class List{Itemhead; }class Item{intvalue; Iitemnext;}

(10)

Po lin om io ca lco la to ric ors iv am en te

intpolinomioRicorsivo(floatx, Itemit, inti){if(it==null) {return 0;}else {return it.value*Math.pow(x,i)+ polinomioRicorsivo(x,it.next,i+1);}

La bir int o

Un labirinto èdefinito da un arraydi arraydi interi A. Di fatti A èlungo come il numero dei bivi che ci sono nel labirinto. Il vettore A[i] èlungo quanto il numero delle strade possibili che partono dal bivio i. In A[i][j] c’èun numero che indica quale bivio si raggiunge scegliendo la j-esima strada quando siamo nel bivio i

Si implementi un metodo iterativo che a partire da un bivio dato“Start”simuli un cammino a caso nel labirinto fino a quando non arriva alla posizione 0. Si conti il numero di bivi incontrati nel percorso

Si utiliziRandom.nextInt(b) per generare un valore intero a caso compreso fra 0 (incluso) e b (escluso)intcammino(intA[][], intstart)

(11)

La bir int o: ese m pio di c am m ino

(Si supponga di partire dalla posizione 4)

Si sceglie una strada a caso fra quelle disponibili in 4, che sono definite dall’arrayA[4]. (Si supponga di scegliere 3.)

Allora si va al bivio A[4][3]. (Si supponga che A[4][3] sia 7.)

Si sceglie una strada a caso fra quelle disponibili in 7, che sono definite dall’arrayA[7]. (Si supponga di scegliere 2.)

Allora si va al bivio A[7][2].

. si continua così, contando i bivi incontrati

La bir int o: so lu zio ne

intcammino(intA[][], intstart){intnumBivi=0;intbivioCorrente=start;while(bivioCorrente!=0){intstradaScelta=Random.nextInt(A[bivioCorrente]);bivioCorrente=A[bivioCorrente][stradaScelta];numBivi++;}return numBivi;}

(12)

La bir int o ric ors ivo

Si risolva l’esercizio precedente usando una funzione ricorsiva

Suggerimento: èpossibile scrivere un metodo ricorsivoche prenda in ingresso l’arrayche definisce il labirinto e la posizione attuale

intcammino(intA[][], intbivioCorrente)

La bir int o ric ors ivo : s olu zio ne

intcammino(intA[][], intbivioCorrente){if(bivioCorrente==0){ return 0;}else{stradaScelta=Random.nextInt(A[bivioCorrente]);return 1+cammino(A, A[bivioCorrente][stradaScelta]);}}

(13)

Es ten sio ne lab irin to

Si estenda la versione iterativa dell’esercizio del labirinto, facendo in modo di tenere traccia delle strade scelte ai bivi in modo da non ripassare piùper una strada giàscelta.

inizialmente non si consideri il caso in cui si arrivi ad un bivio in cui tutte lestrade sono state giàpercorse. Successivamente modificare ulteriormente il programma in modo da trattare anche questo caso facendo si che il programma stampi un messaggio nel caso che non ci siano strade disponibili

Suggerimento:

si usi una varibiledi arraydi arraydi booleanistradePercorsetale che per ogni i,j, stradePercorse[i][j] èvera se e solo se siègia passati si ègia scelto A[i][j]

per semplicitàsi assuma che la variabile stradePercorsearrivi in ingresso al metodo da implementare, in modo da non doverla definire

ovviamente, stradePercorseall’inizio conterràtutti solo valori falseintcammino(intA[][],booleanstradePercorse[][], intstart)

La bir int o est eso : s olu zio ne

intcammino(intA[][], booleanstradePercorse[][], intstart){intnumBivi=0;intbivioCorrente=start;while(bivioCorrente!=0){//si sceglie una stradaintstradaScelta=Random.nextInt(A[bivioCorrente]);//se quella strada ègiàstata percorsa si continua sceglierne//un’altra finchènon se ne trova una non percorsawhile(stradePercorse[bivioCorrente][stradaScelta]){intstradaScelta=Random.nextInt(A[bivioCorrente]);}bivioCorrente=A[bivioCorrente][stradaScelta];stradePercorse[bivioCorrente][stradaScelta]=true;numBivi++;}return numBivi;}

(14)

La bir int o est eso : s olu zio ne co n co ntr ollo

:while(bivioCorrente==0){booleanesisteUnaStrada=false;for(inti=0;i<stradePercorse[bivioCorrente][i];i++){if(!stradePercorse[bivioCorrente][i]){esisteUnaStrada=true;}}if(!esisteUnaStrada){System.out.println(“Strade tutte percorse al bivio ”+bivioCorrrente);break; }: : : Il codicedaaggiungereèilseguente: ilrestodel metodo(dove sonoi :::) rimaneinvariato

Co m ple ssit à

(Per altriesercizisuquestoargomento, siconsiderinoquellidelloscorsoanno)

(15)

Se rie ut ili

2 )1 (

1

+ = ∑

=

a a i

a

i

6 3 2

23

1 2

a a a i

a

i

+ + = ∑

=

1 1

1

1

− − =

+

=

b b b

aa

i i 1) 2)

3)

Com ple ssit a’ di un pr og ram m a: sch em a g en era le pe r for an nid ati



Calc ola re l’ ord ine asin totic o (n ota zion e O (f(n ))) d elle op era zion i sv olte da l seg uen te m eto do r ispe tto al v alo re d el p ara me tro n



Sia no date du e fu nzio nih e g , ve dia mo cos asu cce de al v aria re di h e g



Si o sse rvi che le o pera zion ipiù num ero se son oq uelle del ciclo più inte rno . Per cui cis ilim iterà a ca lcola re iln um ero di v olte che vien ee seg uita la mo ltip lica zion ein dica ta dalla frec cia

void metodo1(int n){intres=1;for(inti=1;i<=h(n)=++){for(j=1;j<g(i,n);j++){res=res*2;} }}

(16)

Com ple ssit a’ di un pr og ram m a: sch em a g en era le pe r for an nid ati



Per ogn i ite razio ne d el c iclo est ern o, il cic lo in tern o v ien e e seg uito g(i, n) volt e. P oich éq uello est ern o è ese guit o h (n) volt e, a vre mo



Per svilu ppa re la so mm ato ria d obb iam o co ntro llare se èu na s erie no ta opp ure se ha d elle ca ratt eris tich e p artic ola ri c he c i pe rm ette di c alco larla



Ad e sem pio , se g è ind ipe nde nte da i, c ioè g(i,n )= r(n ) pe r un a q ualc he fun zion e r, avre mo ∑

= = )(

1 ),()( nh

i nignT

= ⋅== )(

1 )()()()( nh

i nhnrnrnT

Co m ple ssit a’ di u n pro gra m m a: un es em pio



Calc ola re l’ ord ine asin totic o (n ota zion e O (f(n ))) d el n um ero di v olte ch e vien e e seg uita la m oltip lica zion e in dica ta d alla fre ccia risp etto al v alo re d el para me tro n

void metodo1(int n){intres=1;for(inti=1;i<=Math.log(n); i++){for(j=1;j<i;j++){res=res*2;} }}

(17)

Co m ple ssit a’ di u n pro gra m m a: so luz ion e



Il n um ero de lle it era zion i de l fo rin tern o d ipe nde da l va lore i d efin ito d al fo r este rno . Ap plic and o la for mu la g ene rale e la ser ie ( 1) a bbia mo

= +== n

i nninT log

1 )log1)((log)(

( )

2

) (log n O

Quindi, la rispostaè

Co m ple ssit a’ di u n pro gra m m a: un ’alt ro ese m pio

Calcolare l’ordine asintotico (notazione O(f(n))) delle operazioni svolte dal seguente metodo rispetto al valore del parametro n

Si osservichele operazionipiùnumerosesonoquelledel ciclopiùinterno. Per cui cisilimiteràa calcolareilnumerodi voltechevieneeseguitoilciclointernovoid metodo1(int n){intres=1;for(inti=1;i<=Math.pow(n,3); i++){j=1while(j<Math.pow(n,2)){res=res*2;j=j*2;} }}

(18)

Co m ple ssit a’ di u n pro gra m m a: so luz ion e

Il numero delle iterazione del ciclo esterno èn3.

Il numero delle iterazioni del forinterno èindipendente da quello esterno.

Nel ciclo interno la variabile j viene tutte le volte moltiplicata per 2 e quindi segue una serie geometrica, cioè1, 2, 2 2, 2 3, 2 4,... Quindi, il ciclo interno verràeseguito log2n 2volte.

Poichéi due cicli sono indipendenti, il numero delle esecuzioni èdata dal prodotto delle iterazioni dei due cicli.

nnnnnTlog2log)( 323==

( ) n n O log

3Quindi, la rispostaè

Co m ple ssit a’: es em pio di u n pro gra m m a ric ors iv o



Calc ola re l’ ord ine asin totic o (n ota zion e O (f(n ))) d elle op era zion i sv olte da l seg uen te m eto do2 risp etto al v alo re d el p ara me tro n



Si o sse rvi che le o pera zion ipiù num ero se son oq uelle del ciclo for. Per cui ci silim iterà a co nta re iln um ero di it era zion ide l fo r

intmetodo2(int n){return metodo1(n);}intmetodo1(int m){if(m==1) {return 0}else{intres=0;for(inti=1;i<m;i++){res=res+i;} return res+metodo1(m/2);}}

(19)

Co m ple ssit a’ di u n p ro gra m m a ric ors iv o: so luz io ne

Il ciclo forviene eseguito m volte, per ogni chiamata di metodo1

metodo1 si richiama ricorsivamentedividendo per 2 il parametro m. Le chiamate ricorsivesi fermano per m=1.

Quindi partendo da n ci saranno delle chiamate ricorsiveper i seguenti valori n, n/2 n/2 2, n/2 3, n/2 4…Alla k-esima chiamata, m saràuguale a n/2 ke ci si fermeràpern/2k=1, cioèalla chiamata k=log2n

Da questo si ricava la seguente formula che può essere calcolato usando la serie (3) data in una slide precedente

=

   

   

=

    

    

= == +

==

∑ ∑

n nnnn nnT n n

n

k kn

k k 12

2 1 12 1

2 1

12 1 12 1

2 1

2 )( 2 2

22log log1

log

1 log

1

() n O

Quindi, la rispostaè

Co m ple ssit a’: es em pio di u n pro gra m m a ric ors iv o



Calc ola re l’ ord ine asin totic o (n ota zion e O (f(n ))) d elle op era zion i sv olte da l seg uen te m eto do2 risp etto al v alo re d el p ara me tro n



Si o sse rvi che le o pera zion ipiù num ero se son oq uelle del ciclo for. Per cui ci silim iterà a co nta re iln um ero di it era zion ide l fo r

intmetodo2(int n){return metodo1(Math.pow(n,4));}intmetodo1(int m){if(m==1) {return 0}else{intres=0;for(inti=1;i<Math.pow(m,2);i++){res=res+i;} return res+metodo1(m-1);}}

(20)

Co m ple ssit a’ di u n p ro gra m m a ric ors iv o: so luz io ne



Il c iclo for vien e e seg uito m

2

volt e, p er o gni chia ma ta d i m eto do1



me tod o1 s i ric hia ma ric orsi vam ente dec rem enta ndo di i l pa ram etro m . Le chia ma te r icor sive si fe rm ano pe r m =1. Qu ind i ci sara nno ch iam ate ric orsi ve per m u gua le a n

4

, n

4

-1, n

4

-2, ….



Da que sto si rica va la seg uen te fo rm ula ch e p uò e sse re c alco lato usa ndo la serie (2) da ta in un a sli de p rece den te

( ) ( )

6 32)( 4243412

4 nnnknT

nk ++==

=

( )

12

n O

Quindi, la rispostaè

Ra pp res en taz ion ie op era zio ni su nu m eri bin ari

(Per altriesercizisuquestoargomento, siconsiderinoquellidelloscorsoanno)

(21)

Co nv ers io ni

Dati li seguente numero in base 10 convertirli in binario e in esadecimale. Si usi una rappresentazione in virgola fissa dedicando 8 bit alla parte intera e 4 alla parte frazionaria.

216,5625

So lu zio ni …

(216,5625 )10= (1101 1000 , 1001 )2 = (D 8 , 9 )16

216 : 2 = 108+ 0108 : 2 = 54 + 054 : 2 = 27 + 027 : 2 = 13 + 113: 2 = 6 + 16: 2 = 3 + 03: 2= 1 + 11 : 2 = 0 + 1 0,5625 ×2 = 1,1250,125 ×2 = 0,250,25 ×2 = 0,50,5 ×2 = 1

(22)

Co nv ers io ni



Dat i il s egu ente nu me ri in bin ario co nve rtirlo in b ase 10



010 1 1 100

So lu zio ni …

(0101 1100)2 = (92 )10

0 x 2 = 0 + 11 x 2 = 2 + 02 x 2 = 4 + 15 x 2 = 10 + 111 x 2 = 22 + 1 23 x 2 = 46 + 0 46 x 2 = 92+ 0= 92

(23)

Ra pp res en taz ion e in co m ple m en to a 2

Dati i seguenti numeri in base 10 rappresentarli in complemento a 2 e in modulo e segno

i numeri 92, -92 usando 8 bit

So lu zio ne …

(92)10 =(0101 1100)2

In m odu lo e seg no ( 8 b it) 9 2 è 010 1 1 100 , -9 2 è 110 1 1 100 In c om ple me nto a 2 , 92 è 010 1 1 100 , -9 2 è 101 0 0 100

0101 11001010 00111010 0100 complemento tutte le cifre+ 1

Per calc ola re il co mp lem ento a 2 di u n n um ero



si s corr e il num ero da de stra fin o a qu and o n on s i tro va u n u no: i num eri s ucc ess ivi s i co mp lem enta no



opp ure si c om ple me nta tutt o il num ero e s i so mm a 1

0101 1100

1010 0100 complemento le cifre dopoil primo uno

(24)

So m m a in co m ple m en to a 2

Calcolare la sottrazione 45 -92, usando 8 bit e rappresentazioni in complemento a 2

So lu zio ne …



45 i n co mp lem ento a 2 è 001 0 1 101



-92 in c om ple me nto a è 101 0 0 100 (ve di l’e serc izio pre ced ente )



45-9 2 si ottie ne s om ma ndo le r app rese nta zion i di 45 e -92



La s om ma no n h a g ene rato ov erflo w (ov vio vist o ch e si sott rae due nu me ri p osit ivi) per ché i du e b it d i rip orto rela tivi al n ono e all’o ttav o b it d ella rap pre sen tazio ne s ono en tram bi 0

0010 11011010 0100

1101 0001

(25)

So m m a in vir go la m ob ile

Dati i due seguenti numeri rappresentati in virgola mobile in forma standard, con 1 bit per il segno, 3 bit per l’esponente (rappresentazione in eccesso a 7), 4 bit per la mantissa dire quali numeri rappresentano e sommarli

11100000 00010110

bit di segnoS esponenteE mantissaM A =B =

So lu zio ne …



Si ri cord a ch e la for mu la c he d esc rive il n um ero rap pre sen tato dalla for ma sta nda rd è (-1 )

s

1.M 2

E-7



Per



il n um ero è pos itivo vis to c he i l bit di s egn o è 0



l’es pon ente è il va lore di ( 10)

2

me no l ’ecc ess o 7 , cio è2 -7= -5



dato ch e la m anti ssa è 11, il n um ero sen za la pa rte dell’ esp one nte è(1 .11 )

2

, cio è1 ,75



quin di A rap pre sen ta il nu me ro 1 ,75 x 2

-5



Sim ilm ente , B rap pre sen ta il nu me ro 1 ,62 5 x 2

-6 00010110

(26)

So lu zio ne …

Per sommare i numeri A e B

l’esponente di B èpiùpiccolo di quello di A di un’unita, per cui si sposta la virgola della mantissa di B (cioè1.1010) a sinistra di una posizione. Si ottiene MB=0.1101

Quindi si sommano le mantisse

L’esponente del risultato èquello di A, ER =010

A questo punto occorre riportare il numero in forma normale: si sposta a sinistra la virgola della mantissa e si incrementa di uno l’esponente

Alla fine abbiamo ER =011 e MR =1.01001

Quindi, il risultato è01010010 1.11000.110110.1001 MAMBMR

Riferimenti

Documenti correlati

qualunque componente grafica su cui l'utente possa svolgere delle azioni (ad esempio un bottone o una lista di scelte in un menu) Il programmatore decide come gli eventi generati

NB: i permessi definiti su un file dipendono dai permessi della directory che lo contiene Per i file speciali:. r: leggere dal device w: scrivere sul device x:

La procedura è analoga per le pubblicazioni inserite in ARCA con anno di edizione antecedente il 2015: se questo anno fa riferimento alla prima edizione elettronica ma la

initT1 equ bbbbh ; indirizzo valore inizializzazione timer1 initT2 equ CCCCh ; indirizzo valore inizializzazione timer2 buffer equ DDDDh ; indirizzo buffer importazione da

Successivamente viene chiesto di confermare l’impostazione del setpoint: selezionare CONFERMA oppure ANNULLA mediante i tasti SU e GIÙ e validare la scelta premendo il

Gli interventi a parti di edici comunali o centrali termiche posso essere eseguiti senza alcun progetto(casistiche di intervento semplice es. cambio di una nestra) oppure a seguito

RFO02.10 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di modelli che sono in stato in produzione.. RFO03 Obbligatorio Un operatore autenticato deve

viene calcolata la riflettanza al sensore ( ρ ) e salvata nella BR in formato ENVI-standard. L’utente non “entra in contatto” diretto con i modelli di trasferimento ma imposta nel