Tentamen i Programmeringsteknik MN

Relevanta dokument
Tentamen i Programmeringsteknik MN

Tentamen i Programmeringsteknik MN Del I. Uppgift 1

LyckaTill önskar Anna

Tentamen i Programmeringsteknik I

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

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

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

PROGRAMMERINGSTEKNIK TIN212

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.

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.

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

Tentamen i Programmeringsteknik I, ES,

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

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

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

Det finns en referensbok (Java) hos vakten 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 PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 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

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Kort om klasser och objekt En introduktion till GUI-programmering i Java

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

Tentamen FYTA11 Javaprogrammering

Tentamen i Programmeringsteknik I

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

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 REPETITION & EXTENTA

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Design av en klass BankAccount som representerar ett bankkonto

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Del A (obligatorisk för alla)

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

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

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

Objekt och referenser

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

Tentamen i Grundläggande programmering STS, åk

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

JAVA Mer om klasser och objektorientering

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

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 för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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

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.

Modern Programmering (2546) Tentamen lördag

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

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

Laboration 13, Arrayer och objekt

DELPROV 1 I DATAVETENSKAP

Malmö högskola 2008/2009 CTS

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

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

Tentamen OOP

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

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

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.

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

Föreläsning 5-6 Innehåll

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

Lösningsförslag tentamen FYTA11 Java

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

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]

Att öva på och förstå ett program med flera samverkande klasser.

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

OOP Tenta

Tentamen. Lösningsförslag

Objektorienterad programmering i Java

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

Tentamen, EDAA10 Programmering i Java

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Tentamen i Programmeringsteknik I

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

Tentamen i Programmering

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Lösningar för tenta 3 DAT043,

Transkript:

Tentamen i Programmeringsteknik MN1 001204 Skrivtid : 14.00-19.00 Hjälpmedel : Skansholm, Java direkt eller motsvarande Pärt-Enander mfl, Anv. handledning för Matlab. Matlab-material utdelat på lektion. Tentamen är uppdelad i två delar. Del I består av fem uppgifter och del II av tre uppgifter. Varje uppgift kan ge upp till 5 poäng. För att bli godkänd på tentamen krävs minst 17 av 25 poäng på del I. Eventuella poäng på del II tillgodoräknas inte. För att bli väl godkänd på tentamen krävs dels minst 17 poäng på del I, dels minst 8 poäng på del II. Programmen skall vara skriva i Java om inte annat anges. Programmen skall vara skriva med vettig layout och kommenterade! Skriv varje uppgift på nytt papper. Skriv inte på baksidan av papperet. Lägg uppgifterna i rätt ordning. Skriv namn på alla papper. Skriv INTE med röd färg! Läs uppgiften noga så du vet vad som skall göras. Gör inte mer än det som efterfrågas. Om du inte förstår en uppgift eller om du är tveksam hur den ska tolkas, fråga någon av lärarna. Om inget annat anges får du använda klasser ut paketen java.lang, lava.text, java.awt, java.awt.event, java.io, java.util, java.applet samt Skansholms extra. Resultatet anslås på anslagstavla på plan 1(utanför 2103) och på kursens hemsida om du kryssar i aktuell ruta på försättsbladet. Endast godkända resultat anslås. Lösningsförslag kommer att finnas på kursens hemsida. Lycka till! 1

Del I Uppgift 1 Efter att du klarat denna kurs inleder du en ny karriär som bilhandlare. Du vill då naturligtvis skapa ett datoriserat register över ditt billager. En första åtgärd är att skapa en bilklass som beskriver en bil. Den ser ut som (saknade delar markeras med... nedan, det är inte en del av koden): public class Bil { private String bilmärke; // vilken sorts bil private String modell; // modellnamn private int årsmodell; // årsmodell private String registeringnummer; // private int pris; // försäljningspris // konstruktorer public Bil() {... public Bil(String märke, String mod, int år, String reg, int p) {... // hämta försäljningspriset public int bilpris() {... // skriv ut public void skrivut() {... // och så vidare public static void main(string [] args) { Bil b = new Bil( Ford, Anglia, 1959, ABC456, 5000); b.skrivut(): int p = b.bilpris(); System.out.println( Bilen kostar + p + kronor ); Dina uppgifter är att: a) Skriva metoden bilpris i klassen ovan. Den ska lämna ut bilens pris. Se mainmetoden ovan för exempel på hur den ska fungera. 2

b) Skriva den konstruktor som har fem parametrar i vår deklaration. Den skall fylla i bilens egenskaper med hjälp av de parametrar du har. Se main-metoden för exempel på användning. c) Skriva metoden skrivut i klassen. Den skall skriva ut bilens attribut (tillståndsvariabler) på något sätt på datorns monitor. Se mainmetoden för exempel på anrop. d) Du vill nu skapa en klass Lager som beskriver alla bilar du har. Visa vilka instansvariabler en sådan klass kan innehålla. Instansvariabler är de variabler som deklareras i klassen och som är gemensamma för alla metoder, exempelvis bilmärke i bilklassen. Du behöver inte skriva några metoder. e) Antag att du (exempelvis i main) vill kunna göra Lager bilpark = new Lager(100); // skapar lager med 100 platser // här fylls lagret med bilar på något vis. int värde = bilpark.totalvärde(); // värdet för alla bilar Skriv metoden totalvärde i klassen Lager som summerar priset för alla bilar i lagret. Bygg på det du svarat i deluppgift d. Uppgift 2 Ett litet enkel bankkontor kan fungera enligt nedanstående beskrivning public class Bank { private String kund; private int kontonr; private int saldo; // kundens namn // kontonummer // saldo på kontot public Bank(String namn, int konto) { kund = namn; kontonr = konto; saldo = 0; // konstruktor public void sättin(int summa) {... // sätt in pengar 3

public void taut(int summa) {... public void växla(int summa) {... // ta ut pengar // växla pengar Vi tänker oss att växel lämnas i valörerna 100, 50, 20, 10, 5 och 1 krona på sånt sätt att det blir så höga valörer som möjigt. Exempelvis skall summan 273 kronor växlas till 2x100, 1x50, 1x20 och 3x1 krona Uppgifter: a) Skriv metoderna sättin och taut som ändrar saldot enligt givna data. b) Skriv metoden växla som växlar given summa enligt reglerna ovan. Metoden ska skriva ut resultatet på skärmen. Tips: Heltalsdivision och restoperatorn (%) kanske kan användas. c) Hur ska växla ändras så att den istället för att skriva ut resultatet returnerar resultatet till den som anropade den? (3p) Uppgift 3 Du har ett Javaprogram som har åstadkommit följande grafiska gränsnitt för en färgblandare. 4

Den fungerar så att reglagens läge ger den färgblandning som visas i den tomma rutan till höger. a) Som du ser är detta en applet. Vad skiljer en applet från ett vanligt program? b) Beskriv vilka komponenter som har använts för att bygga upp detta. Rita och berätta, du behöver inte skriva någon Javakod. Ange också vilka LayoutManagers som använts. Notera att området längst ned med texten Applet started och området i överkanten med texten Applet inte hör till komponenten utan de har lagts dit av appletviewern. c) Skriv den lyssnare som behövs för att en förändring av något reglage ska ge en ny färg i rutan. Du behöver bara skriva själva lyssnarmetoden, du får själv döpa de grafiska komponenter som du använder i metoden. Uppgift 4 I denna uppgift ska vi använda en personklass, den ser ut som: public class Person { private String namn; private String adress; private int födelseår; private int inkomst; // Personens namn // Personens adress // Personens födelseår // Personens inkomst public Person(String n, String a, int år, int ink) { namn = n; adress = a; födelseår = år; inkomst = ink; public boolean equals(person p) {... Din uppgift är att: a) Skriva en main-metod i klassen som skapar två personer m. h. a. given konstruktor och som jämför dem m. h. a. equals-metoden (se deluppgift b) i klassen. Resultatet av jämförelsen skall skrivas ut. 5

b) Skriv metoden equals i klassen. Den skall jämföra om två personer är lika. Vi definierar likhet så att två personer är lika om de har exakt samma namn, övriga attribut spelar ingen roll. Du får inte använda metoden equals ur klassen String utan du skall jämföra namnen tecken för tecken. Om namnen är olika långa är de inte lika. Tips: Det i:e tecknet i strängen s kan hämtas med metoden s.charat(i). (3p) Uppgift 5 November månad år 2000 utmärks av ovanligt mycket regn och av ovanligt höga temperaturer. Den lokala avdelningen av SMHI vill ha lite statistik över dessa fenomen. Vi har en lista med mätvärden för nederbörd och medeltemperatur för varje dygn, totalt 30 x 2 mätvärden. För att lagra dessa skapar vi en klass Väder: public class Väder { private double [] temp = new double[30]; private double [] nederbörd = new double[30]; public Väder() {... // temp i grader // nederbörd i millimeter public void läsin() { // läs in temperatur och nederbörd för varje dag och lägg på // plats. Du skriver in värdena på datorns tangentbord public double max_temp() { // returnera det största av alla temperaturvärden Dina uppgifter är: a) Skriv metoden max_temp som letar upp det högsta temperaturvärdet bland de 30 och som returnerar det. b) Skriv metoden läsin som frågar efter alla temperatur och nederbördsvärden och som lägger in dem på plats. c) Antag att du lagrar värdena i en fil men namnet Väder.dat, två värden (temp och nederbörd) per rad, trettio rader. Skriv om metoden läsin så att den läser in data från denna fil istället för från tangentbordet. 6

Del II Uppgift 6 Antag att du har en klass som innehåller ett antal talpar som representerar punkter i ett x-y system. Varje talpar representeras som ett objekt av typen Point, och alla talparen blir då en array av Point-objekt. public class Koordinater { private Point [] talpar; private int antal; public Koordinater() {... // antal talpar lagrade // standardkonstruktor public Koordinater(int n){... public void läggin(point p) {... public void sortera() {... // osv // plats för n talpar // Lägg in ett talpar // sortera talparen Din uppgift är att skriva samtliga metoder deklarerade ovan. Konstruktorerna skall skapa plats för ett antal talpar. Metoden läggin skall lägga in ett talpar utan hänsyn till ordning, om det är fullt skall arrayen utökas. Metoden sortera skall sortera talparen i stigande ordning med avseende på x-koordinaten. Klassen Point har två publika instansvariabler, x och y. Eftersom klassen Point inte implementerar interfacet Comparable så fungerar ingen av de i Java inbyggda sorteringsmetoderna, exempelvis java.util.arrays.sort. Du måste alltså skriva en egen! Uppgift 7 Du har följande grafiska program som fungerar som en fickräknare. Det är uppbyggt av ett antal knappar och ett textfält (ett ExtendedTextField). 7

Den ska fungera så att man först skriver in ett tal i displayen, trycker på en operator (+, -, * eller /), varpå talet försvinner från displayen och ett nytt tal kan skrivas in. Därefter trycker man på resultatknappen (=) och operationens resultat visas på displayen Exempelvis Tryck på 5 1 2, talet 512 ska då synas på displayen Tryck på +, då skall displayen rensas Tryck på 6 4, talet 64 ska då synas på displayen Tryck på =, då skall talet 576 visas Din uppgift är att skriva en lyssnare som kan utföra detta. Det räcker om du kan hantera operationen addition (+) med enbart positiva tal. Du får anta (men förklara dina val) namn på de grafiska komponenterna. Du måste också förklara vilka instansvariabler du använder. Uppgift 8 Antag att du har följande klass deklarerad: public class Matris { private double [][] matris; private int rader; private int kolonner; 8 public Matris() {... public Matris(int r, int k) {... public boolean symmetrisk() {... public Matris transponera() {... public Matris addera(matris b) {... // antal rader // antal kolonner public Matris subtrahera(matris b) {... // standardkonstruktor // konstruktor med storlek // testa om symmetrisk // transponera // addera två matriser // subtrahera två matriser public Matris multiplicera(matris b) {... // multiplicera - -

Skriv metoderna symmetrisk och transponera samt de båda konstruktorerna. Att en matris är symmetrisk innebär dels att den är kvadratisk (lika många rader som kolonner), dels att den i:e raden är lika med den i:e kolonnen för alla i, eller alternativt uttryckt, matrisen m är symmetrisk om elementen m[i][j] och m[j][i] är lika för alla i och j. Exempelvis är matrisen nedan symmetrisk: 3 1 12 1 2 8 12 8 2 Att transponera en matris innebär att spegla den. Det betyder att raderna blir kolonner och kolonnerna blir rader. Om du har en matris med m rader och n kolonner så ska alltså resultatet bli en matris med n rader och m kolonner. Nedan finns en 3x2 matris och dess transponat som är en 2x3 matris 2 1 8 5 12 3 2 8 12 1 5 3 9