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

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

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

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

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:

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

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

TENTAMEN OOP

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

Tentamen, EDAA10 Programmering i Java

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

Tentamen OOP

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.

OOP Objekt-orienterad programmering

DAT043 Objektorienterad Programmering

TENTAMEN OOP

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

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

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

Tentamen. Lösningsförslag

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

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

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

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

Tentamen , Introduktion till Java, dtaa98, dtea53

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

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 i Grundläggande programmering STS, åk 1 fredag

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

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

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

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

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

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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]

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

Föreläsning 3-4 Innehåll

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Del A (obligatorisk för alla)

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

TENTAMEN OOP

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

Malmö högskola 2008/2009 CTS

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

LÖSNINGSFÖRSLAG TENTAMEN

JAVA Mer om klasser och objektorientering

Tentamen i Programmering

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

Laboration 1 - Grunderna för OOP i Java

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

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.

Tentamen, EDA501 Programmering M L TM W K V

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

Tentamen, EDAA20/EDA501 Programmering

(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

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

PROGRAMMERING-Java Omtentamina

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

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

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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

DD1342 Programkonstruktion för F1,

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

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

Föreläsning 5-6 Innehåll

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.

Objektorienterad programmering i Java

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

OOP Tentamen

Objektorienterad Programmering (TDDC77)

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) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

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

Instuderingsfrågor, del D

PROGRAMMERINGSTEKNIK TIN212

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

JAVAUTVECKLING LEKTION 11

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

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

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

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

TDDD78 Viktiga begrepp, del 2

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

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

Transkript:

Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Tentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student) Tentamensdatum: 2014-03-28 Tid: 09:00 13:00 Hjälpmedel: Inga hjälpmedel. Totalt antal poäng på tentamen: 44 poäng För att få respektive betyg krävs: Preliminärt: G >= 22 poäng, VG >= 33 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 25 april 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-03-28 sida 2 (av 19) Uppgift 1 (18 p) Ge korta men tydliga svar på följande frågor: a) Är variabelnamnet Sales detsamma som variabelnamnet sales? Ange varför eller varför inte? (1p) b) Om användaren matar in ett tal, varför är det nödvändigt att konvertera värdet som returneras av ReadLine-metoden till en numerisk datatyp? (1 p) c) Skriv en metodsignatur (metoddefinition) för en metod som tar två argument (två decimaltal: rate och time), samt returnerar ett decimaltal. Metoden skall nås överallt, samt inte vara låst till objekt. (2p) d) Deklarera en symetrisk heltalsmatris och dimensionera den till 5 rader och 10 kolumner. (2p)

Högskolan i Borås 2014-03-28 sida 3 (av 19) e) Nedanstående kodrader har blandats ihop och kommer att ge kompileringsfel. (3p) using System; Console.Write( Success\n ); public class Success Console.Write( Success\n ); public static void Main(); Console.Write( Success ); Console.Write( \nsuccess ); När kodraderna ordnas på ett korrekt sätt kommer följande output att skrivas ut på skärmen: Success Success Success Success Din uppgift är att ordna kodraderna, använd rutan nedan.

Högskolan i Borås 2014-03-28 sida 4 (av 19) e) Utgå från följande variabeldeklarationer: int a = 1, b = 2, c = 3; double d = 4.0, e = 3.2, f = 0.07; char[] str = new char[25]; Vilka av följande tilldelningssatser är direkt felaktig C# kod, och ger därför kompileringsfel? Motivera dina svar! (3p) 1. str = d; 2. d = f; 3. d = g; 4. c = a; 5. a = b + c; 6. a + b = c; 7. f = str + 1; 8. a = e; Svara bara på de alternativ du är säker på _ rätt markerade alternativ kvittas mot felaktigt angivna! f) Skriv koden som gör följande: Öppnar en fil med namnet MyName.txt, läser in första raden från filen och visar denna, samt stänger filen. (4p)

Högskolan i Borås 2014-03-28 sida 5 (av 19) g) I ett system har vi klasser med rymdvarelser. Varje rymdvarelse har en art (t.ex. wookie ), ett namn, (t.ex Yoda ) och en ålder (t.ex. 28). Skriv en konstruktor som skapar en ny rymdvarelse. Skriv också en kodrad i en annan klass som med hjälp av konstruktorn skapar rymdvarelsen Jar-Jar Binks, som är en gungan och 53 år. (2 p)

Högskolan i Borås 2014-03-28 sida 6 (av 19) Uppgift 2 (8 p) I källkoden på nästa sida 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å sida 8 motivering till respektive fel. 1 poäng per korrekt motiverat fel. Markerade fel utan korrekt motivering ger inga poäng. Programmet ska beräkna medelvärdet på två tal. Programmets uppgift är att frågar efter dessa uppgifter och därefter beräkna medelvärdet och skriva ut resultatet med hjälp av olika metodnrop. Till er hjälp får ni även ett exempel på hur skärmutskriften kan se ut.

Högskolan i Borås 2014-03-28 sida 7 (av 19) Kod att felsöka: class Program public static void meny() Console.WriteLine("\n\n***** MENY *****"); Console.WriteLine("################"); Console.WriteLine(" 1 beräkna medelvärde"); Console.WriteLine(" 0 AVSLUTA \n"); public static int las_in_alternativ() int svar; Console.WriteLine("\n Ange alternativ: "); svar = Console.ReadLine(); public static double medelvarde() double tal1, tal2; Console.WriteLine(" Ange två tal: "); tal1 = int.parse(console.readline()); tal2 = int.parse(console.readline()); Console.WriteLine(); return (tal1 + tal2) / 2.0; public static void skriv_ut(double tal) for (int i = 1; i <= n; i++) Console.WriteLine(tal); static void Main(string[] args); double tal1, tal2, resultat; int svar = 1; while (svar!= 1); meny(); svar = las_in_alternativ(); Console.Clear( ); if (svar == 1) resultat = medelvarde(tal1, tal2); Console.WriteLine(" Medelvarde : " + resultat); skriv_ut(resultat, 1); Console.WriteLine(); skriv_ut(resultat, 4); Console.WriteLine('HEJ DÅ')

Högskolan i Borås 2014-03-28 sida 8 (av 19) Motiveringar/förklaringar till felen i koden på föregående sida:

Högskolan i Borås 2014-03-28 sida 9 (av 19) Uppgift 3 (4 p) Felhantering med hjälp av try & catch Din uppgift här är att skriva om koden nedan, så att den kan hantera om det uppstår ett fel i samband med heltalsdivisionen på rad 10. 1.using System; 2.namespace IckeFångatUndantagTenVt14 3. 4. class Program 5. 6. static void Main(string[] args) 7. 8. int x = 0; 9. int div = 0; 10. div = 100 / x; 11. 12. Console.WriteLine("Resultatet är 0", div); 13. 14. Console.WriteLine(); 15. Console.WriteLine("Tryck på Enter för att avsluta"); 16. Console.ReadLine(); 17. 18. 19.

Högskolan i Borås 2014-03-28 sida 10 (av 19) Uppgift 4 (4 p) Rätt ofta måste man byta plats på två saker i en vektor eller annan form av lista. Man brukar då använda en algoritm kallad swap. Själva algoritmen har ni använt i era projekt, och det är väl den kanske kortaste algoritm man kan tänka sig. Men hur fungerar den, dvs vad gör en swap-metod ingående? Du behöver inte skriva koden exakt, men visa att du förstår hur den fungerar, gärna genom att rita.

Högskolan i Borås 2014-03-28 sida 11 (av 19) Uppgift 5 (3 p) I ett program finns en klass som heter Hund.cs. En hund har ett antal attribut och ett av dem är brukshund, som är av datatypen boolean. Hunden kan alltså vara antingen brukshund (hund.brukshund ==true) eller sällskapshund (hund.brukshund==false). När man skriver ut en massa data för hunden i konsolfönstret (jfr era visa-metoder) vill man inte att det ska stå True eller False, utan brukshund eller sällskapshund : Hundens namn Hundens ras Status Kalle Foxterrier sällskapshund Champis Bulldog brukshund Hur skriver man lämpligen kod för att få fram ovanstående? Skriv om metoden Hundlistning nedan så att det står brukshund eller sällskapshund i stället för True eller False. for (int i = 0; i < hundar.length; i++) Hundlistning(hundar[i]);... public static void Hundlistning (Hund hund) Console.WriteLine(("0,-20 1,-20 2, -20"), hund.namn, hund.ras, hund.brukshund);

Högskolan i Borås 2014-03-28 sida 12 (av 19) Uppgift 6 (7 p) I nedanstående program används bubblesort för att sortera ett antal hundar i en viss ordning. Olyckligtvis har programmeraren inte skrivit någon kommentar till bubblesort-metoden, så det är upp till dig att ta reda på vad den gör och hur den sorterar. I tabellen under koden (sida 14), skriv hur listans namn ser ut efter varje iteration! Hur utskriften blir i första varvet i for-loopen ser du i tabellrad 1. Obs! Om du inte förstår koden helt och hållet så skriv hur du uppfattar koden och skriv ditt svar därefter för att erhålla åtminstone något poäng. private void BubbleSort() bool unsorted = true; int end = dogs.length - 1; while (unsorted) for (int i = 0; i < dogs.length; i++) Console.Write(dogs[i].name + " "); Console.WriteLine(); unsorted = false; for (int j = 0; j < end; j++) string namea = dogs[j].name; string nameb = dogs[j + 1].name; if (namea.compareto(nameb) < 0) Swap(dogs, j, j + 1); unsorted = true; end--; /// <summary> /// Swaps two elements in an array /// </summary> private void Swap(Dog[] dogs, int a, int b) Dog temp = dogs[a]; dogs[a] = dogs[b]; dogs[b] = temp;

Högskolan i Borås 2014-03-28 sida 13 (av 19) Varv 1 Laban Rufus Angel Mizo Benzo Sniffy Varv 2 Varv 3 (om alls) Varv 4 (om alls) Varv 5 (om alls) Varv 6 (om alls) Varv 7 (om alls) Varv 8 (om alls) Här är tentamensuppgifterna slut.

Högskolan i Borås 2014-03-28 sida 14 (av 19) 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-03-28 sida 15 (av 19) Ö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-03-28 sida 16 (av 19) 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-03-28 sida 17 (av 19) Sammanställning av flödesdiagram

Högskolan i Borås 2014-03-28 sida 18 (av 19)

Högskolan i Borås 2014-03-28 sida 19 (av 19)