Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla

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

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

Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Tentamen DE14, IMIT14 och SYST14 samt öppen för alla

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

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

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för:

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

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

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

JAVA Mer om klasser och objektorientering

TENTAMEN OOP

Viktigt! Glöm inte att skriva tentamenskod på alla blad du lämnar in.

TENTAMEN OOP

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

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.

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

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

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

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

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

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen, EDAA10 Programmering i Java

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 och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Tentamen. Lösningsförslag

Föreläsning 3-4 Innehåll

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

Tentamen OOP

Föreläsning 5-6 Innehåll

DD1342 Programkonstruktion för F1,

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

Tentamen, EDA501 Programmering M L TM W K V

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

OOP Tenta

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

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

DAT043 Objektorienterad Programmering

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

Föreläsning REPETITION & EXTENTA

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

7,5 högskolepoäng. Objektorienterad systemutveckling I. Lycka till! /Peter & Petter. Provmoment: Ladokkod: 21OS1B Tentamen ges för:

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Laboration 1 - Grunderna för OOP i Java

PROGRAMMERINGSTEKNIK TIN212

Instuderingsfrågor, del D

Tentamen i Programmeringsteknik I

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

Malmö högskola 2007/2008 Teknik och samhälle

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

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

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

Tentamen i Programmering

Tentamen, EDAA20/EDA501 Programmering

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

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

Objektorienterad programmering Föreläsning 5

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

TUTORIAL: KLASSER & OBJEKT

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

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

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

LÖSNINGSFÖRSLAG TENTAMEN

Tentamen , Introduktion till Java, dtaa98, dtea53

Objektorienterad Programmering (OOP) Murach s: kap 12-16

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

JAVAUTVECKLING LEKTION 11

Malmö högskola 2008/2009 CTS

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Del A (obligatorisk för alla)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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]

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

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

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

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

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

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

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

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

Introduktion till Programutveckling - från Information till Tillämpning (7,5 hp)

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

Transkript:

Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student) Tentamensdatum: 2014-08-18 Tid: 09:00 13:00 Hjälpmedel: Inga hjälpmedel. Totalt antal poäng på tentamen: 46 poäng För att få respektive betyg krävs: Preliminärt: G >= 23 poäng, VG >= 34 poäng Allmänna anvisningar: OBS!! Den som skriver en tentamen måste visa att han/hon behärskar problemområdet. Många gånger är det möjligt att exemplifiera och illustrera. I dessa fall är det oftast det bästa sättet - ibland även det enda sättet - och kan i högsta grad påverka poängsättningen vid bedömningen av svaret. Om du tycker att uppgifterna i tentamenstexten är ofullständiga skall du göra egna antaganden för de uppgifter som du saknar. OBS! Redovisa dina egna antaganden. Skriv in dina lösningar direkt i tentamenshäftet. Om du behöver mer utrymme än vad som finns i häftet måste du tydligt ange på tilläggsbladen vilken uppgift de tillhör. Skriv namn och personnummer på varje inlämnat blad. Skriv tydligt på endast en sida av pappersarket. Påbörja nytt blad för varje ny uppgift. Lämna uppgifterna i nummerordning. Markera (på omslagsbladet) vilka uppgifter du lämnat lösning på Svårlästa lösningar kan inte bedömas! Glöm inte att läsa frågorna mycket noga! Rättningstiden är normalt tjugo arbetsdagar, det vill säga resultatet kommer att anslås senast fredag den 12 september 2014 Viktigt! Glöm inte att skriva namn och personnummer på alla blad du lämnar in. Lycka till! Ansvarig lärare: Anna Palmquist och Petter Dessne Telefonnummer: 0734-612003

Högskolan i Borås 2014-08-18 sida 2 (av 17) Uppgift 1 (14 p) Ge korta men tydliga svar på följande frågor: a) Givet följande output: One Two Three Använd en sträng och en escapesekvens för att visa hur metoden WriteLine( ) producerar resultatet ovan. (2p) b) Vilket värde kommer variabel sum att ha efter följande satser? (2 p) int sum = 0; for (int i = 0; i <= 3; i++) for (int j = 5; j > 2*i; j--) sum = sum + (j + i); c) Ange en korrekt metodsignatur för en metod som tar två heltals argument a och b, samt som returnerar ett decimaltal. Metoden skall kunna nås överallt, samt inte vara låst till objekt. (2p) d) Visa hur man deklarera en 4X5 två dimensionell heltals vektor. (2p)

Högskolan i Borås 2014-08-18 sida 3 (av 17) e) Om följande gäller: a = false, b = false och c = false Är då nedanstående uttryck sant eller falskt? (1p) if (a && b == c) f) Skriv koden för att skriva ut de 10 första ojämna (1, 3 ) talen? (3 p) g) Fyll i nedanstående de saknade orden som alla har med objektorientering att göra. (Termerna är hämtade från föreläsningen i objektorientering.) Ser du inte med en gång vad det ska vara så gissa! (2p) En är en ritning eller en mall som beskriver objekten. Ett innehåller variabler och metoder. attribut och metoder är enbart möjliga att använda inom klassen där de är deklarerade Klassen Ko är en av klassen Däggdjur

Högskolan i Borås 2014-08-18 sida 4 (av 17) Uppgift 2 (8 p) I källkoden nedan har ett antal fel smugit sig in. Din uppgift är att ringa in de felaktiga koddelarna och numrera ställena. Skriv sedan i den heldragna rutan på nästa sida motivering/förklaring till respektive fel. Markerade fel utan korrekt motivering/förklaring ger inga poäng. using System; namespace T110321_2 class Program class Bil public int antaldörrar; public string modell; public string färg; public void Bil(int d, string m, string f) antaldörrar = d; modell = m; färg = f; static void Main(string[] args) int antaldörrar, grundpris, pris; string modell, färg; Bil[] verkstad = new Bil[1000]; for (int i = 0; i <= verkstad.length; i++) Console.Write("Ange antal dörrar: "); antaldörrar = (Console.ReadLine(); Console.Write("Ange modell: "); modell = Console.ReadLine(); Console.Write("Ange färg: "); färg = Console.ReadLine(); verkstad[i]= new Bil(modell, antaldörrar, färg); for (int i = 0; i <= verkstad.length; i++) if (verkstad[i].modell == "Saab") pris = grundpris + 1000; else if (verkstad[i].modell == "Volvo") pris = grundpris + 998.50; else pris = grundpris;

Högskolan i Borås 2014-08-18 sida 5 (av 17) Motiveringar/förklaringar till felen i koden på föregående sida:

Högskolan i Borås 2014-08-18 sida 6 (av 17) Uppgift 3 (8 p) Inläsning från fil Din uppgift är att skriva koden till metoden Ladda som skall läsa in innehållet från filen biografmätningar.txt till vektorn biografmätningar. Koden skriver du in i den heldragna rutan på nästa sida. Inläsningen från filen skall ske i överensstämmelse med hur utskriften skett i metoden Spara (se kod nedan). Vid inläsningen skapar du således en BiografMätning-post per rad, varefter den, när posten initierats korrekt, skall läggas till vektorn biografmätningar via metoden LäggTillBiografMätning. Förtydligande, du skall inte skriva koden till metoden LäggTillBiografMätning, däremot skall metoden anropas från metoden Ladda. public static void Spara() StreamWriter utfil = new StreamWriter("biografMätningar.txt"); for (int i = 0; i < biografmätningar.length; i++) BiografMätning m = biografmätningar[i]; int antaldagar = AntalDagar(m.år, m.månad); utfil.write("0\t1\t2\t3\t", m.biograf, m.år, m.månad); utfil.writeline(); utfil.close(); Den sammansatta typen BiografMätning: public struct BiografMätning public string biograf; public int år; public int månad; Ett klipp ur textfilen biografmätningar.txt:

Högskolan i Borås 2014-08-18 sida 7 (av 17) public static void Ladda()

Högskolan i Borås 2014-08-18 sida 8 (av 17) Uppgift 4 (4 p) Redogör för exchange sort. Vad är det och hur går det till? Du behöver inte skriva någon kod men rita en figur där en osorterad lista med minst fyra poster sorteras. Skriv också en förklaring på några meningar.

Högskolan i Borås 2014-08-18 sida 9 (av 17) Uppgift 5 (5 p) I ett program vill man kunna kolla om ett visst namn finns i en lista. Sökmetoden anropas enligt nedan. I metoden ska man kunna skriva ut ett meddelande om namnet finns med eller ej. Början på programmet ser du alltså här. Din uppgift är att skriva metoden Sök som ger utskrift enligt bilden. using System; namespace ProgramX class Program static void Main(string[] args) string[] words = "Cecilia", "Patrik", "Anna", "Petter", "Anders", "Shirin", "Carina", "Peter", "Björn", "Ulf", "Håkan" ; Sök(words, "Anders"); Sök(words, "Jonas");

Högskolan i Borås 2014-08-18 sida 10 (av 17) Uppgift 6 (7 p) Här nedan ser du ett fullständigt program som gör något med vektorn words. Tyvärr har programmeraren varit mycket slarvig med både kommentarer och namngivning och därför är det upp till dig att förstå vad koden gör. Din uppgift består i att 1) kommentera koden på avsedda ställen (avsluta meningarna som börjar med Den här metoden eller liknande) och att 2) skriva ned vad utskriften från programmet blir. using System; namespace ProgramX class Program static void Main(string[] args) string[] words = "Cecilia", "Patrik", "Anna", "Petter", "Anders", "Shirin", "Carina", "Peter", "Björn", "Ulf", "Håkan" ; Metod2(words); Console.WriteLine(); words = Metod1(words); //Den här raden... Metod2(words); Console.ReadLine(); //Den här raden gör så att... //Den här metoden... // // static string[] Metod1(string[] arr) string[] nyarr = new string[arr.length]; int j = 0; string temp = ""; for (int i = 0; i < arr.length; i++) if (arr[i].compareto(temp) == 1) //De här raderna... nyarr[j] = arr[i]; j++; temp = arr[i]; return nyarr; //Den här metoden... // // static void Metod2(string[] arr) for (int i = 0; i < arr.length; i++) if (arr[i]!= null) Console.Write(arr[i] + " "); //Den här raden...

Högskolan i Borås 2014-08-18 sida 11 (av 17) Här är tentamensuppgifterna slut.

Högskolan i Borås 2014-08-18 sida 12 (av 17) C# - sammanfattning av vanliga begrepp och uttryck Klasser Det här är en klass. En klass är en representation av ett ting, som exempelvis en Person. Eftersom allt i C# är byggt runt klasser innebär en klass att man skapar en ny datatyp. class Person För att använda en klass måste man ofta instansiera den till ett objekt, class Person Person p1 = new Person(); Person p2 = new Person(); Om en metod i C# returnerar ett värde ändrar man från void till datatypen som returneras, class Person string name; public string Talk() return "Hello, my name is " + name; Person p1 = new Person(); string tmp = p1.talk() Console.WriteLine(tmp); // "Hello, my name is " Konstruktorer En konstruktor är en instansmetod som har samma namn som klassen, den körs automatiskt varje gång när klassen instansieras till ett nytt objekt och markeras inte med void trots att den inte returnerar något värde. Konstruktorn används vanligen bara för att initiera objekt. Om ingen konstruktor finns skriven skapar systemet en tom konstruktor markerad med public som inte tar några argument. class Person string name; public Person(string name) public string Talk() return "Hello, my name is " + name; Person p1 = new Person(); // FEL, det finns ingen parameterlös konstruktor Person p2 = new Person("Leonard"); Console.WriteLine(p2.Talk()); // "Hello, my name is "

Högskolan i Borås 2014-08-18 sida 13 (av 17) Överlagrade metoder En metod får förekomma flera gånger med samma namn så länge de tar olika antal argument och/eller argument med olika datatyper, sådana metoder kallas överlagrade. Eftersom överlagrade metoder ofta gör snarlika saker är det vanligt att de anropar varandra. class Person string name; public Person(string name) this.name = name; public string Talk() return Talk("..."); public string Talk(string text) return name + " says: " + text; Person p1 = new Person("Leonard"); Console.WriteLine(p1.Talk()); // "Leonard says:..." Console.WriteLine(p1.Talk("Hello")); // "Leonard says: hello" Klassmetoder De gångerna det inte är logiskt att jobba med objekt kan man använda ordet static för att markera att något inte är en instansmetod eller instansvariabel/egenskap. En klass kan vara helt statisk, som exempelvis Math eller Console vilka det inte går att instantiera till objekt alls, eller delvis, som String som innehåller både instansdata som Length och statiska metoder som IsNullOrEmpty som tar en sträng som argument och returnerar sant eller falskt beroende på om strängen är tom eller inte. string s = "hello"; if (! String.IsNullOrEmpty(s)) Console.WriteLine("strängen är inte null eller tom"); Det går (naturligtvis) inte att anropa en instansegenskap/variabel/metod från en klassmetod eller via klassnotation och det finns inuti en statisk metod heller ingen objektreferens till this. string s1 = "hello"; string s2 = "world!"; Console.WriteLine(s1.Length); // 5 Console.WriteLine(s2.Length); // 6 Console.WriteLine(String.Length); // Kompilatorfel I C# är det inte möjligt att via en instans av klassen anropa en statisk metod i densamma (i vissa andra programspråk är det här okej): string s = "hello"; if (s.isnullorempty(s)) // Kompilatorfel! Console.WriteLine("strängen är null eller tom");

Högskolan i Borås 2014-08-18 sida 14 (av 17) Sammanfattningsvis Sammanfattningsvis ser en översikt med de vanligaste begreppen i en klass ut såhär, class Person // Klassnamn public string Name get; set; // Egenskap public Person(string name) // Konstruktor this.name = name; public string Talk() // Instansmetod return Name + " is speechless!"; public string Talk(string s) // Överlagrad instansmetod return String.Format("0 says \"1\"", Name, s); public static bool Compare(Person p1, Person p2) // Klassmetod if (p1.name == p2.name) return true; return false; Person leo = new Person("Leonard"); // Ny instans av klassen Person floyd = new Person("Floyd"); if (Person.Compare(leo, floyd)) Console.WriteLine("Personerna har samma namn"); else Console.WriteLine("Personerna har inte samma namn"); Console.WriteLine(leo.Talk()); Console.WriteLine(leo.Talk("hello")); Personerna har inte samma namn Leonard is speechless! Leonard says "hello"

Högskolan i Borås 2014-08-18 sida 15 (av 17) Sammanställning av flödesdiagram

Högskolan i Borås 2014-08-18 sida 16 (av 17)

Högskolan i Borås 2014-08-18 sida 17 (av 17)