Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Hva er en datamaskin? En datamaskins bestanddeler

Størrelse: px
Begynne med side:

Download "Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Hva er en datamaskin? En datamaskins bestanddeler"

Transkript

1 Kapittel 1 Datamaskiner og programmeringsspråk Dette kapitlet vil gi en kort innføring i begreper rundt programmering. Et enkelt programeksempel vil illustrere bruken av en del sentrale programmeringsbegreper. Eksemplet er ment som et springbrett inn i programmering, og senere kapitler kommer til å gå grundig gjennom begrepene som blir introdusert her. 1.1 Hva er en datamaskin? En datamaskin er en maskin som kan bli instruert til å behandle data. Datamaskiner har gradvis blitt en del av vår hverdag, og i dagens samfunn er de fleste stadig i kontakt med datamaskiner av et eller annet slag. I utgangspunktet kan en datamaskin være alt fra en kuleramme til en moderne superdatamaskin. Denne boken kommer imidlertid kun til å fokusere på den elektroniske varianten. Slike datamaskiner kan utføre både avanserte og ensformige oppgaver raskt, nøyaktig og pålitelig. En datamaskins bestanddeler Visse grunnleggende bestanddeler finnes i alle elektroniske datamaskiner. For å få en forståelse av hvordan en datamaskin fungerer, må man vite hvilken rolle hver av disse delene har. De fysiske bestanddelene av en datamaskin kalles maskinvare (eng. hardware). Figur 1.1 gir en oversikt over de vanligste komponentene i en datamaskin. Detaljer om notasjonen er gitt i vedlegg G. Figur 1.1 Datamaskinens bestanddeler Datamaskinkjerne henter og sender data til Enheter leser og skriver til Prosessor Minne Innenhet Utenhet Lagringsenhet Tastatur Skjerm Harddisk Diskettstasjon

2 2 Kapittel 1 Datamaskiner og programmeringsspråk Mesteparten av dataprosesseringen i en datamaskin skjer i en enhet som kalles prosessor. Det er denne sentrale enheten (eng. Central Processing Unit, CPU) som driver hele maskinen. Den er bygd for å kunne utføre visse generelle instruksjoner som kan bli kombinert på forskjellige måter for å kunne utføre komplekse operasjoner. Datamaskiner har en intern lagringsplass for data som kalles minne (eng. memory). Prosessoren leser instruksjoner og data fra dette minnet. Prosessoren kan også skrive resultatet av instruksjonene tilbake til minnet. Informasjon som blir lagret i minnet, går normalt tapt når maskinen slås av. En datamaskin har enheter som den kan sende data til og motta data fra. Det er mulig å klassifisere forskjellige enheter slik som vist på høyre side av Figur 1.1. Et tastatur, som kan brukes til å skrive tekst, er et eksempel på en innenhet. En skjerm, hvor data kan vises, er et eksempel på en utenhet. Noen enheter kan både motta og sende data. For eksempel kan harddisker lagre data som bevares selv om maskinen slås av, og dermed gjøre det mulig å hente dataene fram igjen senere. 1.2 Hva er et program? Et program er en samling prosessorinstruksjoner som en datamaskin kan utføre for å oppnå et bestemt mål. I motsetning til maskinvare kalles programmer som datamaskinen utfører, programvare (eng. software). Hvordan få maskinen til å gjøre det man ønsker? De fleste brukere av dagens datamaskiner benytter seg av ferdiglagde programmer for å utføre vanlige arbeidsoppgaver. Forskjellige programmer kan brukes til ulike formål: tekstbehandlere for å skrive dokumenter, tegneprogrammer for å lage illustrasjoner og regneark for å utføre beregninger. Dette er noen eksempler på ferdiglagde programmer. Hvis det ikke allerede eksisterer et program for å utføre visse typer arbeidsoppgaver, er det mulig å lage nye programmer for å dekke behovet. Det å lage nye programmer kalles programmering. Programmer blir skrevet i spesielle språk som gir en detaljert beskrivelse av hva datamaskinen skal gjøre. Det finnes mange forskjellige programmeringsspråk. Denne boken bruker språket Java til å vise hvordan datamaskiner kan programmeres, men mange av prinsippene kan også benyttes for andre språk. Operasjoner Et program består av et sett operasjoner som blir utført når programmet blir kjørt. Operasjoner er bygget opp av sekvenser av setninger som beskriver hva datamaskinen skal gjøre. Programmering innebærer å bruke programmeringsspråket til å beskrive hva man ønsker datamaskinen skal utføre.

3 Avsnitt 1.2 Hva er et program? 3 Kildekode (eng. source code) er et program skrevet i et høynivå programmeringsspråk. Kildekode inneholder en høynivå beskrivelse av hva datamaskinen skal gjøre. Å la datamaskinen utføre operasjonene beskrevet i et program kalles å kjøre programmet. I mange programmeringsspråk og dette gjelder også Java er det nødvending å kompilere programmer før de kan kjøres. Kompilering betyr at kildekoden blir oversatt til en form som ligger nærmere de instruksjonene prosessoren i maskinen faktisk kommer til å utføre under kjøring. Programmet som utfører denne oversettingen, kalles kompilator. Typisk vil kildekoden være skrevet i et programmeringsspråk med høynivåoperasjoner som vil bli oversatt til flere elementære lavnivåinstruksjoner. En høynivåoperasjon kan beskrive en kompleks og sammensatt arbeidsoppgave, mens lavnivåinstruksjoner kun beskriver elementære arbeidsinstrukser. Resultatet av en kompilering er et program som er klar for kjøring, og som består av elementære instruksjoner som prosessoren i maskinen kan utføre direkte. En tolker (eng. interpreter) er et program som utfører andre programmer. I motsetning til en kompilator utfører tolkeren programkoden direkte, framfor å oversette programmet til et laverenivåspråk for senere kjøring. Ved bruk av tolkede programmeringsspråk blir oversettingen en del av kjøringen. Dette gjør at det ikke er nødvendig å kompilere kildekoden for å få et program som kan kjøres. Å programmere med objekter Operasjonene som må utføres for å fullføre en oppgave, involverer ofte forskjellige typer objekter. Tenk på handlingene som må utføres for å lage en omelett: åpne kjøleskapet, ta ut en eggkartong, åpne eggkartongen, ta ut to egg, lukke kartongen, sette kartongen tilbake i kjøleskapet, lukke kjøleskapet, skru på stekeplaten, osv. I denne sammenhengen kan vi betrakte kjøleskapet, eggkartongen, eggene og stekeplaten som forskjellige objekter. Handlingene som kan utføres, er operasjoner tilknyttet disse objektene. Det er for eksempel mulig å åpne en eggkartong, men det er ikke mulig å åpne en stekepanne. Objektbasert programmering (OBP) består av å beskrive større arbeidsoppgaver ved hjelp av operasjoner som utføres på objekter. Nøyaktig hva objektene representerer, er avhengig av hva programmet prøver å oppnå. For eksempel kan et program som skal holde styr på alle utlån i et bibliotek, ha objekter både for helt konkrete gjenstander som bøker, tidsskrifter, lydkassetter o.l. og for mer abstrakte konsepter som selve utlånet og den informasjonen som behøves om hver låntager. I det siste tilfellet er låntageren selv et konkret objekt, dvs. en person, mens den informasjonen som biblioteksprogrammet trenger, er abstrakt. Programmer har vanligvis flere objekter av samme type. La oss gå tilbake til kjøkkenet. Vi kan ha flere objekter som representerer kakestykker. Hvert kakestykke kan manipuleres uavhengig av de andre, men de har alle fellestrekk, slik som muligheten til å spise av det. Vi sier at vi har forskjellige klasser av objekter. Alle kjøleskapobjekter utgjør en klasse, mens alle kakestykkeobjekter utgjør en helt annen klasse.

4 4 Kapittel 1 Datamaskiner og programmeringsspråk En klasse blir definert ved å beskrive hva som er særegent for objektene av denne klassen, og hvilke operasjoner som kan utføres på dem. Et program kan både benytte eksisterende klasser og definere egne klasser. 1.3 Et enkelt Java-program Kildekode Program 1.1 viser kildekoden til et enkelt Java-program. Formålet med kildekode er å kunne beskrive programmer på en måte som både programmerere og datamaskiner kan forstå. Kildekode lagres i rene tekstfiler, som betyr at de kun inneholder tegnene som utgjør selve teksten i kildekoden, og har ingen stilformatering. Tekstbehandlere som Microsoft Word er ikke egnet til å skrive kildekode, siden de legger stor vekt på formateringen og utseendet til dokumentet. Det finnes egne tekstbehandlere som er egnet for å skrive kildekode, men enhver applikasjon som kan lagre ren tekst, kan brukes. Program 1.1 Kildekoden til et enkelt program // (1) Denne kildekodefilen heter EnkeltProgram.java public class EnkeltProgram { // Skriver ut et ordtak, og antall tegn i ordtaket. public static void main(string[] args) { // (2) } } System.out.println("Et kjent ordtak:"); // (3) String ordtak = "Øvelse gjør mester!"; // (4) System.out.println(ordtak); int antalltegn = ordtak.length(); // (5) System.out.println("Ordtaket har " + antalltegn + " tegn."); Utskrift ved kjøring Et kjent ordtak: Øvelse gjør mester! Ordtaket har 19 tegn.

5 Avsnitt 1.3 Et enkelt Java-program 5 Figur 1.2 Klasse- og metodedeklarasjoner klassedeklarasjon klassenavn metodedeklarasjon public class EnkeltProgram { metodenavn public static void main(string[] args) { handlinger som skal utføres i sekvens parametere } } Alle språkelementene i et programmeringsspråk følger en viss struktur. Denne strukturen kalles språkets syntaks (eng. syntax). I Java kalles språkelementene som definerer klasser, for klassedeklarasjoner, og operasjonene som defineres i disse klassene, kalles metoder. Figur 1.2 illustrerer syntaksen til klasse- og metodedeklarasjoner. Hvert språkelement har også en bestemt mening, eller semantikk (eng. semantics). Meningen med et program er gitt ved de språkelementene som inngår i kildekoden. Program 1.1 består av en klassedeklarasjon som beskriver en klasse ved navn EnkeltProgram. Denne klassen har en metode ved navn main(). Det er ikke nødvendig å forstå hele programmet på dette tidspunktet. Senere kapitler vil gi en detaljert forklaring på alle bestanddelene i programmet. Det er meningen at kildekode skal være leselig både for datamaskinen og for mennesker. For å hjelpe mennesker med å lese kildekoden er det mulig å legge inn kommentarer. Det er to former for kommentarer i Java. Den ene typen starter med // og varer ut resten av linjen. Linjen med // (1), dvs. den øverste linjen i Program 1.1, er en slik kommentar. Videre i denne boken vil kildekodelinjer bli henvist til ved hjelp av kommentarer på formen (n). Disse kommentarene brukes for å gjøre det enklere å omtale spesifikke kildekodelinjer. Den andre formen for kommentarer består av all tekst mellom tegnsekvensen /* og */. Denne formen er ikke brukt i dette programeksemplet, men vil bli brukt i senere kapitler. Kommentarer som har flere linjer med tekst, blir som regel skrevet på denne formen. Kompilatoren ignorerer fullstendig kommentarer og blanke tekstområder. For kompilatoren sin del kan gjerne main()-metoden ved (2) i eksemplet skrives som public static void main(string[]args){system.out.println( "Et kjent ordtak:");string ordtak="øvelse gjør mester!";system.out. println(ordtak);int antalltegn=ordtak.length();system.out.println( "Ordtaket har "+antalltegn+" tegn.");}

6 6 Kapittel 1 Datamaskiner og programmeringsspråk Programmet vil oppføre seg helt likt, men det er vanlig å sette opp kildekoden slik at den er lett å forstå. Det er vanlig å skrive en setning per linje og bruke innrykk fra venstremargen for å vise at språkstrukturer er nøstet innenfor hverandre. Figur 1.2 viser innrykk av en metodedeklarasjon nøstet innenfor en klassedeklarasjon. Ryddig kildekode er meget viktig for å gjøre vedlikehold og videreutvikling av programmer enkelt. Metoden main() på linje (2) har en spesiell rolle i programmet. Utførelsen av programmet starter alltid ved main()-metoden. Når programmet starter, vil datamaskinen utføre handlingene i main()-metoden i tur og orden. Et utførbart program må spesifisere en main()-metode, og metoden må ha formen vist i Figur 1.2. Handlinger i metoden vil være avhengig av hva programmet forsøker å oppnå. Variabler er lagringsplasser for verdier. Tallverdier er veldig vanlige, men som vi skal se senere, så finnes det andre typer verdier også. Variabler kan brukes lokalt i metoder slik som ordtak og antall blir brukt i main()-metoden i eksemplet. Å lagre en verdi i en variabel kalles å tilordne (eng. assign) verdien til variabelen. Verdien som tilordnes, kan brukes senere i programmet ved å referere til variabelen. Den første setningen som blir utført når programmet starter, er (3) System.out.println("Et kjent ordtak:"); Denne setningen utfører et kall til en operasjon ved navn println som tilhører et objekt kjent som System.out. Dette objektet er ansvarlig for å skrive ut tekst til skjermen, og metoden println() kan brukes til å skrive ut en linje med tekst. Setningen ovenfor ber System.outobjektet om å skrive ut teksten "Et kjent ordtak:". Et tekstfragment som dette kalles en tekststreng. System er en klasse som har et objekt (referert ved navnet out) som inneholder metoden println(). Setningen ved (4) deklarerer en variabel ved navn ordtak og tilordner denne variabelen tekststrengen "Øvelse gjør mester!". Programmet kan nå referere til denne strengen ved å bruke navnet ordtak. I den neste linjen skrives så strengen som ordtak refererer til, ut på skjermen. I Java er strenger også objekter, og setning (5) kaller metoden length() i strengobjektet for å finne ut hvor mange tegn strengen inneholder. Dette antallet lagres i variabelen antalltegn, som er definert på samme linje. Når en metode blir brukt i en setning, vil innholdet i metoden bli utført før kjøringen av programmet fortsetter til neste setning. Dette kalles et metodekall. Figur 1.3 viser metodekallene som blir utført ved kjøring av programeksemplet.

7 Avsnitt 1.3 Et enkelt Java-program 7 Figur 1.3 Sekvens av metodekall ved kjøring av program EnkeltProgram main() println("et kjent ordtak:") String ordtak = "Øvelse gjør mester!" ordtak : String println(ordtak) length() 19 println("ordtaket har 19 tegn.") out Fra kildekode til kjøring av program I Java blir kildekode først kompilert til et sett lavnivåinstruksjoner som går under navnet Java-bytekode. Denne bytekoden blir under kjøring tolket av en virtuell maskin (eng. Java Virtual Machine, JVM). Den virtuelle maskinen er ikke en fysisk maskin, men et program som tolker og utfører bytekodeinstruksjoner på samme måte som en tenkt (virtuell) maskin ville ha utført dem. Figur 1.4 viser gangen i hvordan kildekoden oversettes til en kjørbar form. Den første formen er Java-kildekoden. Java-kompilatoren kan kompilere dette til Java-bytekodeform. Denne bytekoden kan flyttes til og tolkes på alle maskiner som har en Java-virtuell maskin. Man sier at bytekoden er plattformuavhengig, siden den ikke er låst til en bestemt maskintype. Noen virtuelle maskiner tolker denne koden direkte, mens andre omkompilerer den til en tredje form ved kjøring. Den tredje formen vil alltid være tilpasset den typen prosessor som maskinen har. Dette betyr at kode i denne formen kun kan brukes på maskiner av en bestemt type. Denne siste formen, som er vist i Figur 1.4, er spesifikk for x86-prosessorserien.

8 8 Kapittel 1 Datamaskiner og programmeringsspråk Figur 1.4 Programkode i forskjellige former eske.fjernfyrstikker(6); System.out.println( Fjernet 6 fyrstikker til. ); int antalletterfjerning = eske.antallfyrstikker(); int differanse = antall - antalletterfjerning; kompileres til prosessoruavhengig Javabytekode aload_1 bipush 6 invokevirtual #21 <Method void fjernfyrstikker(int)> getstatic#22 <Field java.io.printstream out> ldc#4 <String "Fjernet 6 fyrstikker til."> invokevirtual #23 <Method void println(java.lang.string)> aload_1 invokevirtual #17 <Method int antallfyrstikker()> istore_3 iload_2 iload_3 isub istore 4 kan oversettes videre til prosessoravhengig kode (x86-kode vist her) 8b 06 mov (%esi),%eax 6a 06 push $0x6 56 push %esi ff call *0x24(%eax) 58 pop %eax 5a pop %edx a mov 0x0,%eax 8b 10 mov (%eax),%edx ff pushl 0x50 50 push %eax ff call *0x74(%edx) 8b 06 mov (%esi),%eax mov %esi,(%esp,1) ff 50 1c call *0x1c(%eax) 5b pop %ebx 5f pop %edi ff pushl 0x54 83 ec0c sub $0xc,%esp 89 c6 mov %eax,%esi 8b 45 f0 mov 0xfffffff0(%ebp),%eax 29 f0 sub %esi,%eax Figur 1.5 viser sammenhengen mellom nøkkelkonseptene som vi har omtalt hittill. Mange av disse blir flittig brukt og nærmere utdypet i resten av boken. Figur 1.5 Oppsummering av nøkkelkonseptene Kildekode skrives i Høynivåspråk nedfeller Klasser leses av beskriver nedfeller definerer forskjellige typer er tilknyttet Operasjoner Objekter Kompilator genererer oversettes til bestemmer oppførsel i løser Program er kjørbart som representerer konsepter i Problemstilling Lavnivåinstruksjoner er utført av Prosessor styrer Datamaskin

9 Avsnitt 1.4 Utviklingsverktøy for Java Utviklingsverktøy for Java Kompilering og kjøring av programmer kan gjøres på mange forskjellige måter, avhengig av hvilke verktøy som benyttes. De neste avsnittene vil vise hvordan man kompilerer og kjører programmer ved hjelp av standardverktøyene til Java. Sun Microsystems tilbyr en pakke med verktøy de kaller Java Software Development Kit (SDK). Denne pakken inneholder de grunnleggende verktøyene som trengs for å programmere i Java, og er beskrevet i vedlegg F. I denne boken vil vi vise hvordan kompilering og kjøring av programmer gjøres på kommandolinjen. De fleste maskinplattformer har en kommandolinje hvor man kan skrive inn systemkommandoer man ønsker å få utført. Vil du ha detaljert informasjon om kommandolinjen, se dokumentasjonen til plattformen du bruker. 1.5 Kompilering av Java-programmer For å kompilere Java-kildekode brukes kommandoen javac. Kompilatoren vil lese en ren tekstfil som inneholder kildekoden, og vil for hver klassedeklarasjon bygge en fil som inneholder bytekoden til klassen. En av klassene definert i kildekodefilen er en primærklasse, og kildekodefilen er navngitt etter denne klassen. Den primære klassen er deklarert med modifikatoren public. For små programmer er dette som oftest klassen som inneholder main()- metoden. Det er praktisk å dele opp store programmer i flere kildekodefiler. Da inneholder hver kildekodefil vanligvis kun én klassedeklarasjon. Navnet til alle kildekodefilene ender med.java. Syntaksen for kjøring av Java-kompilatoren fra kommandolinjen er > javac EnkeltProgram.java Kompilatoren forlanger det eksakte navnet til filen. Flere kildekodefiler kan spesifiseres. Vær nøye med at navnet til filen er lik navnet på klassen etterfulgt av ".java" bruk av store og små bokstaver er likt som i navnet på klassen Enkelte operativsystemer viser vanligvis ikke slutten på filnavnet. Det er viktig at filen ikke blir lagret med en ekstra filnavnsending. Typiske feil er å lagre kildekoden ved navn <navn>.java.doc eller <navn>.java.txt. Selv om operativsystemet kun viser navnet <navn>.java, så vil ikke dette fungere når man skal kompilere kildekoden på kommandolinjen. Merk også at Microsoft Windows har alternative kortversjonsnavn for filer, på formen "Klasse~1.jav". Disse skal heller ikke brukes. Kompilatoren lager filer som heter <klassenavn>.class, for hver klasse. Disse filene inneholder bytekode som er blitt kompilert fra klassedeklarasjonene i kildekoden.

10 10 Kapittel 1 Datamaskiner og programmeringsspråk Kompilatoren kan oppdage feil i kildekoden når den prøver å oversette den til bytekode. Kompilatoren vil rapportere slike feil og avbryte kompileringen. Kildekoden må da rettes opp slik at kompilatoren kan kompilere programmet. Feilmeldingene fra kompilatoren gir opplysninger om hva den mener er galt. Med litt øvelse er det i de fleste tilfeller relativt lett å tolke feilmeldingene og finne feilene i kildekoden. 1.6 Kjøring Kommandoen for å starte den virtuelle maskinen er java. Denne kommandoen må ikke forveksles med kommandoen for å starte kompilatoren, som er javac. Syntaksen for kjøring av Java-programmer fra kommandolinjen er > java EnkeltProgram Dette vil starte opp den virtuelle maskinen og vil begynne utføringen av main()-metoden til den angitte klassen. Kommandoen java trenger det eksakte navnet til klassen med main()- metoden. Vær nøye med at kun det eksakte klassenavnet blir angitt. Det skal ikke være noen.class eller.java ending; store og små bokstaver ikke forveksles i klassenavn; kildekoden er blitt kompilert, slik at det finnes.class -filer for alle klassene som programmet består av.

11 Avsnitt 1.7 Kontrollspørsmål KONTROLLSPØRSMÅL Spørsmål 1.1 Spørsmål 1.2 Spørsmål 1.3 Datamaskiner har en som utfører generelle instruksjoner og driver hele maskinen. er en høynivåbeskrivelse av hva datamaskinen skal gjøre, skrevet i et. Hvilke av disse komponentene er programvare? (a) (b) (c) (d) (e) en kompilator et tastatur en tolker resultatet av kompilert kildekode en prosessor Spørsmål 1.4 Spørsmål 1.5 Spørsmål 1.6 Man beskriver hva som er særegent med objekter ved å definere. Alle Java-programmer har en ved navn der utføringen av programmet starter. Hvilket utsagn beskriver objektbasert programmering (OBP) best? (a) (b) (c) (d) å lage en omelett å definere klasser av objekter og operasjoner som kan utføres av disse objektene å kompilere kildekode til Java-bytekoder å oversette programmer til prosessoravhengig kode Spørsmål 1.7 Spørsmål 1.8 For å kompilere en kildekodefil TestProgram.java kan kommandoen utføres på kommandolinjen. For å kjøre et Java-program med en primærklasse som heter TestProgram, så kan kommandoen utføres på kommandolinjen. Spørsmål 1.9 Hvilken form er programkode vanligvis skrevet og redigert i? (a) (b) (c) kildekode prosessoruavhengige bytekoder prosessoravhengige instruksjoner

12 12 Kapittel 1 Datamaskiner og programmeringsspråk Spørsmål 1.10 Hvilke av disse filnavnene er gyldige for en Java-kildekodefil som definerer en primærklasse som heter Hund? (a) (b) (c) (d) (e) Katt.java Hund.jav Hund.java Hund.java.doc HUND.JAVA 1.8 OPPGAVER Oppgave 1.1 Oppgave 1.2 Oppgave 1.3 Oppgave 1.4 Bruk en tekstebehandler til å skrive en fil ved navn EnkeltProgram.java med kildekoden fra Program 1.1. Kompiler kildekodefilen du lagde i oppgaven ovenfor. Rett eventuelle feil i kildekoden som kompilatoren oppdager. Kjør programmet som ble kompilert i oppgaven ovenfor. Lag et program som skriver ut antall tegn i etternavnet ditt. Bruk kildekoden fra EnkeltProgram.java som utgangspunkt.

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Kapittel 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

Detaljer

Kapittel 1: Datamaskiner og programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk Kapittel 1: Datamaskiner og programmeringsspråk Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

Kapittel 1: Datamaskiner og programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk Kapittel 1: Datamaskiner og programmeringsspråk Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk Kapittel 1: Datamaskiner og programmeringsspråk Forelesningsnotater for: Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag, 2003. ISBN 82-02-23274-0

Detaljer

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk Kapittel 1: Datamaskiner og programmeringsspråk Forelesningsnotater for: Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag, 2003. ISBN 82-02-23274-0

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 10/5-2011, Stein Krogdahl Oversikt over Javas class-filer og byte-kode Disse formatene ble planlagt fra start

Detaljer

Litt om Javas class-filer og byte-kode

Litt om Javas class-filer og byte-kode Litt om Javas class-filer og byte-kode INF 5110, 11/5-2010, Stein Krogdahl (Dessverre litt få figurer) Disse formatene ble planlagt fra start som en del av hele Java-ideen Bt Byte-koden gir portabilitet

Detaljer

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 8/5-2012, Stein Krogdahl Byte-koden for Java og.nett (C#) http://en.wikipedia.org/wiki/java_bytecode_instruction_listings

Detaljer

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode) Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode) Disse foilene er pensum INF 5110, 30/4-2013, Stein Krogdahl Byte-koden for Java og.nett (C#) kan leses her: http://en.wikipedia.org/wiki/java_bytecode_instruction_listings

Detaljer

Operativsystemer og grensesnitt

Operativsystemer og grensesnitt Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007 Stein Krogdahl, Ifi UiO ASU, kap 9.5: Vi generer kode for én og én basal blokk Da er det lett å holde orden

Detaljer

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning

Detaljer

Generelt om operativsystemer

Generelt om operativsystemer Generelt om operativsystemer Operativsystemet: Hva og hvorfor Styring av prosessorer (CPU), elektronikk, nettverk og andre ressurser i en datamaskin er komplisert, detaljert og vanskelig. Maskinvare og

Detaljer

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp INF1000: Grunnkurs i objektorientert programmering Uke 0, høst 2014 Oversikt Informatikk - hva & hvorfor? Datasystemer, maskinvare, programmer Objektorientert programmering i INF1000 Programmeringsspråket

Detaljer

Argumenter fra kommandolinjen

Argumenter fra kommandolinjen Argumenter fra kommandolinjen Denne veiledningen er laget for å vise hvordan man kan overføre argumenter fra kommandolinjen til et program. Hvordan transportere data fra en kommandolinje slik at dataene

Detaljer

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon Oversikt INF1000 Uke 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning Uttrykk

Detaljer

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: fredrso@ifi.uio.no Utdanning: Dataingeniør, 2000 Cand.Scient,

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Programmeringsspråket C Laget til implementasjon av Unix ved AT&Ts Bell labs i Palo Alto 1969 73. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard

Detaljer

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Programmering i C++ Løsningsforslag Eksamen høsten 2005 Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK) 1 TDT4105 Informasjonsteknologi, grunnkurs (ITGK) Introduksjon til programmering i Matlab Rune Sætre satre@idi.ntnu.no 2 Læringsmål og pensum Mål Lære om programmering og hva et program er Lære å designe

Detaljer

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus Introduksjon til programmering og programmeringsspråk Henrik Lieng Høgskolen i Oslo og Akershus Kategorisering av programmeringsspråk? Deklarativ vs. imperativ Lav nivå vs. høy nivå Kompilert vs. tolket

Detaljer

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49 Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Programmeringsspråket C Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard i 1988;

Detaljer

Forelesning inf Java 1

Forelesning inf Java 1 Forelesning inf1000 - Java 1 Tema: Javas historie Bestanddelene i et Java-program Programvariabler Ole Christian Lingjærde, 22. august 2012 Litt Java-historikk The Green Team I 1991 opprettet Sun Microsystems

Detaljer

Oversikt. Hva er programmering & Java forkurset til INF1000. Hva er en datamaskin. Arne Maus Inst for Informatikk Univ. i Oslo

Oversikt. Hva er programmering & Java forkurset til INF1000. Hva er en datamaskin. Arne Maus Inst for Informatikk Univ. i Oslo Oversikt Hva er programmering & Java forkurset til INF1000 Arne Maus Inst for Informatikk Univ i Oslo I) Hva er en datamaskin Hvordan får vi den til å gjøre det vi vil Et program er en oppskrift til maskinen

Detaljer

INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første

Detaljer

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Læringsmål og pensum Mål Vite hva et

Detaljer

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang Kom forberedt til tirsdag INF1000 Tips til obligatorisk oppgave 4 Kikk på prøveeksamen fra 2004 http://www.uio.no/studier/emner/matnat/ifi/inf1000/h 07/undervisningsmateriale/proveeksamen-H2004.pdf Tittel:

Detaljer

Læringsmål og pensum. https://www.youtube.com/watch? v=nkiu9yen5nc

Læringsmål og pensum. https://www.youtube.com/watch? v=nkiu9yen5nc 1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python Professor Alf Inge Wang 2 https://www.youtube.com/watch? v=nkiu9yen5nc 3 Læringsmål og pensum Mål Lære om

Detaljer

Forelesning inf Java 1

Forelesning inf Java 1 Forelesning inf1000 - Java 1 Tema: Javas historie Bestanddelene i et Java-program Programvariabler Ole Christian Lingjærde, 22. august 2013 Ole Chr. Lingjærde Institutt for informatikk 22. august 2013

Detaljer

Dagens tema Kapittel 8: Objekter og klasser

Dagens tema Kapittel 8: Objekter og klasser Dagens tema Kapittel 8: Objekter og klasser Hva er objekter og klasser? Programmering med objekter Klassedeklarasjoner Generering av objekter Tilgang til elementer i objektene Objekt- og klassevariable

Detaljer

OPPGAVESETT 1 INTRO. Delta på andre forelesning i emnet, der hovedkomponentene til datamaskinen blir introdusert. Ta notater!

OPPGAVESETT 1 INTRO. Delta på andre forelesning i emnet, der hovedkomponentene til datamaskinen blir introdusert. Ta notater! OPPGAVESETT 1 INTRO I dette oppgavesettet blir du introdusert til datamaskinen og til konsollprogrammering. Teorien relatert til datamaskinen er ikke en del av pensum. Det forventes imidlertid at dere

Detaljer

Kapittel 8: Programutvikling

Kapittel 8: Programutvikling Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk

Detaljer

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale. Høgskolen i Telemark Fakultet for allmennvitenskapelige fag EKSAMEN I 6108/6108N PROGRAMMERING I JAVA 21. 12. 2015 Tid: 4 timer Sidetall: Hjelpemiddel: Merknader: Framside + 5 sider Alt trykt og skriftlig

Detaljer

Oblig 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 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

Detaljer

1. Å lage programmer i C++

1. Å lage programmer i C++ Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Å lage programmer i C++ Tore Berg Hansen og Else Lervik Rividert siste gang 29. august 2005 1. Å lage programmer i C++ Resymé: Dette notatet

Detaljer

INF1000 : Forelesning 1 (del 2)

INF1000 : Forelesning 1 (del 2) INF1000 : Forelesning 1 (del 2) Java Variable og tilordninger Heltall, desimaltall og sannhetsverdier Utskrift på skjerm Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet

Detaljer

Debugging. Tore Berg Hansen, TISIP

Debugging. Tore Berg Hansen, TISIP Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...

Detaljer

Fra Python til Java, del 2

Fra Python til Java, del 2 Fra Python til Java, del 2 Hvordan kjøre Java? På Ifis maskiner På egen maskin Et eksempel Array-er For-setninger Lesing og skriving Metoder Biblioteket Hva trenger vi egentlig? Å kjøre Java For å kunne

Detaljer

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK) 1 TDT4105 Informasjonsteknologi, grunnkurs (ITGK) Introduksjon til programmering i Matlab Rune Sætre satre@idi.ntnu.no 3 Læringsmål og pensum Mål Lære om programmering og hva et program er Lære om hvordan

Detaljer

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Gaustadbekkdalen, januar 27 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår inne i primærlageret

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang 2 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python Professor Alf Inge Wang 3 https://www.youtube.com/watch? v=nkiu9yen5nc 4 Læringsmål og pensum Mål Lære om

Detaljer

Jentetreff INF1000 Debugging i Java

Jentetreff INF1000 Debugging i Java Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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

Detaljer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus // class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen

Detaljer

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

EKSAMENSFORSIDE 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

Detaljer

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Forklaring til programmet AbstraktKontoTest.java med tilhørende

Detaljer

INF1000 : Forelesning 4

INF1000 : Forelesning 4 INF1000 : Forelesning 4 Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet

Detaljer

Obligatorisk Innlevering 2

Obligatorisk Innlevering 2 Obligatorisk Innlevering 2 INF5110 - Kompilatorteknikk Våren 2017 Frist 07.05.2017 23:59 Dette er den andre av to oppgaver våren 2017. Den bygger videre på det som er gjort i den første innleveringen.

Detaljer

Oversikt. Uke 2, INF 1000, 30 aug Variable, tilordninger og uttrykk. Repetisjon: Java programmering

Oversikt. Uke 2, INF 1000, 30 aug Variable, tilordninger og uttrykk. Repetisjon: Java programmering Oversikt Uke 2, INF 1000, 30 aug. 2005 - Variable, tilordninger og uttrykk. Institutt for Informatikk Universitet i Oslo Arne Maus 1 Litt repetisjon Hva er en variabel i et program Deklarasjoner og variabeltyper

Detaljer

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 5) Mer om løkker, arrayer og metoder INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4 Repetisjon: nesting av løkker Kort repetisjon av doble (nestede) løkker Mer om D-arrayer Introduksjon til D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk

Detaljer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

Detaljer

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

Detaljer

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4 Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer

Kapittel 1 En oversikt over C-språket

Kapittel 1 En oversikt over C-språket Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske

Detaljer

1. Å lage programmer i C++

1. Å lage programmer i C++ Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Å lage programmer i C++ Tore Berg Hansen og Else Lervik Rividert siste gang 24. august 2006 1. Å lage programmer i C++ Resymé: Dette notatet

Detaljer

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at

Detaljer

Feilmeldinger, brukerinput og kontrollflyt

Feilmeldinger, brukerinput og kontrollflyt Feilmeldinger, brukerinput og kontrollflyt Skjønne hvordan et program presist utføres og forberede seg på håndtering av feil INF1000, uke2 Ragnhild Kobro Runde Programmeringskrøll Programmet vil ikke kjøre

Detaljer

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering? Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille

Detaljer

Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010)

Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010) Ukeoppgaver 1: 30. aug 3. sep (INF1000 - Høst 2010) Et første møte med Java (kapittel 1 og 2.1 2.3 i læreboka, "Rett på Java" 2. utg.) Mål I første terminalstue-time skal du greie å skrive dine første

Detaljer

INF 1010, vår 2005 Løsningsforslag uke 11

INF 1010, vår 2005 Løsningsforslag uke 11 INF 1010, vår 2005 uke 11 Anders Brunland 11. april 2005 Oppgave 1 Oppgave 1 i kapittel 19, Rett på Java Er følgende metoder lovlige? Hovorfor/hvorfor ikke? a) void koknverter ( int mnd ) { konverterdato

Detaljer

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF 1000 (uke 2) Variabler, tilordninger og uttrykk INF 1000 (uke 2) Variabler, tilordninger og uttrykk Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset I dag skal vi se på Flere praktiske

Detaljer

6108 Programmering i Java. Leksjon 1. Introduksjon til programmering og til Java

6108 Programmering i Java. Leksjon 1. Introduksjon til programmering og til Java 6108 Programmering i Java Leksjon 1 Introduksjon til programmering og til Java Hva er programmering? 1. Hva er et program? 2. Hva skal programmeres? 3. Hva er en programmerer? Programmering i Java - Leksjon

Detaljer

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing. The Green Team Litt Java-historikk I 1991 opprettet Sun Microsystems en arbeidsgruppe som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Detaljer

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team The Green Team Litt Java-historikk I 1991 opprettet Sun Microsystems en arbeidsgruppe som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Detaljer

Oversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering

Oversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering Dagens tema Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at vi lager dette lille

Detaljer

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Data.data Stakk %EAX %ECX %EDX %EBP %ESP Prosessor Kode Minne.text Hovedkortet Grovt sett inneholder et hovedkort En prosessor

Detaljer

Introduksjon til programmering og programmeringsspråk

Introduksjon til programmering og programmeringsspråk Introduksjon til programmering og programmeringsspråk Henrik Lieng Høgskolen i Oslo og Akershus https://code.org/ Veldig høy-nivå programmering med Scratch End-user programming Overtone, Tidal, etc., bygger

Detaljer

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Grovt sett inneholder det En prosessor Minne (for både program og data) Klokke Kontrollere for periferutstyr.

Detaljer

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004

INF1000 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

Detaljer

Minnehåndtering i operativsystemer

Minnehåndtering i operativsystemer Minnehåndtering i operativsystemer Minnehåndtering? Minne er en begrenset ressurs i datamaskinen Tilgjengelig minne må fordeles til prosessene som OS-et håndterer, på en korrekt og rettferdig måte Minnet

Detaljer

Kom i gang med programmering i Java

Kom i gang med programmering i Java Kom i gang med programmering i Java Dette dokumentet forteller hvordan du skal komme i gang med programmering inkludert nedlasting av den programvare du trenger samt oppsett av disse samt en del innstillinger

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 2 Læringsmål Mål Introduksjon til filer (som inndata og utdata) Å bruke

Detaljer

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet TGA Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"

Detaljer

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

Detaljer

Oblig4 - forklaringer. Arne og Ole Christian

Oblig4 - forklaringer. Arne og Ole Christian Oblig4 - forklaringer Arne og Ole Christian Struktur og alle (?) klassene import easyio.*; import java.util.*; class Oblig4 { public static void main (String[] args) { String s1 = "Stasjoner-1.txt"; String

Detaljer

Blokker og metoder INF1000 (Uke 6) Metoder

Blokker og metoder INF1000 (Uke 6) Metoder Blokker og metoder INF1000 (Uke 6) Metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Are Magnus Bruaset og Arild Waaler En blokk er en samling instruksjoner omgitt av krøllparenteser:

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 13. juni 2006 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5

Detaljer

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl. 16.00 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

Detaljer

Minnehåndtering i operativsystemer

Minnehåndtering i operativsystemer Minnehåndtering i operativsystemer Minnehåndtering? Minne er en begrenset ressurs i datamaskinen Tilgjengelig minne må fordeles til prosessene som OS-et håndterer, på en korrekt og rettferdig måte Minnet

Detaljer

Et lite oppdrag i bakgrunnen

Et lite oppdrag i bakgrunnen Et lite oppdrag i bakgrunnen Under pultene på bakerste rad er det klistret post-it lapper med to tall skrevet på Regn ut summen av to nederste tall, skriv denne summen under de andre tallene, og send lappen

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

Velkommen til. INF våren 2016

Velkommen til. INF våren 2016 Velkommen til INF1010 - våren 2016 Denne uken (onsdag og torsdag): Om INF1010 Java datastrukturer Klasser med parametre i Java Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 INF1010

Detaljer

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder INF1000 : Forelesning 4 Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet

Detaljer

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

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