Tentamen i Programmering

Relevanta dokument
Tentamen, EDAA10 Programmering i Java

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Tentamen, EDA501 Programmering M L TM W K V

Tentamen EDA501/EDAA20 M L TM W K V

Tentamen, EDA017, Programmeringsteknik för C, E, I och Pi

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering

Tentamen, Programmeringsteknik för BME, F och N

Tentamen, EDAA10 Programmering i Java

Tentamen, EDAA10 Programmering i Java

Tentamen Programmeringsteknik för BME, C, D, E, F, I, N & Pi

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

Tentamen, EDA501 Programmering M L TM W K V

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

Tentamen, EDAA20/EDA501 Programmering

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

OOP Tenta

TENTAMEN OOP

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

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

OOP Omtenta

OOP Tentamen

TENTAMEN OOP

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Tentamen i Grundläggande programmering STS, åk 1 fredag

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

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

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

Tentamen i Grundläggande programmering STS, åk 1 fredag

Tentamen i Grundläggande programmering STS, åk

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Del A (obligatorisk för alla)

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

DELPROV 1 I DATAVETENSKAP

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

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen EDAA45 Programmering, grundkurs

Föreläsning 3-4 Innehåll

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Det finns en referensbok (Java) hos tentavakten 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-17, TDA540. Dag: , Tid:

DAT043 Objektorienterad Programmering

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

Del A (obligatorisk för alla)

TENTAMEN OOP

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

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

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

OOP Tentamen

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.

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

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.

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

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

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

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

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

JAVA Mer om klasser och objektorientering

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

OOP Tentamen

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

Tentamen i Programmeringsteknik I

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Rekursion och induktion för algoritmkonstruktion

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

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

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

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

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Dugga i Grundläggande programmering STS, åk

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

HI1024 Programmering, grundkurs TEN

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

Tentamen, Algoritmer och datastrukturer

Tentamen i Programmeringsteknik I, ES,

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

SP:PROG3 HT12 Tenta

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

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Tentamen i Programmeringsteknik I

OOP Omtenta

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

OOP Objekt-orienterad programmering

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

Presentation av trafiksimuleringsprojektet

Tentamen TEN1 HI

Transkript:

LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen i Programmering EDAA65/EDA501/EDAA20 M MD W BK L 2018 05 30, 8.00 13.00 Preliminärt ger uppgifterna 7 + 14 + 6 + 9 + 4 = 40 poäng. För godkänt betyg krävs 20 poäng. Tentan innehåller fem frågor. Läs igenom hela innan du sätter igång. Kommentarer från specifikationerna (/**... */) behöver inte skrivas i lösningen. Svara enbart på lösblad och numrera de blad ni lämnar in, själva tentan ska inte lämnas in Tillåtet hjälpmedel: Java-snabbreferens. Lösningsförslag kommer att finnas på kursens hemsida senast dagen efter tentamen. Resultatet läggs in i Ladok när rättningen är klar och anslås inte på anslagstavlan. Tentamensvillkor: Om du tenterar utan att vara tentamensberättigad annulleras din skrivning. För att undvika att någon skrivning annulleras av misstag kommer alla som, enligt institutionens noteringar, tenterat utan att vara tentamensberättigade att kontaktas via epost. Felaktigheter i institutionens noteringar kan därefter påtalas fram till nästa tentamenstillfälle då resterande skrivningar annulleras. Bakgrund: polynom Från matematiken känner vi begreppet polynom. Beräkningar med polynom förekommer i många viktiga tillämpningar, som exempelvis datorkommunikation och kryptering. Några exempel på polynom är p 1 = 3x 3 2x 2 + 5x + 4 p 2 = 2x 2 p 3 = 4x 9 Mer generellt är ett polynom en summa av termer, där varje term har formen ax b Där kallar vi a för termens koefficient och b för dess exponent. I ett polynom är alla exponenter heltal och icke-negativa (b 0). Vi begränsar oss här vidare till polynom i en variabel (x) och heltalskoefficienter. De tre polynomen p 1, p 2 och p 3 ovan är exempel på just sådana polynom.

2(5) 1. Vi börjar med klassen Term, som beskriver en term i ett polynom enligt ovan. En sådan term har en koefficent och en exponent, båda heltal. Klassen Term har följande specifikation: /** Skapar en polynomterm med koefficienten a och exponenten b. Koefficienten a antas vara skild från noll, och exponenten b antas vara större än eller lika med noll. */ Term(int a, int b); /** Hämtar termens koefficient. */ int coeff(); /** Sätter termens koefficient till a. Parametern antas vara skild från noll. */ void setcoeff(int a); /** Hämtar termens exponent. */ int exp(); /** Beräknar produkten av denna term och termen other. Produkten returneras som en ny term. Inget av de båda faktorernas Term-objekt förändras. */ Term times(term other); /** Returnerar en strängbeskrivning av termen, exempelvis "5x2" (se anvisningar). */ String tostring(); >>> Uppgift: implementera klassen Term. När man multiplicerar två polynomtermer så multiplicerar man koeffienterna och adderar exponenterna: a 1 x b 1 a 2 x b 2 = (a 1 a 2 )x (b 1+b 2 ) Metoden tostring returnerar en strängbeskrivning av termen, exempelvis 5x2 för polynomtermen 5x 2. Strängens form, med exempel i den högraste kolumnen, beror på exponentens värde: exponent strängens innehåll exempel > 1 koefficient, bokstaven x samt exponent 3x 7 uttrycks 3x7 = 1 koefficient samt bokstaven x 3x 1 = 3x uttrycks 3x = 0 endast koefficient 3x 0 = 3 uttrycks 3 Koefficienten ingår alltid, även om den är 1. Polynomtermen x 5 = 1x 5 uttrycks alltså 1x5. Exempel: följande satser skapar objekt motsvarande polynomtermerna 3x 3 och 9x 4 samt dessas produkt, 27x 7. Term t1 = new Term(3, 3); Term t2 = new Term(9, 4); Term t3 = t1.times(t2); System.out.println(t1.toString()); System.out.println(t2.toString()); System.out.println(t3.toString()); 3x3 9x4 27x7

3(5) 2. Nu ska vi gå vidare med polynom, som alltså består av ett antal termer. Varje term beskrivs av ett Term-objekt enligt föregående uppgift. Ett polynom innehåller högst en term med en given exponent. Av effektivitetsskäl ska endast termer med koefficient skild från 0 (noll) lagras. >>> Uppgift: implementera klassen Polynomial: /** Skapar ett tomt polynom (utan några termer). */ Polynomial(); /** Metoden adderar termen t till polynomet. Om det redan finns en term med samma exponent läggs ingen ny term till; istället adderas koefficienten till den befintliga termens koefficient. Om den koefficienten då blir noll så tas termen bort ur polynomet. */ void add(term t); /** Hämtar en strängbeskrivning av polynomet, exempelvis 3x2+2x-1. Strängen innehåller alla termer ordnade efter exponentens värde, med högst exponent först. Alla termer, utom den första, föregås av ett plustecken om termen är positiv (dvs dess koefficient är > 0). För ett tomt polynom returneras "0".*/ String tostring(); Använd en lista (ArrayList) av termer. Din lösning ska inte använda någon av Javas standardklasser för sortering, som t. ex. sortmetoderna i Collections, Arrays eller List. I tostring ska inget plustecken föregå negativa termer, eftersom tostring-resultatet från Term redan innehåller minustecken för sådana termer. Exempel: följande satser skapar polynomet 3x 2 4, beräknat som 5x 4 + 4x 2 5x x 2. Notera: Ordningen i utskriften skiljer sig från add-anropens ordning. De två x 2 -termerna har summerats till en enda (4x 2 x 2 = 3x 2 ). De två x-termerna har tagit ut varandra (5x 5x = 0). Därför saknar polynomet x-term. Polynomial poly = new Polynomial(); poly.add(new Term(5, 1)); // 5x poly.add(new Term(-4, 0)); // -4 poly.add(new Term(4, 2)); // 4x2 poly.add(new Term(-5, 1)); // -5x poly.add(new Term(-1, 2)); // -1x2 System.out.println(poly.toString()); 3x2-4

4(5) 3. En viktig operation i dessa sammanhang är multiplikation av polynom. Principen är den vi själva använder när vi multiplicerar parenteser i matematiken: vi multiplicerar, i tur och ordning, varje term i det ena polynomet med varje term i det andra. Ett exempel utan dator illustrerar principen. Låt p 1 och p 2 vara som följer: p 1 = 4x + 3 p 2 = 3x 2 + 2x + 1 Polynomet p 1 har två termer, och p 2 har tre. Vi multiplicerar varje term i p 1 med varje term i p 2, och får därför 2 3 = 6 delprodukter. Resultatet är summan av dessa delprodukter: p 1 p 2 = (4x + 3) (3x 2 + 2x + 1) = 4x 3x 2 + 4x 2x + 4x 1 + 3 3x 2 + 3 2x + 3 1 = 12x 3 + 17x 2 + 10x + 3 >>> Uppgift: implementera metoden times i klassen Polynomial: /** Beräknar produkten av detta polynom och polynomet other. Produkten returneras som ett nytt polynom. Inget av de båda faktorernas Polynomial-objekt förändras. */ Polynomial times(polynomial other); resten av klassen (förutom metoden times) behöver inte återges i lösningen. Exempel: i följande programexempel används metoden times för samma beräkning som ovan: Polynomial p1 = new Polynomial(); p1.add(new Term(4, 1)); // 4x p1.add(new Term(3, 0)); // 3 Polynomial p2 = new Polynomial(); p2.add(new Term(3, 2)); // 3x2 p2.add(new Term(2, 1)); // 2x p2.add(new Term(1, 0)); // 1 Polynomial product = p1.times(p2); System.out.println(product.toString()); 12x3+17x2+10x+3 4. Vi vill nu ha ett program för att använda polynomoperationerna. Programmet ska läsa in två polynom från tangentbordet och skriva ut deras produkt. Varje polynom matas in som en serie av heltal: först polynomets grad (dvs högsta exponent), därefter koefficienten för termen med högst exponent, koefficienten för näst högst exponent, och så vidare. Konstanttermen anges sist. Ett polynom av grad n skrivs här alltid med n + 1 koefficienter. Exempel. De två polynomen 7x 3 1 och 2x + 5 matas in så här: 3 grad 7 0 0-1 7x 3 +0x 2 +0x 1 1 grad 2 5 2x+5 Förväntat resultat [eftersom (7x 3 1) (2x + 5) = 14x 4 + 35x 3 2x 5]: 14x4+35x3-2x-5 >>> Uppgift: skriv ett program (klass med main-metod) som läser in två polynom och skriver ut deras produkt, enligt ovan. Ingen felhantering krävs, du får utgå från att indata matas in korrekt. Endast termer med koefficient skild från noll ska adderas till polynomen.

5(5) 5. Programmen nedan skriver ut ett tal när de körs. Båda programmen går alltså att kompilera och köra. >>> Uppgift: ange, för deluppgift (a) (b), vilket tal som skrivs ut när respektive program körs. Ingen motivering behövs. Poäng ges endast för korrekt svar. (a) public class Bugaboo { public static void main(string[] args) { int x = 2; while (x > 1) { if (x == 7) { x = 0; x++; System.out.println(x); (b) public class Primes { public static int findnumber(int[] v, int nbr) { for (int i = 0; i < v.length; i++) { if (v[i] == nbr) { return i; else { return -1; return -1; public static void main(string[] args) { int[] z = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53 ; int k = findnumber(z, 13); System.out.println(k);