Ett exempel som illustration till Laboration 1

Storlek: px
Starta visningen från sidan:

Download "Ett exempel som illustration till Laboration 1"

Transkript

1 Ett exempel som illustration till Laboration 1 Filen java_average_points.zip innehåller Java-koden till exemplet. Programmets avsikt enligt kravspecifikationen Användaren matar in poäng på en tentamen för varje kursdeltagare, och programmet räknar ut och visar medelpoängen för tentamen. Design Programmets indelning i delsystem eller huvudfunktioner visas i denna modell (ingen formaliserad notation, går exempelvis bra med rektanglar i stället): En fördjupning, förfining av denna modell visar hur bearbetningen är tänkt att gå till. Vi har en design i form av en algoritm. Den beskrivs i detta JSP-diagram: Anvisningar om JSP: Nedan visas hur samma bearbetning skulle kunna beskrivas med text. 1. Starta inmatningen för en kurs. 2. Skriv in poängen för en kursdeltagare, och upprepa detta för alla övriga kursdeltagare. 3. Tala om för programmet att det inte ska matas in fler. 4. Programmet summerar de inmatade poängen och räknar sedan ut medelpoängen. 5. Medelpoängen visas. 6. Programmet frågar om användaren om denne ska sluta eller registrera poäng för en annan kurs. 7. Om svaret är "sluta", avslutas programmet. I annat fall utförs steg 1. I fortsättningen används endast JSP-diagrammet och den ovanstående beskrivningen av programmets avsikt. 1

2 Granskning 1 Granskning av designen Antag, att detta JSP-diagram hade varit granskningsobjektet för deluppgift 1 i laborationen. Låt oss säga, att checklistan bara har tre kriterier (ID är ett identifikationsnummer för kriteriet där C:et indikerar att numret ett nummer i checklistan för att skilja det från andra nummer). Checklista för design ID Fråga / kriterium Kommentarer C001 C002 C003 C004 Är allt begripligt? Kommer algoritmen fram till en slutpunkt? Stämmer strukturen med den högnivåstrukturen? Finns logiska fel? Kommentar: Skapa checklistan utifrån vad det är som ska granskas. Vissa kriterier kan användas i de flesta checklistor, medan andra är specifika för den aktuella situationen. Rada inte upp kriterier utan att ha tänkt igenom dem med avseende på överlappningar och vad du vill komma åt med vart och ett av dem överlappningar. Är exempelvis C004 något som fångas upp redan av C001? Finns det en skillnad mellan C001 och C004 i så fall vilken är den? Protokollet för den genomförda granskningen: Protokoll för ganskning av JSP-diagrammet Nr Granskat Felbeskrivning KID Defekttyp 1 Tomma rutan Ska tomma rutan ha innehåll? C Medelvärde Varifrån kommer antalet som används för att räkna ut medelpoängen? 3 JSP kommer att nu ett slut C001 2 Åtgärd OK C002 - X 4 JSP, Högnivå JSP-strukturen stämmer inte med indelningen i delsystem. 5 Avbryt?, Sluta? Framgår inte vad som ska hända när användaren har gjort sitt val C003 2 C003 2 Kommentarer till protokollet (här av pedagogiska skäl i en verklig situation helst inga): OK Man begriper från sin allmänbildning, att en totalsumma ska divideras med antalet kursdeltagare för att få medelpoängen. Summan räknas ut i rutan Summera, men varifrån kommer antalet? 3. Kommer algoritmen till ett slut? Ja, det gör den. Det finns avslutningar på iterationerna och programmet. 4. JSP-diagrammets struktur stämmer inte med den övergripande modellens indelning i delsystem (eller huvudfunktioner). Exempel: Summering (en beräkning) utförs medan inmatningen av poängen pågår. 5. Det verkar vara underförstått, att om användaren svarar "Ja", blir variabeln avbryt = ja, vilket leder till att iterationen upphör p.g.a. villkoret UNTIL avbryt. Motsvarande skulle då gälla för Sluta?. När granskningen pågår, ska man inte gräva efter orsaker eller spekulerar om lösningar. Ett vanligt misstag är att falla för frestelsen att göra detta. Håll under granskningen fokus på att enbart finna och notera olika slags defekter och oklarheter. 2

3 Åtgärder för designen Efter att granskningen är klar, analyseras resultatet och beslut fattas om vilka åtgärder som ska vidtagas. Det noteras kortfattat i protokoll. Vid behov tillfogas kommentarer (av pedagogiska skäl finns här flera kommentarer). Protokoll för ganskning av JSGP-diagrammet Nr Granskat Felbeskrivning KID Defekttyp Åtgärd 1 Tomma rutan Ska tomma rutan ha innehåll? C001 1 Gör jobbet 2 Medelvärde Varifrån kommer antalet som används för att räkna ut medelpoängen? C001 2 Ingen 3 JSP OK C X 4 JSP, Högnivå JSP-strukturen stämmer inte med indelningen i delsystem. 5 Avbryt? Sluta? Framgår inte vad som ska hända när användaren har gjort sitt val C003 2 JSP ska följa högnivåstrukturen C003 2 Rita in. OK 1. Den tomma rutan ska ha texten "Gör jobbet". Man kom inte på något bättre än så. Ett alternativ var att ta bort rutan och låta rutorna "Inmatning", "Beräkning" och "Utskrift" anknyta till rutan "En kurs". Den fick dock vara kvar p.g.a. att bearbetningen för en kurs kan ses som två huvudoperationer: a. Utför allt som har att göra med att mata in poängen, beräkna medelpoängen och visa den. Detta skulle kunna utföras av en metod (eller subrutin, procedur eller delsystem) b. Fråga om användaren vill avsluta programmet. Diagrammet skulle då kunna ses som fullständigt på den detaljnivån. Det som kommer under den tomma rutan är en mer förfinad detaljnivå. Utifrån den aktuella situationen bedömer designern hur mycket detaljer som behöver ritas. Diagrammet ritas uppifrån och ner - detaljnivå för detaljnivå. En ny detaljnivå läggs till där man finner behov av det. 2. Det finns inget behov av att i diagrammet visa varifrån antalet imatade poängtal hämtas, eftersom det anses vara så självklart att det räknas ut på något sätt. Det överlåts därmed till programmeraren att lösa detta på ett lämpligt sätt. 3. Ingen åtgärd. Om rutan "Sluta?" inte hade funnits, hade man varit tvungen att lägga till den. 4. Beslut fattades om att översiktsmodellens struktur med tre huvudfunktioner, ska framgå tydligt i JSP-diagrammet och programkoden. Att ändra strukturen, är en stor ändring med hög risk för att misstag begås och fel uppstår. Därför är det vanligt, att denna typ av ändring undviks såvida det inte finns starka skäl till att genomföra den. Defekter rörande strukturen måste alltså upptäckas och åtgärdas tidigt i utvecklingsarbetet, annars bör man vara beredd på att acceptera att de finns permanent i systemet. Att göra strukturella ändringar sent i utvecklingsarbetet, är mycket kostsamt, eftersom man måste riva upp mycket av det som redan har implementerats. Här upptäcktes problemet tidigt. Det hade varit ännu bättre, om det hade skett innan någon programmering hade hunnits utföras. Man kan resonera så här om denna typ av defekt: Är det viktigt att upprätthålla indelningen i tre huvudfunktioner? Algoritmen ser ju ut att ändå göra sitt jobb. Beställaren ser inte hur det går till på insidan utan endast att programmet visar rätt medelpoäng. Om beställaren är nöjd med resultatet, varför då bekymra sig om systemets interna struktur? Om beställaren tänker använda programmet en kort tid, spelar det ingen roll. Om beställaren tänker använda det under många år som en viktig del i verksamheten, uppstår i framtiden behov av att ändra det och utöka 3

4 funktionaliteten, t.ex. att lagra poängen i en databas och göra statistiska beräkningar. Då underlättas underhållet och vidareutvecklingen, om systemet har en struktur med en tydlig indelning i funktioner. 5. Rita in i JSP-diagrammet: Vad som händer när användaren har gjort sitt val i rutorna Sluta och Avbryt. Detta görs med tanke på att det senare under systemets livstid kommer att vara andra personer än utvecklarna, som utför underhålls- och utbyggnadsarbetet. Det visade sig vara fråga om en avsiktligt ofullständighet. Designern har gjort bedömningen, att det är självklart vad som händer efter att användaren har svarat på frågan och ville då inte rita in det. Är det lika självklart, när någon annan än designern läser diagrammet? Om det inte är det, är det klokt att rita en ny detaljnivå. Man valde att göra detta. Korrigerat JSP-diagram Rutan Avbryt! betyder att något ska göras så att UNTIL avbryt kommer att avbryta iterationen, t.ex. att en variabel med namnet avbryt sätts till Ja. Motsvarande för Sluta!. Om man uttryckligen vill ha en variabel för detta, kan det visas genom att skriva avbryt = ja eller avbryt = true i rutan. Ett streck i en ruta kallas för Null och betyder att inget ska göras. Det går inte att lägga till operationer under en Nullruta. En förnyad granskning genomförs för att kontrollera att ändringar har genomförts. Om det är riktigt genomförda, markeras det med ett X i kolumnen OK. 4

5 Granskning 2 Granskning av hur programkoden uppfyller designen Antag, att uppgift 2 i laborationen hade avsett nedanstående programkod. Det är meningen, att den ska utföra exakt det som beskrivs i JSP-diagrammet. package java_medelbetyg; import java.io.ioexception; public class main { public static void main(string[] args) throws IOException { //Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser. //Klassen AveragePoints innehåller en metod som räknar ut medelvärdet //av ett valfritt antal poängvärden, som användaren matar in. //Det finns flera versioner av klassen, som förklaras i dokumentet // exempel_average_points.pdf. AveragePoints00 ap = new AveragePoints00(); //AveragePoints01 ap = new AveragePoints01(); //AveragePoints02 ap = new AveragePoints02(); //AveragePoints03 ap = new AveragePoints03(); //AveragePoints04 ap = new AveragePoints04(); //AveragePoints05 ap = new AveragePoints05(); //AveragePoints06 ap = new AveragePoints06(); } ap.calculateaveragepoints(); // Rutan 'Medelpoäng för kurser' i JSP-diagrammet. } 5

6 Klassens namn: AveragePoints00. public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 150; //Versaler för konstanter enligt konventionen för Java //Variabler int x, i = -1, sum; //x = talet som matades in, i = varvräknare, sum = summan av poängen. String svar; //Användarens svar på frågor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. int[] tal = new int[antal]; //Det 150:e elementet har index 149. // För IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska // läsas). BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do { // En kurs // Tomma rutan i JSP-diagrammet utgörs av allt inne i loopen do { //Inmatning (användaren matar in poängen ett åt gången) System.out.printf("Poäng följd av ENTER (0 och ENTER för att avsluta): "); i = i + 1; x = Integer.parseInt( br.readline() ); //Inmatning en poäng tal[i] = x; // Programmeraren använder talet 0 för att representera att användaren vill // avbryta inmatningen. } while (!(x == 0) i == ANTAL ); // Avbryt? //Programmeraren vet att det inte går att lägga in fler värden än vad arrayen är //dimensionerad för och såg till att loopen avbryts om arrayen är full ( i === ANTAL). //Ett tillägg i koden av något som inte finns i designen (JSP-diagrammet). //Beräkning //Summera sum = 0; for (int k = 0; k <= i; k++) { sum = sum + tal[k]; } //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), // högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); System.out.format("%7.1f%n", (double)(sum/(i + 1))); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); } while (!svar.equals("j")); //Sluta? System.out.println("Klart."); } //END calculateaveragepoints00 6

7 Checklista för programkodens överensstämmelse med designen ID Fråga / kriterium Kommentarer C001 Går det att följa från diagrammet till koden? Spårbarhet är mycket viktigt. C002 Stämmer koden med diagrammet? Den kan göra det även om spårbarheten är dålig. C003 Svårt att förstå vad koden gör? En svårbegriplig kod medför höga underhållskostnader. C004 Finns logiska fel? Leder ofta till felaktigt beteende. En allvarlig typ av defekt. Kommentarer: C002 kan delas upp i flera kriterier, t.ex. alla brytvillkor för loopar, selektioner. Även kriterier för god programmerarsed och god programstruktur kan beaktas. Sök på Internet för coding conventions, programming practice och liknande begrepp. Exempel på två webbplatser för detta: Protokoll för ganskning av programkodens överensstämmelse med designen (ingen testkörning) Nr Granskat Felbeskrivning KID Defekttyp 1 Spårbarhet design till kod OK pga samma namn i nästan samma struktur Åtgärd C001 - X 2 Rutan Avbryt? OK C002 - X 3 Separeringen av Beräkning och Utskrift. 4 Hur antalet inmatade poäng fås fram 5 Alla möjliga poängtal går att mata in Uträkning och utskrift av medelvärdet ej separata i koden. Svårt att förstå vad (i + 1) är i denna programrad: System.out.format("%7.1f%n", (double)sum/(i + 1)) Går inte att ange 0 poäng pga att nollan tolkas som att användaren vill avbryta inmatningen. 6 Rutan Avbryt? Ej i JSP: Koden avbryter automatiskt när man har mata in det maximala antalet poäng som ryms i arrayen. 7 Brytvillkoret för iterationen Inmatning Ingen variabel som heter avbryt trots att JSP tyder på att den borde finnas C002 2 C003 2 C004 3 C002 2 C Brytvillkoret för iterationen Ingen variabel som heter sluta trots C003 2 En kurs att JSP tyder på att den borde finnas Kommentar: För programkod kan det bli lättare att hänvisa till vissa platser i koden, om man visar radnumren (felbeskrivningen i punkt 4 hade blivit kortare då). 1. Ja, det går. Det finns kommentarer i koden där namnen i JSP-diagrammet används (borde kanske markeras tydligare?). Det gör det lättare att hitta platsen i koden, där det som hör till rutan utförs. Brytvillkoren för rutorna En kurs och Inmatning visas i koden med en kommentar på rätt plats. 2. Vid inmatningen av en poäng skriver användaren in talet noll, vilket tolkas som en order om att avbryta. Rutan Avbryt? säger egentligen bara att programmet ska kontrollera, om det har hänt något, som gör att inmatningen av poäng ska avbrytas. Det sägs inget om hur det ska göras. Programmeraren har löst det på detaljnivå som inte finns i JSP-diagrammet. Koden stämmer med diagrammet. OK 3. I programkoden görs uträkningen av medelvärdet och utskriften av det i en enda instruktion: 7

8 System.out.format("%7.1f%n", (double)sum/(i + 1)). Det ska inte vara så enligt diagrammet: Först räknas medelvärdet ut, och sedan skrivs det ut. Det är två olika operationer. Notera i protokollet: Uträkning och utskrift av medelvärdet ej separata i koden. Hur ska denna avvikelse klassas? För användarens del fungerar den nuvarande lösningen. Det skulle kunna motivera klassning som typ 1 eller rent av som inget fel alls. Lösningen försvårar däremot systemunderhållet, eftersom den inte följer huvudstrukturen, som är utformad för att underlätta underhållet och den framtida utbyggnaden genom att ha en tydlig struktur utifrån en indelningen i huvudfunktioner. Då måste avvikelsen klassas som allvarligare en typ 1. Det blir då typ 2, eftersom det inte är tillräckligt allvarligt för att klassas som typ Det är nödvändigt att sätta sig in i den föregående programkoden för att förstå att (i + 1) är antalet imatade poängtal. Om det är svårt att förstå vad programmet gör, tar det längre tid att utföra underhållsarbete, vilket därmed kostar mer pengar. Dessutom ökar risken för att nya fel uppstår p.g.a. oförutsedda sidoeffekter (ripple effects). 5. Fritt från logiska fel? Inmatningen av poängen 0 tolkas som att användaren vill avbryta inmatningen av poäng. Det gör det omöjligt att registrera att en kursdeltagare har fått noll poäng. Detta är ett logiskt fel. I protokollet noteras Går ej att registrera 0 poäng. Att programmet inte kan göra allt som det ska kunna, är ett allvarligt fel. 6. Designern har inte tänkt i termer av att det skulle finnas ett maximalt antal. Detta framtvingas genom att programmeraren har valt en array för att lagra de inmatade poängen. Om de i stället hade lagrats i en lista, skulle det inte ha funnits något maximalt antal. 7. Koden tar längre tid att förstå, om det inte är tydligt vad det är som avgör om loopen ska avbrytas. I koden finns dessutom två brytvillkor, vilket gör det värre. Undvik att ha en massa jämförelser while-klausulen. Det blir komplicerat att göra rätt om det finns flera AND och OR i jämförelsen. Också fortsätter man så tills man har kontrollerat allt som är av intresse för att kunna avgöra hur pass väl som programkoden representerar lösningen i designen. För att upprepa, denna granskning hade som syfte att kontrollera att programkoden stämmer med designen, och därför gjordes ingen testexekvering av den. Programmerare har förstås gjort sina egna exekveringstester för att försäkra sig om att allt blir rätt, t.ex. att programmet har ett korrekt värde på hur många poängtal som har matats in. Innan man går vidare med systematiska, protokollförda testkörningar, vill utvecklingsgruppen försäkra sig om att programmet har en struktur och utför operationer, som stämmer med designen. Resultatet av denna jämförelse kan göra det nödvändigt att ändra programkoden och/eller designen (programmeraren kan ha gjort en bättre lösning). 8

9 Åtgärder för programkoden Protokoll för ganskning av programkoden jämförd med designen (ingen testkörning) Nr Granskat Felbeskrivning KID Defekttyp 1 Spårbarhet design till kod OK pga samma namn i nästan samma struktur 9 Åtgärd C001 - Ingen X 2 Rutan Avbryt? OK C002 - Ingen X 3 Separeringen av Beräkning och Utskrift. 4 Hur antalet inmatade poäng fås fram 5 Alla möjlig poängtal går att mata in Uträkning och utskrift av medelvärdet ej separata i koden. Svårt att förstå vad (i + 1) är på programraden System.out.format... Går inte att ange 0 poäng pga att nollan tolkas som att användaren vill avbryta inmatningen. 6 Rutan Avbryt? Koden avbryter automatiskt när man har mata in det maximala antalet poäng som ryms i arrayen. 7 Brytvillkoret för iterationen Inmatning 8 Brytvillkoret för iterationen En kurs Ingen variabel som heter avbryt trots att JSP tyder på att den borde finnas Ingen variabel som heter sluta trots att JSP tyder på att den borde finnas C002 2 C003 2 C004 3 Separera Ny variabel för antal inmatade poäng. Annat sätt att avbryta C002 2 Ingen X C003 2 C003 2 Ny variabel: avbryt Ny variabel: sluta Kommentar: För programkod kan det bli lättare att hänvisa till vissa platser i koden, om man använder radnumren. Efter att granskningen är klar, analyseras resultatet och beslut fattas om vilka åtgärder som ska vidtagas. 3. Uträkningen av medelvärdet och utskriften av det ska göras om till separata operationer i programkoden. 4. Det blir tydligt vad som är detta värde och hur det fås fram. Det finns olika sätt att göra detta, t.ex. en räknare i loopen eller summeringen i +1 efter loopen. 5. Använd något annat än ett tal för att tala om att inmatningen av poäng ska avbrytas. 6. Defektens orsak är att programmeraren har valt en array för att lagra poängtalen. Lösningen med en array fungerar. Den behålls, eftersom det skulle medföra alltför stort arbete med att göra om programmeringen för att använda en annan datastruktur. Om man i arbetet med kravspecifikationen hade frågat sig hur många poängtal, som ska kunna hanteras i en kurs, hade man antingen preciserat ett högsta antal eller lämnat öppet för ett obegränsat antal. JSP-diagrammet hade medvetet kunnat ritas så att detta framgick. Rutan Avbryt? definieras som att den avser icke specifierade kontroller av sådant, som ska leda till att inmatningen av poäng avbryts. JSP-diagrammet bedömdes bli svårtläst, om detaljer om alla anledningar ritades in. Det skulle också bli besvärligt att uppdatera det, om man senare kom fler anledningar till att inmatningen ska avbrytas. Beslut fattades om att detaljer om kontrollen av anledningarna till att avbryta ska finnas samlade tillsammans i programkoden. Om det finns många och komplicerade villkor, kan en särskild metod få hantera detta. Detta problem antyder, att det kan uppstå besvärliga situationer, om an börjar programmera innan designen och kravspecifikationen är tillräckligt genomtänkta. Det bör ha gjorts minst två granskningar innan programmeringen påbörjas: en som upptäcker defekter och en som bekräftar att alla defekterna har åtgärdats. 7. Lägg jämförelserna inne i loopen i stället för att ha dem på while-raden. En boolesk variabel används för att minnas resultatet av jämförelserna, och det är bara den som finns på while-raden. Lägg märke till att flera av ändringarna avser att göra programmets operationer och struktur lätta att förstå, vilket är detsamma som att underlätta underhållsarbetet. OK

10 Klassens namn: AveragePoints01. Korrigerad programkod //ÄNDRAT FRÅN VERSION 00: // Lagt till antalinmatade. // x och sum har nu datatypen Double - ändrat på flera platser // Ändra brytvillkor i inmatningsloppen från 0 till -1. // Medelpoängen räknas ut och skrivs ut som två separata operationer. public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 150; //Versaler för konstanter enligt konventionen för Java //Variabler int i = -1; //i = varvräknare, 1 lägre än det lägsta värdet som arrayindexet får ha Double x, sum; //x = talet som matades in, sum = summan av poängen. Double för decimalpoäng //och för att få decimaler i resulatet av divisionen. int antalinmatade; //NYTT: Används för tydlighet för den som läser koden String svar; //Användarens svar på frågor Double medel; //Medelvärdet Boolean avbryt, sluta; //NYTT: För tydlighet i looparnas brytvillkor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. Double[] tal = new Double[ANTAL]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska //läsas). BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 'Gör jobbet'-rutan i JSP-diagrammet utgörs av allt inne i loopen do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) do { //Inmatning en poäng (den tomma rutan i JSP-diagrammet) System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); i = i + 1; x = Double.parseDouble( br.readline() ); //Användaren skriver in ett tal tal[i] = x; // Programmeraren använder talet -1 för att representera att användaren vill // avbryta inmatningen. // Om x är -1 sätts (x == -1) True, annars till False. // Om i = ANTAL, sätts i == ANTAL till True,annars till false. // Om det är minst ett True, sätts avbryt till True, annars till False. avbryt = (x == -1) i == ANTAL; } while (!avbryt); // Avbryt? //Programmeraren vet att det inte går att lägga in fler värden än vad arrayen är //dimensionerad för och såg till att loopen avbryts om arrayen är full ( i === ANTAL). //Ett tillägg i koden av något som inte finns i designen (JSP-diagrammet). antalinmatade = i + 1; // Beräkning 10

11 //Summera sum = 0.0; for (int k = 0; k <= i; k++) { sum = sum + tal[k]; } //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), // högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); medel = (double)(sum/antalinmatade); // Utskrift System.out.format("%7.1f%n", medel ); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); sluta = svar.equals("j"); } while (!sluta); //Sluta? System.out.println("Klart."); } //END calculateaveragepoints Det finns ett annat sätt att skriva denna rad, om den upplevs som svår att förstå (skulle kunna kallas smartkodning): avbryt = (x == -1) i == ANTAL; Så här: avbryt = false; // Ge variabeln ett default-värde. IF (x == -1) { avbryt = true; } // Ersätt default värdet IF (i == ANTAL) {avbryt = true; } // Ersätt default värdet även om det redan gjorts // på raden ovanför (slipper använda else). Detta är ett vanligt sätt att skriva för att slippa komplicerade sektionsstrukturer, som t.ex. denna enkla variant: if (x == -1) { avbryt = true; } else if (i == ANTAL) {avbryt = true; } else {avbryt = false; } Dessa tre kodstycken utför samma sak, men på olika sätt. De är ekvivalenta. Vilket av dessa tre sätt gör det lättast för dig att förstå vad koden gör? Använd det! Lägg märke till att detta avbryt = (x == -1) i == ANTAL; } while (!avbryt); // Avbryt? gör det lättare att förstå när While ska avbrytas, än detta: } while (!(x == 0) i == ANTAL ); // Avbryt? 11

12 Granskning 3 Exekvering av programkoden med avsikten att hitta så många fel som möjligt. Inspektion av programkodens kvalitet Man granskar programkoden för att se om logiken är korrekt. Även kriterier för god programmerarsed och god programstruktur kan beaktas (sök på Internet för coding conventions, programming practice och liknande begrepp). 1. Räknas medelvärdet ut korrekt? Granskaren gör en skrivbordskörning av detta segment av koden. Variabelvärden skrivs in på pappret. Granskaren bestämde sig för att se vilket resultat koden kommer att producera, om man matar in poängen 2 och 3. Kolumnerna 1, 2 och 3 innehåller variabelvärdena för varv 1, 2 och 3 genom DO-loopen. Nere till höger finns fyra kolumner för värdena 0, 1, 2 och 3 på variabeln k. Under var och en finns värdena för sum + tal[k]. Det visar sig, att resultatet blir 1,33. Det är fel, eftersom det rätta är 2,5. Man kan förstås även provköra koden och upprätta ett testprotokoll: Test Funktion Input Output Förväntad Verklig 1 Korrekt uträkning av medelvärde ,5 1,33 FEL! (Den blå texten är vad som kallas för ett testfall.) Alltså är något fel med hur uträkningen går till. I detta läge behövs ingen analys och felsökning. På inspektionsmötet meddelar inspektören de andra om problemet, vilket noteras i protokollet: Medelvärdet räknas ut fel. När granskningen är klar, diskuteras de upptäckta problemen. När det gäller detta problem, ges en av personer i uppdrag att analysera orsaken till felet. 12

13 Åtgärder Ska denna granskare även skriva om koden så att uträkningen görs korrekt? Det beror sig på om det finns andra ändringar, som berör samma avsnitt i koden. Det är inte bra om olika personer sitter på var sitt håll och gör sina ändringar. Det behövs samordning, t.ex. något av dessa alternativ: Först gör den ena personen sina ändringar. Detta är de viktigaste ändringarna eller de som leder till störst förändringar av kodstrukturen. I detta fall är det utan tvekan viktigast att först se till att medelpoängen räknas ut korrekt. Därefter gör den andra person sina ändringar och får då rätta sig efter den korrigerade kodens utseende. Samma person gör alla ändringar som berör samma avsnitt av koden. Analys av felorsaken: Varvräknaren i räknas upp under det varv då användaren väljer att avbryta och visar därmed en inmatning för mycket (i får ett för högt värde). Man bestämmer sig för att ändra koden så att variabeln i endast räknas upp, om användaren inte har matat in -1. Samma gäller för instoppningen av värdet i arrayen. Koden inne i loopen blev så här efter korrigeringen: Klassens namn: AveragePoints02. do { System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Integer.parseInt( br.readline() ); avbryt = (x == -1); if (!avbryt ) { i = i + 1; tal[i] = x; // Undvik att ändra avbryt från True till False. Ändra bara om det är till True. if (i == ANTAL){ avbryt = true; } } } while (!avbryt ); Den gamla metoden kopierades och gavs namnet calculateaveragepoints2, och koden i denna kopia skrevs om. Du kan i stället byta namn på dem gamla och låta den omskrivna fortfarande heta calculateaveragepoints. En skrivbordskörning visar i samma stil som föregående kodexempel visar, att nu blir medelpoängen den rätta. Konstruera testfall Nu ska man skriva ett testfall, som demonstrerar, att denna uträkning alltid hanteras rätt av programmet. Först en black box-test. Man matar in vissa poängvärden och kontrollerar att den uträknade medelpoängen är rätt. Test Funktion Input Förväntad Output Verklig 1 Korrekt uträkning av medelvärde ,5 1,33 FEL! Efter korrigering av programkoden: Kod version 02 (eller hur du föredrar att göra numreringen) 1 Korrekt uträkning av medelvärde Sluta=N 2 Korrekt uträkning av medelvärde (körs direkt efter Test 1) 2,5 2, ,7 (7,666 avrundat) 5,6 FEL! 13

14 En mer noggrann skrivbordskörning, som innefattar mer av koden, skulle avslöja felorsaken. För exemplets skull bestämmer sig testaren för se vilka värden som sum och antalinmatade har. Den rödmarkerade raden läggs till och programmet exekveras en gång till med samma input (avkommentera i koden, om du vill provköra detta). Man utför nu white-box-testning. //Summera sum = 0; for (int k = 0; k < antalinmatade; k++) { sum = sum + tal[k]; } System.out. println( sum= + sum + antal= + antalinmatade); //Medelvärde.... Utskriften under exekveringen ger sum=28 och antal=5. Varken summan eller antalet är rätt. De ska vara 23 respektive 3. En analys visar, att varvräknaren i inte nollas, innan värdena för Test 2 matas in. När talet 8 matas in, kommer i att få värdet 3, och talet 8 kommer att läggas in på index 2 (tredje elementet) i arrayen. Värdena från Test 1 ligger alltså kvar och kommer med i Test2. Åtgärd: Ändra koden så att i sätts till -1 innan inmatnings loopen börjar. Initier inte till -1 i variabeldeklarationen. Klassens namn: AveragePoints03. //Variabler int i; //i = varvräknare do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) i= -1; // i = 1 lägre än det lägsta värde som arrayindexet får ha do { //Inmatning en poäng Testkörning igen: Test Funktion Input Förväntad Output Verklig 1 Korrekt uträkning av medelvärde ,5 1,7 FEL! Efter korrigering av programkoden: Kod version 02 (eller hur du föredrar att göra numreringen) 1 Korrekt uträkning av medelvärde Sluta=N 2,5 2,5 2 Korrekt uträkning av medelvärde (körs direkt efter Test 1) Efter korrigering av programkoden: Kod version ,7 (7,666 avrundat) 1 Korrekt uträkning av medelvärde Sluta=N 2,5 2,5 2 Korrekt uträkning av medelvärde (körs direkt efter Test 1) Då var detta felet korrigerat ,7 (7,666 avrundat) 5,6 FEL! 7,7 14

15 2. Avbryts loopen för Inmatning korrekt, när arrayen innehåller det maximalla antalet element? Konstruera ett testfall, som kontrollerar att inmatningen avbryts, om antalet inmatade poäng överstiger 150. För att slippa mata in så många värden sätts ANTAL = 3 (testaren måste komma ihåg att ändra till 150 när testningen är klar). Testfallet kontrollerar att tre värden accepteras, men inte fyra. Test Funktion 7 Maxantalet inmatningar upprätthålls. Ändra ANTAL till 3. 8 Maxantalet inmatningar upprätthålls. Ändra ANTAL till 3. Input Förväntad ,0 2, Värdet 4 ska inte accepteras. Output Verklig Programmet kraschar med meddelande om att ArrayIndexOutOfBoundaries. Felmeddelandet talar om vilket rad, som felet inträffade på: Programkoden reagerar tydligen inte som den ska här. Felmeddelande säger, att koden försöker använda ett indexvärde, som ligger utför arrayens tillåtna indexgränser. Det är precis det som händer, om det fjärde värdet accepteras och sedan ska stoppas in som fjärde element i en array som har deklarerats för tre. 15

16 Koden skrivs om så att talet stoppas in i arrayen endast om det får plats: Klassens namn: AveragePoints04. do { System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Integer.parseInt( br.readline() ); avbryt = (x == -1); if (!avbryt ) { i = i + 1; // Undvik att ändra avbryt från True till False. Ändra bara om det är till True. if (i == ANTAL){ avbryt = true; } else { tal[i] = x; } //Endast om x får plats i arrayen } } while (!avbryt ); Ny testkörning: Programmet försöker fortfarande använda indexvärden utanför arrayens indexgränser, men på en annan plats i koden än förra gången. Orsaken till felet är, att i tillåts bli större än det högsta antalet tillåtna element i arrayen (i detta fall 2). Efter att i har blivit 2 på rad 50, ska loopen avbrytas på rad 55, men det sker inte. 16

17 Koden korrigeras så att följande händer, när i har blivit 2: x lagras i arrayen på index 2, avbryts sätts till True, loppen avbryts. Klassens namn: AveragePoints05. do { System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Integer.parseInt( br.readline() ); avbryt = (x == -1); if (!avbryt ) { i = i + 1; tal[i] = x; // Undvik att ändra avbryt från True till False. Ändra bara om det är till True. if (i == ANTAL - 1){ avbryt = true; } } } while (!avbryt ); Kanske utvecklaren borde överväga att lägga till konstanten talmaxindex = ANTAL 1 och döpa om variabeln i till talaktuelltindex och skriva så här i koden: if (talaktuelltindex == talmaxindex)... Det skulle göra det tydligare vad det är som kontrolleras i villkoret. Exekveringen ger nu ett korrekt beteende: Direkt efter den tredje inmatningen räknas medelvärdet ut. Den kombinerade testaren och programutvecklaren anser, att detta är ett acceptabelt beteende, men överlåter åt utvecklingsgruppen att fatta det slutliga beslutet om det. Så här håller man på tills allting fungerar till belåtenhet. Kommentar: I den urspungliga koden i klassen AveragePoints05 gjordes jämförelse så här: while (!avbryt i == ANTAL ) För att allt ska fungera korrekta måste uttrycket skrivas om till detta: while (!(x == -1) &&!(i == ANTAL - 1) ) Tips: Uttryck som innehåller flera jämförelser med negationer samt AND eller OR är vanliga felkällor. Var alltid misstänksam mot dem, och acceptera dem inte förr de har testats och analyserats noga. 17

18 Klassens namn: AveragePoints00. public void calculateaveragepoints() throws IOException { final int ANTAL = 150; int x, i = -1, sum; String svar; int[] tal = new int[antal]; //Det 150:e elementet har index 149. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do { // En kurs do { //Inmatning System.out.printf("Poäng följd av ENTER (0 och ENTER för att avsluta): "); i = i + 1; x = Integer.parseInt( br.readline() ); //Inmatning en poäng tal[i] = x; } while (!(x == 0) i == ANTAL ); // Avbryt? sum = 0; for (int k = 0; k <= i; k++) { sum = sum + tal[k];} System.out.print("Medelpoäng: "); System.out.format("%7.1f%n", (double)(sum/(i + 1))); System.out.printf ("Sluta? (J/N) "); svar = br.readline(); } while (!svar.equals("j")); //Sluta? System.out.println("Klart."); } 18

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

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva

Läs mer

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

Laboration 1. kompilera-ikonen exekvera-ikonen Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/

Läs mer

Lite logik. Kap 6: Sid 2

Lite logik. Kap 6: Sid 2 6 Loopar och val Lite logik Val mellan två alternativ Val mellan flera alternativ Sammansatta villkor Boolska variabler Jämför strängar While-loopar Do-loopar For-loopar Kortformer Kap 6: Sid 2 Lite logik

Läs mer

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.

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. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25 Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-0-2 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Elena Fersman besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

Laboration A Objektsamlingar

Laboration A Objektsamlingar Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

Läs mer

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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet. Uppgift 1 Ett programmeringsparadigm är i grund och botten ett sätt att arbeta, ett sätt att möta problem. Det finns flera olika paradigm där varje paradigm har sina egna styrkor och svagheter. Det som

Läs mer

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

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

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540 Tentamen för TDA540 Objektorienterad programmering DAG: 15-04-18 TID: 14:00 18:00 Ansvarig: Joachim von Hacht och Christer Carlsson

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

Laboration 13, Arrayer och objekt

Laboration 13, Arrayer och objekt Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

Läs mer

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen *:58/ID100V Programmering i C Exempel 3 DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst

Läs mer

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur Objekt-orienterad utveckling Saker man vill uppnå: Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 en systematisk metod för att gå från problembeskrivning till färdigt

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

PROGRAMMERING-JAVA TENTAMINA

PROGRAMMERING-JAVA TENTAMINA PROGRAMMERING-JAVA TENTAMINA Nicolina Månsson 2010-08-16 (Kontaktperson Nicolina Månsson, tel. 0768-530640) Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet o entliggörs senast: 2012-05-29. Tillåtna

Läs mer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2014 04 29, 8.00 13.00 Anvisningar: Denna tentamen består av tre uppgifter. Preliminärt ger uppgifterna

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

PROGRAMMERING-Java TENTAMINA

PROGRAMMERING-Java TENTAMINA PROGRAMMERING-Java TENTAMINA Nicolina Månsson 2010-03-17 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. - För

Läs mer

Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken

Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken KUNGLIGA TEKNISKA HÖGSKOLAN Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken Hannes Rabo 2015-08-30 hrabo@kth.se Introduktionskurs

Läs mer

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

Malmö högskola 2007/2008 Teknik och samhälle Laboration 8 Avsikten med denna laboration är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom

Läs mer

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade. Sortering Den sorteringsalgoritm som vi använder oss kallas selection sort (urvalssortering) och är en av många existerande sorteringsalgoritmer. Dess funktionssätt beskrivs kanske bäst genom ett konkret

Läs mer

HI1024 Programmering, grundkurs TEN2 2014-03-13

HI1024 Programmering, grundkurs TEN2 2014-03-13 HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) 2004-05-25, kl 8-13

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) 2004-05-25, kl 8-13 LUNDS TEKNISKA HÖGSKOLA Datavetenskap Nätverksprogrammering 2004 LÖSNINGAR Tentamensskrivning Nätverksprogrammering (EDA095 - FED) 2004-05-25, kl 8-13 DEL 1 - Frågor av teoretisk, principiell eller utredande

Läs mer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel

Läs mer

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde. Programmering hh.se/db2004 Föreläsning 7: Funktioner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Funktioner Statiska metoder 1 Kan ta 0 eller flera argument. 2 Kan producera

Läs mer

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM. JavaScript del1 Syftet med detta häfte är att sammanfatta det viktigaste i JavaScript så kort och koncist som möjligt men ändå tillräckligt omfattande för att ge god kännedom om en av de vanligaste teknikerna

Läs mer

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.

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. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

Laboration 12, Arrayer

Laboration 12, Arrayer Laboration 12, Arrayer Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration12 i ditt laborationsprojekt innan du fortsätter på denna laboration. Uppgift 1

Läs mer

Laboration 10 - Eclipse

Laboration 10 - Eclipse Laboration 10 - Eclipse Avsikten med laborationen är att du ska träna på att använda paket, att du ska packa några klassfiler i en jar-fil och slutligen använda innehållet i en jar-fil från en annan klass

Läs mer

Tentamen i Programmeringsteknik I, ES, 2010-03-18

Tentamen i Programmeringsteknik I, ES, 2010-03-18 Tentamen i Programmeringsteknik I, ES, 2010-03-18 Skriv tid: 14-17. Hjälpmedel: 1. Kurslitteratur, en av följande: Lewis & Loftus, Java Software Solutions Skansholm, Java Direkt Guzdial & Ericson, Intrododuction

Läs mer

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 Testning med JUnit 1 Inledning JUnit är ett ramverk för enhetstestning av Javakod. Det är utvecklat

Läs mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,

Läs mer

Genetisk programmering i Othello

Genetisk programmering i Othello LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G11 2009-10-09 Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se Innehållsförteckning 1. Inledning... 1

Läs mer

Planering Programmering grundkurs HI1024 HT 2015 - data

Planering Programmering grundkurs HI1024 HT 2015 - data Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

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

Malmö högskola 2007/2008 Teknik och samhälle Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa

Läs mer

Chapter 4: Writing Classes/ Att skriva egna klasser.

Chapter 4: Writing Classes/ Att skriva egna klasser. Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad

Läs mer

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: Bilaga C Eclipse 1 Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: www.eclipse.org help.eclipse.org www.eclipse.org/downloads/

Läs mer

Lösningsförslag övning 2.

Lösningsförslag övning 2. Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static

Läs mer

Input. Programmering. Andra källor

Input. Programmering. Andra källor Programmering hh.se/db2004 Föreläsning 13: Undantag - med exempel från input klassen Scanner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Input Standard Input Med standard

Läs mer

Kapitel 16: Programmering

Kapitel 16: Programmering Kapitel 16: mering Innehåll Komma igång: Volymen av en cylinder...2 Skapa och ta bort program...4 Skriva instruktioner och köra program...5 Redigera program...6 Kopiera och byta namn på program...7 PRGM

Läs mer

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Avancerade Webbteknologier

Avancerade Webbteknologier Projektledning, Business Knowledge Användbarhet & Layout Avancerade Webbteknologier Lkti Lektion 1 Kommunikation Tobias Landén tobias.landen@chas.se Avancerade webbteknologier del 1 (4 KY poäng) Syfte

Läs mer

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false. Laboration 2. I denna laboration skall ni programmera en robot som modelleras av den givna klassen Robot. En robot vistas i en enkel värld, som modelleras av klassen RobotWorld. Världen består av ett rutmönster

Läs mer

Krav på webbläsare. Manual för arbetslöshetkassorna. De webbläsare som är kompatibla med portalen är minst Internet Explorer 6.x och Firefox 2.

Krav på webbläsare. Manual för arbetslöshetkassorna. De webbläsare som är kompatibla med portalen är minst Internet Explorer 6.x och Firefox 2. Användarmanual till IAF:s portal för arbetslöshetskassor 1 (8) Manual för arbetslöshetkassorna Krav på webbläsare De webbläsare som är kompatibla med portalen är minst Internet Explorer 6.x och Firefox

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

Läs mer

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

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio Ditt första C#-program med Visual Studio 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å

Läs mer

Instuderingsfrågor, del D

Instuderingsfrågor, del D Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt

Läs mer

Innehållsförteckning

Innehållsförteckning Innehållsförteckning Ämne Sida Program Hur ska man lära sig programmering med Java? 11 Kapitel 1 Introduktion till programmering 13 1.1 Vad är programmering? 14 1.2 Vad är en algoritm? 16 1.3 Olika sätt

Läs mer

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot KUNGLIGA TEKNISKA HÖGSKOLAN Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot Josef Karlsson Malik 2015-09- 02 jkmalik@kth.se Introduktionskurs i datateknik (II0310) Sammanfattning

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

Läs mer

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics

Läs mer

Tentamen: INTE 2011-10-26

Tentamen: INTE 2011-10-26 Tentamen: INTE 2011-10-26 Det enda godkända hjälpmedlet är ett exemplar av den personliga fusklappen som lämnats in som inlämningsuppgift tre på kursen. På nästa sida finns ett utdrag ur instruktionerna

Läs mer

Objektorienterad programmering Föreläsning 2

Objektorienterad programmering Föreläsning 2 Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade

Läs mer

Kontraktsprogrammering

Kontraktsprogrammering Kontraktsprogrammering Programmera med kontrakt Samma som i vardagen Två parter (minst), bägge följer sin del 2 Bilköp Kund Krav Betala varje månad Förtjänst Få en bil Försäljare Ge kunden en bil och serva

Läs mer

Richard Öhrvall, http://richardohrvall.com/ 1

Richard Öhrvall, http://richardohrvall.com/ 1 Läsa in data (1/4) Välj File>Open>Data Läsa in data (2/4) Leta reda på rätt fil, Markera den, välj Open http://richardohrvall.com/ 1 Läsa in data (3/4) Nu ska data vara inläst. Variable View Variabelvärden

Läs mer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»

Läs mer

Kompletterande instruktioner, tips samt principer för bedömning av Laboration 2 Magnetiska fält (Elektromagnetism 12 hp)

Kompletterande instruktioner, tips samt principer för bedömning av Laboration 2 Magnetiska fält (Elektromagnetism 12 hp) Kompletterande instruktioner, tips samt principer för bedömning av Laboration 2 Magnetiska fält (Elektromagnetism 12 hp) I. Allmänt. 1. Du studerar noggrant labinstruktionen för att förstå den, och löser

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2013 08 22, 8.00 13.00 Anvisningar: Denna tentamen består av fyra uppgifter. Preliminärt ger uppgifterna

Läs mer

7 GRUNDERNA I PROGRAMMERING

7 GRUNDERNA I PROGRAMMERING Grunderna i programmering 7 GRUNDERNA I PROGRAMMERING Detta kapitel är bokens största kapitel och kanske det viktigaste. Vi kommer här att gå igenom grunderna för sekventiell programmering. Det vi går

Läs mer

7 Programmeringsteknik

7 Programmeringsteknik 7 Programmeringsteknik Att skriva ett program innebär att man skriver en plan för hur bearbetningen av data ska utföras. Vilken typ av data och vilken typ av bearbetning, som ska göras, ska vara bestämt

Läs mer

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC lektion 1 PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC VB är ett applikationsutvecklingsverktyg med programmeringsspråket är basic, gränssnittet är grafiskt och man arbetar hela tiden

Läs mer

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg Programmering i C En tuff kurs på halvfart för nybörjare i programmering Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg 1 Idag Kursupplägg Satser

Läs mer

Modern Programmering (2546) Tentamen lördag 30.09.2000

Modern Programmering (2546) Tentamen lördag 30.09.2000 Modern Programmering (2546) Tentamen lördag 30.09.2000 Svara på minst sex frågor. Om du svarar på alla sju frågorna faller den fråga bort som ger minst antal poäng. Maximalt 70 poäng. Det krävs 35 poäng

Läs mer

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p) Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet Antal uppgifter: 6 Max: 32 poäng Betyg: 3:a 16 poäng, 4:a 24 poäng, 5:a 28 poäng Hjälpmedel:

Läs mer

Saker du ska kunna Föreläsning 13 & 14

Saker du ska kunna Föreläsning 13 & 14 Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering

Läs mer

Föreläsning 13. Rekursion

Föreläsning 13. Rekursion Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)

Läs mer

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt

Läs mer

(n 1)(n) 2 för n 1, dvs att tidskomplexiteten är kvadratisk i värsta fall. 0 + 1 + 2 +... + (n 1) =

(n 1)(n) 2 för n 1, dvs att tidskomplexiteten är kvadratisk i värsta fall. 0 + 1 + 2 +... + (n 1) = LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad design Totala antalet uppgifter: 6 Lärare: Håkan Jonsson, Tomas Johansson, 491700, 491465 Resultatet anslås senast 2006-05-20 i A-huset. Tillåtna

Läs mer

For-sats/slinga. Notis

For-sats/slinga. Notis Notis I koden för exemplen förekommer kommentarer. Kommentarer i Matlabkoden identieras med prexet %. Kommentarer är text/kod som Matlab bortse från. Alltså all text/kod som ligger till höger och på samma

Läs mer

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28 FactoryCast HMI Premium & Quantum PLC Applets 2004-10-28 INNEHÅLLSFÖRTECKNING 1 OM DETTA DOKUMENT...3 2 FÖRUTSÄTTNINGAR...3 3 PROJEKT I J++...4 3.1 LÄSA PLC-VARIABLER...4 3.1.1 Gränssnittet...4 3.1.2 Upprätta

Läs mer

Laboration 3 - Java och databaser

Laboration 3 - Java och databaser Version 1.1 Laboration 3 - Java och databaser Laborationen fokuserar på det som behandlades i föreläsningarna 7 och 8. Inhämtade kunskaper från föregående föreläsningar och laborationer i kursen förutsätts

Läs mer

Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB

Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB Komma igång med Compact API Hur APIet fungerar Visma Compacts API läser och skriver direkt till databasen via ett antal färdiga metoder som

Läs mer

Språket Python - Del 1 Grundkurs i programmering med Python

Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR

Läs mer

Lektion 4. Datateknik A, Java I, 5 poäng

Lektion 4. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att lära sig använda de primitiva typerna och olika operatorer för att bygga upp uttryck. Att använda kontrollflödeskonstruktioner för att styra flödet i programmet. Att stifta bekantskap

Läs mer

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

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

Att öva på och förstå ett program med flera samverkande klasser. Inlämningsuppgift 4 klassen Kund (Customer) Att öva på och förstå ett program med flera samverkande klasser. Redovisning: Uppgiften redovisas i datasal: o Körning av programmet. o Redogöra för vad de olika

Läs mer

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

Malmö högskola 2007/2008 Teknik och samhälle Laboration 12 Avsikten med denna laboration är att du ska göra några grafiska program. Börja med att skapa paketet laboration 12. Grundläggande uppgift Uppgift 12a Uppgiften går ut på att göra en enkel

Läs mer

En introduktion till och första övning i @Risk5 for Excel

En introduktion till och första övning i @Risk5 for Excel LUNDS UNIVERSITET 1(6) STATISTISKA INSTITUTIONEN Per-Erik Isberg / Lars Wahlgren VT2012 En introduktion till och första övning i @Risk5 for Excel Vi har redan under kursen stiftat bekantskap med Minitab

Läs mer

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

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. .0.0 DIAGNOSTISKT PROV Tid Klockan 09.00-2.00 Hjälpmedel Inga Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. Rättning Tentamen omfattar 6 poäng Denna tentamen

Läs mer

Institutionen för datavetenskap HT 1 2007/2008. Testning med JUnit

Institutionen för datavetenskap HT 1 2007/2008. Testning med JUnit LUNDS TEKNISKA HÖGSKOLA EDA690 Algoritmer och datastrukturer Institutionen för datavetenskap HT 1 2007/2008 Enhetstestning Testning med JUnit När man implementerat en klass måste man, innan den kan användas,

Läs mer

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LABB 1 Databassagan och en rundtur i databasers märkliga värld Plushögskolan Frågeutveckling inom MSSQL - SU14 I Microsoft SQL-Server Management Studio kan man arbeta på olika sätt. Antingen via användargränssnittet

Läs mer