Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar



Relevanta dokument
Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 29 november 2003 kl , sal D34.

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

2D1342 Programkonstruktion för F1, ht 2006

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

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

Programmering A. Johan Eliasson

DD1342 Programkonstruktion för F1, ht 2007

OOP Objekt-orienterad programmering

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

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

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

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

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

Tentamen OOP

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

DAT043 Objektorienterad Programmering

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

(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 i 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

Lösningsförslag till tentamen

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

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

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 3-4 Innehåll

Lösningsförslag till tentamen

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

2D1339 Programkonstruktion för F1, ht 2004

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

F4. programmeringsteknik och Matlab

Lite logik. Kap 6: Sid 2

Tentamen. Lösningsförslag

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

Lösningsförslag till tentamen

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

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

Objektorienterad Programmering (TDDC77)

Föreläsning REPETITION & EXTENTA

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Lösningsförslag till tentamen

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.

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

Tentamen i Objektorienterad programmering E

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Objektorienterad Programmering (TDDC77)

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

Lösningar för tenta 3 DAT043,

Algoritmer. Två gränssnitt

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

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Lösningsförslag till tentamen

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

JAVAUTVECKLING LEKTION 8

Lösningsförslag till tentamen

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

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

Typkonvertering. Java versus C

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

Kurs i programmering Java Uppgifter

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Föreläsning 1 & 2 INTRODUKTION

Lösningsförslag till tentamen

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Generiska klasser och funktioner

Tentamen i Grundläggande programmering STS, åk 1 lördag

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.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

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

Lösningsförslag tentamen FYTA11 Java

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

Lösningsförslag till tentamen

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Imperativ programmering

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

TENTAMEN OOP

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Transkript:

Datalogi I, grundkurs med Java 10p, 2D4112, 2003-2004 Tentamen 29 november 2003, svar och lösningar 1a) Snabbaste lösningen är att addera i det binära systemet och konvertera svaret till decimalt tal: 10001 2 + 110 2 = 10111 2 =23. Ett annat sätt är att göra om de binära talen var för sig och addera: 10001 2 =17, 110 2 =6, 17 + 6 =23. 23 =10111 2. 1b) Ett hexadecimalt tal är ett tal uttryckt i ett positionssystem med basen 16. Om ett tal skrivs S n S n s...s 2 S 1 S 0,såangersiffranS k hur många 16 k som ingår i talet. När man uttrycker tal i basen B så behövs det också B st siffror. I vårt vanliga 10-system har vi 10 siffersymboler: 0,1,2,3,4,5,6,7,8,9. Med basen 16 behövs 16 symboler och då används 0..9 samt A, B, C, D, E och F. 2a) Fortran - imperativt, Lisp - funktionellt, C++ - objkektorienterat. 2b) Objektorienterade: Java, Simula, Smalltalk... Imperativa: C, Pascal, Basic,... Funktionella: Haskell, Scheme, Erlang,... 3a) En noggrann beskrivning av hur man kommer fram till lösningen på ett problem uttryckt i grundoperationer som är väldefinierade för den som ska följa beskrivningen. Lösningen skall nås efter ett ändligt antal steg. 3b) Pseudokod är en blandning av programkod och naturligt språk. Används när man vill beskriva algoritmer på ett sätt som ligger nära program (programspråk), som kan förstås av den som kan programmera Man använder pseudokod när man inte vill inte låsa beskrivningen till ett visst språk och/eller inte heller beskriva alla programkodens triviala detaljer utan fokusera på den intressantare algoritmbeskrivningen. 3c) Frågan är vilket tal som är minst : n 2 eller n logn (C 1 och C 2 är ju lika stora och påverkar inte svaret). Svaret är att n logn är mindre än n 2, skillnaden blir tydligare ju större n är. Det anges inte vilken logaritm som används men svaret är detsamma. Om n är ungefär 1000 så är ju n 2 = 1000000 men n logn = 1000 10 = 10000 om 2-logaritmen används. 4) Syntaxen är reglerna för hur man får skriva i programspråket för att det ska gå att kompilera programmet. Semantiken i språket beskriver vad olika språkkonstruktioner betyder, vad som verkligen sker när man skriver på ett visst sätt. Syntaxfel upptäcks senast vid kompilering, ibland upptäcks de medan man skriver och om man skriver Javaprogram med en editor som Emacs som känner till Java-syntax så kan felen upptäckas av Emacs. Semantiska fel kan vara svårare att upptäcka men man bör hitta dem genom en ordentlig testning av programmet följt av felsökning. 5) En aktiveringspost är en minnesreservatiom som görs i sambande med metodanrop. Det reserveras plats för metodens parametrar och lokala variabler. Detta minnesutrymme förblir reserverat tills metoden exekeverat färdigt. Om en metod anropar en metod (en annan eller samma) så finns den första aktiveringsposten kvar under det andra metodanropet. En kedja med aktiveringsposter kan förekomma. 1

6) A 7) A 8) D 9) D 10) C 11) B 12) B 13) D 14) C 15) B 16) B 17) C 18) C 19) B 20) int antallika (int[] a, int[] b) { int nlika = 0; int n = a.length; if (b.length < n) n = b.length; for (int i=0; i< n; i++) if (a[i] == b[i]) nlika++; return nlika; 21) I det här alternativet ändras den vektor som ges som parameter. void permutera (int [] a) { int tmp = a[0]; for (int i=0; i < a.length -1; i++) a[i] = a[i+1]; a[a.length-1] = tmp; I följande alternativ ändras inte på parametern. Metoden returnerar en ny vektor. int [] permuterad (int [] a) { int[] c = new int[a.length]; for (int i=0; i < a.length -1; i++) c[i] = a[i+1]; c[a.length-1] = a[0]; return c; 2

22) Här är den fullständiga lösningen. Det som saknas är att koppla lyssnaren till textfälten samt hela metoden actionperformed. I den metoden testas m.h.a. parametern till metoden i vilket textfält det skett en händelse. Om det var fahrenheitfältet så läses det fältet av, celsius- grader beräknas och skriv ut i Celsius-fältet. OM händelsen var i celsisus- fältet så läses det av och utskrift sker i fahrenheitfältet. import java.awt.*; import java.applet.*; import java.awt.event.*; public class CF extends Applet implements ActionListener{ private TextField celsius, fahrenheit; public void init () { add(new Label("Grader Celsius")); celsius = new TextField(5); add(celsius); celsius.addactionlistener(this); add(new Label("Grader Fahrenheit")); fahrenheit = new TextField(5); add(fahrenheit); fahrenheit.addactionlistener(this); public void actionperformed (ActionEvent e) { if (e.getsource() == celsius) { double c = Double.parseDouble(celsius.getText()); fahrenheit.settext("" + (9*c/5 + 32)); else { double f = Double.parseDouble(fahrenheit.getText()); celsius.settext("" + (5*(f-32)/9)); 3

23a) import java.util.*; // inget avdrag om man utelämnat detta! class Glosa { private String sve; private ArrayList eng; Glosa (String s, String e) { sve = s; eng = new ArrayList(); eng.add(e); void läggtillsynonym(string s) { eng.add(s); boolean gissaeng(string giss) { String s; for (int i=0; i< eng.size(); i++) { s = (String) eng.get(i); if (s.equals(giss)) return true; return false; String visasve() { return sve; String visaeng () { String s = "";; for (int i=0; i< eng.size(); i++) { s = s + (String) eng.get(i) + " "; return s; Metodern visasve och visaeng kan istället skrivas som void-metoder som skriver ut (med System.out.print...) instansvariabeln sve respektive alla ord i listan eng. 4

23b) class TestaGlosa { public static void main (String [] x) { Glosa g = new Glosa("svår", "difficult"); g.läggtillsynonym("hard"); g.läggtillsynonym("serious"); g.läggtillsynonym("severe"); // den var inte med i uppgiften! System.out.println(g.visaSve() + " kan översättas till något av"); System.out.println(g.visaEng()); if (g.gissaeng("severe")) // utskriften bör bli "Rätt" System.out.println("Rätt"); else System.out.println("Fel"); if (g.gissaeng("hart")) // utskriften bör bli "Fel" System.out.println("Rätt"); else System.out.println("Fel"); 5