Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå
|
|
- Roy Jacobsen
- 8 år siden
- Visninger:
Transkript
1 Vedlegg A.1 Filbehandling på bit-nivå Side 1 av 9 Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå A.1 Filbehandling på bit-nivå A.1.1 Sammendrag Klassen BitInputStream gjør det mulig å lese en fil (og andre datasekvenser) på bitnivå, dvs. lese én og én bit, eller et variabelt antall biter, om gangen. Tilsvarende gjør klassen BitOutputStream det mulig å skrive til en fil (og andre ut-enheter) bitvis. Dette sammendraget inneholder en kort diskusjon av det viktigste i de to klassene. En mer detaljert gjennomgang av class BitInputStream finner du i Avsnitt A.1.2 til Avsnitt A.1.6 og av class BitOutputStream i Avsnitt A.1.7. En instans av BitInputStream kan knyttes til en fil med navn "innfil.xyz" enten ved hjelp av en konstruktør eller ved hjelp av en fabrikasjonsmetode (eng: factory method): BitInputStream inn = new BitInputStream("innfil.xyz"); BitInputStream inn = BitInputStream.fromFile("innfil.xyz"); Klassen bruker et internt buffer (med standardstørrelse på 4kb) for å effektivisere fil-lesingen og har på lik linje med andre stream-klasser en close-metode som skal brukes når fil-lesingen er ferdig. Lesingen av biter skjer normalt med en av flg. tre metoder: public int readbit() public int read() public int readbits(int numberofbits) Den første metoden leser én bit om gangen og returnerer 0 hvis det var en 0-bit og 1 hvis det var en 1-bit. Den andre metoden leser nøyaktig 8 biter (1 byte) og fungerer slik som read er beskrevet i class InputStream i java.io. Den siste metoden leser et ønsket antall biter og de blir returnert som de bakerste bitene i et heltall. Resten av heltallet (de forreste bitene) består kun av 0-biter. Metoden kan maksimalt lese 31 biter om gangen, dvs. parameterverdien numberofbits må være mindre enn eller lik 31. Alle de tre read-metodene returnerer -1 hvis det er færre biter igjen enn det som skal leses. For den første read-metoden, der det skal leses én bit, betyr det at vi har kommet til slutten (end of file). Hvis -1 kommer som returverdi fra de to andre read-metodene, behøver ikke bety at vi har kommet til slutten av filen. Det betyr bare at det er færre biter igjen enn det antallet som ønskes lest. Metoden int available() forteller til enhver tid hvor mange biter som er igjen. I enkelte anvendelser er det gunstig å kunne «legge tilbake» en eller flere av de bitene som nettopp har blitt lest. Klassen har tre metoder for dette: public void unreadbit() public void unreadbits() public void unreadbits(int numberofbits)
2 Vedlegg A.1 Filbehandling på bit-nivå Side 2 av 9 Den første legger tilbake den sist leste biten, den andre resten av de leste bitene og den siste legger tilbake et ønsket antall av de sist leste bitene. Det kan aldri legges tilbake flere biter enn dem som sist ble lest. Metoden int unreadsize() forteller til enhver tid hvor mange biter som kan legges tilbake. Se mer om dette på Java API-en for class BitInputStream. En instans av BitOutputStream knyttes til en fil med navn "utfil.xyz" enten ved hjelp av en konstruktør eller ved hjelp av en fabrikasjonsmetode (eng: factory method): BitOutputStream ut = new BitOutputStream("utfil.xyz"); BitOutputStream ut = BitOutputStream.toFile("utfil.xyz"); Også denne klassen bruker en buffer-teknikk for å effektivisere bithåndteringen og filskrivingen. Her har byte-bufferet en standardstørrelse på 4kbb. Det er helt essensielt at en instans av BitOutputStream «lukkes» ved hjelp av close-metoden når fil-skrivingen er ferdig. Et kall på close sørger samtidig for at klassens interne bufferere «tømmes», dvs. at alt som ligger der skrives ut. Skrivingen av biter kan skje med hjelp av en av flg. fem metoder: public void write0bit() public void write1bit() public void writebit(int bit) public void write(int b) public void writebits(int value, int numberofbits) Hver av de tre første metodene skriver ut nøyaktig én bit. Den første en 0-bit, den andre en 1 -bit og den tredje skriver ut den siste biten i parameterverdien bit. Det betyr f.eks. at write1bit() og writebit(1) vil ha samme effekt. Metoden write(int b) skriver ut nøyaktig 8 biter (1 byte), dvs. de 8 siste bitene i parameterverdien b. Den fungerer slik som write er beskrevet i class OutputStream i java.io. Den siste metoden skriver ut et ønsket antall biter, dvs. de siste numberofbits biter (maksimalt 32) fra parameterverdien value. Se mer om dette på Java API-en for class BitOutputStream. A.1.2 Sekvenser av biter og class BitInputStream En fil er en sekvens med byter. Men hver byte består av 8 biter og dermed kan vi også se på en fil som en sekvens av biter. Det er imidlertid ikke mulig å lese biter enkeltvis fra en fil og det er heller ikke mulig å skrive en og en bit til en fil. Ved filbehandling er en byte den minste enheten vi kan arbeide med. Det vil imidlertid være situasjoner der det er aktuelt å arbeide både med biter enkeltvis og med bitsamlinger med et variabelt antall biter. Dette kan vi gjøre ved hjelp av bitoperatorene i Java. Ved hjelp av dem kan vi også lage egne klasser for filbehandling der skriv- og lesmetodene arbeider med et variabelt antall biter. Klassen BitInputStream er spesiallaget for å kunne arbeide med sekvenser av biter eller med det som også kalles en strøm (eng: stream) av biter. En fil kan betraktes som en sekvens eller strøm av biter. Men det er også andre eksempler. I en byte-tabell (eng: byte array) ligger bytene fortløpende bortover og dermed (1 byte = 8 biter) blir det en sekvens av biter.
3 Vedlegg A.1 Filbehandling på bit-nivå Side 3 av 9 A.1.3 Instansiering av BitInputStream Klassen BitInputStream har fire konstruktører og to fabrikasjonsmetoder (eng: factory methods): public BitInputStream(InputStream in) public BitInputStream(String filename) public BitInputStream(InputStream in, int size) public BitInputStream(String filename, int size) public static BitInputStream fromfile(string filename) public static BitInputStream frombytearray(byte[] b) BitInputStream bruker et internt buffer for å gjøre fil-lesingen mest mulig effektiv. Når bufferet er tomt blir det fylt ved hjelp én leseoperasjon. Dermed blir antallet leseoperasjoner kraftig redusert. En fil kan ligge på en harddisk, på en diskett, på en CD eller kanskje på Internett. Operasjoner på slike yttre enheter går alltid vesentlig saktere enn operasjoner internt i datamaskinen, og derfor er det lønnsomt å ha få av dem. De første konstruktørene trenger en InputStream eller et filnavn som parameter og bruker en standardverdi på 4kb (= 4096 byter) som intern bufferstørrelse. I de to neste kan en selv velge bufferstørrelse. Det er plattformavhengig hva som er den mest gunstige bufferstørrelsen. Det henger sammen med hvor mange byter det er mulig å lese fra f.eks. harddisken i én leseoperasjon. En bufferstørrelse på 4kb vil kunne fungere bra i de fleste tilfeller. De to fabrikasjonsmetodene er litt annerledes. Den første knytter en BitInputStream til en fil med oppgitt filnavn, og bruker standard bufferstørrelse. Den andre bruker en byte-tabell som den bitsekvensen det skal leses fra. Der blir bufferstørrelsen satt lik byte-tabellens lengde så sant den ikke er større enn standard bufferstørrelse. Hvis vi skal knytte en instans av BitInputStream-klassen til en fil med navn "innfil.xyz", kan vi gjøre det på en av flg. to måter: BitInputStream inn = new BitInputStream("innfil.xyz"); BitInputStream inn = BitInputStream.fromFile("innfil.xyz"); Programkode A.1.3 a) Gitt at vi har flg. sekvens eller strøm av biter: Figur A.1.3 b) Det er tilsammen 48 biter. Vi kunne f.eks. tenke oss at det er de første 48 bitene (dvs. de første 7 bytene) på filen "innfil.xyz". Men det er også mulig å lage en byte-tabell som gir oss den samme sekvensen. De første 8 bitene er Dette kan tolkes som tallet 103 (= ). De neste 8 bitene er og det blir 89 (= ). Osv. Dermed vil flg. byte-tabell gi oss bitsekvensen i Figur A.1.3 b): byte[] b = {(byte)103,(byte)89,(byte)110,(byte)-27,(byte)98,(byte)-100}; Vi knytter en instans av BitInputStream-klassen til byte-tabellen b på en av flg. to måter:
4 Vedlegg A.1 Filbehandling på bit-nivå Side 4 av 9 BitInputStream inn = new BitInputStream(new ByteArrayInputStream(b),b.length); BitInputStream inn = BitInputStream.fromByteArray(b); Programkode A.1.3 c) Her brukes b.length som bufferstørrelse i begge tilfellene. I det første tilfellet eksplisitt som parameterverdi og i det andre tilfellet implisitt i koden for fabrikasjonsmetoden. Det har ingen hensikt å bruke en bufferstørrelse som er større enn størrelsen på byte-tabellen. Vi kan også se på en tegnstreng som en bitsekvens siden hvert tegn kan ses på som 8 biter. Vi knytter en instans av BitInputStream til en tegnstreng på flg. måte: String s = "Dette er den første delen av en tekst."; BitInputStream inn = BitInputStream.fromByteArray(s.getBytes()); Programkode A.1.3 d) OBS En instans av klassen BitInputStream "lukkes" ved hjelp av metoden void close(). A.1.4 Read - metodene Vi antar nå at vi har en instans av class BitInputStream ved navn inn og at de første bitene i den tilhørende bitsekvensen er som Figur A.1.3 b). Det kan vi f.eks. få til ved hjelp av Programkode A.1.3 c). Klassen har tre lesemetoder: public int readbits(int numberofbits) public int read() public int readbit() Før lesingen starter vil bitsekvensen se slik ut: x Figur A.1.4 a) Symbolet x markerer gjeldende posisjon (eng: current position), og før noe er lest er gjeldende posisjon helt i begynnelsen av sekvensen. Vi leser så f.eks. 17 biter: int n = inn.readbits(17); // n får verdien Programkode A.1.4 b) De 17 leste bitene vil bli returnert som de 17 bakerste (minst signifikante) bitene i et heltall. Resten (de 15 forreste) vil garantert være 0-biter. I Programkode A.1.4 b) vil variablen n inneholde de 17 første bitene fra sekvensen og de ligger bakerst (markert med fet type). I tillegg vil gjeldende posisjon ha flyttet seg 17 posisjoner mot høyre slik som Figur A.1.4 c) under viser: x Figur A.1.4 c)
5 Vedlegg A.1 Filbehandling på bit-nivå Side 5 av 9 Vi kan gå videre fra Programkode A.1.4 b): n = inn.readbits(5); // n får verdien Programkode A.1.4 d) Variablen n innholder nå de 5 neste bitene og gjeldende posisjon er flyttet 5 posisjoner mot høyre slik som Figur A.3.4 e) under viser: x Figur A.1.4 e) Generelt gjelder at metoden int readbits(int numberofbits) leser et oppgitt antall biter, fra og med og gjeldende posisjon, og bitene blir returnert som de bakerste bitene i et heltall. Resten av heltallet (de forreste bitene) består av 0-biter. Internt i klassen vil gjeldende posisjon ha flyttet seg like mange posisjoner mot høyre som antallet leste biter. Det er imidlertid en restriksjon. Det er ikke mulig å lese flere enn 31 biter på en gang. Grunnen til at det ikke kan leses 32 biter er at -1 returneres når det er mindre enn numberofbits biter igjen. Dermed vil det ikke være mulig å skille på når -1 (dvs biter) er en bitene i en innlesing eller signaliserer at at det ikke er nok biter igjen å lese. Den neste read-metoden - int read() - leser nøyaktig 8 biter (1 byte) (og gjeldende posisjon flyttes 8 posisjoner mot høyre). Den er tatt med fordi class InputStream har en slik metode. F.eks. vil nå koden read() og koden readbits(8) ha samme effekt. Den siste metoden - int readbit() - leser én bit og returnerer 0 eller 1 avhengig av om den leste biten var en 0- eller 1 -bit. Internt flyttes gjeldende posisjon en mot høyre. Spesielt vil readbit() og readbits(1) ha samme effekt, men den første er litt raskere. Felles for alle de tre read-metodene er at -1 returneres hvis det er færre enn det ønskede antallet biter igjen i sekvensen. Dette behøver ikke å bety at vi har kommet til slutten på sekvensen (end of file). Hvis det f.eks. er 5 biter igjen i sekvensen og vi ber om å få lese 10, vil vi få -1 som returverdi. Metoden int available() forteller oss til enhver tid hvor mange biter det er igjen. Hvis metoden readbit() returnerer -1, så har vi kommet til slutten av sekvensen. Dette bruker vi i flg. programeksempel der det leses en og en bit fra en bitsekvens og bitene skrives ut som 0 og 1: byte[] b = // b gir oss bitsekvensen i figur A.1.3 b) {(byte)103,(byte)89,(byte)110,(byte)-27,(byte)98,(byte)-100}; BitInputStream inn = BitInputStream.fromByteArray(b); int n; while ((n = inn.readbit())!= -1) System.out.print(n); inn.close(); // utskriften blir det samme som bitsekvensen i Figur A.1.3 b) Programkode A.1.4 f)
6 Vedlegg A.1 Filbehandling på bit-nivå Side 6 av 9 A.1.5 Metodene skip og unread Det er mulig å hoppe over eller skippe (eng: skip) et antall biter. Det betyr at gjeldende posisjon i bitsekvensen flyttes (mot høyre) uten at bitene leses. Vi har to skip-metoder: public int skipbit() public int skipbits(int numberofbits) Den første - skipbit() - hopper over én bit om gangen og den andre hopper over et oppgitt antall biter. Metoden skipbits(int numberofbits) fungerer best når antallet biter som skal skippes ikke er veldig stort. Den kan imidlertid brukes til å skippe nærmest så mange biter vi vil. Antallet begrenses kun av datatypen int. Begge metodene har det til felles at returverdien er et antall, dvs. det antallet biter som ble hoppet over (eller skippet). Det er ikke mulig å hoppe lengre i bitsekvensen enn til slutten, dvs. én posisjon forbi siste bit. Hvis det er færre biter igjen i bitsekvensen enn det antallet som skal skippes, returneres det antallet som ble skippet. Det betyr spesielt at hvis vi har nådd til slutten av bitsekvensen, vil returverdien bli 0 uansett hvilken skip som kalles. Ta utgangspunkt i Figur A.1.4 e). Vi kan nå f.eks. be om å få skippet 13 biter: int k = inn.skipbits(13); // k får verdien 13 Det fører til at gjeldende posisjon flyttes 13 posisjoner mot høyre slik som Figur A.3.5 a) under viser: x Figur A.1.5 a) En unread legger biter tilbake (eng: pushes back) i bitsekvensen. Det som egentlig skjer er at gjeldende posisjon flyttes tilbake (mot venstre). Dermed blir unread en slags omvendt skip. Vi har tre unread-metoder: public void unreadbit() public void unreadbits() public void unreadbits(int numberofbits) Et kall på en unread krever at det har vært en forutgående read (eller skip). Etter en read kan en eller flere av de bitene som ble lest, «legges tilbake» i bitsekvensen, men det kan ikke legges tilbake flere enn de som ble lest. En skip leser egentlig ikke biter - den bare hopper over. Men det er tillatt med en unread også etter en skip, men det kan fortsatt ikke «legges tilbake» flere enn de bitene som ble skippet. I begge tilfellene (både etter en read og en skip) kan det av ulike årsaker normalt ikke legges tilbake flere enn 25 biter. Etter en read (eller en skip) kan en unread kalles flere ganger, men sammenlagt kan det ikke «legges tilbake» flere biter enn de som ble lest (eller skippet). Det betyr at gjeldende posisjon i bitsekvensen ikke kan flyttes lenger tilbake (mot venstre) enn til der den var før den forutgående read (eller skip) ble utført. Hvis det gjøres et forsøk på å «legge tilbake» flere biter enn det som er mulig, vil det kastes et unntak av typen IllegalArgumentException. Metoden int unreadsize() forteller hele tiden hvor mange biter som kan «legges tilbake». Den første metoden - void unreadbit() - legger den sist leste biten tilbake (dvs. flytter gjeldende posisjon en mot venstre). Den neste metoden - void unreadbits() - legger resten av bitene tilbake, dvs. enten alle bitene eller eventuelt de som ikke allerede har blitt lagt tilbake. Det som egentlig skjer er at gjeldende posisjon flyttes helt tilbake til der den var før siste
7 Vedlegg A.1 Filbehandling på bit-nivå Side 7 av 9 read (eller skip). Den siste metoden - void unreadbits(int numberofbits) - legger det oppgitte antallet biter tilbake (dvs. flytter gjeldende posisjon tilsvarende tilbake). Ta nå utgangspunkt i Figur A.1.5 a), som vi fikk etter å ha skippet 13 biter (dvs. etter kallet inn.skipbits(13)). Vi ser på flg. kode: inn.unreadbits(9); // ok - det ble skippet 13 biter sist k = inn.unreadsize(); // k får verdien 4 ( = 13-9) n = inn.readbits(7); // de 7 bitene leses inn.unreadbits(); // de 7 bitene "legges tilbake" inn.unreadbit(); // feil!! - det er allerede lagt tilbake 7 biter A.1.6 Øvrige metoder Programkode A.1.5 b) Det er mulig å lese biter fra bitsekvensen uten at de blir fjernet. Det betyr egentlig at gjeldende posisjon holdes i ro etter lesingen. Det er to slike metoder: public int peekbit() public int peekbits(int numberofbits) Den første metoden - peekbit() - returnerer 0 eller 1 avhengig av om biten på gjeldende posisjon er en 0-bit eller en 1-bit. Gjeldende posisjon flyttes ikke etterpå. Den andre metoden - peekbits(int numberofbits) - leser et oppgitt antall biter fra og med gjeldende posisjon (og gjeldende posisjon flyttes ikke). Bitene returneres på samme måte som det den tilsvarende read gjør, dvs. som biter lengst til høyre i et heltall. Begge peek-metodene returnerer -1 hvis det er færre biter igjen i bitsekvensen enn det antallet som ønskes lest. OBS Etter en peek blokkeres muligheten til å «legge biter tilbake», dvs. at unread ikke er tillatt. Det må først utføres en read (eller en skip) før blokkeringen opphører. Den siste muligheten som klassen BitInputStream tilbyr er å legge helt nye biter inn i bitsekvensen, dvs. biter i tillegg til de som allerede ligger der. Det er tre metoder for det: public void insert1bit() public void insert0bit() public void insertbits(int value, int numberofbits) De to første legger inn én bit (0 eller 1) rett foran gjeldende posisjon og ny gjeldende posisjon blir der den nye biten er lagt. Den siste metoden legger de siste numberofbits fra value inn rett foran gjeldende posisjon, og ny gjeldende posisjon blir der den første av de nye bitene er lagt. Det er restriksjoner på hvor mange nye biter det kan legges inn. Rett etter en read (eller en skip) kan det minst legges så mange biter som ble lest (eller skippet hvis det ikke ble skippet mer enn 25 biter). I mange tilfeller kan det legges inn mer. Metoden int insertsize() forteller til enhver tid hvor mange nye biter som kan legges inn. OBS: Etter en insert gir unreadsize() en tilsvarende mindre verdi. A.1.7 class BitOutputStream BitOutputStream har fire konstruktører og to fabrikasjonsmetoder (eng: factory methods): public BitOutputStream(OutputStream out) public BitOutputStream(String filename) public BitOutputStream(OutputStream out, int size)
8 Vedlegg A.1 Filbehandling på bit-nivå Side 8 av 9 public BitOutputStream(String filename, int size) public static BitOutputStream tofile(string filename) public static BitOutputStream tofile(string filename, boolean append) BitOutputStream bruker interne buffere for å gjøre bithåndteringen og fil-skrivingen mest mulig effektiv. Når det interne byte-bufferet blir fullt skrives det automatisk ut ved hjelp av én skriveoperasjon. De første konstruktørene trenger en OutputStream eller et filnavn som parameter og bruker en standardverdi på 4kb som intern bufferstørrelse. I de to neste konstruktørene kan en selv velge bufferstørrelse. Det er plattformavhengig hva som er den mest gunstige bufferstørrelsen. Det henger sammen med hvor mange byter det er mulig å skrive til f.eks. harddisken i én skriveoperasjon. En bufferstørrelse på 4kb vil kunne fungere bra i de fleste tilfeller. Begge fabrikasjonsmetodene brukes standard bufferstørrelse. Gitt at vi vil skrive til en fil med navn "utfil.xyz". Hvis vi har en fil med dette navnet fra før blir den overskrevet (eller egentlig fjernet og erstattet med ny med samme navn). Vi kan knytte en instans av BitOutputStream-klassen til "utfil.xyz" på en av flg. to måter: BitOutputStream ut = new BitOutputStream("utfil.xyz"); BitOutputStream ut = BitOutputStream.toFile("utfil.xyz"); Programkode A.1.7 a) Av og til ønsker vi å skrive videre (bakerst) på en eksisterende fil, f.eks. filen "utfil.txt". Da settes append til true i fabrikasjonsmetoden. F.eks. slik: BitOutputStream ut = BitOutputStream.toFile("utfil.xyz",true); OBS: En instans av klassen BitOutputStream «lukkes» ved hjelp av metoden void close(). BitOutputStream har fem skrivemetoder: public void write0bit() public void write1bit() public void writebit(int bit) public void write(int b) public void writebits(int value, int numberofbits) De to første skriver ut, som navnet sier, én bit (0 eller 1). Det gjør også den neste, men der er det den siste biten i parameterverdien bit som skrives ut. Det betyr at f.eks. write1bit() og writebit(1) har samme effekt. Metoden write(int b) skriver ut nøyaktig 8 biter (1 byte), dvs. de 8 siste bitene i parameterverdien b. Den svarer til den vanlige write-metoden i class OutputStream. Den siste metoden skriver ut de numberofbits siste bitene fra parameterverdien value. Hvis vi skal skrive biter til en fil, vil det ofte skje at det tilsammen ikke blir et helt antall byter, f.eks. slik som i flg. eksempel: BitOutputStream ut = BitOutputStream.toFile("utfil.xyz"); ut.writebits(-1,9); // skriver ut 9 biter, dvs: ut.writebits(45,7); // skriver ut 7 biter, dvs: ut.writebits(22,5); // skriver ut 5 biter, dvs: ut.close(); // VIKTIG: Avslutt alltid med close()
9 Vedlegg A.1 Filbehandling på bit-nivå Side 9 av 9 Programkode A.1.7 b) I Programkode A.3.7 b) blir det skrevet ut = 21 biter. Her er det et problem. I det vanlige filsystemet er 1 byte den minste enheten for utskrift. BitOutputStream løser dette ved at biter fortløpende settes sammen til byter som så skrives ut. Dette går bra inntil vi skal avslutte. Da kan det være at vi ikke har nok biter til å fylle opp den siste byten. Systemet løser det selv ved at et tilstrekkelig antall 0-biter legges på til slutt. I Programkode A.3.7 b) der det eksternt kun ble skrevet ut 21 biter, vil det internt bli lagt til 3 ekstra 0-biter bakerst. Tilsammen 24 biter som utgjør 3 byter. Utskriftsfilen "utfil.xyz" vil derfor komme til å inneholde disse 24 bitene: Når en fil som er laget på denne måten, senere skal leses, vil problemet dukke opp igjen. Hvis det ligger en eller flere 0-biter bakerst på filen, så er det ikke mulig å vite om det er biter vi har skrevet ut eller om det er biter som systemet selv har lagt på. Hvis det er viktig å vite dette må vi «notere» et sted det antallet 0-biter som systemet har lagt på. Eventuelt kan vi i steden «notere ned» det totale antallet biter vi har skrevet ut. Metoden public int missingbits() forteller til enhver tid hvor mange biter som mangler for å kunne fylle den siste byten. Den returnerer et heltall i intervallet [0,7]. Hvis f.eks. den kalles rett før vi lukker, så får vi vite hvor mange 0-biter systemet kommer til å legge på bakerst. Det er særdeles viktig at vi lukker ved hjelp av metoden void close() når vi er ferdige med skrivingen. Hvis ikke kan vi risikere at ikke alle bitene blir skrevet ut til utstrømmen. Det kommer av at BitOutputStream bruker et internt buffer-system. Det interne byte-bufferet blir automatisk «tømt» (dvs. innholdet sendes til utstrømmen) når det er fullt. Men det vil normalt ligge noe igjen i begge de interne bufferne (bit-buffer og byte-buffer) når vi skal avslutte. Dette blir sendt til utstrømmen når vi kaller close(). Det vil kunne være situasjoner der vi må «tømme» bufferne selv om vi ennå ikke er ferdige med skrivingen. Metoden public void flush() er laget for dette formålet. En må være klar over at det da vil bli lagt på tilstrekkelige mange 0-biter bakerst slik at det blir et helt antall byter. Metoden int missingbits() vil også her fortelle hvor mange. Men i vanlig skriving til en utstrøm (f.eks. en fil) skal en normalt ikke bruke flush(). OBS: Det ligger et innebygd kall på flush() i koden for close(). Det er derfor ikke nødvendig å gjøre et eksplisitt kall på flush() før en avslutter med close(). Copyright Ulf Uttersrud, All rights reserved.
Algoritmer og datastrukturer A.1 BitInputStream
Vedlegg A.1 BitInputStream Side 1 av 8 Algoritmer og datastrukturer A.1 BitInputStream A.1 BitInputStream A.1.1 Instansiering BitInputStream har fire konstruktører og to konstruksjonsmetoder (eng: factory
DetaljerAlgoritmer og datastrukturer Vedlegg A.2 BitOutputStream
Vedlegg A.2 BitOutputStream Side 1 av 6 Algoritmer og datastrukturer Vedlegg A.2 BitOutputStream A.2 BitOutputStream A.2.1 Instansiering og skriving BitOutputStream har fire konstruktører og to konstruksjonsmetoder
DetaljerAlgoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1
Delkapittel 9.1 Generelt om balanserte trær Side 1 av 13 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1 9.1 Generelt om balanserte trær 9.1.1 Hva er et balansert tre? Begrepene balansert og
DetaljerAlgoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2
Delkapittel 9.2 Rød-svarte og 2-3-4 trær Side 1 av 16 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 9.2 Rød-svarte og 2-3-4 trær 9.2.1 B-tre av orden 4 eller 2-3-4 tre Et rød-svart tre og et
DetaljerAlgoritmer og datastrukturer Kapittel 5 - Delkapittel 5.4
Delkapittel 5.4 Huffmantrær Side 1 av 50 Algoritmer og datastrukturer Kapittel 5 - Delkapittel 5.4 5.4 Huffmantrær 5.4.1 Datakomprimering D. Huffman Et Huffmantre er et fullt binærtre med spesielle egenskaper
DetaljerAlgoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8
Delkapittel 1.8 Algoritmeanalyse Side 1 av 12 Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8 1.8 Algoritmeanalyse 1.8.1 En algoritmes arbeidsmengde I Delkapittel 1.1 ble det definert og diskutert
DetaljerAlgoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1
Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting
DetaljerTOD063 Datastrukturer og algoritmer
TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage
DetaljerForelesningsquiz. Forelesning inf1000 - Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.
Forelesning inf1000 - Java 5 Forelesningsquiz Tema: En liten quiz (se utdelt ark) Filbehandling Tekster Ole Christian Lingjærde, 19. september 2012 Sett dere to (eller tre) sammen og besvar de fire spørsmålene
DetaljerAlgoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3
Delkapittel 1.3 Ordnede tabeller Side 1 av 70 Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.3 1.3 Ordnede tabeller 1.3.1 Permutasjoner En samling verdier kan settes opp i en rekkefølge. Hver
DetaljerLese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:
Lese fra fil Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 5 Vi må først importere pakken easyio Vi åpner
DetaljerAlgoritmer og datastrukturer Vedlegg A.4 Filbehandling på char-nivå
Vedlegg A.4 Filbehandling på char-nivå Side 1 av 9 Algoritmer og datastrukturer Vedlegg A.4 Filbehandling på char-nivå A.4 Filbehandling på char-nivå A.4.1 Reader-klassene Reader er en abstrakt basisklasse
DetaljerOblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59
Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være
Detaljer13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER
.9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,
DetaljerAlgoritmer og datastrukturer E Løkker i Java
Vedlegg E Løkker i Java Side 1 av 6 Algoritmer og datastrukturer E Løkker i Java E Løkker i Java E.1 For-løkker En for-løkke består av de fire delene initialisering, betingelse, oppdatering og kropp (eng:
Detaljer3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster
3 emner i dag! INF1000 Uke 5 Litt om objekter, pekere og null Filer og easyio Litt mer om tekster Litt om objekter, filer med easyio, tekst 1 2 Objekter og pekere Vi lager pekere og objekter når vi bruker
Detaljer22.02.2009. Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java
Spørsmål fra forrige forelesning INF1000 Forelesning 7 Operator-presedens i Java? Hvordan virker metodene inword()/inint()/etc. i In-klassen i easyio når vi skriver inn flere verdier på tastaturet? Litt
DetaljerTeori og oppgaver om 2-komplement
Høgskolen i Oslo og Akershus Diskret matematikk høsten 2014 Teori og oppgaver om 2-komplement 1) Binær addisjon Vi legger sammen binære tall på en tilsvarende måte som desimale tall (dvs. tall i 10- talssystemet).
DetaljerUNIVERSITETET I OSLO
Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Fredag 4. desember 2015 Tid for eksamen: 14.30 (4 timer)
DetaljerTa inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man
Eksempel med to-dimensjonal array Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 6 Vi skal lage et program som illustrerer
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Prøveeksamen tirsdag 23. november 2010 Tid for eksamen:
DetaljerDagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?
Dagens tema: 12 gode råd for en kompilatorskriver Hva skal gjøres med navn? Sjekking av navn Hvordan sjekke navn? Testutskrifter 12 gode råd En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme
DetaljerINF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004
INF1000 Metoder Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 Motivasjon Når man begynner å skrive store programmer, vil man fort oppleve at programmene blir uoversiktlige. Det blir vanskeligere
DetaljerAlgoritmer og datastrukturer Eksamen
Algoritmer og datastrukturer Eksamen 02.12.2009 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator som ikke kommuniserer. Faglærer: Ulf Uttersrud Råd og tips: Bruk ikke for
DetaljerEKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på
DetaljerAlgoritmer og datastrukturer Kapittel 5 - Delkapittel 5.1
Delkapittel 5.1 Binære trær side 1 av 71 Algoritmer og datastrukturer Kapittel 5 - Delkapittel 5.1 5.1 Binære trær 5.1.1 Binære trærs egenskaper Binære trær (eng: binary tree), og trær generelt, er en
DetaljerG høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato: 09.12.
G høgskolen i oslo Emne: Algoritmer og datastrukturer Emnekode: 80131A Faglig veileder: UlfUttersrud Gruppe(r) : Dato: 09.12.2004 Eksamenstid: 9-14 Eksamensoppgaven består av: Tillatte hjelpemidler Antall
DetaljerAlgoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1
Delkapittel 2.1 Plangeometriske algoritmer Side 1 av 7 Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1 2.1 Punkter, linjesegmenter og polygoner 2.1.1 Polygoner og internett HTML-sider kan ha
DetaljerAlgoritmer og datastrukturer Kapittel 4 - Delkapittel 4.3
Delkapittel 4.3 En toveiskø (deque) Side 1 av 5 Algoritmer og datastrukturer Kapittel 4 - Delkapittel 4.3 4.3 En toveiskø (deque) 4.3.1 Grensesnittet Toveiskø En stakk kan godt ses på som en kø der vi
DetaljerIN Notat om I/O i Java
IN1010 - Notat om I/O i Java Mathias J.P. Stang, Tuva Kristine Thoresen, Ingrid Grønlie Guren 17. januar 2018 Dette notatet handler om I/O (input/output) i Java, og tar for seg innlesning fra terminal,
DetaljerAlgoritmer og datastrukturer Vedlegg A.3 Filer på byte-nivå
Vedlegg A.3 Filbehandling på byte-nivå Side 1 av 21 Algoritmer og datastrukturer Vedlegg A.3 Filer på byte-nivå A.3 Filbehandling på byte-nivå A.3.1 Sammendrag En datastrøm (eng: data stream) er en sekvens
DetaljerAlgoritmer og datastrukturer Eksamen
Eksamensoppgave i Algoritmer og datastrukturer ved Høgskolen i Oslo Side 1 av 5 Algoritmer og datastrukturer Eksamen 30.11.2010 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator
DetaljerOversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster
Oversikt INF1000 Uke 6 Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster Litt om objekter, filer med easyio, tekst Arne Maus 1 2 Objekter, pekere og null Vi lager pekere og objekter
DetaljerI dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger
I dag INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Litt repetisjon Mer om uttrykk Lesing og skriving til terminal Forgreninger
DetaljerAlgoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2
Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien
DetaljerINF Notat om I/O i Java
INF1000 - Notat om I/O i Java Tuva Kristine Thoresen, Ingrid Grønlie Guren tuvakt@ulrik.uio.no, ingridgg@ulrik.uio.no 22. oktober 2014 Dette notatet handler om I/O (input/output) i Java, og tar for seg
DetaljerLøse reelle problemer
Løse reelle problemer Litt mer om løkker, metoder med returverdier og innlesing fra fil INF1000, uke4 Geir Kjetil Sandve Repetisjon fra forrige uke: while Syntaks: while (condition) do1; do2;... Eksempel:
DetaljerKanter, kanter, mange mangekanter
Kanter, kanter, mange mangekanter Nybegynner Processing PDF Introduksjon: Her skal vi se på litt mer avansert opptegning og bevegelse. Vi skal ta utgangspunkt i oppgaven om den sprettende ballen, men bytte
DetaljerHva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }
Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =
DetaljerOblig 4Hybelhus litt mer tips enn i oppgaven
Oblig 4Hybelhus litt mer tips enn i oppgaven lørdag 19. okt 2013 Arne Maus Obligatorisk oppgave 4 Gulbrand Grås husleiesystem I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer,
DetaljerHva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist
Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar
DetaljerHva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist
Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar
DetaljerTre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm
Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:
Detaljer<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.
Hver gang funksjonen printhallo kalles utføres instruksjonene spesifisert i den. [Kurssidene] [ ABI - fagsider bibin ] Webprogrammering høsten 2015 //funksjonskall printhallo(); //enda en gang printhallo();
DetaljerObligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006
Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006 Advarsel Etter forelesningen 6. mars har vi gjennomgått alt stoffet som trengs for å løse oppgaven. Du kan imidlertid godt starte arbeidet allerede
DetaljerAlgoritmer og datastrukturer Eksamen
Algoritmer og datastrukturer Eksamen 24.02.2010 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator som ikke kommuniserer. Faglærer: Ulf Uttersrud Råd og tips: Bruk ikke for
Detaljer23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.
Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen
DetaljerÅ lese tall fra en fil, klassen Scanner
Å lese tall fra en fil, klassen Scanner 1. Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2. Kan skanne teksten etter data av ulike typer. 3. Kan kun skanne framover i teksten. Vis
DetaljerUtførelse av programmer, metoder og synlighet av variabler i JSP
Utførelse av programmer, metoder og synlighet av variabler i JSP Av Alf Inge Wang 1. Utførelse av programmer Et dataprogram består oftest av en rekke programlinjer som gir instruksjoner til datamaskinen
DetaljerOppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.
Høgskoleni Østfold EKSAMEN Emnekode: Emnenavn: ITF20006 Algoritmer og datastrukturer Dato: Eksamenstid: 9. mai 2016 9.00 13.00 Hjelpemidler: Faglærer: Alle trykte og skrevne Jan Høiberg Om eksamensoppgaven
DetaljerEKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Kalkulator Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerTDT4102 - Prosedyre- og objektorientert programmering
Eksamensoppgave i TDT4102 - Prosedyre- og objektorientert programmering Lørdag 6. juni 2009 Kontaktperson under eksamen: Trond Aalberg (97631088) Eksamensoppgaven er utarbeidet av Trond Aalberg og kvalitetssikret
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler
Detaljer1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?
Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3hus litt mer tips enn i oppgaven I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje
DetaljerAlgoritmer og datastrukturer Eksamen 22. februar 2011
Side 1 av 5 Algoritmer og datastrukturer Eksamen 22. februar 2011 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator som ikke kommuniserer. Faglærer: Ulf Uttersrud Råd og
DetaljerEKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2008 kl 09.00 til kl 13.00 Hjelpemidler: 4 A4-sider (2 ark) med valgfritt innhold Kalkulator Faglærer: Mari-Ann
DetaljerAlgoritmer og datastrukturer Kapittel 4 - Delkapittel 4.4
Delkapittel 4.4 En prioritetskø Side 1 av 8 Algoritmer og datastrukturer Kapittel 4 - Delkapittel 4.4 4.4 En prioritetskø 4.4.1 Grensesnittet PrioritetsKø En prioritetskø (engelsk: priority queue) er en
DetaljerLeksjon 7. Filer og unntak
6108 Programmering i Java Leksjon 7 Filer og unntak Del2: 7.2 og 7.4 Roy M. Istad 2015 Fil: Permanent lagring av data PrintWriter(filnavn) throws Exception usjekkede/sjekkede unntak? skriver.println(data-i-tekstlinje)
DetaljerINF1010 våren 2018 tirsdag 23. januar
INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type: Scanner boolean
DetaljerKapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering
Kapittel 1 Datamaskiner og programmeringsspråk Dette kapitlet er en kort introduksjon til programmering. Vi vil se på hvordan man skriver, bygger og kjører programmer, samt illustrere noen sentrale programmeringsbegrep
DetaljerStack. En enkel, lineær datastruktur
Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi
DetaljerTDT4102 Prosedyre og Objektorientert programmering Vår 2014
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Øving 10 Frist: 2014-04-11 Mål for denne øvinga:
DetaljerLeksjon 7. Filer og unntak
6108 Programmering i Java Leksjon 7 Filer og unntak Del1: 7.1 7.2 Roy M. Istad 2015 Fil permanent lagring Ønsker at program skal kunne ta vare på data over tid, fra en kjøring til den neste (kontra hurtigminnet
DetaljerINF1000 : Forelesning 5
INF1000 : Forelesning 5 Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo 1 Lese fra fil import easyio.*; Vi må først importere pakken
DetaljerOrdliste. Obligatorisk oppgave 1 - Inf 1020
Ordliste. Obligatorisk oppgave 1 - Inf 1020 I denne oppgaven skal vi tenke oss at vi vil holde et register over alle norske ord (med alle bøyninger), og at vi skal lage operasjoner som kan brukes til f.
DetaljerForelesning inf Java 5
Forelesning inf1000 - Java 5 Tema: En liten quiz (se utdelt ark) Filbehandling Tekster Ole Christian Lingjærde, 19. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 19. september 2012 1 Forelesningsquiz
DetaljerTOD063 Datastrukturer og algoritmer
TOD063 Datastrukturer og algoritmer Øving : 4 Utlevert : Veke 9 Innleveringsfrist : 19. mars 2010 Klasse : 1 Data og 1 Informasjonsteknologi Ta gjerne 1 og 2 først! Gruppearbeid: 2 personar pr. gruppe
DetaljerAlgoritmer og datastrukturer Løsningsforslag
1 Algoritmer og datastrukturer Løsningsforslag Eksamen 29. november 2011 Oppgave 1A Verdien til variabelen m blir lik posisjonen til den «minste»verdien i tabellen, dvs. bokstaven A, og det blir 6. Oppgave
DetaljerNorsk informatikkolympiade 2014 2015 1. runde. Sponset av. Uke 46, 2014
Norsk informatikkolympiade 014 015 1. runde Sponset av Uke 46, 014 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.
DetaljerBOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl. 09.00 13.
BOKMÅL Side 1 av 5 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTERINGSEKSAMEN
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8
DetaljerProjeksjoner av vektorer Analyse av værdata
Projeksjoner av vektorer Analyse av værdata Lars Sydnes 11. september 2013 1 Osloserien Ved værstasjoner rundt omkring i verden måler man temperaturen hver eneste dag. Vi har tilgang til målinger gjort
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 10. juni 2005 Tid for eksamen: 14.30 17.30 Oppgavesettet er på
DetaljerOblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000
Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000 Leveringsfrist Innleveringsfristen er fredag 14. november kl 16.00. Viktig: se side 4 for detaljerte leveringskrav. Formål Formålet med denne oppgaven
DetaljerGjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7
Gjennomgang prøveeksamen 2014 oppgave 1, 2, 4, 5, 7 1a: Hva er verdien til tall etter at følgende kode er utført: 17 int tall = 5; tall = (tall*3) + 2; 5 15 17 1b: Anta at følgende programsetninger utføres.
DetaljerINF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)
INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:
DetaljerDagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.
Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter
DetaljerAlgoritmer og datastrukturer Kapittel 1 - Delkapittel 1.6
Delkapittel 1.6 Multidimensjonale tabeller og matriser Side 1 av 23 Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.6 1.6 Multidimensjonale tabeller og matriser 1.6.1 Endimensjonale tabeller Vi
DetaljerINF109 - Uke 1b 20.01.2016
INF109 - Uke 1b 20.01.2016 1 Variabler Et program er ikke til stor hjelp hvis det er statisk. Statisk betyr at programmet bare bearbeider faste data som er lagt inn i programkoden. For å gjøre programmer
DetaljerVeileder i bruk av GoodReader
RISØR KOMMUNE Veileder i bruk av GoodReader Innhold 1. Laste ned dokument fra kommunens hjemmeside til GoodReader... 2 2. Bruke GoodReader... 7 3. Redigere filnavn... 8 4. Opprette kataloger / mapper...
DetaljerLeksjon 7. Filer og unntak
6108 Programmering i Java Leksjon 7 Filer og unntak Del1: 7.1 7.2 Roy M. Istad 2015 Fil permanent lagring Ønsker at program skal kunne ta vare på data over tid, fra en kjøring til den neste (kontra hurtigminnet
DetaljerUNIVERSITETET I OSLO
Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1020 Algoritmer og datastrukturer Eksamensdag: 15. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 6 sider.
DetaljerAlgoritmer og Datastrukturer
Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 3. november 2, kl. 9. - 14. Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.
DetaljerKlasser, objekter, pekere og UML. INF1000 - gruppe 13
Klasser, objekter, pekere og UML INF1000 - gruppe 13 Klasse Beskriver ofte ting fra den virkelige verden Veldig ofte et substantiv (Person, Bok, Bil osv.) class Person { String navn; int alder; } class
DetaljerKapittel 4. 4. og 5. september 2012. Institutt for geofag Universitetet i Oslo. GEO1040 - En Introduksjon til MatLab. Kapittel 4.
r r Institutt for geofag Universitetet i Oslo 4. og 5. september 2012 r r Ofte ønsker vi å utføre samme kommando flere ganger etter hverandre gjør det mulig å repetere en programsekvens veldig mange ganger
DetaljerEKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00
Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG
DetaljerBOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs
BOKMÅL Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN
DetaljerINF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012
INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver
DetaljerAlgoritmer - definisjon
Algoritmeanalyse Algoritmer - definisjon En algoritme er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede
DetaljerAlgoritmer og datastrukturer Løsningsforslag
Algoritmer og datastrukturer Løsningsforslag Eksamen 30. november 2010 Oppgave 1A Et turneringstre for en utslagsturnering med n deltagere blir et komplett binærtre med 2n 1 noder. I vårt tilfelle får
DetaljerEKSAMENSFORSIDE Skriftlig eksamen med tilsyn
BOKMÅL EKSAMENSFORSIDE Skriftlig eksamen med tilsyn Emnekode: 108 + 108N Dato: 19.12.201 Ansv. faglærer: Roy M. Istad Campus: Bø Antall oppgaver: 5 Tillatte hjelpemidler (jfr. emnebeskrivelse): Alt trykt
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00
DetaljerEKSAMEN. Algoritmer og datastrukturer
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer: Gunnar Misund
DetaljerBruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.
Arne Maus, ver.2.2, august, 2013 Bruk av class, FileWriter og Formatter som alternativ til EasyIO i INF1000. Noen ønsker å bruke noen av de klassene vi finner i pakken java.util og java.io isteden for
DetaljerPlan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler
Plan for dagen Vprg 4 LC191D Videregående programmering Høgskolen i Sør-Trøndelag Avdeling for informatikk og e-læring Anette Wrålsen Del: Intro til tekstfiler Del II: Mer om tekstfiler, Scanner-klassen
DetaljerLæringsmål for forelesningen
Læringsmål for forelesningen Objektorientering Bruk av grensesnitt og implementasjoner i Collection-klasser Java-prog, kap. 14-16 i Big Java Og side 990-997 i Appendix D Collection-rammeverket og iterasjon
DetaljerNorges Informasjonsteknologiske Høgskole
Oppgavesettet består av 6 (seks) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 6 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 6. august 2014 Fagansvarlig:
DetaljerGenerelt om oblig 3. Oppgaveteksten kort sammendrag. Deloppgaver/menyvalg 15/03/2010. INF1000 Forelesning 9
Generelt om oblig 3 INF1000 Forelesning 9 15. mars 2010 Tips til oblig 3, separatorer i easyio, Eliza (bruk av HashMap), mer om metoder og klasser Christian M. Hansen Institutt for informatikk, UiO Les
Detaljer