Resymé: Leksjonen omhandler grunnlaget for JSP, nemlig Java Servlets. I tillegg gjennomgås de mest grunnleggende elementene i JSP..

Størrelse: px
Begynne med side:

Download "Resymé: Leksjonen omhandler grunnlaget for JSP, nemlig Java Servlets. I tillegg gjennomgås de mest grunnleggende elementene i JSP.."

Transkript

1 Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Elementene i JSP Tomas Holt Lærestoffet er utviklet for faget LV193D Web-programmering i JSP 1. Elementene i JSP Resymé: Leksjonen omhandler grunnlaget for JSP, nemlig Java Servlets. I tillegg gjennomgås de mest grunnleggende elementene i JSP.. Innhold 1. ELEMENTENE I JSP OM LEKSJONEN JAVA SERVLETS Lag din egen servlet Overgangen fra JSP til servlet Programmering av servlet er JAVA SERVER PAGES (JSP) Elementer i JSP Innebygde objekter i JSP Utskrift inne i metoder LØSNING PÅ FRIVILLIGE OPPGAVER REFERANSER Om leksjonen Også denne leksjonen er stor. Deler av stoffet kan nok også være ganske tungt. Særlig kan kanskje kapitlet om Java Servlets være vanskelig. Legg ikke for stor vekt på dette kapitlet. Det er tatt med for å kunne gi dere forståelsen av hva en JSP er. Det kan være situasjoner der det er lurt å skjønne hva en servlet er for fullt ut å kunne utnytte JSP. I de fleste tilfeller vil du imidlertid ikke trenge denne kunnskapen. Denne leksjonen og neste leksjon inneholder også en del litt mer avanserte programmeringsaspekter. Noe av dette kan nok være være vanskelig, men danner grunnlaget for å forstå og kunne lage nyttige JSP-løsninger.

2 Elementene i JSP side 2 av 23 Leksjonen inneholder noen frivillige oppgaver underveis. Grunnen til dette er at det blir enklere å gjøre oppgavene rett etter at du har lest teorien og at det vil være enklere å huske teorien når du har brukt den i praksis. Løsning på oppgavene finner du bakerst i leksjonen. Det bør også nevnes at HTML-koden i eksemplene ofte ikke er fullverdig HTML-kode. Grunnen til dette er at eksemplene skal være mest mulig oversiktlig. For å kjøre koden i leksjonene i dette faget må du kopiere koden fra leksjonen inn i en teksteditor. Du må så lagre koden og så kjøre koden gjennom din egen tjener. Acrobat Reader som du bruker til å lese leksjone har et valg for å klippe ut tekst. Dette gjør du ved å trykke på knappen med en T på. Du kan da markere teksten du er interessert i og kopiere denne. Merk at noen ganger blir det rare tegn ved slik kopiering. Se derfor over koden hvis den ikke fungerer Java Servlets Dette kapittelet er et ganske vanskelig kapittel. Særlig fordi en del av dere har litt lite programmeringserfaring fra før. Dette kapittelet om servlet er omhandler programmeringsaspekter som dere ikke har lært. Det er egentlig ikke så farlig om du har problemer med å skjønne interface og arv som omtales lenger ned. Kapittelet er ment å gi en oversikt over hva som skjer når vi lager JSP er. Så fortvil ikke om dette kapittelet er litt vanskelig. Les kap. 3 i boken. JSP er sterkt knyttet til Java Servlets, fordi en JSP automatisk vil oversettes til en servlet før den kjøres (se leksjon 1). En servlet har mange likhetstrekk med en Java applet. I begge tilfellene lages en.java fil. Denne filen vil så kompileres og vi får en.class fil. Denne filen består av kjørbar kode. import javax.servlet.*; public class MinServlet implements Servlet De to linjene over er hentet fra en servlet. Koden implements Servlet forteller at dette er en servlet. Servlet er et interface, og alle klasser som implementerer dette vil være en servlet. Hva er så et interface? I [JavaBok] er dette forklart. Jeg prøver her å summere kort hva et interface er. Når en klasse implementerer et interface forteller dette oss noe om klassen. I vårt tifelle angis det at klassen inneholder spesielle metoder angitt i interface et Servlet. API-dokumentasjonen for Servlet ser slik ut:

3 Elementene i JSP side 3 av 23 Figur 1: Interface'et javax.servlet.servlet Metodene som er beskrevet i figuren over er ikke implementert. Når vi lager en klasse som implementerer et interface forplikter vi oss samtidig til å implementere metodene som er definert i dette interface et. Når jeg i koden min angir public class MinServlet implements Servlet så sier jeg samtidig at klassen min skal implementere metodene beskrevet i Servlet. Mao. så forplikter jeg meg til å lage disse metodene i klassen min. Det er imidlertid jeg som bestemmer hva metodene skal gjøre. En servlet er beregnet på å tjene klienter, andre klasser og til og med andre servlet er. Fordi vi konsentrerer oss om web vil servlet en fungere i samarbeid med web-tjeneren. Det er webtjeneren som sørger for å ta i mot forespørsler, og disse vil sendes videre til servlet en. Servlet en sørger for å gjøre noe og sende svar tilbake. Servlet en vil derfor opptre som en del av tjeneren. Før web-tjeneren kan sende forespørsler til en servlet, må den aktuelle servlet en instansieres (lages) og initialiseres. Web-tjeneren vil instansiere en servlet på samme måte som hvilken som helst annen klasse. Figuren under og figur 3.1 s. 37 i boka beskriver hvordan livssyklusen til en servlet er. Merk at fordi MinServlet implementerer interface et Servlet er web-tjeneren garantert at den kan kalle metodene init(), service() og destroy() (de andre metodene er ikke vist her av hensyn til oversikten). Se også at web-tjeneren oppretter et objekt av typen MinServlet men referansen min som refererer til dette objektet er av type Servlet, og vi kan dermed kun kalle de metodene som er beskrevet i interface et Servlet. Dette er en god løsning fordi web-tjeneren ikke er interessert hvordan servlet ene er implementert, men kun hvordan servlet ene kan lages, initialiseres, kjøres og fjernes. Web-tjeneren kan derfor behandle alle servlet er likt.

4 Elementene i JSP side 4 av 23 Figur 2: Servlet livsyklus Når en lager en servlet beregnet på web vil det imidlertid være hensiktsmessig å arve fra klassen HttpServlet i stedet for å implementere Servlet interface et. Å arve en annen klasse vil i vårt tilfelle si at vi har tilgang på metodene i denne klassen. Vi kan likevel, hvis vi er interessert i det lage våre egne varianter av metodene. I dette tilfellet vil våre egne metoder brukes (ikke de metodene som er spesifisert i den klassen vi arver fra). HttpServlet er en (abstrakt) klasse som implementerer Servlet interface et. Denne klassen spesifiserer en del metoder som er veldig kjekke å ha når man jobber mot web. Særlig viktige metoder i HttpServlet er: public void init() throws ServletException public void service(httpservletrequest req, ServletResponse res) public void doget(httpservletrequest req, ServletResponse res) public void dopost(httpservletrequest req, ServletResponse res) Metodene over er beskrevet på s i boka. Metodene doget() og dopost() er metoder som gjør det enkelt å ta i mot informasjon fra HTML-skjema. I leksjon 1 lagde vi et script som viste klokken (klokke.jsp). Dette var som følger: <HEAD> <TITLE> Min første JSP side </TITLE> </HEAD>

5 Elementene i JSP side 5 av 23 <H1> Klokka er: <%= new java.util.date() %> </H1> En servlet som gjør det samme kan se slik ut: import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.date; public class KlokkeServlet extends HttpServlet{ public void service(httpservletrequest req, HttpServletResponse res) throws IOException, ServletException{ res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println(""); out.println("<head>"); out.println("<title> Min første Servlet </TITLE>"); out.println("</head>"); out.println(""); out.println("<h1> Denne servlet'en viser klokka nå: </H1>"); Date klokke = new Date(); out.println(klokke); out.println(""); out.println(""); Koden extends HttpServlet angir at klassen arver fra klassen HttpServlet. Som vi ser implementerer denne klassen kun en metode. De andre metodene som er spesifisert i interface et Servlet er implementert i klassen som vi arver fra, nemlig HttpServlet. Som vi ser blir det mindre kode når vi gjør dette med JSP. Den blir også mindre kryptisk. I JSP-koden blandes HTML-kode og script-kode i skjønn forening, mens servlet en kun inneholder java-kode. All HTML-kode som skal sendes tilbake til klienten fra servlet en sendes med out.println(). Dette gjør at vi fort kan miste oversikten over HTML-koden i servlet en. Vi ser også at vi er nødt til å passe på at koden kaster de riktige unntakene. Kommandoen res.setcontenttype( text/html ) sørger for å oppgi hvilken type respons denne servlet en gir. Når det er snakk om HTML må denne være satt på denne måten. Dette fordi nettleserene oppfører seg ulikt når denne ikke er satt. Hvis ikke denne er satt vil Netscape tolke innholdet som ren tekst (i stedet for HTML) noe som gjør at web-siden ikke blir som vi hadde tenkt. Vi ser også at vi må lage oss vår egen PrintWriter for å kunne sende respons tilbake til klienten.

6 Elementene i JSP side 6 av 23 Konklusjonen er at vi kan gjøre det samme med JSP og servlet er, men at JSP skjuler en del av kompleksiteten for oss. Særlig gjør JSP det enkelt å jobbe med HTML-kode! Lag din egen servlet For å bevise påstanden skal du nå få kjøre servlet en selv. Skriv inn koden (eller kopier den) i en teksteditor. Lagre servlet en din som KlokkeServlet.java i <tomcathome>\webapps\root\web-inf\classes. For å kunne bruke servlet en må den kompileres. Det er en ting som er verdt å merke seg når du skal kompilere en servlet. API et (Application Programmer s Interface) ligger i filen <tomcat-home>\common\lib\servlet.jar. Dette API et inneholder klassedefinisjoner osv. som vi trenger når vi skal kompilere en servlet. Vi må derfor sørge for at classpath en er satt slik at den inneholder denne filen (classpath inneholder de katalogene hvor systemet leter etter pakker/klasser). Den enkleste måten å gjøre dette på er kanskje å oppgi classpath en når du kompilerer KlokkeServlet.java. Kompilering gjøres da slik (du må stå på katalogen der filen er lagret) fra konsollvinduet (merk at java skiller mellom store og små bokstaver): javac classpath <tomcat-home>\common\lib\servlet.jar;. KlokkeServlet.java Resultatet blir da KlokkeServlet.class. Du må nå fortelle web-tjeneren at det er laget en servlet som skal være tilgjengelig for omverdenen. Dette gjøres ved å finnes filen <tomcat-home>\webapps\root\web_inf\web.xml. Denne filen brukes til å konfigurering av web-applikasjonen vår. Hva som ligger i dette skal vi ikke bry oss om, men bare konstantere at vi kan bestemme at serlvet en vi har laget kan gjøres tilgjengelig på web og at vi kan bestemme navnet som skal brukes for å nå den. Åpne web.xml og legg til det som er skrevet med uthevet skrift i koden under. Filen web.xml skal da se slik ut: <?xml version="1.0" encoding="iso "?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " <web-app> <display-name>welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name> KlokkeServlet </servlet-name> <servlet-class> KlokkeServlet

7 Elementene i JSP side 7 av 23 </servlet-class> </servlet> <servlet-mapping> <servlet-name> KlokkeServlet </servlet-name> <url-pattern> /Klokke </url-pattern> </servlet-mapping> </web-app> Det som skjer i koden vi har lagt til er at vi spesifiserer hva servleten skal hete KlokkeServlet og hva class filern for denne heter KlokkeServlet.class. Så spesifiserer vi hvilken url som skal brukes for å få tilgang til servleten KlokkeServlet. Vi sier at url en skal være Klokke. For å kjøre filen starter vi web-tjeneren (på nytt) og taster inn følgende URL i nettleseren: Du bør nå få opp en web-side som er omtrent lik klokke.jsp som du lagde i forrige leksjon. Se hva som kommer i retur til nettleseren fra denne servlet en (Vis/Kilde i nettleseren). Sammenlikn dette med det du fikk av JSP en som du laget i leksjon Overgangen fra JSP til servlet Vi skal nå se nærmere på overgangen fra JSP til en servlet. Figur 3.2 s.38 i boka beskriver denne overgangen. Det har seg slik at de fleste web-tjenerne gir mulighet for å ta vare på servlet en som blir resultatet av en JSP. I Tomcat gjøres dette automatisk. For hver JSP-fil blir det generert en.java-fil og en.class-fil. Disse filene lagrer web-tjeren på katalogen <tomcat-home>\work\standalone\localhost. I denne katalgoen finner du en katalog som heter _ (se øverste katalog i figuren under). Så lengde vi lagrer JSP-filene våre i <tomcat-home>\webapps\root katalogen så vil de genererte.java og.class-filene havne her. For å se hvordan dette fungerer bør du stoppe web-tjeneren, og slette innholdet i katalogen _. Start så tjeneren igjen og se på klokke.jsp i nettleseren. Hvis du da kikker i _ katalogen etterpå vil du se at det finnes to filer her (muligens må du se i en underkatalog).

8 Elementene i JSP side 8 av 23 En.class fil og en.java fil. Dette er hhv. den kjørbare filen som blir kjørt og returnerer innholdet i web-siden, og kildekoden til denne. Hvis du åpner.java filen i en editor vil du se hvordan JSP-filen ser ut når den er konvertert til en servlet. Innholdet i denne filen er rimelig kryptisk. Det du kan merke deg er at mye er det samme som vi laget i vår servlet (_jspservice()-metoden tilsvarer metoden service()), men i en mer rotete innpakning. Husk at dette er kode som genereres automatisk. Slik kode har en tendens til å bli rotete for oss mennesker. Poenget med å se på denne filen er at du faktisk kan gå inn å gjøre forandringer i denne filen og kompilere den på nytt. Dette kan være nyttig i enkelte tilfeller hvis du får problemer med JSP en din, og du ikke helt klarer å finne ut hva problemet er. Å gå inn å forandre java-koden kan da brukes som siste utvei, da det kan være enklere å gjøre feilsøking i servlet er (java-kode) i forhold til feilsøking i JSP-kode Programmering av servlet er Dette kurset handler ikke om programmering av servlet er. Som grunngitt over kan det være likevel være situasjoner som gjør det ønskelig å drive med servlet-programmering. Både når du skal programmere servlet er og JSP er trenger du en oversikt over servlet-api et. Det kan du finne på Tross sitt navn er dette API et også viktig i forbindelse med JSP. Dette pga. det sterke koblingen mellom JSP og servlet er. API et inneholder egne pakker for JSP. Ellers finnes det også informasjon på

9 Elementene i JSP side 9 av Java Server Pages (JSP) Vi har nå sett at forskjellen mellom servlet er og JSP ligger i hva vi som utvikler er nødt til å gjøre. Særlig i de tilfellene det er snakk om presentasjon på web-sider vil JSP være å foretrekke framfor servlet er. Grunnen til dette at vi på en enkel måte kan flette HTML-kode sammen med program-kode. Dette er mye mer tungvindt med en servlet. Imidlertid så kan forholdet snu seg når det er snakk om å lage mye kode og lite presentasjon. Da vil fort JSP oppleves som tungvindt, fordi vi ikke kan programmere på vanlig måte. I slike tilfeller vil det være mer hensiktsmessig med en servlet enn JSP. Er JSP dermed ubrukbar for litt mer avanserte web-sider? Nei. I JSP har vi muligheten til å importere og bruke java-klasser og metoder i disse klassene direkte. Dette gjør at vi kan bruke JSP til den delen som har med presentasjon på web-siden å gjøre, mens vi kan ha egne javaklasser i de delene der det er snakk om mye programmering. Dette gjør at vi faktisk får en veldig god deling mellom presentasjon og logikk. Vi kan dermed lage presentasjonen (HTML-koden) for seg og logikken (programmeringskoden) for seg. Dette er særlig gunstig i større prosjekter der man vil ha profesjonelle designere som lager presentasjonen og profesjonelle programmerere som tar seg av programmeringen. De trenger da ikke å ta hensyn til hverandre. Sammensyingen av systemet gjøres ved at en legger inn en del JSPkode sammen med HTML-koden som gjør at en får tak i klassene og metodene som programmererne har laget. JSP gir muligheten til en god deling mellom presentasjon og logikk Elementer i JSP Du begynner sikkert å få veldig lyst til å lage dine egne JSP er. For å kunne gjøre dette må du ha kjennskap til de ulike elementene en JSP kan bestå av. Kapittel 6-9 i boka omhandler dette. Mye av dette (særlig kap. 7-9) vil være kjent stoff da mye dreier seg om java-programmering. (Vektorer og Enumeration som omhandles i kapittel 7 i boka behandles i neste leksjon). Dette kapitlet i leksjonen oppsummerer det viktige. Kap. 7-9 regnes mer som støttelitteratur for de som føler seg litt utrygge på sine egen ferdigheter i java. For de som ikke helt skjønner kap. 6 (eller denne leksjonen) kan disse kap. være med på å gjøre ting klarere da det er endel eksempler i disse kapitlene. Her følger en tabell over de ulike elementene i JSP: JSP-element Kode Kommentar HTML-kommentar <!-- kommentar --> Kommentar som sendes til nettleseren sammen med resten av HTML-koden. JSP-kommentarer <%-- kommentar --%> Kommentar som ikke sendes til nettleseren. Direktiv <%@ page xxx %> f.eks. <%@ page import = Denne kan få JSP n til å oppføre seg på en spesiell måte. import er en av flere

10 Elementene i JSP side 10 av 23 java.util.date() %> muligheter (som kan erstatte xxx). Uttrykk (expressions) <%= uttrykk %> Skriver ut verdier til nettleseren. Scriptlet <% java-kode %> Utfører java-kode. Deklarasjon <%! int Tall; %> Brukes for å deklarere variabler og metoder. Alle elementene over plasseres direkte inn i HTML-koden. Se f.eks. JSP-koden tidligere i leksjonen der uttrykk brukes for å skrive ut dato og klokkeslett. Merk at det ikke er mulig å nøste JSP-elementer. Det medfører at du f.eks. ikke kan ha uttrykk inne i en scriptlet. Kommentarer HTML-kommentarer <!-- dette er en HTML-kommentar --> sendes til nettleseren, men vil ikke presenteres av nettleseren. Dette er kommentarer du vil se hvis du bruker Vis/Kilde i nettleseren. JSP-kommentar <%-- dette er en JSP-kommentar --%> sendes ikke med til nettleseren. JSP-kommentarer fungerer derfor kun som kommentarer til de som skal lese selve JSP-koden. Legg merke til at det er enkelt å kommentere ut andre JSPelementer (direktiv, uttrykk og scriptlet er). Det er bare å legge til -- (to bindestrek) etter <% og før %> slik at vi får <%-- ett eller annet --%>.

11 Elementene i JSP side 11 av 23 Tjener JSP-fil forespørsel utfør <!-- HTML-kommentar --> <%-- JSP-kommentar --%> Klient svar Resulterende HTML-kode <! HTML-kommentar --> Figur 3: Bruk av kommentarer Frivillig oppgave 1 Lag deg en JSP- fil der du legger inn både JSP-kommentarer og HTML-kommentarer. Se på HTML-koden som nettleseren mottar i dette tilfellet (Vis/Kilde). Direktiv Det finnes flere direktiv. Vi bryr oss om kun et foreløpig, nemlig <%@ page import= XXX %> Denne gir oss mulighet til å importere java-klasser på samme måte som vi bruker import i vanlige java-programmer. XXX skiftes ut med den klassen vi vil importere. Vil vi importere flere klasser kan dette gjøres ved å skille dem fra hverandre med et komma. Eksempel <%@ page import= java.util.date %> i JSP tilsvarer import java.util.date;

12 Elementene i JSP side 12 av 23 i en java-fil. Merk at JSP-varianten ikke slutter med semikolon! Etter vi har importert klassen kan den brukes på vanlig måte i en scriptlet eller et uttrykk. Uttrykk (expressions) Vi har allerede brukt denne type JSP-element i tidligere eksempel. Uttrykk starter med <%= og slutter med %>. Linjen <H1> Klokka er: <%= new java.util.date() %> </H1> fra klokke.jsp er et slikt uttrykk. Resultatet av linjen over var at klokken og datoen ble skrevet ut (se leksjon 1). Uttrykk fungerer også for primitive datatyper. F.eks. vil <%= 2+2 %> sørge for at 4 blir sendt til nettleseren. Figuren under viser hva som skjer. Merk deg at det ikke skal være semikolon til slutt i uttrykk. Du vil da få feilmelding (og ikke en direkte selvforklarende en)! Tjener JSP-fil forespørsel utfør <%= 2+2 %> Klient svar Resulterende HTML-kode 4 Figur 4: Uttrykk Frivillig oppgave 2

13 Elementene i JSP side 13 av 23 Lag deg din egen java-klasse. Alt denne trenger å gjøre er å ha en metode som returnerer en streng (f.eks. navnet ditt). Klassen kan f.eks. se slik ut: package minepakker.jsp; public class MinStreng{ private final String streng = Hei, tomas ; public String hentstreng(){ return streng; Kompiler klassen. Du skal nå lage en JSP som bruker denne klassen. Den resulterende websiden skal skrive ut strengen som returneres fra den klassen du lagde. Tips Når du skal importere en klasse er du avhengig av at denne klassen kan finnes. Dette gjøres ved å legge den kompilerte filen av klassen i katalogen <tomcathome>\webapps\root\web-inf\classes. Web-tjeneren vil bestandig lete etter java-klasser i denne katalogen så lenge JSP-filen som skal bruke java-filen ligger i katalogen <tomcathome>\webapps\root eller i en underkatalog. Husk at filen du importerer må være kompilert! Tomcat krever også at klassen ligger i en pakke (se første linje i koden over). Merk at du må opprette en underkatalog til katalogen <tomcat-home>\webapps\root\web- INF\classes som tilsvarer pakkenavnet. Dvs. ettersom pakkenavnet til klassen jeg har laget er minepakker.jsp så må det opprettes en katalog som heter <tomcathome>\webapps\root\web-inf\classes\minepakker\jsp. I denne katalogen må klassen ligge. Det er altså pakkenavnet som bestemmer hvilken underkatalog til classes-katalogen Tomcat vil lete (dette er måten det skjer på i Java). Scriptlets Scriptlets gjennomgås i kap. 9 i boka. En scriptlet er et element som starter med <% og slutter med %>. Det som settes inn i en slik scriptlet er java-kode. Vi vil derfor kontrollere hva som skjer i vår JSP med scriptlet er. Vi kan bruke alle typer kontrollstrukturer, objekter osv. som vi er vant med fra java (vi kan også bruke vanlige java-kommentarer med // ). Eksempel <% for (int i=0; i < 2; i++) { int j=i; %> Hva vises i klienten i dette tilfellet? Ingenting. Det som skjer i scriptlet en i eksempelet er at vi går igjennom for-løkka og endrer verdien til j, men dette sendes ikke til nettleseren. Vi kan

14 Elementene i JSP side 14 av 23 imidlertid bruke scriptlets til å sørge for output til nettleseren. Dette kan vi f.eks. gjøre ved å kontrollere HTML-koden. Eksempel <% for (int i=0; i < 2; i++) { %> <H1> If I were a </H1> <% %> RICH MAN Figuren under viser resultatet. Vi ser at linjen <H1> If I were a </H1> blir utført to ganger! Dette skjer pga. av de to scriptlet ene vi har. Vi ser at alt i mellom de to klammeparantesene { og blir utført som en del av for-løkka! Scriptlet er brukes derfor til å styre det som skjer i en JSP. Figur 5: Kjøring av eksempel

15 Elementene i JSP side 15 av 23 Tjener JSP-fil Klient forespørsel svar utfør <%= 2+2 %> 4 Resulterende HTML-kode Figur 6: Hva skjer ved kjøring av eksemplet? Frivillig oppgave 3 Skriv en JSP som skriver ut: god morgen hvis klokka er før 12 god dag hvis klokka er mellom 12 og 17 ellers god kveld. Tips: java.util.date har metoden gethours() som angir hva klokka er (returnerer en int). Du skal kun bruke scriptlet er og HTML-kode. Deklarasjon Deklarasjon vil du ikke bruke særlig mye. Det er mest aktuelt å bruke deklarasjon i forbindelse med å lage metoder. Når det gjelder deklarering av variabler bør dette i de aller fleste tilfeller skje i en scriptlet! Under forklares delvis hvorfor så er tilfelle. Leksjon 6 vil gå mer i dybden på dette temaet. Det er flere grunner til å bruke JSP sin deklarasjonsmulighet. Dette gjøres ved å bruke <%! deklarasjon %>. Deklarasjonen kan være både metoder og variabler, og disse vil være tilgjengelig i hele JSP en. Eksempel

16 Elementene i JSP side 16 av 23 Deklarering av variable kan skje slik:... <%! double tall ; int antallgriser = 1000; String s = Min dag i dag ; Date idag = new Date(); %> AntallGriser: <%= antallgriser %>... Disse variablene kan brukes på vanlig måte i en scriptlet eller et uttrykk i JSP en. I koden over vil verdien til antallgriser skrives ut. Vi har allerede deklarert variable i scriptlet er (se avsnitt om scriptlets) så er det egenlig noe poeng i å gjøre det på denne måten? Det kommer an på situasjonen. Vanligvis bør du definere variablene i en scriptlet! Noen ganger er du imidlertid nødt til å definere variablene i en deklarasjon. Dette er stort sett de tilfellene du vil ha variabler som er tilgjengelige i flere metoder. Det er ikke mulig å definere en metode i en scriptlet! (Jeg kommer tilbake til hvorfor etter eksemplet). En metode kan vi lage på denne måten: <%! int kvadrat(int inntall){ return inntall*inntall; %> Metoden over kan nå brukes i både scriptlet er og uttrykk. F.eks. kan vi ha bruke den på følgende måte (resultatet vises i figuren under):

17 Elementene i JSP side 17 av 23 <%! int kvadrat(int inntall){ return inntall*inntall; %> Kvadratet av 10 blir: <%= kvadrat(10) %> Figur 7: Deklarasjon av metoder Hvorfor kan vi så ikke deklarere metodene direkte i en scriptlet? Grunnen til dette er det som skrives inn i scriptlet er og uttrykk i en JSP havner i service()- metoden i servlet en. Under vises forholdet mellom JSP-kode og servlet-kode. Som vi har sett tidligere så vil en automatisk generert servlet ha mye styggere kode enn i eksemplet under og service()-metoden vil hete _jspservice(), men prinsippet blir det samme. Vi ser at både koden for uttrykk og koden for scriptlet en havner i samme metode i servlet en (se fet skrift i figuren). Vi har lov til å deklarere variabler inne i en metode, derfor vil deklareringen av tall gå fint i figuren. Hadde vi derimot prøvd å lage en metode ville vi ha laget en metode inne i en annen metode. Dette er ikke lov i java. Figur 9 viser hva som ville skjedd i dette tilfellet (merk at koden i figuren er forenklet).

18 Elementene i JSP side 18 av 23 <html> <head> <title> Min første JSP side </title> </head> <body> <h1> Klokka er: <%= new java.util.date() %> </h1> <% int tall = 100; %> </body> </html> JSP Servlet import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.date; public class KlokkeServlet extends HttpServlet{ public void service(httpservletrequest req, HttpServletResponse res) throws IOException, ServletException{ res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println(""); out.println("<head>"); out.println("<title> Min første Servlet </TITLE>"); out.println("</head>"); out.println(""); out.println("<h1> Denne servlet'en viser klokka nå: </H1>"); Date klokke = new java.util.date(); out.println(klokke); int tall = 100; out.println(""); out.println(""); Figur 8: Overgang fra JSP-scriptlet/uttrykk til servlet <% int kvadrat(int tall){ return tall * tall; %> JSP Servlet import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class KlokkeServlet extends HttpServlet{ public void service(httpservletrequest req, HttpServletResponse res) throws IOException, ServletException{ int kvadrat(int tall){ return tall*tall; Figur 9: Feil deklarering av metode i JSP Både når det gjelder metoder og variabler vil vi ved å bruke JSP sin deklareringsmetode (<%! og %>) sørge for at metodene og variablene blir lagt utenfor den resulterende service()- metoden.

19 Elementene i JSP side 19 av 23 <%! String rikmann= If I were a rich man ; int kvadrat(int tall){ return tall * tall; %> JSP <%= rikmann %> <%= kvadrat(10) %> Servlet import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class KlokkeServlet extends HttpServlet{ String rikmann = If I were a rich man ; int kvadrat(int tall){ return tall*tall; public void service(httpservletrequest req, HttpServletResponse res) throws IOException, ServletException{ res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println(rikmann); out.println(kvadrat(10)); Figur 10: Riktig deklarering av metoder Det vi kan slutte av eksemplet er at vi kan deklarere variable som en del av en scriptlet, men ikke metoder. Skal variablene være synlige i eventuelle metoder som vi lager må variablene deklareres i JSP sin deklarasjonsmåte. Dette fordi variable kun er synlige inne i den blokken de er definert (dette er kjent java stoff). Generelt er ikke metoder så veldig nyttige i forbindelse med JSP. Ofte vil det være en bedre ide å putte slike metoder inn i egne klasser og importere klassen. Det som særlig gjør at det er litt tungvindt å bruke metoder er at det ikke er mulig å bruke out.println() eller uttrykk inne i metodene. Grunnen er at out-objektet deklareres inne i service()-metoden i servlet en, og er derfor ikke tilgjengelig i andre metoder. Det man kan gjøre er eventuelt å sende med outobjektet som et argument til din selvlagde metode. Se kap for nærmere forklaring Innebygde objekter i JSP Følgende objekter er ferdigdefinerte objekter i JSP: request response session config out pagecontext application page

20 Elementene i JSP side 20 av 23 Disse objektene vil vi komme tilbake til senere. Det står en kort forklaring på de fire første i boka s Disse objektene er direkte tilgjengelig for oss i en JSP. Hvis jeg f.eks. vil bruke out-objektet så kan jeg gjøre det direkte i en scriptlet, slik: <% out.println( bla bla ); %> Out-objektet er av type javax.servlet.jsp.jspwriter (hvilken klasse de andre objektene tilhører er beskrevet i boka). For å finne ut hvilke metoder out-objektet tilbyr oss kan vi derfor se i API-dokumentasjon på Vi finner der blant annet metoden println() som vi brukte over (du kan også finne informasjon om de andre objektene der). Legg merke til at objektene beskrevet over blir opprettet automatisk. Dvs. at det ikke er nødvendig med JSPWriter out = new JSPWriter(). Objektet out Vi har så langt brukt JSP-elementet uttrykk (<%= og %>) for å sende dynamisk innhold til nettleseren. Vi har sett hvordan en JSP blir omformet til en servlet. Figur 10 viser dette, samt hvordan det blir opprettet et out-objekt med følgende java-kode: PrintWriter out = res.getwriter(); Etter at vi har opprettet out-objektet kan det brukes til å sende HTML-kode til nettleseren. I JSP er det et ferdigdefinert out objekt som tilsvarer out-objektet som lages i servlet en. Dette objektet er av klassen javax.servlet.jsp.jspwriter. Denne klassen har mange metoder (se API-dokumentasjonen). Den metoden vi vil bruke mest er nok println(). Denne metoden gjør omtrent det samme som et uttrykk. Under vises et eksempel der begge disse måtene er brukt. Hvilket av eksemplene er mest oversiktlig?

21 Elementene i JSP side 21 av 23 Eksempel med out <% boolean sann = true; String streng = sann... ; if (sann) out.println(streng); else out.println( usann.. ); %> Eksempel med uttrykk <% boolean sann = true; String streng = sann... ; if (sann) { %> <%= streng %> <% else { %> <%= usann.. %> <% %> Figur 11: Objektet out Figuren over bør kunne gi en indikasjon på at det er tilfeller der det er greiere å bruke outobjektet i stedet for uttrykk. Merk at begge disse metodene vil sørge for å sende noe til klienten. Vi kan derfor godt ha HTML-kode i en out.println()-kommando eller inne i uttrykk. <% out.println( ); %> <H2> her blander vi litt </H2> <%= %> Resultatet vil for klienten se slik ut: <H2> her blander vi litt </H2> Du vil etter hvert gjøre deg opp en mening om når det er best å bruke HTML-kode, out.println() eller uttrykk.

22 Elementene i JSP side 22 av Utskrift inne i metoder Som jeg hintet om tidligere i leksjonen er det også mulig å skrive ut inne i metoder. Du må da sende med out-objektet som argument til metoden det er snakk om. Dette kan f.eks. gjøres slik: <% skrivut(out); %> <%! void skrivut(jspwriter outmetode){ try{ outmetode.println("skriver ut fra min egen metode"); catch(exception e){ %> I koden over ser du at metoden er definert til slutt i JSP en. Det spiller ingen rolle hvor dette skjer. Vi ser at scriptlet en kaller metoden vår, med out-objektet som argument. Metodehodet beskriver at vi skal ha et argument av type JspWriter som argument. Dette er nettopp typen til out-objektet. Lenger opp i koden kan det se ut som om out-objektet virkelig er av typen PrintWriter, dette er ikke tilfellet. Grunnen til at eksemplene tidligere var laget slik er at denne klassen ofte blir brukt i forbindelse med servlet-programmering, men servlet er generert fra JSP er vil bruke JspWriter i stedet. Legg også merke til at vi må bruke try/catch i denne sammenhengen ellers vil vi få kompileringsfeil Løsning på frivillige oppgaver Frivillig oppgave 1 Denne må prøves selv. Frivillig oppgave 2 Kompilerer klassen på vanlig måte. Må sørge for at class-filen er tilgjengelig for webtjeneren. Denne filen må derfor ligge i en katalog som er med i classpath en. Katalogen <tomcat-home>\webapps\root\web-inf\classes er det, så jeg lager en underkatalog her. Underkatalogen må hete det samme som pakkenavnet. I dette tilfellet må det derfor opprettes en katalog som heter minepakker, og en katalog under denne igjen som heter jsp. Her legges class-filen. JSP-koden kan være slik: <%@ page import= minepakker.jsp.strengklasse %> <% StrengKlasse streng = new StrengKlasse(); out.println(streng.hentstreng()); %>

23 Elementene i JSP side 23 av 23 Frivillig oppgave 3 Denne oppgaven kan løses med eller uten out.prinltn(). Løsningen under er uten, men prøv gjerne å løse oppgaven ved bruk av out.println() også (eksempel på hvordan dette gjøres finner du litt lenger opp i leksjonen). <% int klokke = new java.util.date().gethours(); //denne er deprecated, men brukes for enkelhetsskyld her if (klokke <12) %> <H1> God morgen <H1> <% else if (klokke >= 12 && klokke <= 17) %> <H1> God ettermiddag </H1> <% else %> <H1> God kveld </H1> 1.5. Referanser [JavaBok] : Programmering i Java, Else Lervik og Vegard B. Havdal.

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) Forelesning 1 Klient/tjener-systemer, installasjon av tjener, og intro til JSP. Statisk Web = HTML Overskrift

Detaljer

1 JSP. 1.1 Innledning. 1.2 JSP og web-tjener. Innhold

1 JSP. 1.1 Innledning. 1.2 JSP og web-tjener. Innhold Tomas Holt 05.02.2008 Opphavsrett: Forfatter og HiST/AITeL Lærestoffet er utviklet for faget LO701D Interaktive Webtjenester med Java og XML 1 Resymé: I denne leksjonen skal vi på grunnleggende prinsipper

Detaljer

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider: Fra sist JSP - 2 Installasjon av Web-tjener Et enkelt JSP-script HTML statisk Forms Tags Ønsker dynamiske nettsider: Klientside-script/programmering Javascript, vbscript, applets Tjenerside-script/programmering

Detaljer

1 Introduksjon til web-programmering med JSP

1 Introduksjon til web-programmering med JSP side 1 av 20 Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 1.Introduksjon til web-programmering med JSP Tomas Holt, Else Lervik Lærestoffet er utviklet av Tomas Holt for faget LV193D

Detaljer

JSP. Tilstander og synkronisering

JSP. Tilstander og synkronisering JSP Tilstander og synkronisering Tilstandsinformasjon Fire måter å gjøre det på omskriving av URL cookies hidden fields (gjemte felt) tjenersidelagring (sessions) se kreativbrukavurl.jsp Kreativ bruk av

Detaljer

1. NetBeans IDE: Lage en enkel mobilapplikasjon

1. NetBeans IDE: Lage en enkel mobilapplikasjon Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag NetBeans IDE: Lage en enkel mobilapplikasjon Mildrid Ljosland/Lene Hoff 09.09.2008 Lærestoffet er utviklet for faget SO350D J2ME for programmering

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 14.desember 2007 Varighet: 0900-1200 Fagnummer: Fagnavn: Klasser: LO347D Web-applikasjoner med Java EE Nettstudenter

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

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 17.desember 2001 Varighet: 0900-1300 Fagnummer: LV192D Fagnavn: Web-programmering med ASP Klasser: 1hsf Vekttall:

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

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

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

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

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. Løsningsforslag Eksamen V2007 Oppgave 1 NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. Oppgave 1.1 Klasse som pakke rinne n primitiv datatype, slik at vi kan

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

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

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

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

Øving 0 - Xcode TDT4102

Øving 0 - Xcode TDT4102 Øving 0 - Xcode TDT4102 Frivillig Øving Mål for denne øvingen: Bli kjent med programmeringsverktøy Lage et første program kun med teksteditor og kompilator Lage et første program med Xcode Denne øvingen

Detaljer

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste Datafiler og serialisering Tekstfiler Scanner klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php

Detaljer

Dagens tema: 12 gode råd for en kompilatorskriver

Dagens tema: 12 gode råd for en kompilatorskriver Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter 12 gode råd Hva skal gjøres med navn? Sjekking av navn En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme

Detaljer

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

Mål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon

Mål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon Mål med kurset Java i INF 2400 Introduksjon til signalbehandling Lyd som anvendelse Få programmeringserfaring Dagens tema Utplukk av Java (GUI, kode-konvensjon, polymorfisme, classpath, javadoc) Java og

Detaljer

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler 42 Funksjoner Kapittel 4 Funksjoner Etter dette kapitlet skal du kunne lage og bruke enkle funksjoner lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen

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

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

Bruk 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

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

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

Detaljer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 9. juni 2005 Varighet: 4 timer (9:00 13:00) Fagnummer: LO701D Fagnavn: Interaktive Webtjenester med Java

Detaljer

INF1010 - Seminaroppgaver til uke 3

INF1010 - Seminaroppgaver til uke 3 INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar

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

Kapittel 7: Mer om arv

Kapittel 7: Mer om arv Kapittel 7: Mer om arv 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 Forlag,

Detaljer

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

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

Seminaroppgaver IN1010, uke 2

Seminaroppgaver IN1010, uke 2 Seminaroppgaver IN1010, uke 2 1.a: Skriv en klasse HeiVerden.java. Klassen skal inneholde en main- metode (se på notatet fra tidligere). Inne i main -metoden skal programmet først la brukeren oppgi en

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

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

Web-programmering med JSP Løsningsforslag leksjon 3

Web-programmering med JSP Løsningsforslag leksjon 3 Web-programmering med JSP Løsningsforslag leksjon 3 Oppgave 1 Denne siden viser inneholder en oversikt over biler:

Detaljer

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

Bruk av NetBeans i JSP-delen av Web-applikasjoner med JSP og JSF

Bruk av NetBeans i JSP-delen av Web-applikasjoner med JSP og JSF Bruk av NetBeans i JSP-delen av Web-applikasjoner med JSP og JSF Else Lervik, august 2010 (Av hensyn til JSF-delen av kurset anbefaler vi at du sørger for å ha NetBeans-versjon 6.9.) I den grad denne veiledningen

Detaljer

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

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

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 4.desember 2008 Varighet: 0900-1200 Fagnummer: Fagnavn: Klasser: LO347D/LN347D Web-applikasjoner med Java EE Nettstudenter

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

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

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

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. Arv, Subklasser og Grensesnitt Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett

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

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-SIKT - Notat om I/O i Java

INF1000-SIKT - Notat om I/O i Java INF1000-SIKT - Notat om I/O i Java Tuva Kristine Thoresen tuvakt@ulrik.uio.no 30. oktober 2013 Innhold 1 Innlesning fra terminal 2 1.1 Innlesning av tekst........................ 2 1.2 Innlesning av tall.........................

Detaljer

INF Notat om I/O i Java

INF 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

Detaljer

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

Detaljer

INF Innleveringsoppgave 6

INF Innleveringsoppgave 6 INF1010 - Innleveringsoppgave 6 Frist: Onsdag 16. mars, 10:00 Maks 6 poeng Om obligatorisk oppgave 4, 6 og 7 i INF1010, våren 2016: "Leger og resepter" Du skal jobbe med en problemstilling omkring leger

Detaljer

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004 Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004 Oppgave 1 RMI-tjenerobjekt (databasewrapper) A Sentral tjenermaskin med database, RMi-register og RMI-tjenerprogram vis kart gjør bestilling

Detaljer

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15. Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 15. januar 2016 Forkurs INF1010 - dag 3 Strenger 2 Forkurs INF1010 - dag

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

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

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

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

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

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 Oblig2 - obligatorisk oppgave nr 2 (av 4) i INF1000 Leveringsfrist Oppgaven må leveres senest fredag 29 september kl 1600 Viktig: les slutten av oppgaven for detaljerte leveringskrav Formål Formålet med

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012. Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012. Objektorientert modellering

Detaljer

1.2 Dynamiske, tjenerbaserte og interaktive nettsteder

1.2 Dynamiske, tjenerbaserte og interaktive nettsteder Kapittel 1 Innledning og motivasjon 1.1 Innledning Mye av dagens virksomhet på WWW, alt fra nettbanker til bibliotekkataloger, er dynamisk, interaktiv og databasestyrt. Alle som leser denne boken har brukt

Detaljer

Innføring i bruk av CGI4VB

Innføring i bruk av CGI4VB Innføring i bruk av CGI4VB Her kommer en enkel innføring i bruk av modulen CGI4VB som kan benyttes for å lage CGI programmer i Visual Basic. CGI er en forkortelse for Common Gateway Interface den kommunikasjonsprotokollen

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 1. desember 2010 Tid for eksamen: 14.00 18.00

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

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Eivind Storm Aarnæs (eivinsaa@math.uio.no) Institutt for Informatikk, 14. januar 2015 Forkurs INF1010 - dag 3 Strenger Fil-I/O Unntakshåndtering

Detaljer

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006 Oblig2 - obligatorisk oppgave nr 2 (av 4) i INF1000 h2006 Leveringsfrist Oppgaven må leveres senest fredag 30 september kl 1600 Viktig: les slutten av oppgaven for detaljerte leveringskrav Formål Formålet

Detaljer

Steg 1: Sette opp Java-prosjekt, og lage app-mappe og app-klasse

Steg 1: Sette opp Java-prosjekt, og lage app-mappe og app-klasse Hello world Skrevet av: Hallvard Trætteberg Kurs: Javafx Introduksjon Formålet til denne leksjonen er å lære hvordan man får satt opp et Java-prosjekt i Eclipse og kjørt et JavaFX-program. I tillegg skal

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

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

INF1010 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) 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:

Detaljer

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

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

Fra problem til program

Fra problem til program Fra problem til program Gitt et problem, hvordan går man fram for å programmere en løsning? UML klassediagrammer Enhetstesting Dokumentasjon Som student ønsker vi oss et program som kan holde oversikt

Detaljer

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009 Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009 Leveringsfrist Oppgaven må løses individuelt og leveres senest fredag 20. februar kl 16.00 via Joly. Viktig: les slutten av oppgaven for detaljerte

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

Shellscripting I. Innhold

Shellscripting I. Innhold Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Shellscripting I Tor Halsan 19.08.2010 Lærestoffet er utviklet for faget LN199D Scripting av Servere Resymé: Leksjonen er første innføring

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Mandag 6. august 2012, kl. 15:00-19:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Rune Sætre. Kontaktperson under

Detaljer

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv Bygg et Hus Introduksjon I denne leksjonen vil vi se litt på hvordan vi kan få en robot til å bygge et hus for oss. Underveis vil vi lære hvordan vi kan bruke løkker og funksjoner for å gjenta ting som

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF2440 Praktisk parallell programmering Prøveeksamensdag : 26. mai 2014 Tidspunkter: 11.00 Utdeling av prøveeksamen 15:15

Detaljer

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Tre 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

Web-programmering med JSP Løsningsforslag leksjon 4

Web-programmering med JSP Løsningsforslag leksjon 4 Web-programmering med JSP Løsningsforslag leksjon 4 Oppgave 1 String adr = request.getremoteaddr() ; out.println(adr); Oppgave 2 Først her kommer HTML-filen med JavaScript et vi lagde i forrige leksjon.

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

Et forsøk på definisjon

Et forsøk på definisjon Et forsøk på definisjon [Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 21/08-16 Engelsklignende språk, med rigid syntaks, som kan brukes til å skrive instruksjoner (eksempel

Detaljer

Et forsøk på definisjon. Eksempel 1

Et forsøk på definisjon. Eksempel 1 Et forsøk på definisjon [Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michael.preminger@hioa.no) 19/08-15 Engelsklignende språk, med rigid syntaks, som kan brukes til å skrive instruksjoner

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

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle Bygg et Hus Skrevet av: Geir Arne Hjelle Kurs: Computercraft Tema: Tekstbasert, Minecraft Fag: Programmering, Teknologi Klassetrinn: 5.-7. klasse, 8.-10. klasse, Videregåe skole Introduksjon I denne leksjonen

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

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003 INF1000 HashMap Marit Nybakken marnybak@ifi.uio.no 2. november 2003 Dette dokumentet skal tas med en klype salt og forfatteren sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println(); Repetisjon: nesting av løkker 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

Detaljer

Brukerveiledning for ArkN4

Brukerveiledning for ArkN4 Brukerveiledning for ArkN4 Brukerveiledningen er delt inn i 3 deler: 1. Konfigurasjon av ArkN4 2. Kjøre ArkN4 3. Opprette ny database Eksemplene i dette kapitlet viser hvordan man velger de forskjellige

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

IN Notat om I/O i Java

IN 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,

Detaljer