Franco ScarseliFondamenti di Informatica 2006-071
L’a rch iv io de gli stu de nti
Si vuole implementare una classe che realizzi un archivio di studenti
L’archivio dovràpermettere di
creare un archivio con un numero di massimo distudenti
inserire un nuovo studente
eliminare uno studente indicando il numero di matricola
dire quanti studenti ci sono nell’archivio
cercare uno studente per numero di matricola
cercare tutti gli studenti con un certo nome
Si supponga che sia giàstata definita la classe studente Si scriva la definizione delle classe archivio definendo variabili, costruttore e metodi, senza implementare costruttore e i metodi Classe Archivio
dataContainer
rimuovi
numeroStudenti inserisci
cercaPerMatricola
cercaPerNome
Franco ScarseliFondamenti di Informatica 2006-072
Lo stu de nte (… già de fin ito ) …
class Studente{Stringnome, cognome, matricola;
Studente(Stringn, Stringc, Stringm){nome=n;cognome=c;matricola=m;}}
Franco ScarseliFondamenti di Informatica 2006-073
So lu zio ne …
class Archivio{Studente dataContainer[];Archivio(intmassimaLunghezza)voidinserisci(Studente s)voidrimuovi(Stringm)intnumeroStudenti()Studente cercaPerMatricola(Stringmatricola)Studente [] cercaPerNome(Stringnome, Stringcognome)
}
Franco ScarseliFondamenti di Informatica 2006-074
L’a rch iv io de gli stu de nti II
Si s criv a il cod ice Jav a ch e u san do l a cla sse arc hivio ap pen a d efin ita
cre i un arc hivio co n u n m ass im o d i 10 00 s tud enti
inse risc a g li st ude nti
Pao lino Pa peri no, ma tric ola 10
Pap ero nD ei P ape ron i, m atric ola 1
sta mp i il n um ero di s tud enti ne ll’ar chiv io
Franco ScarseliFondamenti di Informatica 2006-075
So lu zio ne …
Archivio a=newArchivio(100);Studente paperino=newStudente(“Paolino”,”Paperino”,”100”);Studente paperone=newStudente(“Paperon”,”Dei Paperoni”,”1”);a.inserisci(paperino);a.inserisci(paperone);System.out.println(a.numeroStudenti());
Franco ScarseliFondamenti di Informatica 2006-076
La sq ua dra di ca lcio
Si vuole implementare una classe che realizzi una squadra di calcio
L’archivio dovràpermettere di
memorizzare i giocatori con il loro ruolo
memorizzare il nome della squadra
inserire e eliminare un giocatore
modificare il nome della squadra
cercare il ruolo svolto da un giocatore
cercare tutti i giocatori di un ruolo
Si supponga che sia giàstata definita la classe giocatore Si scriva la definizione delle classe definendo variabili, costruttore e metodi, senza implementare costruttore e i metodi Classe Squadra
giocatori
rimuoviGiocatore
modificaNome inserisciGiocatore nome
ruoloDelGiocatore
giocatoriNelRuolo
Franco ScarseliFondamenti di Informatica 2006-077
Il gio ca tor e ( … già de fin ito ) …
class Giocatore{Stringnome, cognome, ruolo;
Giocatore(Stringn, Stringc, Stringr){nome=n;cognome=c;ruolo=r;}}
Franco ScarseliFondamenti di Informatica 2006-078
So lu zio ne …
class Squadra{Giocatore giocatori[];Stringnome;Squadra()voidrimuoviGiocatore(Stringnome, Stringcognome)voidinserisciGiocatore(Giocatore g)voidmodificaNome(Stringn)StringruoloDelGiocatore(Stringnome, Stringcognome)Giocatore [] giocatoriNelRuolo(Stringruolo)
}
Franco ScarseliFondamenti di Informatica 2006-079
La sq ua dra di ca lcio II
Si s criv a il cod ice Jav a ch e u san do l a cla sse Sq uad ra a ppe na d efin ita
cre i un a sq uad ra
dia il n om e “T utti i te mp i”a lla s qua dra
inse risc a i g ioca tori
Pao lo C ann ava ro, ruo lo d ifen sore
Pao lo R oss i, ru olo att acc ante
sta mp i il r uolo de l gio cato re C ann ava ro (… ovv iam ente ce rca ndo lo nell’ arch ivio )
Franco ScarseliFondamenti di Informatica 2006-0710
So lu zio ne …
Squadra a=newSquadra();Giocatore rossi=newGiocatore(“Paolo”,”Rossi”,”attaccante”);Giocatore cannavaro=newGiocatore(“Paolo”,”Cannavaro”,”difensore”);a.inserisci(rossi);b.inserisci(cannavaro);System.out.println(a.ruoloDelGiocatore( “Paolo”, “Cannavaro”));
Franco ScarseliFondamenti di Informatica 2006-0711
Il m ass im o f ra i v alo ri n eg ativ i
Im ple me nta re u n m eto do c he p ren de i n in gre sso un ve ttor e d i in teri e ca lcola il m ass im o co nsid era ndo so lo i valo ri n ega tivi
se il ve ttor e n on c onti ene nu me ri n ega tivi si re stitu isca il v alo re Inte ger. min valu e
dise gna re a nch e il dia gra mm a d i flu sso
intmaxNeg(inta[])
Franco ScarseliFondamenti di Informatica 2006-0712
So lu zio ne …
intmaxNeg(inta[]){intmax=Integer.minvalue;for(inti=0;i<a.length;i++){if(a[i]<0 && max< a[i]) {max=a[i];}}return max;} max=a[i] a[i]<0 && max< a[i] inti = 0
true false
i++ intmax==Integer.minvalue
return max i<a.length
true
false
Franco ScarseliFondamenti di Informatica 2006-0713
Le ta be llin e
Im ple me nta re c he c rea un a m atric e ch e co ntie ne l e ta belli ne
Il m eto do p ren de i n in gre sso un inte ro c he è il m ass im o v alo re d i cu i calc ola re la tab ellin a
Il m eto do r esit uisc ela m atric e
dise gna re a nch e il dia gra mm a d i flu sso
int[][] tabellina(intmax)
25 20 15 10 5 20 16 12 8 4 15 12 9 6 3 10 8 6 4 2 5 4 3 2 1
Franco ScarseliFondamenti di Informatica 2006-0714
So lu zio ne …
int[][] tabellina(intmax){intres[][]=new int[max][max];
for(inti=0;i<max;i++){for(intj=0;j<max;j++){res[i][j]=i*j;}}return res;} res[i][j]=i*j j<max inti = 0
true falsei++ intres=newint[max][max]
return res i<maxtrue
false intj = 0
j++
Franco ScarseliFondamenti di Informatica 2006-0715
So m m a d i d ue ve tto ri
Im ple me nta re u n m eto do c he p ren de i n in gre sso du e v etto ri d i in teri e n e ca lcola la s om ma
dise gna re a nch e il dia gra mm a d i flu sso
Si a ssu ma ch e la lun ghe zza de i ve ttor i in ing ress o sia a s tess a ( non occ orre tes tare qu esta pro prie tà)
int[] somma(inta[], intb[])2 0 1 3 2 0 1 4 1 1
2 1 5 4 3
+=
Franco ScarseliFondamenti di Informatica 2006-0716
So lu zio ne …
intsomma(inta[], intb[]){intres[]=new int[a.length];for(inti=0;i<a.length;i++){res[i]=a[i]+b[i];}return res;} res[i]=a[i]+b[i] inti = 0
false
i++ res[]=new int[a.length];return max i<a.length
true
Franco ScarseliFondamenti di Informatica 2006-0717
Alg eb ra bo ole an a
Dat e le va riab ili d i fia nco , sc rive re l’ esp ress ion e Jav a ch e 1. èfa lsa se e so lo s e “ a èn ell’in terv allo ap erto (2,1 0) o ppu re a è min ore di b ” 2. èv era se e so lo s e “ c non è nes sun o d ei cara tter i P,C ,D o ppu re d èil cara tter e C ” 3. èfa lsa se e so lo s e “ a èu n n um ero dis pari com pre so f ra 1 e 5 , es trem i co mp resi, e c non è il ca ratt ere C” 4. èv era se e so lo s e “ c èu no d ei c ara tter i P,D opp ure a non è la m età di b ”
inta, b;charc,d;Franco ScarseliFondamenti di Informatica 2006-0718
So lu zio ne … 1. èfa lsa se e so lo s e “ a èn ell’in terv allo ap erto (2, 100 ) op pur e a èm ino re d i b ” 2. èv era se e so lo s e “ c non è nes sun o d ei c ara tter i P,C ,D o ppu re d èil cara tter e C ”
3. èfa lsa se e so lo s e “ a èu n n um ero dis pari co mp reso fra 1 e 10 0, e stre mi com pre si, e c non è il ca ratt ere C”
4. èv era se e so lo s e “ c èu no d ei c ara tter i P,D op pur e a non è la m età di b ”
!( (a>2 && a<100) || (a<b) )(c!=‘P’&& c!=‘C’&& c!=‘D’) || (d==‘C’)!(a>=1 && a<=100 && a%2==1 && c!=‘C’)
(c==‘P’|| c==‘D’) ||(a*2!=b)
Franco ScarseliFondamenti di Informatica 2006-0719
Alg eb ra bo ole an a II
Dat e le seg uen tie spre ssio nid i alg ebra bo ole ana
scriv ere la c orris pon den te tab ella di v erità
riott ene re un’e spre ssio ne boo lean ad alla tab ella di v erità usa ndo ilm eto do vist oa lez ion e
b b a F ) (
3+ = b b a F + =
2) (
1b a a b F + + =
Franco ScarseliFondamenti di Informatica 2006-0720
So lu zio ne …
111 010 001 000 F1 ba
) (
1b a a b F + + =
a b F =
1 ok, perchè…a b a b a b b a a b = + = + + ) (
regoledi De Morgany x xy + =
y x y x = +
Franco ScarseliFondamenti di Informatica 2006-0721
So lu zio ne …
111 110 001 100 F1ba
a b b a b a F + + =
2 ok, perchè…b b a F + =
2a b ba b a b a a b b a b b a b b a F + + = + + + = + + = + =
) ( ) (
2Franco ScarseliFondamenti di Informatica 2006-0722
So lu zio ne …
011 010 101 000 F1 ba
b a F =
2 ok, perchè…b b a F ) (
3+ =
b a bb a b b a F = = + = ) (
3Franco ScarseliFondamenti di Informatica 2006-0723
Co nv ers io ni
Dati i seguenti numeri in base 10 convertirli in binario e in esadecimale. Si usi una rappresentazione in virgola fissa dedicando 8 bit alla parte interae 4 alla parte frazionaria.
240,375
96,3125
193,5625
184,375
Franco ScarseliFondamenti di Informatica 2006-0724
So lu zio ni …
(240,375 )10= (1111 0000 , 0110 )2 = (F 0 , 6 )16
240 : 2 = 120+ 0120 : 2 = 60 + 060 : 2 = 30 + 030 : 2 = 15 + 015: 2 = 7 + 17: 2 = 3 + 13: 2= 1 + 11 : 2 = 0 + 1 0,375 ×2 = 0,750,75 ×2 = 1,50,5 ×2 = 1
Franco ScarseliFondamenti di Informatica 2006-0725
So lu zio ni …
(96, 3125 )10 = (0110 0000, 0101 )2 = (6 0 , 5 )16
(193,5625)10= (1100 0001, 1001)2 = (C1 , 9 )16(184,375)10= (1011 1000, 0110)2 = (B8, 6 )16
Franco ScarseliFondamenti di Informatica 2006-0726
Co nv ers io ni
Dat i i s egu enti nu me ri in bin ario co nve rtirli in b ase 10
101 1 0 011
001 0 1 001
100 1 0 111
110 1 1 011
Franco ScarseliFondamenti di Informatica 2006-0727
So lu zio ni …
(1011 0011)2 = (179 )2
1 x 2 = 2 + 02 x 2 = 4 + 15 x 2 = 10 + 111 x 2 = 22 + 022 x 2 = 44 + 0 44 x 2 = 88 + 1 89 x 2 = 178+ 1= 179
Franco ScarseliFondamenti di Informatica 2006-0728
So lu zio ni ..
(0010 1001)2= (41 )2
(1001 0111)2= (151 )2
(1101 1011)2= (219)2
Franco ScarseliFondamenti di Informatica 2006-0729
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 modulee segno
i numeri 98, -98 usando 8 bit
i numeri 120, -120, usando 8 bit
i numeri 23, -23 usando 6 bit
i numeri 5, -5 usando 4 bit
Franco ScarseliFondamenti di Informatica 2006-0730
So lu zio ne …
(98)10 =(
110 00 10
)2In m odu lo e seg no ( 8 b it) 9 8 è 011 0 0 010 , -9 8 è 111 0 0 010 In c om ple me nto a 2 , 98 è 011 0 0 010 , -9 8 è 100 1 1 110
011000101001110110011110 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
0110001010011110 complemento le cifre dopoil primo uno
Franco ScarseliFondamenti di Informatica 2006-0731