Modul 3 - Modularisering

Storlek: px
Starta visningen från sidan:

Download "Modul 3 - Modularisering"

Transkript

1 Modul 3 Modularisering MODULARISERING 2 FUNKTIONER 3 Funktionsdefinition 4 Funktionsanrop 5 Funktionskroppen 5 Slumpa funktionen rand() 6 Värdeanrop 6 Variablers räckvidd 8 Referensanrop 8 DELPROGRAM 10 Header-filer 10 KONTRAKTSPROGRAMMERING 11 Maria Green Page 1 05/09/03

2 Modularisering Det finns flera anledningar att dela upp sitt program i mindre delar. Det blir enklare att: Konstruera Det är lättare att dela upp ett problem i mindre delar och lösa dem var för sig och sedan sätta samman lösningarna. Om man försöker lösa hela problemet på en gång är det lätt att man tappar överblicken om det man jobbar med är för stort och komplicerat. Koda Det är enklare att koda en liten del åt gången av samma anledning som det är lättare att lösa ett mindre problem än ett stort problem. Blir något fel är det enklare att rätta till det när man bara skriver små delar med kod åt gången. Testa När man kodar mindre delar åt gången är det också lättare att definiera testfall och lättare att utföra testerna. Varje modul i ett program kan testas för sig enligt de regler, de kontrakt, man satt upp ska gälla för den delen. Fungerar alla delar för sig är det större chans att hela programmet fungerar när man sätter ihop det. Det är mycket enklare att hitta felen om man kan testa och undersöka mindre separata delar än om man ska testa hela programmet. Underhålla Ett program har en väldigt begränsad livslängd. Om ett program går att underhålla och utöka på ett enkelt sätt så kan denna livslängd förlängas en hel del. Det är mycket lättare att underhålla ett program som består av separerade och väl definierade moduler där varje enskild modul har en specifik uppgift, än ett program som är en enda stor klump. Återanvända Om man har flera små moduler som utför väl avgränsade och väl definierade uppgifter är det också större sannolikhet att man kan återanvända koden. Man ska alltid sträva efter att återanvända så mycket som möjligt, det finns ingen anledning att uppfinna hjulet. (Observera att i den här kursen är syftet inte att ni ska producera mjukvara utan syftet är att ni ska lära er hur, därför kommer ni skriva kod som garanterat finns skriven redan av människor över hela jorden. Eftersom syftet är att ni ska lära er att programmera ska ni alltså inte kopiera andras kod.) Man kan modularisera sitt projekt på flera nivåer: Namnutrymme (Namespace) Fil Klass Funktion I den här kursen kommer vi att titta på filer och funktioner och i viss mån på namnutrymmen. Maria Green Page 2 05/09/03

3 Funktioner Ett program kan delas in i flera funktioner där varje funktion har en separat uppgift. I de exemplen ni sett hittills har det endast funnits en enda funktion, main. Main är en speciell funktion som måste finnas med för att man ska ha någonstans att starta programmet. Från den funktionen kan man sedan anropa andra funktioner som utför vissa uppgifter. Läs kap 3.1 och 3.2 i Deitel Vi kan ta en titt på våra tidigare exempel ur modularitetssynvinkel. Hela kaffeexemplet (modul 1) kan ses som en enda modul, en enda funktion som man utför men vi kan också se de separata delmomenten i kaffebryggandet som enskilda funktioner. Först ska vi bestämma antalet koppar vi ska brygga, det är en funktion. Hur vi kommer fram till hur många koppar som ska bryggas är inte intressant, bara att vi när funktionen är klar vet hur många koppar det ska vara. Nästa steg var ju att mäta upp vatten vilket kan vara en funktion och nästa att mäta upp kaffe vilket är ytterligare en funktion. Man kan också tänka sig att det är två personer som hjälps åt att koka kaffe och då kan det vara en som mäter upp vatten och en annan som mäter upp kaffe. Vi bryr oss fortfarande inte om hur de gör det bara det blir gjort. Om personen som mäter upp vatten häller direkt i kannan, mäter med en mugg eller med ett decilitermått spelar ju ingen roll, bara lagom mycket vatten blir uppmätt. Detsamma gäller för kaffet. Den sista funktionen är ju att sätta på kaffebryggaren och det har vi ju också definierat som en egen funktion. För den funktionen har vi till och med talat om hur kontraktet ser ut. För att vi ska kunna utföra starten av kaffebryggaren måste ju sladden vara i. Vi kan sätta upp kontrakt för de andra funktionerna också. För att vi ska kunna mäta upp vatten och kaffe måste det ju finnas tillräckligt av det vi ska mäta upp och vi måste också veta hur mycket vi ska ha. Om de två kraven är uppfyllda så borde det inte vara några problem att utföra funktionerna. Detta är förvillkoren till de två funktionerna. Eftervillkoren är ju då att vatten respektive kaffe är uppmätt i lagom mängder beräknat på antal koppar som ska kokas. Att se på funktionerna utifrån på det sätt som är beskrivet här, när man endast ser till dess funktionalitet, det vill säga vad de utför men inte hur, brukar kallas för blackbox - perspektiv. Det är oftast det första läget i design-fasen. Man delar upp problemet i olika delar och bestämmer vad varje del ska lösa men man bryr sig inte om hur det ska lösas. När man definierat alla sina delar kan man gå in och börja titta på detaljerna, vilket brukar kallas whitebox -perspektiv, man ser inuti funktionerna. I början när man ska lära sig at programmera är det inte alltid så lätt att vet vad man kan göra och inte och då kan det ibland kännas svårt att definiera olika funktioner och vad deras uppgift är. Det är dock alltid en fördel om man gör ett försök att göra detta innan man börjar titta på Maria Green Page 3 05/09/03

4 innehållet. Även om det inte fungerar sedan så har man i alla fall klart för sig vad det är man vill utföra och då är en stor del av arbetet gjort. Nu ska vi börja titta lite mer på hur funktioner skrivs i C++. Funktionsdefinition En funktion måste deklareras innan den kan användas. En funktion har alltid ett namn, tex square. Namnet ska säga vad funktionen har för uppgift. Den här funktionen beräknar kvadraten på ett tal (dvs x * x). Funktionsnamnen följs alltid av vanliga parenteser för att visa att det är en funktion, square( ). Inuti parenteserna kan man skriva vilka parametrar som ska skickas till funktionen. (Jämför i matten f(x, y). ) Den parameter som funktionen square behöver är ju talet som den ska kvadrera, square(int y). Man måste också ange vilken typ parametern är av, här en int. En funktion kan även returnera ett resultat. Resultatet kan ju också vara av olika typer tex ett heltal, en textsträng etc så därför måste man tala om vilken typ det ska vara. Detta görs genom att skriva typen framför funktionsnamnet, int square (int y). Här har vi alltså en funktion som heter square och som tar emot ett heltal och som returnerar ett heltal. För att vi ska vara säkra på vad funktionen gör behöver den en beskrivning också. Denna beskrivning kan utgöras av en enkel text eller ett kontrakt med för- och eftervillkor eller bägge delarna. Om vi funderar på kontraktet, finns det något särskilt som vi måste ta hänsyn till innan vi anropar funktionen? Det enda som används i funktionen är ju heltalet y. Finns det några särskilda värden som det inte får ha. Om vi ignorerar att talet kan bli för stort eftersom vi inte har pratat om minneshantering ännu så är svaret nej. Det vill säga, alla värden är giltiga, det går alltid att anropa den här funktionen när som helst. Detta brukar uttryckas med att sätta förvillkoret till true. //Funktion som beräknar kvadraten på ett heltal. //förvillkor: true //eftervillkor: har returnerat kvadraten på y int square ( int y ) Man kan också ange vad parametrarna är och vad funktionen returnerar. I just det här exemplet framgår ju det väldigt tydligt av eftervillkoret men ibland behövs det en specifikation av alla parametrar och returvärdet, då kan det se ut så här: //Funktion som beräknar kvadraten på ett heltal. //förvillkor: true //eftervillkor: har returnerat kvadraten på y //Parametrar: y det heltal som kvadraten ska beräknas på //Returnerar: kvadraten på heltalet y int square ( int y ) Maria Green Page 4 05/09/03

5 Funktionsanrop Man kan sedan anropa funktionen square från något annat ställe i programmet, tex ifrån main. Då skriver man funktionsnamnet och inuti parenteserna skriver man det man vill skicka till funktionen, tex square(2); (OBS, glöm inte ; eftersom det är en egen sats). Värdet 2 kommer nu att skickas in till funktionen square(int y), det vill säga y = 2. y är den formella parametern medan 2 är den aktuella parametern i det här exemplet. y beskriver vad parametern som ska skickas in i square ska heta och den heter alltid samma. Den aktuella parametern kan ändras och vara ett annat värde en annan gång. 2 är dem aktuella parametern för det är den parameter som skickas till funktionen just nu. När square är färdig och returnerar sitt värde måste vi ju ta emot det värdet också. För att ha någonstans att ta emot det måste vi deklarera en variabel av samma typ som funktionen returnerar, i det här fallet en int. Sedan tilldelar vi helt enkelt den variabeln det värde som funktionen returnerar. I main kan det då se ut så här: int result; result = square(2); //result har nu värdet 4 Det finns givetvis funktioner som inte tar någon parameter och/eller inte har något returvärde. Detta uttrycks med void (kan översättas till tom på svenska). Se kap Funktionskroppen Hur ser det då ut inuti funktionen? Hela funktionskroppen innesluts i mjuka parenteser för att man ska veta var den börjar och slutar (precis som main som också är en funktion). int square (int y) //Här är hela kroppen Innehållet i square är ganska kort. Det enda vi behöver göra är ju att räkna ut kvadraten på y och returnera resultatet. Vi kan helt enkelt skriva return y * y; Hela funktionen blir då: int square(int y) return y * y; Vi hade också kunnat skapa en variabel i square beräknat kvadraten och sparat i variabeln och sedan returnerat variabelns värde. Maria Green Page 5 05/09/03

6 int square(int y) int kvad; kvad = y * y; return kvad; Läs i boken Övningar Gör Övningar funktioner del 1 Slumpa funktionen rand() När man vill slumpa fram tal finns det en funktion rand() som kan användas. Läs om rand() och en annan funktion srand(unsigned int) i kap 3.8 i boken. Ni kan också läsa 3.9 om ni vill se fler exempel på slumpning (enum ingår dock inte i kursen). Gör därefter övningen. Övningar Gör Övningar funktioner del 2 Värdeanrop Vi kan också skicka en variabels värde till funktionen. int x = 3; int result; result = square(x); //result är nu 9 När vi anropar funktionen anger vi inte vilken typ det är på parametern, det gör vi bara i funktionen när vi tar emot den. Det har ingen betydelse om den aktuella och formella parametern har samma namn eller inte. När vi skickar x till funktionen square är det egentligen värdet på x vi skickar och det skapas en kopia y som får det värdet. Om vi sedan ändrar på y i funktionen så påverkar det inte x överhuvudtaget. Så egentligen behöver vi inte skapa någon ny variabel i square, vi skulle kunna använda y. int square(int y) //y har värdet 2 när den kommer in i funktionen y = y * y; //y får värdet 2 * 2 return y; //y har värdet 4 Maria Green Page 6 05/09/03

7 int main() int x = 2; int result = 0; result = square(x); i main: x 2 result 0 Vi skickar värdet av x dvs 2 till funktionen square i square y 2 kopia y = y*y x 2 result 4 Returnerar 4 till den som anropade square y 4 Även om de heter samma sak så blir förändras inte den ursprungliga variabeln värde eftersom det skapas en kopia. int square(int y) //y har värdet 2 y = y * y; //y får värdet 2 * 2 return y; //y har värdet 4 int main() int y = 2; int result = 0; result = square(y); orginal Maria Green Page 7 05/09/03

8 kopia y 2 result 0 Vi skickar värdet av x dvs 2 till funktionen square y 2 y = y*y y 2 result 4 Returnerar 4 till den som anropade square y 4 originalet har inte förändrats Detta kallas värdeanrop (call-by-value på engelska) eftersom det alltid är värdet vi skickar och tar emot. Man brukar också säga att funktionen har inparametrar. Variablers räckvidd Tänk på att variabeln kvad i exemplet med square inte går att använda någon annanstans i programmet. Dess räckvidd (scope) är begränsad till inuti funktionen, dess livslängd är ganska kort, när funktionen är klar dör variabeln. Dess värde går dock inte förlorat eftersom vi returnerar det och sparar det i variabeln result i main. Läs om regler för räckvidd i kap 3.11 men bry dig inte om det som står om staticvariabler. Övningar Gör Övningar funktioner del 3 Referensanrop Om vi nu vill att en funktion ska förändra originalet då? Då kan man använda referensanrop. Skillnaden mot värdeanrop är att nu skickar vi inte bara värdet på variabeln utan vi skickar en referens till variabeln. Om vi tänker oss variabeln som en låda, en plats att ha saker i (det är ju faktiskt en plats i minnet att lägga värden i). Vi binder fast ett snöre i lådan och lägger i vårt värde. Sedan Maria Green Page 8 05/09/03

9 skickar vi lådan till en annan funktion som förändrar värdet. När den är klar drar vi tillbaka lådan i snöret som vi fäst i den. Funktionen opererade på originalet till skillnad från i värdeanrop där funktionen bara har en kopia att arbeta med. För att skilja mellan värde- och referensanrop sätter man ett & i funktionsdeklarationen. Om vi använder vårt tidigare exempel med square men definierar om den och säger att den variabel som skickas in ska förändras till att innehålla kvadraten av det värde som den hade från början, skulle det se ut så här: square(int &y). Vi har här en utparameter y. Nu behöver vi ju inte returnera värdet längre eftersom det finns lagrat i utparametern, därför skriver vi void framför: void square(int &y) Anropet till funktionen ser dock likadant ut som vid värdeanrop square(x). Skillnaden är att här behöver vi inte ta emot värdet eftersom det finns lagrat i den aktuella parametern som vi skickar till funktionen. Vid referensanrop spelar det inte heller någon roll om den formella och aktuella parametern har samma namn eller inte. void square(int &y) //y har värdet 2 y = y * y; //y får värdet 2 * 2 int main() int x = 2; square(x); //x har nu värdet 4 x 2 Vi skickar en referens till x till funktionen square y y = y*y x 4 Ändrar i orginalet y Läs mer om värde- och referensanrop i kap Övningar Gör Övningar funktioner del 4 Maria Green Page 9 05/09/03

10 Delprogram Header-filer Läs 3.7 I kap 3.7 beskrivs flera olika delar av C++ standardbibliotek. Varje del ligger i en egen header-fil. Header-filer använder man oftast för att lägga sina definitioner och prototyper i. Det är väldigt praktiskt att samla alla dem på ett ställe och genom att titta i header-filen får man en snabb överblick av vad programmet har för funktionalitet. När man skapar egna header-filer ger man dem filändelsen h istället för cpp. Header-filen inkluderas sedan i cpp-filen med preprocessorkommandot include. Ex) Fil: Bank.h //inkluderingar #include <iostream> #include <cmath> //konstanter const int ACCOUNTS = 50; //funktionsprototyper void addmoney(int accountnum, float money); boolean withdrawmoney(int accountnum, float money) Fil Bank.cpp #include Bank.h //resten av programmet. När man inkluderar standarbibliotekets header-filer använder man <> runt namnet, när man inkluderar egna header-filer använder man. Ta ert exempel där ni slumpade fram tal i olika funktioner. Om ni har några funktionsprototyper så ta bort dem. Lägg main överst av funktionerna och prova att kompilera. Vad säger kompilatorn och varför? Titta på kap 3.6 igen. Skapa nu en ny fil (gärna med samma namn som er andra fil) med ändelsen h istället för cpp. I den filen lägger ni alla funktionsprototyper (inte för main). (Glöm inte ; efter varje prototyp). Här talar ni också om vilka standardbibliotek ni vill inkludera liksom vilka namnutrymmen ni ska använda (tex using std::cout). I cpp-filen har ni sedan bara en enda inkluderingsrad och det är inkluderingen av er h-fil. Prova nu att kompilera igen. Maria Green Page 10 05/09/03

11 När man kompilerar cpp-filen så inkluderas även h-filen i programmet. När man har flera filer som ska kompileras tillsammans brukar man skriva en så kallad make-fil för att underlätta arbetet. Hur man skriver make-filer samt mer om flera filer och om kompilering kommer i modul 5. Övningar Gör Övningar funktioner del 5 Kontraktsprogrammering Vi har beskrivit kontrakt tidigare och sett varför det är bra att använda. Vi har också sett olika exempel på hur de kan användas för att dokumentera sina moduler. Här följer lite fler exempel som börjar i vardagslivet och fortsätter via mattematiken och vidare in i programmering. Ex) Bilköp Krav Förtjänst Kund Betala varje månad Få en bil Försäljare Ge kunden en bil och serva den en viss tid Få pengar varje månad En person (kunden) köper en bil på avbetalning hos en bilfirma. Kunden förbinder sig att betala en viss summa varje månad, i gengäld får kunden en bil. Bilfirman förbinder sig att ge kunden en bil, och serva den under viss en tidsperiod, i gengäld får firman pengar varje månad. Om kunden inte betalar vet man inte vad som händer, firman kanske hämtar hem bilen eller ringer kronofogden. Om firman inte ger kunden någon bil eller låter bli att serva den får han Sverker på halsen. Maria Green Page 11 05/09/03

12 Ex) Boka biljett Kund Krav Betala biljetten och vara på flygplasten i tid Förtjänst Få åka till Hawaii Försäljare Flyga resenären till Hawaii Få pengar En person (resenären) bokar en flygresa till Hawaii. Resenären förbinder sig att betala innan ett visst datum samt att infinna sig på flygplatsen minst en timme före avgång, i gengäld får resenären åka med planet till Hawaii. Resebyrån förbinder sig till att ta kunden till Hawaii på bestämt datum. I gengäld får resebyrån pengar av resenären. Om resenären inte betalar i tid eller inte kommer i tid så får han inte åka med planet. Om resebyrån inte flyger ner resenären får resenären pengarna tillbaka (förhoppningsvis). Ett kontrakt kan ses från två sidor, från insidan och från utsidan. Utsidan Insidan Kontraktet Från insidan Vad kräver jag vid anrop av mig Vad ger jag tillbaka till anroparen Från utsidan Vad krävs för att anropa modulen Vad får jag tillbaka Ex) Division När man utför division får nämnaren inte vara noll, en matematiker använder en funktion för att beräkna division. Vi kan beskriva vilka krav och förtjänster det finns för matematikern och för funktionen som ska dividera. Maria Green Page 12 05/09/03

13 Matematiker Funktion för att dividera Krav Nämnaren får ej vara noll Dividera täljare med nämnare och returnera kvoten Förtjänst Får kvoten mellan täljare och nämnare Slipper kontrollera om täljaren är noll Matematikern förbinder sig att inte anropa funktionen med en nämnare som är noll, i gengäld får han tillbaka ett korrekt resultat som är kvoten mellan täljare och nämnare. Funktionen förbinder sig att returnera en korrekt kvot mellan täljare och nämnare, i gengäld behöver den inte kontrollera nämnaren innan den utför beräkningen. Om matematikern anropar funktionen med en nämnare som är noll så är resultatet odefinierat, dvs det kan bli vad som helst Detta kan också beskrivas i ett kontrakt med för- och eftervillkor, vilket vi sett exempel på tidigare. Förvillkor vad som ska gälla när funktionen anropas, om det inte är uppfyllt är resultatet odefinierat Eftervillkor vad som ska gälla när funktionen är klar, under förutsättning att förvillkoret var uppfyllt Vi kan beskriva detta ur matematikerns perspektiv, dvs vad som krävs och vad han får i gengäld: Förvillkor: nämnaren får inte vara noll Eftervillkor: kvoten mellan täljare och nämnare har returnerats Matematikerns perspektiv är ju utifrån funktionen och det är den information som behövs för alla de som ska använda funktionen. Om vi skulle skriva en funktion som beräknar division kan det se ut så här: //pre: nämnare!= 0 //post: kvoten mellan taljare och namnare har returnerats float dividera(float taljare, float namnare) return taljare/namnare; Maria Green Page 13 05/09/03

14 Om vi nu ska anropa den här funktionen måste kontrollera att förvillkoret är uppfyllt först. Ex) int main() float taljare, namnare; cout<< Skriv in täljare och nämnare: ; cin>>taljare>>namnare; if(namnare!= 0) cout<< Kvoten mellan <<taljare << och <<namnare << är << dividera(taljare, namnare) <<endl; else cout<< Du kan inte dividera med 0! <<endl; return 0; Körning 1 Skriv in täljare och nämnare: 10 5 Kvoten mellan 10 och 5 är 2 Körning 2 Skriv in täljare och nämnare: 10 0 Du kan inte dividera med 0! Ex) Bankprogram Vi ska skapa ett enkelt bankprogram där man kan sätta in och ta ut pengar på ett konto. Vi behöver följande beståndsdelar: saldo en variabel, hur mycket pengar vi har sattinpengar en funktion som sätter in pengar (dvs ökar saldo) tautpengar en funktion som tar ut pengar (dvs minskar saldo) Vi tittar på vad som gäller för funktionerna för att sätta in och ta ut pengar. Vi börjar med tautpengar. Till den funktionen skickar vi in saldot för det aktuella kontot och summan vi vill ta ut från kontot. Deklarationen ser då ut så här: void tautpengar(int &saldo, int ut); Vad ska då gälla för att man ska få anropa funktionen? Man kan ju inte ta ut mer pengar än man har på kontot så förvillkoret måste ju vara att ut <= saldo. Om detta stämmer så kan funktionen garantera att pengarna är dragna från saldot. Vi kan ange vårt eftervillkor till funktionen som att saldo har minskats med ut kronor. Vi kan ju inte heller ta ut en negativ summa pengar. Det skulle ju bli samma sak som att sätta in pengar och det har vi ju en annan funktion till. Det är viktigt att funktionerna utför det som de är tänkta att göra och att man förhindrar användarna av funktionerna att missbruka dem genom att använda Maria Green Page 14 05/09/03

15 dem till andra saker än de är tänkta till. Vi lägger till i förvillkoret att summan som man ska ta ut måste vara positiv. Om vi skriver detta i kod ser det ut så här: //pre: 0 <= ut <= saldo //post: saldo = saldo ut void tautpengar(int &saldo, int ut); Istället för att skriva förvillkor och eftervillkor i koden brukar man ofta använda förkortningar av de engelska orden (precondition och postcondition), dvs pre och post. Det går bra att använda vilket sätt man vill. Innan man anropar funktionen tautpengar måste man kolla så att förvillkoret är uppfyllt. Ex) int main() int saldo = 300, uttag; cout<< Hur mycket vill du ta ut? ; cin>>uttag; if(uttag < 0) cout<< Du kan inte ta ut en negativ summa! <<endl; else if(uttag > saldo) cout<< Du kan inte ta ut, du har inte tillräckligt med pengar på kontot! <<endl; else tautpengar(saldo, uttag); return 0; Nu tittar vi på funktionen sattinpengar. Vilka villkor gäller för att den ska kunna anropas? Inte heller här får vi sätta in en negativ summa, det skulle ju vara samma sak som att ta ut pengar. Finns det några begränsningar för hur mycket man får sätta in? Nej, de flesta banker brukar bara bli glada om man vill sätta in mycket pengar (även om de kan bli lite misstänksamma ibland). Eftervillkoret bli helt enkelt att man satt in pengarna och ökat saldo med angiven summa. Om vi skriver det i kod ser det ut så här: //pre: in >= 0 //post: saldo = saldo + in void sattinpengar(int &saldo, int in); Även här måste vi göra en kontroll innan vi anropar funktionen men nu är det bara ett intervall vi måste kontrollera. Maria Green Page 15 05/09/03

16 Ex) int main() int saldo = 300, insattning; cout<< Hur mycket vill sätta in? ; cin>> insattning; if(insattning < 0) cout<< Du kan inte sätta in en negativ summa! <<endl; else sattinpengar(saldo, insattning); return 0; Vi skriver nu kroppen i funktionerna, det vill säga själva koden som utför något. void tautpengar(int &saldo, int ut) saldo = saldo ut; void sattinpengar(int &saldo, int in); saldo = saldo + in; Det var väldigt enkelt att skriva koden nu när vi visste exakt vad funktionerna ska utföra och vad som gäller när den anropas. Det hade blivit mycket krångligare om vi inte hade haft våra kontrakt. Då hade vi tex behövt kolla i tautpengar om det fanns tillräckligt med pengar och så att ut inte var negativ. Framförallt är frågan vad hade vi gjort om det inte hade gått att ta ut pengar? Hur skulle användaren av funktionen (i det här fallet main) få veta om det gick bra eller inte? Vi skulle kunna skicka tillbaka ett returvärde som talade om ifall det gick bra eller inte och om inte, varför det inte gick bra. Då måste man bestämma vad olika returvärden betyder, ett för om det gick bra och två för om det inte gick bra. Sedan måste användaren av funktionen kontrollera resultatet för att se om det gick bra eller inte. Det är både enklare och naturligare att kontrollera innan man anropar funktionen. Hela koden för Bank-programmet finns på hemsidan. Testa gärna. I första exemplet är alla värden av heltalstyp (int). Det betyder att man bara kan sätta in och ta ut jämna kronor. Om man ska kunna sätta in och ta ut ören också så kan vi använda flyttal (float) istället. Koden för detta program finns också på hemsidan. Övningar Gör Övningar funktioner del 6 Maria Green Page 16 05/09/03

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

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

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

C++ Lektion Tecken och teckenfält

C++ Lektion Tecken och teckenfält C++ Lektion Tecken och teckenfält Teori Hittills har alla variabler du jobbat med varit olika typer av tal, men du kan också deklarera variabler som håller bokstavstecken. Denna variabeltyp kallas för

Läs mer

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 6 pekare och pekare tillsammans med arrayer Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går

Läs mer

Problemlösning PROBLEMLÖSNING 2

Problemlösning PROBLEMLÖSNING 2 PROBLEMLÖSNING 2 Introduktion 2 Dokumentation 2 Dela upp problem 2 Exempel på 3 Sekvens 3 Problem: Brygga kaffe i kaffebryggare 3 Problem: Klä på sig 10 Jordgubbsexemplet 11 Godisaffären 12 Selektion 14

Läs mer

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 2014-2015. L0 - Grunder i C++

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 2014-2015. L0 - Grunder i C++ Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 01-015 L0 - Grunder i C++ Det här är den första lektionen i kursen Introduktion till algoritmer vid Matematikgymnasiet, läsåret

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

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

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

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

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42 Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser

Läs mer

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera Föreläsning 2 Operatorer Tilldelning Kodblock if satsen Logiska uttryck Att programmera En operator tar ett eller två data och producerar ett svar. Typexemplet är +. Den tar t.ex två heltal och producerar

Läs mer

C-programmering, föreläsning 2 Jesper Wilhelmsson

C-programmering, föreläsning 2 Jesper Wilhelmsson C-programmering, föreläsning 2 Jesper Wilhelmsson Funktioner void Globala och lokala variabler, scope static Arrayer Strängar ASCII, ANSI Argument till main Slumptal Funktioner Nu är det dags att börja

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

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

+Ö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

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

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. 1(9) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. Denna tenta kommer att vara färdigrättad Fr 28/1 och kan då hämtas på

Läs mer

Poster ( structar ) Postdeklarationer

Poster ( structar ) Postdeklarationer Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

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

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt: 8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),

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

2 INNEHÅLLSFÖRTECKNING

2 INNEHÅLLSFÖRTECKNING Innehållsförteckning 2 INNEHÅLLSFÖRTECKNING FÖRLAGETS FÖRORD... 1 1 Författarens förord... 2 2 Innehållsförteckning... 3 3 Ämnesplan och kursplan... 11 Ämnesplan Programmering... 11 Ämnets syfte... 11

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

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

Läs mer

Föreläsning 5 Mer om funktioner, villkor

Föreläsning 5 Mer om funktioner, villkor Föreläsning 5 Mer om funktioner, villkor Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.9.2011 Varför? Det finns sammanhang där ett

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

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

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

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1 Kattis Lektion 1 I kursen används onlinedomaren Kattis (från http://kattis.com) för att automatiskt rätta programmeringsproblem. För att få ett konto på Kattis anmäler du dig på Programmeringsolympiadens

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder

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

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

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26 Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623

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

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

6.1 Kompilering och lite grundläggande information

6.1 Kompilering och lite grundläggande information 6 Förhoppningsvis ska de C-konstruktioner som gås igenom här tillsammans med de exempelprogram som ges här och i andra delar av lab-pm vara tillräckliga för att ni ska kunna klara av laborationerna. Syftet

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

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

C-programmering, föreläsning 1 Jesper Wilhelmsson

C-programmering, föreläsning 1 Jesper Wilhelmsson C-programmering, föreläsning 1 Jesper Wilhelmsson Introduktion till C Variabler, Typer, Konstanter Operatorer Villkorliga satser if-else, switch Loopar for, while, do... while Inmatning och utmatning stdin

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

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

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

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner

Läs mer

Utvecklingsmiljö för Java med stöd för kontraktsprogrammering

Utvecklingsmiljö för Java med stöd för kontraktsprogrammering Datavetenskap Håkan Bergmark och Tony Bergh Utvecklingsmiljö för Java med stöd för kontraktsprogrammering Master s Thesis 2004:02 Utvecklingsmiljö för Java med stöd för kontraktsprogrammering Håkan Bergmark

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

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

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

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

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

En kurs i C-programmering

En kurs i C-programmering En kurs i C-programmering Föreläsningsanteckningar från AD1/PK2 VT06 Jesper Wilhelmsson March 11, 2006 2 Innehåll 1 Introduktion till C 5 1.1 Bakgrund......................................... 5 1.2 Variabler,

Läs mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska

Läs mer

(Lösningsförslag finns sist i denna fil.)

(Lösningsförslag finns sist i denna fil.) (Lösningsförslag finns sist i denna fil.) Läser externa signaler. Har 64 ingångar (kanaler), från 0 till 63. Kan bara avläsa en ingång i taget. Avlästa värdet positivt 16-bitars tal. Varje läsning tar

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

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

Programmering 1 med ActionScript 3.0 100 poa ng

Programmering 1 med ActionScript 3.0 100 poa ng Programmering 1 med ActionScript 3.0 100 poa ng Innehåll Kort om kursen... 4 Del 1 - Om programmering i AS3... 5 Allmänt om programmering... 5 Många nya ord att lära sig... 5 Allmänna ord för AS3-program...

Läs mer

*:85/ID200V C++ HT07. Föreläsning 8 Medlemspekare Undantagshantering Namnrymder

*:85/ID200V C++ HT07. Föreläsning 8 Medlemspekare Undantagshantering Namnrymder *:85/ID200V C++ HT07 Föreläsning 8 Medlemspekare Undantagshantering Namnrymder Medlemspekare Ibland uppstår behovet att peka ut en viss medlem, som skall behandlas i olika objekt. C++ har begreppet medlemspekare

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

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

PROV. 12 Egenskaper (provavsnitt)

PROV. 12 Egenskaper (provavsnitt) 12 Egenskaper (provavsnitt) 12.1 Egenskaper 12.2 Deklaration av egenskaper 12.3 Åtkomsttjänster för egenskaper 12.4 Åtkomsttjänster med genererade instansvariabler 12.5 Åtkomsttjänster med egna instansvariabelnamn

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

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

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

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

Heltal(int) Programmeringsteknik 54

Heltal(int) Programmeringsteknik 54 Heltal(int) Datatypen int används tillsammans med char, short int och long int för att lagra heltal i C. Matematisk sett finns det oändligt många heltal. På en dator måste det införas en begränsning på

Läs mer

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

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Övningsuppgift Bankkonton Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering

Läs mer

Tentamen Objektorienterad Programutveckling med C++

Tentamen Objektorienterad Programutveckling med C++ Tentamen Objektorienterad Programutveckling med C++ Datum 2001-06-08. Tid 14:30-19:30 Ordinarie Tentamen CD 5250 Ansvarig: Martin Skogevall Omtentamen CD 5250 Ansvarig: Daniel Flemström Omtentamen CD 5050

Läs mer

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00 DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på båda sidor.

Läs mer

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Introduktion TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Vi har diskuterat vilka möjligheter till OO som erbjuds i C++. Vilka vill vi använda och varför? Allt har användningsområden

Läs mer

Lektion 1 Introduktion till DrJava och Java

Lektion 1 Introduktion till DrJava och Java Lektion 1 Introduktion till Målsättning med lektionen: Bekanta er med programmet DrJava som ni skall använda under kursen för att skriva och köra javaprogram Hur man använder variabler, aritmetik och matematiska

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 8 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Uppgift 1a (Aktiekurser utan poster)

Uppgift 1a (Aktiekurser utan poster) Uppgift 1a (Aktiekurser utan poster) Vi har lite olika upplägg i de kurser vi håller och i vissa kurser finns det med något som vi kallar "poster" (eng. "record"). I andra har vi inte med detta. Vi har

Läs mer

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde. 2 Enkla datatyper Att skriva ett program innebär att man ska tillverka en plan för att bearbeta data eller information på något sätt Programmering handlar om data och bearbetning av data Data kan vara

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a. Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel

Läs mer

Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen i DD2387 Programsystemkonstruktion med C++ Tentamen i DD2387 Programsystemkonstruktion med C++ Datum: Fredag 24 oktober 2008, 14-18 Hjälpmedel: En eller två valfria läroböcker om C++ id: Tid: 4 timmar Skriv inte ditt namn på tentan. Under tentan

Läs mer

Börja koda. Vad är programmering? Installera Processing

Börja koda. Vad är programmering? Installera Processing Börja koda Vad är programmering? En dator är uppbyggd kring ett antal delar som samverkar för att du skall kunna använda program, spela spel och titta på bilder. Den viktigaste delen är processorn eller

Läs mer

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108. 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Denna tenta kommer att vara färdigrättad Fr 14/1 och kan då hämtas på mitt tjänsterum,

Läs mer

Introduktion till programmering

Introduktion till programmering Introduktion till programmering v. 1.12-2007-02-10 Mittuniversitetet Institutionen för Informationsteknologi och medier Datateknik Innehållsförteckning 1 Inledning...4 2 Språket C++...5 2.1 Valet av språket

Läs mer

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Laborationsansvariga: Anders Arvidsson, Björn Lundblad Utskriftsdatum: 2002-10-31 Laboranter: 1 Syfte Denna laboration syftar till att öva användningen

Läs mer

PROV. 10 Uppräknade datatyper

PROV. 10 Uppräknade datatyper 10 10.1 10.2 Definition 10.3 Användning och regler 10.4 switch-satsen 10.5 Iteration över samtliga värden 10.6 Instansvariabler och instanstjänster 10.7 Värdespecifika implementationer 10.1 Hur ser vi

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

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

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

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat

Läs mer

1 Datorer och program

1 Datorer och program 1 Datorer och program Idag är datorn ett av de viktigaste och vanligaste verktygen i vårt samhälle. På de flesta arbetsplatser finns det idag datorer. Vad använder man datorerna till? Vad gör en dator?

Läs mer

Användar- och systemdokumentation

Användar- och systemdokumentation Användar- och systemdokumentation Linköpings universitet Examinator:, IDA marme647@student.liu.se Utskriftsdatum: Innehållsförteckning Inledning... 3 Användarhandledning... 4 Systemkrav och installation...4

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

Lärobok Programmering 1 (C++) Nybörjarprogrammering

Lärobok Programmering 1 (C++) Nybörjarprogrammering Lärobok Programmering 1 (C++) Nybörjarprogrammering En enkel start på din inlärning av den sköna programmeringskonsten. I boken arbetar vi med C++, men boken innehåller mycket generell kunskap. morgan.augustsson

Läs mer

Klasshierarkier - repetition

Klasshierarkier - repetition Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet

Läs mer

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3 Föreläsning 3 3.3 for-satsen I programmering talar man om tre sätt på vilket ett programflöde kan vara beskaffat: 1. Saker kan hända efter varandra, i sekvens. 2. Flödet kan innebära att ett val görs,

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning I: kursinfo, att programmera datorer, första programmet Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 Outline Hemsida Organization Examination

Läs mer