Björn Abelli Programmeringens grunder med exempel i C#

Relevanta dokument
Editering, Kompilering och Exekvering av Javaprogram

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

8-1 Formler och uttryck. Namn:.

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Föreläsning 1 & 2 INTRODUKTION

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

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

Föreläsning 2: Avlusning och antilustekniker

Tentaupplägg denna gång

Tentamen OOP

SMD 134 Objektorienterad programmering

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

Pseudokod. Arbetets gång

Programmeringsteknik med C och Matlab

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

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

Chapter 3: Using Classes and Objects

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

4-7 Pythagoras sats. Inledning. Namn:..

Övningar Dag 2 En första klass

Tentamen, EDA501 Programmering M L TM W K V

8-4 Ekvationer. Namn:..

Objektorienterad programmering D2

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

Programmering A. Johan Eliasson

Tentamen i Programmering grundkurs och Programmering C

DSV A Procedurell programmering 5 poäng Tentamen

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

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

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.

Tentaupplägg denna gång

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

(1) För att numrera alla sidor i tidningen, löpande från och med 1, krävs 119 siffror.

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

1 Funktioner och procedurell abstraktion

Felsökning av mjukvara

Bygga hus med LECA-stenar

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

Tentamen i Objektorienterad programmering

Matematisk Modellering

Lär dig sökmöjligheterna i Disgen 8

Programmeringsuppgifter 1

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

TAIU07 Matematiska beräkningar med Matlab

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

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

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

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

Grunderna i stegkodsprogrammering

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Komma igång med Eventor

Programmeringsolympiaden 2008 Kvalificering

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

UPPGIFT 2 KVADRATVANDRING

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

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

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

Marie Andersson, IKT-centrum E-post: (Bb Learn 9.1.8) Wikis i Blackboard

Försättsblad Tentamen

SMD 134 Objektorienterad programmering

Testning. 1. Inledning

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

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Vad tycker du om sfi?

Tärna Folkhögskola IT-pedagogutbildningen Individuellt fördjupningsarbete Vt IT I FÖRSKOLAN. Författare:Tove Andersson

Uppgift 1. Kylskåpstransporter

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

NATIONELLT PROV I MATEMATIK KURS A VÅREN Tidsbunden del

Digitalt lärande och programmering i klassrummet

19. Skriva ut statistik

PDA-applikationer med.net

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Planering Programmering grundkurs HI1024 HT data

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen TEN1 HI

Objektorienterad programmering i Java

Javisst! Uttrycken kan bli komplicerade, och för att få lite överblick över det hela så gör vi det så enkelt som möjligt för oss.

Handbok för provledare

Användarhandledning Version 1.2

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Skapa ett register över din grupp/klass

Explorativ övning 11 GEOMETRI

Kommunikationsmöjligheter i Mondo

Vill du delta i en undersökning om matvanor?

Instruktion sfi elever

Föreläsning 3.1: Datastrukturer, en översikt

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Hälsoenkät SF-36. Bilaga 1

Föreläsningsmaterial (Syntax och variabler)

Lektionsanteckningar 2: Matematikrepetition, tabeller och diagram

Kortfattad sammanfattning av studenternas synpunkter och förslag

Textsträngar från/till skärm eller fil

Kommunal vuxenutbildning: elever, kursdeltagare och utbildningsresultat, första halvåret 2016.

Komvux/gymnasieprogram:

Transkript:

Björn Abelli Programmeringens grunder med exempel i C# Övningshäfte (bearbetning pågår) Senaste uppdatering: 2004-12-12 I denna version finns övningar för de mest centrala avsnitten. Häftet kommer att kompletteras successivt under hösten.

Innehållsförteckning 1. Vad är ett program, egentligen?... 2 2. Utvecklingsprocesserna... 2 3. Problemlösning... 2 4. Byggstenarna... 2 5. Inmatning och utmatning (tangentbord och skärm)... 4 6. Namnrymder... 4 7. Felsökning och felhantering... 4 8. Jämförelser med några andra språk... 4 9. Gör ritningen innan Du bygger huset... 5 10. Elementen i strukturerad programmering... 5 11. Några grundläggande standardalgoritmer... 7 12. Skrivning och läsning till och från datafiler... 7 13. Jämförelser med några andra språk... 8 14. Objektorientering... 8 Övningarna i detta häfte tillhandahålls som ett komplement till huvudboken. Observera att inte alla övningar är möjliga att utföra överallt, eftersom vissa av dem är beroende av vilka utvecklingsmiljöer Du har till förfogande. Övningarna kan också lämpa sig mer eller mindre bra beroende på vilken inriktning din institution har vad gäller syftet med programmeringsundervisningen. Detta häfte lämpar sig därför bäst att användas tillsammans med anvisningar från din undervisande lärare eller motsvarande. Alla direkta programmeringsövningar innebär att du skall: 1. Lösa problemet 2. Skriva in lösningen som programkod via lämplig editor 3. Kompilera programmet 4. Exekvera programmet Naturligtvis innebär detta också att om det uppstår kompilerings- eller andra fel skall Du rätta till dem så att programmen kan exekveras felfritt. Vänj dig från början vid att skriva tydlig och prydlig källkod, dvs med indenteringar, följande av namnsättningsstandarder och med tydliga kommentarer i källkoden om vad de olika delarna i programmet gör eller används till. Vissa övningar kan kräva att Du letar rätt på nödvändiga metoder i.net:s klassbibliotek som i vissa fall inte ens är omnämnda i boken. En poäng med detta är att Du dels skall lära dig hitta i dokumentation och eventuell online-hjälp, men också för att Du skall kunna skilja på funktionalitet inbyggd i språket respektive vad som är funktionalitet i kompletterande klassbibliotek. 1

1 Vad är ett program, egentligen? a) Skriv in och exekvera programmet Hello World. b) Ändra programmet så att det istället skriver ut ditt eget namn. 2 Utvecklingsprocesserna Leta rätt på en vetenskaplig artikel som beskriver en systemutvecklingsprocess, och en artikel som beskriver en programmeringsprocess. Diskutera: a) Vilka är likheterna och skillnaderna dels gentemot bokens beskrivning av processerna, dels likheter och skillnader mellan artiklarnas båda beskrivningar av de båda processerna? 3 Problemlösning Diskutera: a) Vilka typer av problem kan inte lösas av program i datorer? b) Hur kan vi identifiera sådana problem som kan vara lämpade för datoriserade lösningar? 4 Byggstenarna 4.1 Literaler, variabler och konstanter a) Vilka av dessa uttryck är inte tillåtna som identifierare i C#? binde-streck 50+ _perfekt p8 räksmörgås 7khus b) Vilka av nedanstående tal kan inte användas som literaler i C#? -67 +5E-7 6,77.234 2.0006 0x08 c) Skriv om nedanstående uttryck och tilldela det motsvarande värdet till egna namnsatta konstanter, på ett sätt som är tillåtet i C#. 5,776-2 10 88 6,77 ¾ +5,25 10-3 2

d) Vilket värde har p efter att följande rader exekverats? int a, p; a = p = 1; a = a + a; p = p * a; a = a + p; p = p + a; e) Om e1 har värdet 5 och e2 har värdet 8 innan följande rader utförts, vilka värden har de när satserna är utförda? int t = e1; e1 = e2; e2 = t; f) Vad får a respektive b för värden när satserna är utförda? float x = 1, y = 2; float a = x + 15 / y 6 * x / y * 2 / 3; float b = ((x + 15) / (y 6)) * x / (y * 2) / 3; g) Hur skrivs följande uttryck i C#? x + y - 5 + ab. 2 2b x(a + b) 4.2 Färdiga funktioner a) Vad får x för värde då följande instruktioner körts? double x; x = Math.Sin(Math.PI / 2); x = Math.Atan(x) / Math.PI; x = Math.Sqrt(x); x = Math.Pow(Math.Exp(x), 2 ); x = Math.Log(x); b) Hur kan vi i C# skapa ett slumpmässigt valt heltal mellan -10 och 10? c) Hur kan vi i C# ta reda på heltalsdelen av ett reellt tal? 3

5 Inmatning och utmatning (tangentbord och skärm) a) Skriv ett program som läser in ditt förnamn och efternamn och skriver ut dessa på skärmen i omvänd ordning. Exempelvis kan följande dialog finnas: Ange förnamn: Hans Ange efternamn: Blom Ditt namn är : Blom, Hans b) Vi har följande program: int x = 3; string svar = "JA"; System.Console.WriteLine(... ); Hur skall den sista raden se ut för att få följande utskrift? Värdena JA respektive 3 får inte hårdkodas, dvs variablerna svar och x måste användas. Svaret är JA, x = 3 c) Vad blir utskriften om vi matar in 3 respektive 8 när programmet nedan körs? int x = int.parse( System.Console.ReadLine() ); int y = int.parse( System.Console.ReadLine() ); System.Console.WriteLine( x + y ); d) Skriv ett program där du kan mata in värdena för kateterna i en rätvinklig triangel, som sedan beräknar och skriver ut värdena för arean och hypotenusan. 6 Namnrymder 7 Felsökning och felhantering Denna övning är beroende av vilka utvecklingsmiljöer Du har tillgång till på din institution eller hemma. a) Skriv in programmet från sidan 68 i huvudboken och sätt en brytpunkt (breakpoint) på rad 10. Vilka värden får variabel x vid exekveringen? De flesta kompileringsfel kan härledas till olika feltyper som är mer eller mindre vanligt förekommande. Dessa feltyper är oftast numrerade för att lätt kunna återfinnas i dokumentation och annan hjälp. b) Skriv in programmet från sidan 68 i huvudboken, men byt ut datatyp int för variabel x till intx. Vid kompileringen skall Du nu få kompileringsfel CS0246. Leta rätt på mer information om fel av typ CS0246. c) Skriv om programmet för spårutskrifter i avsnitt 7.4, så att felet fångas upp i ett try-catch-block, och skriver ut en hel StackTrace så att Du kan se på vilken rad felet uppstod. 4

8 Jämförelser med några andra språk Denna övning är beroende av vilka utvecklingsmiljöer Du har tillgång till på din institution eller hemma. a) Välj något annat programmeringsspråk än C# och översätt programmen på sidan 68 och 69 till detta språk. Skriv in koden via lämplig källkodseditor, kompilera och exekvera. 9 Gör ritningen innan Du bygger huset 10 Elementen i strukturerad programmering 10.1 Selektioner Är följande villkor sanna eller falska dvs true eller false? Antag att a = 2 och b = 3. a) 3 * a == 2 * b b) (5 - a) * b < 7 c) b <= 3 d) (a < b) (b < a) e) (a * a < b)!(a * a < a) f)!((a < b) && (a < (b + a))) g)!(a < b)!(a < (b + a)) h) ((a == b) && (a * a < b * b)) ((b < a) && (2 * a < b)) i) ((a == b)!(b < a)) && ((a < b) (b == a + 1)) j) En affär som säljer disketter tar 10 kr styck då försäljningen omfattar färre än 25 disketter. Omfattar försäljningen 25 disketter eller fler är priset 8 kr styck. Skapa ett projekt (program) som frågar efter antalet disketter och beräknar och skriver ut antalet disketter, styckepriset samt totalsumman. (Testa programmet för 5, 25 och 35 sålda disketter). k) En kopieringsfirma tar 2 kr per kopia för dom första 100 exemplaren och därefter 1 kr per kopia. Skapa ett projekt (program) som frågar efter antalet kopior och sedan skriver ut kostnaden. (Testa programmet för 25 och 125 kopior). l) Skapa ett projekt (program) som i klartext anger molnigheten om du som indata anger molnigheten i procent. Klartexten framgår av tabellen nedan. Molnighet i procent Klartext 0-30 klart 31-70 halvklart 71-99 mulet 100 helmulet Ett lämpligt felmeddelande ska skrivas ut om indata ej finns i intervallet 0-100. 5

10.2 Iterationer a) Skriv ut siffrorna 1-10 med hjälp av en for-loop. b) Skriv ut siffrorna 1-10 med hjälp av en while-loop. c) Beräkna och skriv ut multiplikationstabellerna 1-5. Exempel på utskrift: d) Beräkna summan av 1 + 1/2 + 1/3 +... + 1/99 + 1/100. e) Antag att du sätter in 100 kr på banken den 1 januari under tre år. Om räntan är 5 % hur mycket har du då på banken den 1 januari år 3? Skriv ut resultatet för varje år (dvs för år 1, år 2 och år 3) f) Hur många kilo gräsfrö behövs för att så en gräsmatta, vars mått är 40 * 75 meter. Antag att det går åt 1 kilo frö per 200 m2. Skapa ett program som frågar efter längden och bredden på gräsmattan och beräknar och skriver ut antalet kilo gräsfrö som åtgår? g) Ange basen och höjden för en rektangel. Beräkna och skriv ut rektangelns yta och omkrets. h) Skapa ett program som beräknar hur mycket dricks en kypare skall ha på en restaurang. Dricksen är 15 % med ett minimibelopp på 20 kr. i) Skapa ett projekt (program) som beräknar och skriver ut en persons statliga inkomstskatt. Läs in den beskattningsbara inkomsten i programmet. Den statliga skatten beräknas enligt följande: Om inkomsten är mindre än 8900 kr betalas 0 kr i skatt. Om inkomsten är större än 8900 kr men mindre än 198700 kr betalas 100 kr i skatt. Om inkomsten är större än 198700 kr betalas 100 kr + 20 % av inkomsten över 198700 kr. Programmet ska fråga om fler personers inkomstskatt ska beräknas innan det avslutas. j) Skapa ett projekt (program) där användaren matar in sidorna i en triangel. Programmet skall skriva ut om triangeln är liksidig (samtliga sidor lika långa), likbent (två sidor lika långa) eller sned (alla sidor olika). Användaren skall kunna upprepa inmatningen. k) Skapa ett program där användaren matar in ett startkapital, startår och slutår samt aktuell räntesats. Programmet skall beräkna och skriva ut hur kapitalet växer då räntan beräknats och lagts till kapitalet en gång om året. Varje år ska skrivas ut samt summan för det året. 6

l) Skriv ett program där användaren kan mata in 10 heltal till en vektor och som sedan skriver ut det minsta talet, det största talet, medelvärdet av samtliga tal som finns i vektorn. m) Läs in namnet på 5 floder (Nilen, Donau, Spree, Volga, Thamsen) till en vektor. Skriv sedan ut dessa floder på skärmen. 11 Några grundläggande standardalgoritmer a) Du skall nu skapa ett program som innefattar ett flertal moment: Skapa en strukturpost med följande utseende: public struct Tenta { public string personnummer; public int poäng; public string betyg; } Programmet skall läsa in poängen på ett prov för 10 st studenter i poster som läggs i en vektor. I samband med inläsningen skall också betyget räknas ut och läggas in i posten. Poängsumma på provet är 0-80 poäng. Betyget sätts till U om poängen < 48, G om poängen är mellan 48 och 63, VG om poängen är 64 eller högre. Programmet skall sedan - Sortera vektorn på poäng. - Skriva ut alla resultat i sorterad ordning - Göra en brytning efter respektive betyg och skriva ut hur många som erhållit respektive betyg. Exempel på inmatning och utskrift: 12 Skrivning och läsning till och från datafiler a) Komplettera programmet från avsnitt 11 i övningshäftet (inmatning av tentaresultat) med skrivning av resultatet till en textfil utöver utskriften mot skärmen. 7

13 Jämförelser med några andra språk Denna övning är beroende av vilka utvecklingsmiljöer Du har tillgång till på din institution eller hemma. a) Välj något annat programmeringsspråk än C# och översätt programmet från avsnitt 11 i övningshäftet till detta språk (inmatning av tentaresultat). Skriv in koden via lämplig källkodseditor, kompilera och exekvera. 14 Objektorientering a) Ändra programmet från avsnitt 11 i övningshäftet (inmatning av tentaresultat) så att inmatningen istället sker via ett grafiskt gränssnitt. Byt också ut användandet av en array mot ett samlingsobjekt. Välj ett lämpligt sätt att visa upp resultatet i det grafiska gränssnittet. 8