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

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

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

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

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

2D1339 Programkonstruktion för F1, ht 2003

Föreläsning REPETITION & EXTENTA

Programmering A. Johan Eliasson

TDIU01 - Programmering i C++, grundkurs

2D1339 Programkonstruktion för F1, ht 2003

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

2D1342 Programkonstruktion för F1, ht 2006

Lab5 för prgmedcl04 Grafik

Applets med komponenter

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

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

Föreläsning 3-4 Innehåll

Objektorienterad programmering i Java

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

2D1339 Programkonstruktion för F1, ht 2004

(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

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

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

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

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

TDDC77 Objektorienterad Programmering

Java, klasser, objekt (Skansholm: Kapitel 2)

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

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.

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

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

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

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

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

Tentamen OOP

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

Enkla variabler kontra referensvariabel

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Lite logik. Kap 6: Sid 2

Språket Python - Del 1 Grundkurs i programmering med Python

Programmeringsteknik med C och Matlab

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Objektorienterad Programmering (TDDC77)

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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

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

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

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

Föreläsning 13 Innehåll

Föreläsning 5-6 Innehåll

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

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

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

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

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

Föreläsning 6: Introduktion av listor

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

OOP Objekt-orienterad programmering

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

SMD 134 Objektorienterad programmering

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]

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

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

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

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

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Objektorienterad programmering Föreläsning 5

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Instuderingsfrågor, del D

Tentamen Datastrukturer (DAT037)

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

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 1 & 2 INTRODUKTION

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

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

Data, typ, selektion, iteration

DAT043 - Föreläsning 7

DAT043 Objektorienterad Programmering

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

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

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

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 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 9-10 Innehåll

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

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

Laboration 1: Figurer i hierarki

Transkript:

Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten 18 och resten 1, vilket är entalssiffran i den binära representationen. Upprepa förfarandet på kvoten, nästa kvot o.s.v. tills kvoten blir 0. kvot rest 37=2 =18 1 18=2 =9 0 9=2 =4 1 4=2 =2 0 2=2 =1 0 1=2 =0 1 Den första binära siffran som beräknas är entalssiffran, den som står längst till höger i det binära talet. Svaret är 100101 2 1b) 100 8 är ett tal skrivet på oktal form, i basen 8. Siffrorna i talet anger då hur många 8 0, 8 1, 8 2, o.s.v. talet innehåller. I vårt vanliga positionssystem med basen 10 anger siffrorna ental (10 0 ), tiotal (10 1 ), hundratal (10 2 ) o.s.v. 100 8 =1Λ 8 2 +0Λ 8 1 +0Λ 8 0 =64 2) Vid normaliserad lagring av flyttal skrivs talet först om till normaliserad form, till m Λ B e, där B är basen för representationen, e är en exponent och m är taldelen, mantissan. Vid normaliserad lagring gäller att 1=B» m < B. Exempel: normaliserad representation av några tal i basen 10 och basen 2: 935600 = 0:935600 Λ 10 6, 0:0001013 = 0:1013 Λ 10 3, 1110110 2 =(0:1110110 Λ 2 111 ) 2, 0:0001011 = (0:1011 Λ 2 11 ) 2. 3 3a) En algoritm är en entydig beskrivning av hur en uppgift ska lösas. Stegen i algorimen ska vara väldefinierade och algoritmen ska leda till lösningen i ett ändligt antal steg. Exakt hur (i vilket språk, med vilka operationer) en algoritm ska uttryckas beror på vem eller vad som ska tolka den. 3b) Sekvens, val (eller villkor) och repetiton. Exempel på sekvens: Instruktioner utförs i den ordning de står. x = 27; y = 38; g = x*y; Exempel på villkorssats: if (m > 0) x = 13; y = 23; Exempel på repetition while (i < n) t = t*i; sum = sum + t; 1

4) Fel kan vara t.ex. syntaxfel, semantiska fel eller logiska fel. Syntax är språkets fomella regler, hur ett program får se ut. Semantik är språkets betydelse, vad som händer när man använder en viss syntax (språkkonstruktion). Syntaxfel upptäcks (senast) av kompilatorn men kan förstås upptäckas genom granskning innan man försöker kompilera programmet. För att hitta semantiska fel (om man vet att det finns ett fel) kan man använda granskning, spårutskrifter eller debugging. Logiska fel beror på att man inte riktigt förstått vilken uppgift som ska lösas, man har tänkt fel när man skrivit programmet. Sådana fel kan vara mycket svåra att upptäcka men om man vet att ett fel finns är viktigaste att man tänker igenom sina algoritmer på nytt. Man kan ha nytta av debugging eller spårutskrifter även här. 5) 5a) Data + operationer med dolt lagringsformat. Användaren känner till ett typnamn och operationer på typen men får inte veta hur data är lagrade eller hur de metoder som utför operationerna är skrivna. 5b) En klass med dolda instansvariabler och ett väldefinierat gränssnitt som visar de operationer man får göra på objekt av klassen. 6) Reservation av minne för metodens formella parametrar och lokala variabler. Varje anrop har en egen aktiveringspost. Om en metod anropar sig själv flera gånger så har varje anrop en egen aktiveringspost. Detta är viktigt att veta för att kunna förstå hur rekursiva metoder kan fungera. 7) ++ används för att sätta ihop två listor till en, t.ex. [9,7,2,7] ++ [14,24] ger [9,7,2,7,14,24], "PANN" ++ "KAKA" blir "PANNKAKA" 8. c) är rätt svar. Listor är den viktigaste datastrukturen i funktionella språk. I en lista har alla element samma typ men typen får vara vilken som helst som går att definiera i språket. Här är en lista av listor: ["Dearest", "creature","in", "creation"] Här är en lista där varje element är en lista av listor: [["Dearest", "creature","in", "creation"], ["study", "English","pronunciation"], ["I", "will","teach", "you", "in", "my", "verse"], ["Sounds", "like","corpse", "corps", "hearse", "and", "worse"]] 9) Prova med x = 0.5 i definitionen av ex9. Vaktpost nr 2 med villkoret x<1 är den första som ger True. Funktionsvärdet definieras av det som står efter = på samma rad, dvs x och det ger 0.5. På samma sätt ger x = 1.5 att tredje vaktposten är den första som ger True och funktionsvärdet blir då 2 x, alltså 0.5 om x = 1.5. 10) [ x*x x <- [1..5], x/=3] tolkas så att för varje x i listan [1..5], där x uppfyller villkoret x/=3, lägg x*x i resultatlistan. Resultatet blir [1,4,16,25]. 2

11) Om man inte kan se direkt vad en funktion gör, prova med ett eller flera indata. Här kan man prova med t.ex. mystery "a%e". Det ger mystery ("a%e") => mystery ('a':"%e") => x ='a', x == '%' är False => 'a' : mystery ("%e") => 'a': mystery ('%':"e") => x = '%', x == '%' är True => 'a' : mystery ("e") => 'a' : mystery ('e':[]) => x ='e', x== '%' är False => 'a':'e':mystery [] => 'a':'e':[] => 'a':"e" => "ae" Funktionen returnerar en textsträng som innehåller samma tecken som indata men med alla '%' -tecken borttagna. 12) Rätt svar är c). long och int är båda typer för heltal. En variable av typ long tar upp två ord i minnet och envariabel av typ int tar upp ett ord. Således kan man lagra större tal i long än i int. 13) for (int i=0; i<10; i++) System.out.println(''Java-student''); Detta är ett typexempel på repetition 10 gånger. Texten skrivs ut 10 gånger. Rätt svar är c) 14) int x = 0; while (x < 10) x++; System.out.println(x); I en repetition med while repeteras den sats eller det block ( en grupp satser omgivna av och ) som står direkt efter villkoret. Där står endast satsen x++ så det är bara den som repeteras. När repetitionen är klar utförs satsen System.out.println(x);. Den satsen utförs en gång och rätt svar är därför d) 15) En metod som anropar sig själv får man skriva ijava och en sådan kallas rekursiv. Rätt svar är d) 16) int[] resultat = new int[10]; int[] resultat deklarerar en referensvariabel för typen heltalsvektor. new int [10] skapar och reserverar plats för 10 st heltalsvariabler som man kommer åt via referensen resultat. Rätt svar är a). 17) En klassmetod anropas genom att man skriver klassensnamn.metodensnamn (..) Klassmetoden skrivstatistik i klassen Skrivning anropas Skrivning.skrivStatistik(). Någon instans av klassen är inte inblandad då man anropar klassmetoder. Rätt svar är b). 3

18) En instansmetod anropas med referensvariabel.metodnamn(..) (eller lite slarvigare uttryckt: instans.metodnamn(..) ) Om instansen är tyskaht02 och metoden är visaresultat så blir anropet tyskaht02.visaresultat();. Rätt svar: a). 19a) class Raknare private String namn; private int antal; Raknare (String inamn) namn = inamn; nollstall(); public void nollstall () antal = 0; public void rakna () antal ++; public int visaantal () return antal; public String visanamn () return namn; Det står inget i uppgiftslydelsen om dolda instansvariabler. Därför krävs det inte att instansvariablerna är private. Det krävs inte heller att man skrivit public på metoderna. 19b) Raknare besoksraknare = new Raknare("Besökare"); 20a) int index = -1; for (int i=0; i< frukter.length && index == -1; i++) if (frukter[i].equals("päron")) index = i; Längre lösningar, som t.ex. använder en boolsk variabel godkänns också. Det är inte heller nödvändigt att avbryta sökningen efter Pärondå man funnit ett och det godtas att index pekar ut den sista förekomsten om det finns flera Päron"i vektorn. 4

20b) Operatorn == jämför referensvariablers värden, inte innehållet i de objekt referensvariablerna refererar till. 21) public class Question extends Applet implements ActionListener int pos = 20; public void init () Button flytta = new Button("Flytta"); add(flytta); flytta.addactionlistener (this); public void paint (Graphics g) ritabild(g, pos, pos); private void ritabild (Graphics g, int xpos, int ypos) // Den här metoden ritar den vackra bilden // Här skall inget stoppas in. public void actionperformed (ActionEvent e) pos += 10; repaint(); Satsen Button flytta =... kan läggas utanför metoden init. 5