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

Relevanta dokument
Malmö högskola 2008/2009 CTS

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

Laboration 13, Arrayer och objekt

JAVAUTVECKLING LEKTION 4

Malmö högskola 2008/2009 CTS

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Iteration while-satsen

Föreläsning 3. Iteration while-satsen

Laboration A Objektsamlingar

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

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

PROGRAMMERING-Java Omtentamina

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

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.

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

Laboration 12, Arrayer

Föreläsning 3-4 Innehåll

Tentamen , Grundläggande programmering i Java

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

OOP Tentamen

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

Tentamen i Programmering

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

JAVAUTVECKLING LEKTION 3

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

Laboration 10 - Eclipse

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

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Statistik över heltal

Objektorienterad programmering i Java

Instuderingsfrågor, del D

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

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

OOP Tenta

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

PROGRAMMERING-JAVA TENTAMINA

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

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

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

Programmering i C, 7,5 hp

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

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

Imperativ programmering. Föreläsning 2

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

DELPROV 1 I DATAVETENSKAP

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

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

TDDC77 Objektorienterad Programmering

Objektorienterad programmering D2

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Tentamen, EDAA10 Programmering i Java

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

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

JAVA Mer om klasser och objektorientering

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

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

Typkonvertering. Java versus C

Laboration 10 - NetBeans

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Parallellism, återblick

Dugga i Grundläggande programmering STS, åk

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

Tentamen ges för: Tentamensdatum: Tid:

Lösningsförslag till tentamen Datastrukturer, DAT037,

TENTAMEN OOP

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

OOP Objekt-orienterad programmering

Att öva på och förstå ett program med flera samverkande klasser.

OOP Objekt-orienterad programmering

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

OOP Objekt-orienterad programmering

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen. Lösningsförslag

TENTAMEN OOP

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

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

1 Iteration. 1.1 for-satsen

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

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

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

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

Del A (obligatorisk för alla)

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

729G04 Programmering och diskret matematik. Python 3: Loopar

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

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

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Transkript:

Laboration 5 Avsikten med laborationen är att du ska träna på att använda iterationer i dina program. I vanlig ordning placerar du dina lösningar i paketet laboration5. Uppgifterna är lätt matematiska till sin natur men det är inte matematiken som ska övas. Den är bara tacksam att använda i mindre uppgifter. Lösningar till uppgifterna och extrauppgifterna finns i slutet av laborationen. Ta inte del av en lösning innan du har gjort en egen. Iterationerna som ska tränas i laborationen är: for-sats while-sats Program1 do-while-sats Skriv klassen Interval1 vilken ska innehålla metoden interval. Metoden interval ska utföra följande: låter användaren mata in två intervallgränser (heltal) skriver ut intervallet skriver ut heltalen i intervallet skriver ut summan av talen i intervallet. Intervallgränserna ska ingå i summan. Du ska använda en for-loop när du löser uppgiften. Till höger ser du ett körresultat. Startklassen ska se ut så här: public class StartP1 { Interval1 p1 = new Interval1(); p1.interval(); DA129A, Programmering 1 1

Program2 Skriv en klass Interval2, med metoden public void interval(int min, int max) Om du sedan startar programexekveringen i StartP2 så ska programmet fungera på samma sätt som i Program1. Klassen StartP2 ser ut så här: public class StartP2 { Interval2 p2 = new Interval2(); int min,max; min = Integer.parseInt( JOptionPane.showInputDialog( "Ange undre intervallgränsen" ) ); max = Integer.parseInt( JOptionPane.showInputDialog( "Ange övre intervallgränsen"); p2.interval(min,max); StartP2 prog = new StartP2(); Program 3 Du ska utgå från klassen StartP2 när du skriver StartP3 (även StartP3 använder Interval2). Skillnaden mellan programmen är att det är inmatningskontroll vid inmatningen av det andra heltalet. Det andra heltalet måste var minst lika stort som det första heltalet. Om t.ex. det första inmatade talet är 15 så ska programmet endast acceptera 15 och uppåt som värde i det andra heltalet. Om användaren matar in ett för litet tal ska användaren uppmanas att mata in ett värde på nytt. Du ska göra denna kontroll med en do-while-loop. Nedan ser du ett körresultat: 2

Program 4 Program 4 ska undersöka hur många tal det behövs i en serie för att uppnå en viss summa. I serien ökar alltid värdet med ett från ett tal till nästa. Exempel på serier är 7 8 9 10 11 12 19 20 21 22 23 24 25 26 27 Exempel på körresultat: Om en serie börjar med 7 och summan 30 ska uppnås krävs 4 tal: 7+8+9+10 (= 34) Om en serie börjar med 13 och summan 100 ska uppnås krävs 7 tal: 13+14+15+16+17+18+19 Du ska utgår från main-metoden i klassen StartP4 när du löser uppgift 4: public class StartP4 { Numbers numbers = new Numbers(); int startvalue = Integer.parseInt( JOptionPane.showInputDialog( "Ange startvärde" ) ); int sum = Integer.parseInt( JOptionPane.showInputDialog( "Ange lägsta summa" ) ); int counter = numbers.countnumbers( startvalue, sum ); // Steg 1 nedan String res = numbers.series(startvalue, counter ); // Steg 2 nedan JOptionPane.showMessageDialog( null, "Det krävs " + counter + " termer: " + res ); public static void main( String[] args ) { StartP4 prog = new StartP4(); Programmet StartP4 löser uppgiften i två steg, nämligen genom att först anropa metoden countnumbers och sedan anropa metoden series. Din uppgift är att skriva dessa metoder. Var god vänd! 3

Steg 1 countnumbers Skriv metoden public int countnumbers(int startvalue, int sum) vilken ska beräkna det antal termer som behövs för att minst komma upp i en summa. I det första körresultatet ovan ska metoden returnera 4 och i det andra körresultatet ska metoden returnera 7. Du kan använda nedanstående program när du testar metoden: public class StartP4a { Numbers p4 = new Numbers(); int nbr1, nbr2, nbr3, nbr4; Steg 2 serie nbr1 = p4.countnumbers(7,30); nbr2 = p4.countnumbers(13,100); nbr3 = p4.countnumbers(13,93); // krävs exakt 6 termer nbr4 = p4.countnumbers(13,94); // krävs 7 termer JOptionPane.showMessageDialog( null, nbr1 + ", " + nbr2 + ", " + nbr3 + ", " + nbr4); Skriv metoden public String series(int startvalue, int numbers) vilken ska returnera en sträng på formen [7,8,9,10,11,12,13,14], dvs med hakparenteser och talen uppräknade med komma emellan. Anrop Resultat p4.series(4,11) [4,5,6,7,8,9,10,11,12,13,14] (11 tal med start på 4) p4.series(10,3) [10,11,12] (3 tal med start på 10) Tillverka på egen hand en testklass, StartP4b, och testkör tills du är nöjd med din lösning. Testning Nu kan du testköra StartP4.java. 4

Program5 Du ska skriva ett program vilket låter användaren mata in ett antal utgifter (t.ex. efter en inköpsrunda). När användaren är klar klickar hon på avbryt (värdet null returneras i stället för ett String-objekt). Då berättar programmet följande: Antal inköp Total kostnad för inköpen Inmatningsproblematiken kan du lösa med en while-loop. Strukturen kan vara följande: str = Inmatning av belopp som String while(str!=null) { // nödvändig kod str = Inmatning av belopp som String Exempel på programkörning 5

Program 6 Du ska skriva ett program vilket är menystyrt. Användaren ska presenteras följande meny: 1. Intervallsumma Funktion som den i Program3 2. Seriesumma Funktion som i Program4 3. Inköp Funktion som i Program5 4. Avsluta programmet avslutas Exempel på programkörning Efter valet av 2 kommer samma sak hända som vid körning av Program 4. Vad som krävs för detta är dessa två rader med kod: StartP4 prog = new StartP4(); 6

Lösningar Program 1 public class Interval1 { public void interval() { int min,max,sum=0; String res; min = Integer.parseInt( JOptionPane.showInputDialog( "Ange undre intervallgränsen" ) ); max = Integer.parseInt( JOptionPane.showInputDialog( "Ange övre intervallgränsen" ) ); res = "Intervall: [" + min + "," + max + "]\n" + "Tal i intervallet:"; for(int i=min; i<=max; i++) { sum += i; res += " " + i; res += "\ntalens summa: " + sum; JOptionPane.showMessageDialog( null, res ); Program 2 public class Interval2 { public void interval(int min, int max) { int sum=0; String res= "Intervall: [" + min + "," + max + "]\n" + "Tal i intervallet:"; for( int i = min ; i <= max; i++ ) { sum += i; res += " " + i; res += "\ntalens summa: " + sum; JOptionPane.showMessageDialog( null, res ); Program 3 public class StartP3 { Interval2 p2 = new Interval2(); int min,max; min = Integer.parseInt( JOptionPane.showInputDialog( "Ange undre intervallgränsen" ) ); do { max = Integer.parseInt( JOptionPane.showInputDialog( "Ange övre intervallgränsen, lägst " + min ) ); while( max < min ); p2.interval( min, max ); StartP3 prog = new StartP3(); 7

Program 4 public class Numbers { public int countnumbers(int min, int sum) { int n=0; while(sum>0) { n++; sum -= min; min++; return n; public String series(int start, int numbers) { String res = "["; while(numbers>0) { res += start; start++; numbers--; if(numbers>0) res += ","; return res + "]"; --------------------------------------------------------------------- public class StartP4 { Numbers numbers = new Numbers(); int startvalue = Integer.parseInt( JOptionPane.showInputDialog( "Ange startvärde" ) ); int sum = Integer.parseInt( JOptionPane.showInputDialog( "Ange lägsta summa" ) ); int count = numbers.countnumbers( startvalue, sum ); // Steg 1 String res = numbers.series(startvalue, count ); // Steg 2 JOptionPane.showMessageDialog( null, "Det krävs " + count + " termer: " + res ); public static void main( String[] args ) { StartP4 prog = new StartP4(); 8

Program 5 public class Program5 { double cost, sum=0, counter=0; String str; JOptionPane.showMessageDialog( null, "Programmet beräknar kostnaden för ett antal inköp." ); str = JOptionPane.showInputDialog( "Ange en utgift (Avbryt för kostnad)" ); while(str!=null) { cost = Double.parseDouble( str ); sum += cost; counter++; str = JOptionPane.showInputDialog( "Ange en utgift (Avbryt...)" ); JOptionPane.showMessageDialog( null, "Antal inköp: " + counter +"\ntotal kostnad: " + sum ); ---------------------------------------------------------------------- public class StartP5 { Program5 p5 = new Program5(); p5.program(); Program 6 public class Program6 { public void programloop() { StartP3 p3 = new StartP3(); StartP4 p4 = new StartP4(); Program5 p5 = new Program5(); String menu = "ALTERNATIV\n\n1. Intervallsumma\n" + "2. Seriesumma\n3. Inköp\n4. Avsluta\n\nVälj alternativ"; int choice = Integer.parseInt( JOptionPane.showInputDialog( menu ) ); while((choice!=4) && (choice!=0)) { switch(choice) { case 1 : p3.program(); break; case 2 : p4.program(); break; case 3 : p5.program(); break; choice = Integer.parseInt( JOptionPane.showInputDialog( menu ) ); ---------------------------------------------------------- public class StartP6 { Program6 p6 = new Program6(); p6.programloop(); 9