Examination in. PROGRAMMERINGSTEKNIK F1 TIN212 (Dugga) DAY: Monday DATE: TIME: (OBS 3 tim) ROOM: M

Relevanta dokument
Examination in. Objektorienterad programvaruutveckling IT1 TDA545 DAY: THURSDAY DATE: TIME: ROOM: M

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Examination in. Objektorienterad programvaruutveckling IT1 TDA545 DAY: FRIDAY DATE: TIME: ROOM: M

Examination in. Övningstenta. DAY: FRIDAY DATE: 20xx-xx-xx TIME: /13.30 ROOM: M

Examination in. Objektorienterad programvaruutveckling IT1 TDA545 DAY: THURSDAY DATE: TIME: ROOM: M

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

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

Föreläsning 3-4 Innehåll

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Föreläsning 6: Metoder och fält (arrays)

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

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

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

Pre-Test 1: M0030M - Linear Algebra.

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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.

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

TENTAMEN OOP

Föreläsning 2, vecka 8: Repetition

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

Tentamen i Programmeringsteknik I

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

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

PROGRAMMERINGSTEKNIK TIN212

Den som bara har en hammare tror att alla problem är spikar

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

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

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

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

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

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-16, TDA540. Dag: , Tid:

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

Tentamen , Introduktion till Java, dtaa98, dtea53

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

Instuderingsfrågor, del D

Objektorienterad programmering i Java

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

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

Tentamen i Matematik 2: M0030M.

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

Lösningsförslag till tentamen

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

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Tentamen: Datordel Programmeringsteknik

"if"-satsen. Inledande programmering med C# (1DV402)

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

Föreläsning 11: Rekursion

Tentamen i Programmeringsteknik I,, KandMa/Fy,

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

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

Metoder - en funktion: medel

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Typkonvertering. Java versus C

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Skillnader mellan Python och Java

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Recitation 4. 2-D arrays. Exceptions

OOP Objekt-orienterad programmering


Objektorienterad Programmering (TDDC77)

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Föreläsning 3: Booleans, if, switch

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

Module 1: Functions, Limits, Continuity

F4. programmeringsteknik och Matlab

Arrayer. results

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Tentamen i Programmeringsteknik I

OOP Objekt-orienterad programmering

Laboration 3, uppgift En klass för en räknare

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Tentamen i Algoritmer & Datastrukturer i Java

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

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

TENTAMEN OOP

Chapter 4: Writing Classes/ Att skriva egna klasser.

Del A (obligatorisk för alla)

PROGRAMMERING-Java TENTAMINA

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

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

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad 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

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

PROGRAMMERING-Java Omtentamina

TENTAMEN OOP

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

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }

Tentamen, EDAA10 Programmering i Java

Transkript:

Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Erland Holmström Göteborg 16 dec 2013 Examination in PROGRAMMERINGSTEKNIK F1 TIN212 (Dugga) DAY: Monday DATE: 2013-12-16 TIME: 8.30-11.30 (OBS 3 tim) ROOM: M Responsible teacher: Erland Holmström tel. 1007, home 0708-710 600 Results: Are sent by mail from Ladok. Solutions: Are eventually posted on homepage. Inspection of grading: The exam can be found in our study expedition after posting of results. Time for complaints about grading are announced on homepage after the result are published or mail me and we find a time. Grade limits: CTH: G=15p, max 30p Aids on the exam: Bravaco, Simonson: Java Programming From the Grounf Up Observe: Start by reading through all questions so you can ask questions when I come. I usually will come after appr. 2 hours. All answers must be motivated when applicable. Write legible Draw figures. Solutions that are difficult to read are not evaluated Answer concisely and to the point. The advice and directions given during course must be followed. Programs should be written in Java, indent properly, use comments and so on. Start every new problem on a new sheet of paper. Good Luck fel rättade

2 Problem 1. Testar: Sant eller falskt? Motivera. Eller svara på frågorna. a) Vad skrivs ut av följande satser om x=4 respektive om x=6? if (x<5); System.out.println( smaller than 5 ); x++; System.out.println(x); b) Kalle == Calvin eller Kalle.equals( Calvin ), förklara skillnaden och vilken du bör använda och varför. ( Kalle och Calvin är naturligtvis bara exempel på strängar och skulle även kunna vara sträng-objekt.) Testar: Ordförståelse Förklara följande ords (Java-) betydelse: c) signatur (ex: beskriv vad en signatur är) d) formell/aktuell parameter (ex: förekommer var) e) instansiera (ex: vad gör man då) Testar: parameteröverföring f) Antag att vi har ett heltalsfält a, förklara varför satsen swap(a[0], a[1]) inte byter plats på elementen i a[0] och a[1]. public static void swap(int x, int y) { int tmp = x; x = y; y = tmp; } Hur måste man skriva metoden och anropet för att det skall fungera? 2+2+3+4(11p) Problem 2. Följande 3 uppgifter kan lösas helt separat från varandra, i den sista kan du anta att metoderna i de två föregående existerar. Testar: metoder, loopar, villkor, fält, inläsning, en av labbarna. Uppgiften handlar om att skriva ett program som skriver ut alla tvillingprimtal. Två positiva heltal, p och q är tvillingprimtal om bägge är primtal och p-q = 2. Programmet skall klara stora tal så tänk på effektiviteten, metoderna nedan får inte vara onödigt ineffektiva. (19p) a) Skriv en metod static public boolean isprime(int p) som avgör om det givna talet p är ett primtal. I den här uppgiften får du inte använda fält eller spara primtal på annat sätt.

3 b) Skriv en metod static public void filltable(boolean[] primetab) som givet ett booleskt fält, primetab, fyller fältet med true respektive false om dess motsvarande index är ett primtal eller inte dvs primetab[0] skall vara false, primetab[1] skall vara false, primetab[2] skall vara true, primetab[3] skall vara true, primetab[4] skall vara false osv. Du skall göra detta med hjälp av Eratostenes såll, i Wikipedia står det: To find all the prime numbers less than or equal to a given integer n by Eratosthenes' method: Create a list of consecutive integers from 2 through n: (2, 3, 4,..., n). Initially, let p equal 2, the first prime number. Starting from p, enumerate its multiples by counting to n in increments of p, and mark them in the list (these will be 2p, 3p, 4p, etc.; the p itself should not be marked). Find the first number greater than p in the list that is not marked. If there was no such number, stop. Otherwise, let p now equal this new number (which is the next prime), and repeat from starting from p.... When the algorithm terminates, all the numbers in the list that are not marked are prime. Dvs man stryker (sätter=false) alla multipler av 2 i fältet, sedan alla multipler av 3, 5, 7, 11, osv c) Skriv ett program som upprepade gånger läser ett tal m och sedan skriver ut alla tvillingprimtal mellan [3,m]. Varje par skrivs bara ut en gång. Avsluta med ett tal <2. 1. Använd först metoden i a). 2. Visa sedan vilka förändringar som behöver göras för att använda metoden i b) istället. Gör det genom att markera var förändringen skall ske med stjärnor i koden samt skriva ner förändringarna. (dvs skriv inte förändringarna i koden i c) utan separat.) Det är ok att återskapa fältet för varje inskrivet tal. Exempel på utskrift: ange ett heltal (sluta: <2): 100 3 + 5 5 + 7 11 + 13 17 + 19 29 + 31 41 + 43 59 + 61 71 + 73 antal tvillingprimtal = 8 ange ett heltal (sluta: <=2): 1

/Users/erland/CTH/Kursermm/pt.TDA545.TIN212/examsTIN212/131216.D.L/u1.txt Page 1 of 1 Saved: 2013-12-19 15.07.16 Printed For: Erland Holmström 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 50 51 52 53 54 Dugga TIN212 2013-12-16 a) Vad skrivs ut av följande satser om x=4 respektive om x=6? if (x<5); System.out.println("smaller than 5"); x++; System.out.println(x); Det semikolon som står på if satsens rad är en sats (som inte gör något) och det är den satsen som if satsen utför om den är sann. Resten utförs alltid dvs oavsett värdet på x så skrivs smaller than 5 och sedan skrivs 5 eller 7 ut beroende på vad x är (dvs x ökas alltid med ett) ---------- b) Kalle == Calvin eller Kalle.equals( Calvin ), förklara skillnaden och vilken du bör använda och varför. ( Kalle och Calvin är naturligtvis bara exempel på strängar och skulle även kunna vara sträng-objekt.) == jämför referensernas värden, inte strängarna equals däremot jämför strängarna och är den som bör användas eftersom det ju är strängarnas innehåll som man vill jämföra. ----------- Förklara följande ords (Java-) betydelse: c) signatur (ex: beskriv vad en signatur är) är tex en metods "header" som i static public boolean isprime(int p) ------------ d) formell/aktuell parameter (ex: förekommer var) p i metoden ovan är den formella parametern dvs p är det namn vi använder inuti metoden isprime. När man anropar isprime tex med isprime(etttal) så är etttal den aktuella parametern. ------------ e) instansiera (ex: vad gör man då) är det man gör när man skapar ett objekt som tex i new int[5]; eller new String("kalle"); Observera att initiering kan ske samtidigt men det är inte nödvändigt som man ju ser i det första exemplet. ------------------ Testar: parameteröverföring f) Antag att vi har ett heltalsfält a, förklara varför satsen swap(a[0], a[1]) inte byter plats på elementen i a[0] och a[1]. public static void swap(int x, int y) { int tmp = x; x = y; y = tmp; } Hur måste man skriva metoden och anropet för att det skall fungera? Värdena på a[0], a[1] koperas till variablerna x och y och det är sedan x och y som ändras men dom har inget med a att göra längre. Man kan tex göra så här swap(a, 0, 1); public static void swap(int[] a, int x, int y) { int tmp = a[x]; a[x] = a[y]; a[y] = tmp; }

TvillingPrimtal.java Saved: 2014-12-11 01.52.35 Page 1 of 2 Printed For: Erland Holmström /* ======== ========= ========== ========== ========== ========== Det finns många sätt att lösa detta. - Man kan generera alla primtal upp till m och lägga dem i en vektor samt sedan subtrahera grannar. - Man kan skapa alla primtal med eratostenes såll och sedan söka efter tvillingar genom att se om det finns true i två positioner med ett false mellan dvs alla kombinationer av true, false, true är tvillingprimtal. (Man behöver inte spara tabellen mellan två indata tal, det som tar tid är att skriva ut dem, men vid upprepade frågor så går det naturligtvis fortare om man sparar den) - Eller man kan "rå-testa" dvs ha en metod, isprime, som undersöker om ett tal är ett primtal och anropa den upprepade gånger i en loop med testtal och testtal-2 ======== ========= ========== ========== ========== ========== */ import java.util.scanner; public class TvillingPrimtal { //====================================================================== // råräkna static public boolean isprime(int p) { //5 // alla tal skall klaras av... } // end primtal //====================================================================== // eratostenes såll static public void filltable(boolean[] primetab) { // 8 // small arrays with length <3 are false by default if (primetab = null && primetab.length >= 3) { int rotenurp = (int) (Math.sqrt((double) primetab.length)); int next = 0; primetab[0] = false; // eg. onödigt, default är false primetab[1] = false; primetab[2] = true; // justera för 2 for (int i = 3; i < primetab.length-1; i = i+2) { primetab[i] = true; // börja med att antaga att alla är primtal primetab[i+1] = false; // utom de jämna talen } // fyll tabellen med primtal genom att stryka for (int i = 3; i <= rotenurp; i = i+2) { // roten ur är viktigt if (primetab[i]) { // om primtal, stryk alla multipler next = i+i; while (next < primetab.length) { primetab[next] = false; next = next + i; } } // if } // loop } } // end filltable //======================================================================

TvillingPrimtal.java Saved: 2014-12-11 01.52.35 Page 2 of 2 Printed For: Erland Holmström // ny sida public static void main(string[] args) { //6 Scanner sc = new Scanner(System.in); int tal; int antal = 0; System.out.println("ange ett heltal (sluta med tal < 2): "); tal = sc.nextint(); System.out.println(); while (tal >= 2) { // slutvillkor är att inmatat tal < 2 antal = 0; // make the array 1 unit larger than the biggest number // to simplify filling of array boolean[] primes = new boolean[tal+2]; // eratostenes filltable(primes); // eratostenes for (int kandidat = 5; kandidat <= tal; kandidat=kandidat+2) { if (primes[kandidat-2] && primes[kandidat]) { // eratostenes //if (isprime(kandidat-2) && isprime(kandidat)) { // råräkna antal = antal + 1; System.out.println(kandidat-2 + " + " + (kandidat)); // ev utskrift } // end if } // end loop System.out.println("antal tvillingprimtal = " + antal); System.out.println(); System.out.println("ange ett heltal (sluta: < 2): "); tal = sc.nextint(); System.out.println(); } } // end main } // end TvillingPrimtal