Tentamen FYTA11 Javaprogrammering

Relevanta dokument
Lösningsförslag, tentamen FYTA11 Javaprogrammering

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Tentamen FYTA11 Javaprogrammering

Lösningsförslag tentamen FYTA11 Java

Att skriva till och läsa från terminalfönstret

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

TENTAMEN OOP

Lösningsförslag FYTA11 Javaprogrammering

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

F4. programmeringsteknik och Matlab

Laboration 13, Arrayer och objekt

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Föreläsnings 9 - Exceptions, I/O

Tentamen OOP

PROGRAMMERING-Java TENTAMINA

Tentamen FYTA11 Javaprogrammering

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

2D1339 Programkonstruktion för F1, ht 2004

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

DAT043 Objektorienterad Programmering

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Tentamen , Introduktion till Java, dtaa98, dtea53

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Objektorienterad Programmering (TDDC77)

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Föreläsning 3-4 Innehåll

Objektorienterad Programmering (TDDC77)

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 14. Filhantering

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Tentamen FYTA11 Javaprogrammering

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

PROGRAMMERING-Java Omtentamina

Del A (obligatorisk för alla)

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 8: Exempel och problemlösning

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

TDDC77 Objektorienterad Programmering

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-15, TDA540. Dag: , Tid:

Tentamen, EDAA10 Programmering i Java

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Tentamen i Grundläggande Programvaruutveckling, TDA548

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Programmering för språkteknologer II, HT2011. Rum

Föreläsning 2, vecka 8: Repetition

Tentamen i Programmeringsteknik I

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

JAVA Mer om klasser och objektorientering

Laboration A Objektsamlingar

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

JAVAUTVECKLING LEKTION 8

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen FYTA11 Javaprogrammering

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Instuderingsfrågor, del D

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

LÖSNINGSFÖRSLAG TENTAMEN

Tentamen i Programmeringsteknik MN

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen i Programmeringsteknik I

Lösningar för tenta 2 DAT043,

PROGRAMMERING-JAVA TENTAMINA

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

2D1339 Programkonstruktion för F1, ht 2003

TENTAMEN OOP

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Transkript:

Lunds universitet FYTA11 Institutionen för Astronomi och Teoretisk fysik HT 12 Tentamen FYTA11 Javaprogrammering Onsdag 9 januari 2013, 10:15 14:15 Instruktioner Hjälpmedel: Papper och penna. Behandla högst en uppgift per papper och sätt ditt namn och uppgiftens nummer på varje papper. Skriv läsligt och kommentera utförligt vad du gör det kan ge dig poäng även om resultatet blir fel. Tentamen omfattar fyra uppgifter som vardera kan ge upp till tio poäng. För G och VG krävs 20 respektive 30 poäng, inräknat de högst fem bonuspoängen från simuleringsövningarna. Uppgift 1: Små fel Korrigera felen i följande kodstycken där felens natur anges av kommentarer i koden. Felmeddelandet från kompilering eller körning av programmet visas direkt under raden som orsakade felet. a. b. c. d. for(i = 0; i < 10; i++) /*...*/ // cannot find symbol // symbol: variable i double step = 0.1; double end = 1.0; for(double t = 0; t!= end; t += step) /*...*/ // Programmet hänger sig här och kommer inte vidare public static void main(string[] args) if(args.length < 1) return; double d = parsedouble(args[0]); // symbol: method parsedouble(java.lang.string) System.out.println("Roten ur sexton är " + sqrt(16)); // symbol: method sqrt(int)

e. public class Sample private long id; //... public long setid(long id) this.id = id; public long getid() return id; // I en annan fil: public class Experiment private String name; private Sample sample; //... public void print() System.out.println("Experiment " + name + " uses sample #" + sample.id); // error: id has private access in Sample f. g. h. i. j. // boolean insidefigure(double) is defined elsewhere while(insidefigure(randx)) double randx = Math.random(); // symbol: variable randx public void paint(graphics g) g.setcolor(color(255, 200, 200)); // symbol: method Color(int,int,int) System.out.println("There are"+42+"spoons"); // problem: Det saknas mellanslag runt 42 i utskriften if(a > 10) System.out.println("a > 10"); a = 10; else // error: else without if System.out.println("a <= 10"); double[] weights = new double[](10); // error: array dimension missing

Uppgift 2: Statistikklass Ponera att du behöver skriva ett program som samlar statistik över ett antal doubles som t.ex. kommer från en simulering. Du behöver en klass som kan matas med värden och sedan returnera information om antalet värden, det största värdet, medelvärdet och standardavvikelsen. Ett interface Statistics finns definierat, men du behöver skriva en klass MyStats som implementerar det i enlighet med kommentarerna som är givna i koden. Din klass skall fungera även om den matas med miljardtals datapunkter, och den skall dessutom ha väldefinierad felhantering om det saknas data. Minns att standardavvikelsen σ kan uppskattas genom provets standardavvikelse utan systematiskt fel (unbiased sample variance), s, som ges av s 2 = n ( x 2 x 2) (1) n 1 som alltså kräver minst två prover. Se bifogad javadoc-dokumentation för IllegalStateException som skall kastas om man försöker anropa en metod som behöver mer data än vad som matats in. /* Detta interface representerar en statistiksamlare som man kan mata med värden. * Därefter kan man få ut antalet värden, deras medelvärde och standardavvikelse samt * det största och minsta värdet. * * Om en metod inte kan returnera ett väldefinierat värde på grund av att det saknas * data så skall metoden kasta ett IllegalStateException med ett passande felmeddelande. */ public interface Statistics /* Lägg till ett mätvärde. */ void addvalue(double value); /* Returnerar antalet värden som lagts till. */ long getn(); /* Returnerar det högsta tillagda värdet. */ double getmax(); /* Returnerar medelvärdet av de tillagda värdena. */ double getmean(); /* Returnerar standardavvikelsen, beräknad som om de tillagda värdena är * ett stickprov. Den skall alltså inkludera faktorn n/(n-1) i variansen. */ double getstddev();

Uppgift 3: Statistikprogram I föregående uppgift definierades ett interface för att samla statistik. Du skall nu skriva ett program som heter StatsProg och använder klassen MyStats som implementerar Statistics. När ditt program körs kommer det att få namnet på en eller flera filer som argument på kommandoraden. I dessa filer finns tal, och alla giltiga doubles) som går att hitta i filerna skall inkluderas i statistiken. För att öppna filerna och söka efter tal får du använda java.util.scanner som beskrivs på en bifogad nerkortad javadoc-sida. Läs dokumentationen noga. Det kan hända att en angiven fil saknas, och i så fall skall ett felmeddelande skrivas ut och programmet skall sedan genast avslutas. Det kan också hända att något ord i en fil inte är ett tal. I så fall skall det bara hoppas över, och resterande tal i filen skall ändå användas. Det kan vara bra att veta att FileNotFoundException finns i paketet java.io och ärver av IOException som ärver av Exception. Övriga exceptions som nämns i dokumentationen finns i java.lang eller java.util och ärver av RuntimeException. Programmet skall skriva ut det totala antalet tal, det största talet, medelvärdet och standardavvikelsen. Om någon av dessa storheter inte kan beräknas är det acceptabelt att programmet terminerar och skriver ut en stack trace som visar vad som gick fel du behöver alltså inte fånga en eventuell IllegalStateException. Exempel: Filen somedata.txt innehåller följande rad: 1 2 potato 3 4 Filen moredata.txt innehåller följande två rader: 5 fishbulb 6 7 > java StatsProg somedata.txt moredata.txt n: 7 max: 7.0 mean: 4.0 stddev: 2.160246899469287

Uppgift 4: Strängar och stjärnor Text, grafik och spelplaner har en del gemensamt. Alla kan de bestå av ett rektangulärt rutnät vars innehåll behöver manipuleras på olika vis. Ett exempel ses nedan, där strängen "HEJ" presenteras på en bakgrund av stjärnor. * * * * * H * * * * E * * * * J * * * * * Objekt av klassen String kan inte modifieras, enbart bytas ut. Om man vill göra många ändringar inuti en sträng är det därför lämpligt att tillfällig representera strängen som ett fält av tecken. En rektangel av w h värden kan representeras som ett tvådimensionellt fält, men den kan också representeras som ett endimensionellt fält av storlek wh, där värdet från koordinaterna (x,y) exempelvis lagras i element nummer yb+x. Detta blir ofta enklare. Ditt jobb är att skriva en metod static char[] starstring(string s) som tar in en sträng (t.ex. HEJ ) och returnerar ett fält som innehåller tecken motsvarande det som visas i rutan ovan. Den som anropar din metod kan t.ex. komma att skriva ut fältet med System.out.print. Om strängen har längden n så skall det bli 3n 3n tecken som visas. Varje rad måste dessutom sluta med en radbrytning (linefeed, \n). Vartannat tecken skall vara * i ett schackmönster med start på det första tecknet på den första raden. Strängen som skall visas skall gå längs diagonalen, centrerad som i exemplet. Metoden skall klara att hantera strängar av längd 1. String har en metod som kan vara bra att komma ihåg: char charat(int index);