INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.

Slides:



Advertisements
Liknende presentasjoner
Trykk på mus eller tastatur for neste bilde…
Advertisements

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.
Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Kontrollstrukturer (Kapittel 3)
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Java 14 Et eksempel fra bioinformatikk: analyse av biologiske sekvenser Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Oblig4 - forklaringer Arne og Ole Christian.
Eiendomregister mars 2002 Arne Maus. import java.util.*; import inf101.*; /* Klasse med main() som starter hele programmet */ class EiendomsregisterMain.
Eiendomsregister - eksempel
C# for javaprogrammerere
En gang til!? .
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
INF150 Programmering mandag 11.9
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 3 Mer om uttrykk Terminal I/O Forgreninger
Java 11 Programmering med og uten objekter: hva er forskjellen?
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Föreläsning 13 Programmeringsteknik och Matlab 2D1312/2D1305 Inläsning från fil Skriva till fil StringTokenizer Sortering.
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
INF1000 (Uke 13) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
INF1000 (Uke 12) Sortering og eksamensoppgaver Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Iterator i Java boolean hasNext() E next() void remove()
IS-102 Interaksjon med objekter
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler

Oppgave 1 (Programtolkning) 1a: Hva blir skrevet ut når programmet nedenfor kjøres? class stringHåndtering{ public static void main (String[] args){ String s = "Lykke til på eksamen"; String t = "Eksamen"; System.out.println(s.indexOf(t)); System.out.println(s.endsWith(t)); System.out.println(s.compareTo(t)); } Svar: False 7

Oppgave 1 (Programtolkning) 1b: Hvor mange ganger skrives teksten “hei” ut når programmet nedenfor kjøres? class skrivHei{ public static void main(String[] args){ for (int i = 0; i < 10; i=i+2){ for (int j = i; j < 10; j++){ System.out.println("hei"); } Svar: 30 ganger

Oppgave 1 (Programtolkning) 1c: Hva blir skrevet ut når programmet nedenfor kjøres? class enkelRegning { public static void main(String[] args) { int i = 0; int j = ++i + 3*i; i = 3; int m = 2; int k = (3*i – m--) / 3 + m; i = 2; m = i++; int n = 2 * i + 2 * m - i; System.out.print("Verdien til j er: " + j); System.out.print("Verdien til k er: " + k); System.out.print("Verdien til n er: " + n); } Svar: Verdien til j er: 4Verdien til k er: 3Verdien til n er: 7 Verdien til j er: 4Verdien til k er: 3Verdien til n er: 7

Oppgave 1 (Programtolkning) 1d: Hva blir skrevet ut når programmet nedenfor kjøres? class logiskeUtrykk{ public static void main(String[] args){ int i = 1; double j = 1/3; char c = ’B’; if (i > j && c != ’B’){ System.out.println("Første if-test er true"); } if (i > j || c != ’B’){ System.out.println("Andre if-test er true"); } if (! (i < j) ){ System.out.println("Tredje if-test er true"); } Svar: Andre if-test er true Tredje if-test er true

Oppgave 1 (Programtolkning) 1e: Hva blir skrevet ut når programmet nedenfor kjøres? class whileTest { public static void main (String[] args) { boolean fortsett= true; int k = 2; while (fortsett) { k += 2; fortsett = !fortsett || (k < 10) ; System.out.println("k = " + k); } Svar: k = 4 k = 6 k = 8 k = 10

Oppgave 1 (Programtolkning) 1f: Hva er en konstruktør? Hvorfor kan en klasse ha flere konstruktører? Svar: En konstruktør er en metode med samme navn som den klassen den ligger i. Den skal verken ha noen returtype eller void. Den blir alltid utført når et nytt objekt av klassen blir dannet ved hjelp av new. Siden Java skiller på hvilke typer parametere det er i kallet vil man kunne ha mange forskjellige konstruktører så lenge det er en entydig forskjell mellom typene eller antall parametere.

Oppgave 2 (Metoder) 2a: Skriv en metode som leser en tekst fra fil, og teller opp hvor mange ganger et gitt ord forekommer i filen. Både navnet på innfilen og søkeordet skal sendes som argument ved metodekallet. Metoden skal returnere antall forekomster av søkeordet.

Svar på 2a int tellOrd(String filnavn, String ord) { In inn = new In(filnavn) int ant = 0; while (!inn.endOfFile()) { String s = inn.inLine(); while (s.contains(ord)) { int i = s.indexOf(ord); s = s.substring(i+1); ant++; } return ant; }

Oppgave 2 (Metoder) 2b: Lag en metode som finner den minste verdien i en array hvor elementene er av typen double. Metoden skal motta arrayen som parameter i metodekallet. Metoden skal returnere den minste verdien.

Svar på 2b double minste(double[] a) { int n = a.length; double minst = a[0]; for (int i = 1; i < n; i++) { if (a[i] < minst) { minst = a[i]; } return minst }

Oppgave 3 (Program med klasser) Oversikt over boksamlinger Bok = forfatter, tittel, utgivelsesår, ISBN-nummer (unikt nummer for hver bokutgivelse), bokens eier og navn på eventuell låner Java-program Lån og retur av bok Legge inn opplysninger om nye bøker Ved avslutning, skriv filen boksamling.txt Ved oppstart, les boksamling.txt

Filformat FORFATTER: J. R. R. Tolkien TITTEL: Ringenes herre UTGIVELSESÅR: 1955 ISBN: EIER: Ola LÅNT AV: Kari FORFATTER: Stephen Donaldson TITTEL: Fyrst Nids varsel UTGIVELSESÅR: 1997 ISBN: EIER: Hans LÅNT AV: Det er alltid en blank linje i filen mellom hver blokk med opplysninger, og hver blokk beskriver en bok.

a: klassen Bok Klassen Bok = alle opplysningene om en gitt bok Alle Bok-objekter skal få fornuftige verdier for sine variabler ved opprettelsen av objektet Utskriftsrutine som skriver ut bokens tittel, forfatter, utgivelsesår, ISBN, eier og eventuell låner Samme metode skal kunne brukes både for skjerm- og papirutskrift.

Svar på 3a class Bok{ String forfatter; String tittel; String utgivelsesår; String iSBNnr; String eier; String låntAv; Bok (String f, String t, String u, String i, String e, String l) { … } Bok(String f, String t, String u, String i, String e){ … } void utskrift(Out ut){ … }

Svar på 3a, konstruktør med utlån Bok(String f, String t, String u, String i, String e, String l){ forfatter = f; tittel = t; utgivelsesår = u; iSBNnr = i; eier = e; låntAv = l; }

Svar på 3a, konstruktør uten utlån Bok(String f, String t, String u, String i, String e) { forfatter = f; tittel = t; utgivelsesår = u; iSBNnr = i; eier = e; låntAv = " "; }

Svar på 3a, utskrift void utskrift(Out ut){ ut.outln("FORFATTER: " + forfatter); ut.outln("TITTEL: " + tittel); ut.outln("UTGIVELSESÅR: " + utgivelsesår); ut.outln("ISBN: " + iSBNnr); ut.outln("EIER: " + eier); ut.outln("LÅNT_AV: " + låntAv); ut.outln(" "); // blank linje hver bok }

b: klassen Bibliotek Klassen Bibliotek = informasjon om alle de registrerte bøkene Programmer hele klassen Bibliotek og sørg spesielt for å implementere: En metode for å registrere en ny bok En metode for å liste opp alle de registrerte bøkene En metode for å liste opp alle bøkene av en bestemt forfatter Utskriftrutinene skal kunne skrive både til skjerm og til fil.

Svar på 3b class Bibliotek{ Hashmap bib = new Hashmap(); void registrerBok (Out ut, In inn) { … } void registrerBok (In inn) { … } void utskrift (Out ut) { … } void utskrift (Out ut, String forfatter) { … }

Svar på 3b, registrering av bok void registrerBok (Out ut, In inn) { ut.outln("Skriv inn forfatter: "); String forfatter = inn.inLine(); ut.outln("Skriv inn tittel: "); String tittel = inn.inLine(); ut.outln("Skriv inn utgivelsesår: "); String utgivelsesår = inn.inLine(); ut.outln("Skriv inn ISBN nummer: "); String iSBNnr = inn.inLine(); ut.outln("Skriv inn eier: "); String eier = inn.inLine(); ut.outln("Skriv inn låner: "); String låntAv = inn.inLine(); Bok b = new Bok(forfatter, tittel, utgivelsesår, iSBNnr, eier, låntAv); String nøkkel = iSBNnr + eier; bib.put(nøkkel, b); }

Svar på 3b, innlesing fra fil void registrerBok (In inn) { while(!inn.endOfFile()) { inn.inWord()); String forfatter = inn.inLine(); inn.inWord(); String tittel = inn.inLine(); inn.inWord(); String utgivelsesår = inn.inLine(); inn.inWord(); String iSBNnr = inn.inLine(); inn.inWord(); String eier = inn.inLine(); inn.inWord(); String låntAv = inn.inLine(); inn.inLine(); Bok b = new Bok(forfatter, tittel, utgivelsesår, iSBNnr, eier, låntAv); String nøkkel = iSBNnr + eier; bib.put(nøkkel, b); }

Svar på 3b, utskrift void utskrift (Out ut) { Iterator it = bib.values().iterator(); while(it.hasNext()) { Bok b = (Bok) it.next(); b.utskrift(ut); }

Svar på 3b, utskrift av forfatter void utskrift (Out ut, String forfatter) { forfatter = forfatter.toUpperCase() Iterator it = bib.values().iterator(); while(it.hasNext()) { Bok b = (Bok) it.next(); f = b.forfatter.toUpperCase(); if (f.equals(forfatter)) { b.utskrift(ut); }

c: meny Utvid programmet med metoder som viser en meny over de tilgjengelige arbeidsoppgavene, leser brukerens valg og sørger for at riktig oppgave utføres.

Svar på 3c, metode i Bibliotek void meny(Out ut, In inn, Out utfil){ ut.outln(“Biblioteksmeny"); ut.outln("##############"); boolean stopp = false; while(!stopp){ ut.outln("R: Her kan du regitrere nye bøker."); ut.outln("S: Skrive ut alle bøkene I biblioteket."); ut.outln("F: Skrive ut bøker av en bestemt forfatter."); ut.outln("A: Avslutte"); ut.outln("Tast inn ditt valg (R, S, F, eller A):"); char valg = inn.inChar(); switch(valg){ case 'R': registrerBok(ut, inn); break; case 'S': utskrift(ut); break; case 'F': ut.outln("Skriv inn forfatternavn: "); String f = inn.inLine(); utskrift(ut,f); break; case 'A': utskrift(utfil); stopp = true; break; default: ut.outln("Du må taste inn en av bokstavene R, S, F eller A"); }

d: hovedprogrammet Lag en klasse som inneholder main-metoden for systemet La metoden lese inn tilgjengelige opplysninger fra filen boksamling.txt, før den sørger for menyvalg Umiddelbart før programmet avslutter kjøringen, skal alle registrerte opplysninger lagres ved bruk av tidligere programmerte metoder

Svar på 3d public static void main(String[] a) { String filnavn = “boksamling.txt” Bibliotek B = new Bibliotek(); Out skjerm = new Out(); In innfil = new In(filnavn); // leser fra fil In tastatur = new In(); B.registrerBok(innfil, bi); innfil.close(); Out utfil = new Out(filnavn); B.meny(skjerm, tastatur, utfil); // skriver til fil utfil.close(); }