Statistik över heltal

Relevanta dokument
Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Inledande programmering med C# (1DV402) Summera med while"-satsen

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Metoder. Inledande programmering med C# (1DV402)

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) 85%43=42. OBS! Heltal 1 (14)

Räkna med C# Inledande programmering med C# (1DV402)

Gissa det hemliga talet

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

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

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

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Laborationsanvisning. Digital väckarklocka. Steg 2, laborationsuppgift 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Frekvenstabell över tärningskast med C#

Inledande programmering med C# (1DV402) Introduktion till programmering

Inledande programmering med C# (1DV402) Introduktion till. eller så här är det tänkt att fungera.

Laborationsanvisning. Geometriska figurer. Steg 2, laborationsuppgift 3. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Receptsamling med fil

Klasser och objekt i C#

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

Agenda. Objektorienterad programmering Föreläsning 13

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

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Frekvenstabell över tärningskast med C#

TDDC77 Objektorienterad Programmering

Övningsuppgifter kapitel 8

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

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

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

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

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

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

TUTORIAL: KLASSER & OBJEKT

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

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

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.

HI1024 Programmering, grundkurs TEN

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

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Programmering för språkteknologer I, VT2012. Rum

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

Konstruktion av klasser med klasser

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Creative Commons. en guide för lärare. En guide för lärare

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

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Objektsamlingar i Java

Tentamen i Programmering

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

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Creative Commons en guide för lärare

Objektorienterad programmering D2

Java, klasser, objekt (Skansholm: Kapitel 2)

Enkla variabler kontra referensvariabel

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

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Introduktion till arv

DAT043 - Föreläsning 7

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

Föreläsning 13 Innehåll

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Typkonvertering. Java versus C

Övningar Dag 2 En första klass

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

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

Objektorienterad programmering i Java

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Malmö högskola 2012/2013 Teknik och samhälle

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Laboration 1 Introduktion till Visual Basic 6.0

LÖSNINGSFÖRSLAG TENTAMEN

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Modeller, Objekt och Klasser

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

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

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

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

PROGRAMMERINGSTEKNIK TIN212

Classes och Interfaces, Objects och References, Initialization

Föreläsning 5-6 Innehåll

OOP Objekt-orienterad programmering

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

Creative Commons en guide för lärare

TUTORIAL: SAMLING & KONSOLL

LÖSNINGSFÖRSLAG TENTAMEN

(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

JAVA Mer om klasser och objektorientering

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

Transkript:

Övningsuppgift Statistik över heltal Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket Statistik över heltal av Mats Loock, förutom Linnéuniversitetets logotyp, symbol och kopparstick, är licensierad under: Creative Commons Erkännande-IckeKommersiell-DelaLika 2.5 Sverige licens. http://creativecommons.org/licenses/by-nc-sa/2.5/se/ Det betyder att du i icke-kommersiella syften får: kopiera hela eller delar av innehållet sprida hela eller delar av innehållet visa hela eller delar av innehållet offentligt och digitalt konvertera innehållet till annat format du får även göra om innehållet Om du förändrar innehållet så ta inte med Linnéuniversitetets logotyp, symbol och/eller kopparstick i din nya version! Vid all användning måste du ange källan: Linnéuniversitetet Inledande programmering med C# och en länk till https://coursepress.lnu.se/kurs/inledande-programmering-medcsharp och till Creative Common-licensen här ovan. Inledande programmering med C# (1DV402) 2 (9)

Innehåll Uppgift 5 Problem 5 Mål 7 Tips 7 Lösning 8 Inledande programmering med C# (1DV402) 3 (9)

Uppgift Problem Ett program ber användaren mata in två serier om tio heltal vardera. Programmet ska presentera det största och det minsta av de inmatade heltalen för respektive serie. De olika seriernas summor och medelvärden ska även presenteras. Vidare ska det bestämmas vilken av serierna som har högst medelvärde. Då de två serierna ska behandlas på exakt samma sätt är det bäst att skapa en klass, som du lämpligen kallar Statistics, vars uppgift blir att hålla ordning på datat. Klassen ska inte lagar varje enskilt heltal, utan bara den information som krävs för att kunna bestämma ett medelvärde, samt högsta och lägsta heltal. För att bestämma medelvärdet krävs att information om summan av heltalen och antalet heltal som bildat summan. För att enkelt kunna presentera ett objekts status i form av en sträng ska du överskugga metoden ToString (som ju deklareras av basklassen Object). Studera klassdiagram och koden som testkör klassen så du kan implementera klassen Statistics så att koden i klassen Program kan kompileras och exekveras utan att du gör några ändringar. Figur 1. Klassdiagram över klassen Statistics. Vad respektive fält, egenskap och metod i klassen Statistics ska göra torde vara uppenbart. Poängteras bör att du inte får använda arrayer för att lösa uppgiften. Figur 2. Klassdiagram över klassen Program. Inledande programmering med C# (1DV402) 5 (9)

Figur 3. Implementation av klassen Program vars kod testar klassen Statistics. Istället för att dubblera koden som läser in tio heltal används metoden ReadInts. Metoden anropas två gånger en gång för den första serien och en gång för den andra. Varje inläst heltal läggs till det Statistics-objekt som referensvariabeln statistics refererar till med hjälp av metoden Add. Metoden TryParse använder en out-parameter. Vad det är och hur den fungerar hittar du i kurslitteraturen, kapitel 4, under underrubriken Output Parameters (out). I samband med den avslutande utskriften i metoden Main används if -operatorn (conditional operator). Du kan läsa om den i kurslitteraturen, kapitel 3, under underrubriken Conditional Operator (?). Inledande programmering med C# (1DV402) 6 (9)

Mål Efter att ha gjort uppgiften ska du: Tips Läs om: Inse att en klass som inte explicit (uttryckligen) ärver från en annan klass automatiskt ärver från klassen Object, och därför bl.a. får tillgång till metoden ToString. Kunna implementera en klass som innehåller fält, konstruktorer, egenskaper och över skuggade metoder. Klasser i kurslitteraturen, kapitel 5. Roten till alla klasser i kurslitteraturen, kapitel 6, under rubriken All Classes Derive fromsystem.object. Överskuggning hittar du i kurslitteraturen, kapitel 6, under rubriken Overriding the Base Class. Läs mer om överskuggning i artikeln Versioning with the Override and New Keywords (C# Programming Guide) http://msdn.microsoft.com/en-us/library/6fawty39.aspx som du hittar i online-hjälpen. Inledande programmering med C# (1DV402) 7 (9)

Lösning Lösningen forsätter på nästa sida! Inledande programmering med C# (1DV402) 8 (9)

Fortsättning på lösningen från föregående sida! Figur 4. Implementationen av klassen Statistics. Konstruktorn initierar objektets fält till lämpliga startvärden. int.minvalue och int.maxvalue används för att logiken i metoden Add ska bli enklare då högsta och minsta värdet ska bestämmas. Då egenskapen Average returnerar medelvärdet måste den en av operanderana typas om till ett flyttal av typen float. Varför? Därför annars sker en heltalsdivision och eventuella decimaler skulle i så fall tunkeras (klippas bort). I metoden Add händer allt. Här räknas antalet heltal upp, summan uppdateras och det undersöks om det nya heltalet är ett nytt högsta eller minsta heltal. Metoden ToString skapar en sträng med den information som ska presneteras om objektet. Använder här klassen StringBuilder som är mycket effektivare att använda (ger kod som är snabbare att exekvera) än att konkatinera (slå samman) strängar. I kurslitteraturen på sidorna 319-321 hittar du information om klassen StringBuilder. Det som returneras av metoden är hur som helst en sträng som beskriver objektet som anropade den. När anropas den då? Satsen Console.WriteLine(statics1) ser faktiskt till att metoden ToString anropas. Det sker implicit (automatiskt). För tydlighets skull kan man så klart skriva Console.WriteLine(statics1.ToString()) men det behövs ju faktiskt inte. Inledande programmering med C# (1DV402) 9 (9)