Programmeringsteknik

Storlek: px
Starta visningen från sidan:

Download "Programmeringsteknik"

Transkript

1 Programmeringsteknik Materialet i detta häfte är skapat av KTH CSC (http://www.kth.se/csc) och används i en distanskurs som man kan läsa som fristående kurs och få universitetspoäng för. Kursen är avsedd för alla som vill lära sig grunderna i programmering men är också konstruerad för att passa in i några av KTH:s utbildningsprogram. Mer information om kursen finns på: Copyright KTH CSC 2010 för hela häftet. Kopierat med tillstånd av KTH CSC. Bearbetat av Håkan Lundberg, Cybergymnasiet, KTH CSC

2 Innehållsförteckning 1. Programmeringsintro...4 Vad är en dator?...4 Vad är ett program?...5 Vad är ett programspråk?...6 Installera Python på din dator...7 Kom igång med Python och IDLE...7 Tilldelning...8 Olika slags värden...8 Uppräkning...9 Utskrifter...10 Kommentarer Styrstrukturer...12 Inläsning...12 Villkor...13 Strukturen på en if-sats är...13 Konstanter...14 Else-del i if-sats...14 Flera villkor...15 Likhet...16 While-slingor...16 Hur exekveras programmet?...17 En oändlig while-slinga...18 Struktur på while-sats...19 När ska man använda en while-sats?...19 Inlämningsuppgift 1 (Prat i kvadrat) Listor och Anrop...21 Listor...21 Vad är en lista?...21 Hur använder man en lista?...22 Åter till exemplet...23 Mer om listor...25 Uppslagslistor...25 Slingor...26 Moduler...27 Random...28 Sid 2 av 57

3 4. Funktioner...30 Vad har man funktioner till?...30 Dela upp ett problem i funktioner...30 Definiera en funktion...31 Anropa en funktion...31 Skicka utdata från en funktion (returvärden)...32 Skicka indata till en funktion (parametrar)...35 Rekursion...37 Inlämningsuppgift 2 (Rondelet)...38 Tips...39 Inlämning Filer...40 Filhantering...40 Textfiler i Python Klasser...42 Objektorientering...42 Attribut...42 Metoder...43 Speciella metoder: konstruktorn och str...43 Klassen...44 Exempel: Husdjursprogrammet...45 Sortering av en lista med objekt...47 Inlämningsuppgift 3 (Nöjesfält)...48 Ordlista...49 Kortfattad programmerings- och Pythonordlista...49 A...50 B...50 D...51 E...51 F...51 G...52 H...52 I...52 K...53 L...53 M...54 N...54 O...55 P...55 R...55 S...55 T...56 U...56 V...57 W...57 ÅÄÖ...57 Sid 3 av 57

4 1. Programmeringsintro Vad är en dator? En dator i dagligt tal består väsentligen av ett tangentbord, en mus och en skärm som ibland sitter i samma låda som själva datorn. I tekniska sammanhang menar man ibland lådan med datorn och ibland endast processorn som sitter i lådan. Löstagen processor (i svart) med sex rader med kontakter runt om. Processorn sitter fast på ett kretskort, ofta kallat moderkortet och är kopplat till flera olika minnen. Viktigaste minnena är registren i processorn, där alla beräkningar och tolkningar (t ex om ett tal är större än ett annat) sker, RAM-minnet (Random Access Memory) där program ligger när de körs, och skivminnet (ofta kallat hårddisk) där program och dokument lagras för att vara kvar även när datorn har stängts av (till skillnad från RAM-minnet som töms varje gång strömmen stängs av). Minneskort med minnen (RAM) i svart Uppgifter som man brukar se i annonser om datorer är t ex processorhastighet mätt i MHz (MegaHertz), dvs miljoner cykler per sekund eller till och med GHz (GigaHertz), dvs miljarder cykler per sekund. Betyder detta att en 2GHz CPU är dubbelt så snabb som en 1MHz CPU? Inte nödvändigtvis. Det beror också på hur mycket arbete varje CPU utför per cykel. Datorns prestanda är också i högsta grad beroende av minnets storlek och hastighet. RAM-storlek som mäts i MB (MegaByte), dvs miljoner byte. En byte består av vanligen åtta bitar och kan t ex Sid 4 av 57

5 lagra ett tal mellan 0 och 255. En bit är den minsta minnesenheten på en dator och innehåller en etta eller en nolla. Skivminnet mäts också i byte och är något hundratal gånger större än RAM-minnet. Ibland hör man benämningen "data". I IT-sammanhang betyder data endast information. Personer som använder data (eller ännu värre: "datan") för att referera till själva datorn upplevs ofta som mindre kunniga (se t ex Maria Bloms film Masjävlar) av de som skiljer på datorer och informationen som datorerna behandlar. Om du glömmer bort vad ett visst ord betyder kan du slå upp det i vår ordlista över pythontermer. På många ställen i den här kursen finns det testfrågor som du kan använda för att kolla om du har förstått. Prova först att lösa uppgifterna på egen hand. Här är en första uppmjukningsfråga. Vad är en dator? 1. Detsamma som en processor med minne. 2. Detsamma som en processor, skärm, dator, tangentbord och mus. 3. Detsamma som en data. Vad är ett program? Ett (dator-) program är en uppsättning instruktioner som styr vad datorn ska göra. Vanligen finns det indata (t ex knapp- eller mustryckningar) som behandlas av datorn enligt instruktionerna i programmet vilket resulterar i utdata (t ex text, diagram, bilder) på skärmen. Sid 5 av 57

6 En analogi är stickning där samma indata (garn) med ett program kan bli till utdata i form av ett par sockor och med ett annat program till en tröja. Precis som själva datorn består ett datorprogram väsentligen av två saker: minne och instruktioner. Minnet kallas för variabler, instruktionerna kallas ofta för satser. Satserna är det som avgör hur variablerna manipuleras (dvs ändrar värde). Vad är ett datorprogram? (Det kan finnas flera riktiga svar.) 1. Något som styr en dator. 2. Detsamma som en processor, skärm, tangentbord och mus. 3. Något som styr hur en dator manipulerar indata för att presentera utdata. 4. En samling obegripliga ord i godtycklig ordning. 5. En samling av variabler och satser. Vad är ett programspråk? En dator förstår endast sitt eget datorspråk, maskinkod, som är mycket svårhanterligt även för de flesta erfarna programmerare. För att underlätta för alla som programmerar skriver man därför vanligen program i ett programspråk som t ex Java, C++ eller som vi ska använda i denna kurs: Python. För att kunna få datorn att förstå och utföra program skrivna i Python krävs det att man översätter (kompilerar, tolkar, interpreterar) det till datorns eget språk. Sid 6 av 57

7 Installera Python på din dator För att kunna läsa den här kursen måste du installera Python på din dator. Python finns tillgängligt för många olika operativsystem, bland annat Linux/Unix, Mac OS X och Windows, och är enkelt att installera. Innan du laddar ned Python, begrunda nedanstående: Python 3.0 släpptes i början av december 2008, i denna version har bland annat syntaxen för printkommandot ändrats och även en del andra förändringar genomförts. Kursmaterialet i denna kurs är anpassat efter Python vilket innebär att alla exempel, prov och övningar i boken förutsätter att någon av dessa versioner används. För dig som ska installera Python på din dator, välj version tillgänglig via På webbplatsen python.org hittar du all information du behöver för att kunna ladda ner och installera den senaste versionen av Python på din dator. Gå till python.org och följ instruktionerna för att installera Python. Om du får problem så kan du, som alltid, ställa en fråga i kursens webbforum eller kontakta kursens handledare. Kom igång med Python och IDLE Nästa steg är att börja använda Python och IDLE. IDLE är ett ett utvecklingsverktyg för Python med vars hjälp man enkelt och behändigt kan skriva och testa sina program. One Day of IDLE Toying (http://hkn.eecs.berkeley.edu/~dyoo/python/idle_intro/) är en kort och lättläst introduktion som visar hur man använder IDLE för att skriva sitt första program. Gå dit, läs texten och prova själv på att skriva och köra ett Python-program (svensk översättning finns). För Python finns det alltså två sätt att skriva program. Antingen skriver man programkod direkt i en pythontolk och ser resultatet av varje kommando efterhand som man skriver in sitt program. Detta fungerar bäst om man vill skriva mycket korta program som bara ska användas en gång eller om man vill testa hur något fungerar i Python. Det andra sättet är att använda ett redigeringsprogram, till exempel det som är inbyggt i IDLE, och sedan låta pythontolken översätta och köra programmet. Fördelen med detta är att det blir enklare att gå tillbaka och ändra programmet om det inte blev riktigt rätt eller om man kommer på roliga tillägg. När man skriver större program gör man alltid på detta sätt. Eftersom tolken bara är ett dumt program kräver den att texten i programfilen (eller det du skriver i tolken) mycket strikt följer bestämda regler. Ett väldigt litet pythonprogram som kan kompileras och köras utan fel ser ut så här: print "Hej!" Om man skriver någonting som kompilatorn inte kan översätta kommer den att tala om var det är fel och vägra att översätta allt. Lyckas översättningen så går programmet att köra. I det här fallet kommer texten Hej! att skrivas ut. Sid 7 av 57

8 Tilldelning För att hålla reda på data i ett program används variabler. Alla variabler har ett namn för att kunna skilja dem åt. Du kan jämföra med minnet på en miniräknare. Enklare räknare har bara ett minne och behöver därför inte namnge det. Mer avancerade räknare har flera minnen som namnges med t ex ett nummer. Ett datorprogram kan hålla reda på en stor mängd data. När man programmerar kan man lägga in data som t ex längd vikt och ålder i datorns minne med hjälp av variabler. För att tilldela variablerna värden skriver man i Python t ex: age = 18 length = 180 weight = 80 I vänsterledet (vänster om =) skriver man namnet på den variabel som ska få ett nytt värde och i högerledet (höger om =) värdet som tilldelas. Likhetstecknet kallas i programmeringssammanhang för tilldelning (eller tilldelningsoperator). Man kan också skriva variabler i högerledet: my_cousins_age = age Då tilldelas my_cousins_age samma värde som age har. Alla variabelnamn i Python måste börja med en (engelsk) bokstav (inte åäö), men efter den kan man blanda bokstäver och siffror. Högerledet kan innehålla uträkningar som behöver utföras innan tilldelningen sker: a = 3 b = a + 15 Ovanstående två rader ser till att b får värdet 18. Ett bra sätt att förstå vad som händer i ett program är att stegvis går igenom det för hand och skriva upp alla variabelvärden. Varje variabel har endast ett värde åt gången och kommer inte ihåg vad för värde den haft tidigare. Vad blir värdet på variabeln d efter följande rader? a = 12 b = a c = a + b + 3 d = c - b Vad är det för fel på följande kod? 6606 = svenska_flaggans_dag är ett ogiltigt variabelnamn. 2. Det blir fel för att 6606 inte är svenska flaggans dag. 3. Man kan inte tilldela värdet 6606 ett nytt värde. Olika slags värden Det finns olika slags värden man kan tilldela variabler. Som vi tidigare sett kan man tilldela Sid 8 av 57

9 variabler värden i form av tal, men man kan också tilldela teckenföljder som t ex namn. I datalitteraturen kallas teckenföljderna för strängar (av engelskans string som bland annat betyder sträng och kedja). namn1 = 'Oskar' namn2 = "Kajsa" För att skilja på variabelnamn och strängar omsluter man strängar med apostrofer eller citattecken. namn3 = 'Sima' namn4 = namn3 I exemplet ovan får namn4 värdet 'Sima'. Hade man skrivit apostrofer runt namn3 hade namn4 istället fått värdet 'namn3'. Vad blir det för värden på a och b efter följande rader? djur = 'katt' a = djur b = 'djur' Uppräkning Man kan öka värdet på variabler som tidigare har tilldelats ett värde med hjälp av uppräkningsoperatorn +=. Om variabeln innehåller en siffra räknas värdet upp. Efter följande rader my_age = 19 my_age += 1 får my_age värdet 20. Den första raden ger my_age värdet 19 och den andra raden räknar upp my_age med 1. När du trycker på pil upp eller ned i telefonnummerlistan på din mobil utför den en upp- eller nedräkning på samma sätt som andra raden. Man kan åstadkomma samma sak med satserna: my_age = 19 my_age = my_age + 1 Men så många tecken orkar få programmerare att skriva. Anledningen att variabeln heter my_age istället för min_ålder är att åäö inte fungerar i variabelnamn. Om variabeln innhåller en sträng läggs den nya strängen till den gamla. Efter satserna: husdjur = "hund " husdjur += "och katt" Kommer husdjur att vara "hund och katt". Sid 9 av 57

10 Vad är värdet på a och s efter följande rader? a = 100 b = 10 a += b s = "svaret är " s += "a" 1. a = 10010, s = "svaret är 10010" 2. a = 110, s = "svaret är a" 3. a = 100, s = "svaret är 100" 4. a = 110, s = "svaret är 110" 5. 1 = 110, s = "svaret är 100" Utskrifter För att skriva ut värden på skärmen använder man instruktionen print. Prova följande pythonprogram i IDLE: x = 15 print x print 1001 print 14 Genom att använda ett kommatecken så kan man skriva ut flera saker på samma rad. Exempelvis skriver print "Charles is", 19, "years old" ut "Charles is 19 years old" på samma rad. Observera att Python automatiskt lägger till ett blanktecken mellan strängarna vid varje kommatecken. Precis samma sak skrivs ut på samma sätt av: age = 19 print "Charles is", age, "years old" Vill man att en senare utskrift (t ex en som görs av en print-sats några rader senare) ska göras på samma rad som den man just skriver ut låter man ett komma stå sist på raden: print "Charles is", age = print age, "years old" Ovanstående skriver också ut samma sak som tidigare. Om man vill kombinera strängar utan att lägga till ett blanktecken så kan man istället använda sig av ett vanligt plustecken: Sid 10 av 57

11 print "Charles is", age = print age + "." Utskriften blir då "Charles is 19.". Kommentarer # Skriv ut Charles ålder print "Charles is", age = print age, "years old" Den första raden i det här programmet, raden som börjar med #-tecknet, är en så kallad kommentar. Raden påverkar inte vad som händer när man kör programmet utan är enbart avsedd som information för den som läser programmet. I Python räknas allt från och med #-tecknet till radslut som en kommentar. Man kan till exempel skriva så här: salary += 1 # Jippi, löneförhöjning! Kommentarer kan kanske verka överflödiga men är i själva verket mycket viktiga för att man ska kunna förstå och överblicka sina program. Vad skrivs ut när man kör följande program? # Skriv ut Annas telefonnummer namn = 'Anna' telefon = ' ' mobil = ' ' print namn, "har telefon", telefon Sid 11 av 57

12 2. Styrstrukturer Mamma ska resa till mormor över helgen. Hon är orolig för att lille Lasse, som ska vara alldeles ensam hemma, kommer att klä sig för tunt och vill därför ha ett program som hjälper honom med klädseln. För att kunna skriva ett sådant program behöver vi lära oss två saker: hur man läser inmatning från tangentbordet och hur man jämför tal. Inläsning För att läsa från tangentbordet använder man en input-sats, t ex temperatur = input() Efter denna sats kommer variablen temperatur att innehålla det som den som körde programmet skrev på tangentbordet (och avslutade med returtangenten). Tyvärr är det svårt för den som kör programmet att fatta att det är just temperatur som ska matas in eftersom programmet inte frågar efter något. Det fixar man lätt med en print-sats: # Exempel som visar hur inläsning går till. print "Ge utetemperatur: " temperatur = input() Den här konstruktionen (skriv ut fråga och läs in svar) är så vanlig att man ordnat ett förkortat skrivsätt för den: # Exempel som visar hur inläsning kan göras kortare. temperatur = input("ge utetemperatur: ") Viktigt att förstå är att input-satser läser inmatningen i den ordning den kommer. Det går inte att hoppa över någon del av inmatningen. Om någon skriver t ex 17[retur]42[retur] och du endast vill läsa det andra talet (42) måste man först läsa det första (17). Vad får a för värde om inmatningen från tangentbordet är 22 <retur> 42 <retur>? a = input() Vad får a för värde om inmatningen från tangentbordet är 17 <retur> 12 <retur>? a = input() a = input() Vad får a för värde om inmatningen från tangentbordet är 22 <retur> 35 <retur>? a = input() b = input() Vad får a för värde om inmatningen från tangentbordet är 19 <retur> 67 <retur>? b = input() a = input() Sid 12 av 57

13 Villkor När vi väl vet temperaturen kan vi kolla om den är för låg genom att skriva: temperatur = input("ge utetemperatur: ") if temperatur < 5: print "Ta på dej en halsduk, lille vän!" Detta program kommer att se ut så här på skärmen: Ge utetemperatur: 1 Ta på dej en halsduk, lille vän! eller Ge utetemperatur: 17 Detta program kommer alltså att skriva ut texten "Ta på dig en halsduk, lille vän!" endast om (svaret på frågan om) utetemperaturen är mindre än 5. Strukturen på en if-sats är if <BOOLESKT UTTRYCK> : <EN ELLER FLERA SATSER SOM SKA EXEKVERAS> En if-sats startar med reserverade ordet if, efter ordet if ska ett uttryck som resulterar ett booleskt värde (True eller False) komma. Efter uttrycket kommer tecknet kolon (:). Efter kolon kommer de satser som ska exekveras om värdet blir True. Dessa satser ska indenteras (flyttas in några steg) med mellanslags- eller tabulator-tangenten. För att undvika problem bör du inte blanda indentering gjord med mellanslag och tabbar i samma fil. Vad kommer att skrivas ut av följande program om a = 12 och b = 12? if a < b: print "X", print "Y" Vad kommer att skrivas ut av följande program om a = 4 och b = 4? if a <= b: print "X", print "Y" Vad kommer att skrivas ut av följande program om a = 12 och b = 17? if a < b: print "X", print "Y", print "Z" Vad kommer att skrivas ut av följande program om a = 8 och b = 6? if a <= b: print "X", print "Y", Sid 13 av 57

14 print "Z" Konstanter Programmerare och andra nördar är kända för sin torra humor. Ett sätt att införa det i programmet är att införa en konstant. En konstant i Python är precis som en variabel, men som en konvention skriver man variabelnamnet med versaler, t ex: MAMMAS_FRYSPUNKT = 5 temperatur = input("ge utetemperatur: ") if temperatur < MAMMAS_FRYSPUNKT: print "Ta på dej en halsduk, lille vän!" En konstant ändrar inte funktionen i ett program från användarens sida, men det gör programmet lättare att modifiera för programmeraren (ffa om programmet är stort) och rätt använd kan den också göra programmet tydligare. Else-del i if-sats Om villkoret temperatur < MAMMAS_FRYSPUNKT är False händer ingenting alls när man kör programmet. Det är trist programmering. Mamma vill gärna ha en uppmuntrande utskrift då och bygger ut if-satsen så här: MAMMAS_FRYSPUNKT = 5 temperatur = input("ge utetemperatur: ") if temperatur < MAMMAS_FRYSPUNKT: print "Ta på dej en halsduk, lille vän!" else: print "Mammas gullgubbe slipper halsduk!" Detta program kommer att se ut så här på skärmen: Ge utetemperatur: 2 Ta på dej en halsduk, lille vän! eller Ge utetemperatur: 17 Mammas gullgubbe slipper halsduk! Satserna efter else kommer alltså att utföras när villkoret i if-satsen är False. Vad kommer att skrivas ut av följande program om a = 13 och b = 7? if a <= b: print "A", print "B", else: print "C", print "D" Vad kommer att skrivas ut av följande program om a = 36? Sid 14 av 57

15 MITTEN = 42 if a <= MITTEN: print "A", print "B", else: print "C", print "D" Flera villkor Plötsligt kommer mamma på att det kan bli ännu kallare och vill ha en tredje utskrift om temperaturen är under noll. # Ett program som visar hur if-elif-else fungerar MAMMAS_FRYSPUNKT = 5 CELSIUS_FRYSPUNKT = 0 temperatur = input("ge utetemperatur: ") if temperatur < CELSIUS_FRYSPUNKT: print "Ta på dej halsduk och mössa!" elif temperatur < MAMMAS_FRYSPUNKT: print "Ta på dej en halsduk!" else: print "Mammas gullgubbe slipper halsduk!" Detta program kommer att se ut så här på skärmen Ge utetemperatur: 3 Ta på dej en halsduk! eller Ge utetemperatur: 17 Mammas gullgubbe slipper halsduk! eller Ge utetemperatur: -2 Ta på dej halsduk och mössa! Hur många villkor som helst kan kombineras med hjälp av elif. Villkoren kontrolleras i tur och ordning, uppifrån och ned. Det första villkor som blir True får programmet att fortsätta exekveringen på de närmast följande indenterade satserna efter kolon fram till nästa ickeindenterade sats. Därefter hoppas resten av if-satsen över. Om inget villkor blir True (och endast då) utförs de indenterade satserna efter else. Vad kommer min, max och b att ha för värden efter följande satser om a = -2? min = 5 max = 10 b = 0 if a < min: min = a elif a > max: max = a Sid 15 av 57

16 else: b += 1 Likhet När man vill testa likhet så används dubbla likhetstecken. Enkelt likhetstecken används bara till tilldelning. Exempel: betyg = 2123 if betyg == 2000: print "Du har precis kommit in på högskolan" elif betyg > 2000: print "Du har kommit in på högskolan" else: print "Du har inte kommit in på högskolan" Vad skrivs ut om x = 5 och y = 3? if x > 2: if y > 4: print "blå" elif x == y: print "gul" else: print "röd" else: print "grön" While-slingor När en eller flera satser ska upprepas ett antal gånger är en while-sats ett bra hjälpmedel. Anta att man vill skriva ett program som skriver texten "Python" 5 gånger på skärmen. Detta kan man åstadkomma genom att använda en while-sats enligt nedan. Siffrorna i början på varje rad är för att vi ska kunna referera till raderna i texten. När man programmerar skriver man förstås utan siffror och kolon. 1: antal_varv = 0 2: while antal_varv < 5 : 3: print "Python" 4: antal_varv += 1 Innan vi går igenom programmet presenterar vi idén bakom programkoden. För att lösa problemet behöver vi en räknare för att hålla reda på antalet gånger texten "Python" skrivits ut så att programmet kan sluta skriva ut texten efter 5:e gången. Programmet har alltså följande uppgifter att utföra: Skapa en räknare och nollställa den Sid 16 av 57

17 Kontrollera räknarens värde Skriva ut texten "Python" Uppdatera räknarens värde Nu ska vi gå igenom programmet i detalj. I radnummer 1 har vi koden "antal_varv = 0". Där har vi valt variabeln antal_varv som ska fungera som räknare och får startvärdet 0. Resten av programmet är while-satsen. Syntaxen för en while-sats liknar syntaxen för if-satser som vi har sett tidigare i lektionen om villkor. Radnummer 2 är "while antal_varv < 5 :" som är följande instruktion för datorn: "Exekvera alla indragna rader som kommer efter kolon så länge variabeln antal_varv har ett värde som är mindre än 5" Radnummer 3 (print "Python") är en indragen rad och ingår därför i while-slingan. Den skriver ut texten "Python". Radnummer 4 (antal_varv += 1) ser till att räknaren ökar värdet med ett. Uppdatering av antal_varv är ett viktig steg i while-satsen som tillsammans med villkoret "antal_varv < 5" (i rad 2) avgör om texten "Python" ska skrivas ut ytterligare en gång eller inte. Vad skrivs ut av följande program? i = 0 v = 1 while i < 5: v = i * v print v i += 1 Hur exekveras programmet? antal_varv=0 while antal_varv < 5 : print "Python" antal_varav += 1 I första raden av programmet får variabeln antal_varv värdet 0. Därefter exekveras uttrycket antal_varv < 5 och eftersom att 0 är mindre än 5 är villkoret uppfyllt (True) vilket får till följd att while-slingan startar. Det första som händer i den är att print "Python" exekveras. Därefter exekveras antal_varav += 1 och därmed ändrar antal_varv värde till 1. Nu är slingan slut och därför exekveras uttrycket antal_varv < 5 igen och eftersom att 1 är mindre än 5 går vi ett varv till i while-slingan. Där exekveras print "Python" och antal_varav += 1. Sid 17 av 57

18 Ovanstående tre satser upprepas ytterligare tre gånger tills antal_varv får värdet 5. När då uttrycket antal_varv < 5 exekveras, till skillnad mot alla tidigare gånger, blir värdet falskt (False) eftersom att 5 inte är mindre än 5. Och därför avslutas exekvering av while-satsen och i det här fallet avslutas även programmet då det inte finns några fler satser kvar att exekvera. I vilken ordning exekveras följande program? A while B: C D Vi antar följande förutsättningar: Programmet går endast tre varv. A är en godtycklig tilldelningssats. B är en godtycklig villkorssats som är sann i tre varv. C och D är godtyckliga utskriftssatser. 1.ABCD 2.ACCCD 3.ABCCCD 4.ABCBCBCD 5.ABCBCBCBD 6.ABCABCABCD En oändlig while-slinga Om man tar bort rad nummer 4 från programmet får man följande: antal_varv = 0 while antal_varv < 5 : print "Python" Vi ser att variabeln antal_varv inte kommer att ändras i while-satsen. Detta gör att villkoret (antal_varv < 5) kommer förbli sant under hela programmet alltså kommer texten "Python" att skrivas ut om och om igen oändligt många gånger. Om du råkar ut för detta när du kör ett program kan du avbryta programmet genom att trycka Ctrlc. Det gör du genom att först trycka ner tangenten märkt "Ctrl" på tangentbordet och fortsätta hålla den nere och samtidigt som du också trycker ner "C". Hur många gånger skrivs texten "hej" när man kör följande program? v = 5 while v > 5: print "hej" v += 1 print "hej" Sid 18 av 57

19 Kommer följande program skriva ut texten "hej då"? Om inte, varför? i = 0 while i < 10: print "hej" print "hej då" Struktur på while-sats Strukturen på en while-sats är exakt som strukturen på en if-sats om man bara byter ut if mot while i en if-sats. while <BOOLESKT UTTRYCK> : <EN ELLER FLERA SATSER SOM SKA EXEKVERAS> En while-sats startar med reserverade ordet "while", efter ordet "while" ska ett uttryck som resulterar ett booleskt värde (True eller False) komma. Efter uttrycket kommer tecknet kolon (:). Efter kolon kommer de satser som ska exekveras flera gånger. Vad är det som är fel i följande while-sats? Programmet ska skriva ut "hej" oändligt antal gånger. i = 1 WHILE i < 10: print "hej" 1. 'WHILE' och 'print "hej"' måste stå rakt under varandra och ej vara förskjutna. 2. i = 1 ska tas bort. 3. i < 10 ska ändras till i == Ordet 'WHILE' ska stå med små bokstäver. När ska man använda en while-sats? En while-sats används när en eller flera rader kod ska exekveras ett bestämt eller obestämt antal gånger efter varandra. Följande är exempel på program där antalet upprepningar är obestämd och beror på användarens inmatning: tal = input("gissa ett tal mellan 1 och 100:") while tal!= 74 : tal = input("fel, försök igen:") print "Grattis du gissade rätt!" I vilka av följande tillfällen kan man med fördel använda sig av while-satser? 1. När man vill att programmet ska skriva ut samma text flera gånger efter varandra. 2. När man vill skriva ut alla tal mellan 5 och När man vill utföra en sak 10 gånger. Sid 19 av 57

20 Inlämningsuppgift 1 (Prat i kvadrat) I den första inlämningsuppgiften ska du skriva och skicka in ditt första pythonprogram. Programmet ska skriva ut de första n kvadrattalen: 1*1, 2*2,..., n*n, där talet n anges av den som använder programmet. Programmet ska också skriva ut summan av dessa kvadrattal. Här är ett exempel på en körning: Välkommen till prat i kvadrat. Hur många kvadrattal vill du skriva ut? 4 1 * 1 = 1 2 * 2 = 4 3 * 3 = 9 4 * 4 = 16 Summan av kvadrattalen: 30 Programmet ska finnas i en fil med namnet Uppgift1.py. Följ den här mallen: # Programmeringsteknik webbkurs KTH inlämningsuppgift 1. # <Ditt namn> # <Datum> # <Kort beskrivning av vad programmet gör> <Programkod> Innan du skickar in programmet så ska du testa att det fungerar. Kontrollera speciellt att programmet fungerar korrekt även om användaren skriver in talet 0 eller 1. (I den här uppgiften finns det inget krav på vad som ska hända om användaren matar in ett negativt tal eller skriver in något annat än ett heltal. Om du vill så får du dock gärna försöka upptäcka felaktig inmatning och skriva ut lämpliga felmeddelanden.) Observera att filen måste vara i textformat, vilket den automatiskt blir om du skapar den med hjälp av IDLE. Detta för att vi ska kunna prova och testköra ditt program. Sid 20 av 57

21 3. Listor och Anrop Listor Oftast är den som skriver ett program dvs programmeraren inte den som kommer att använda det. Den som skriver programmet har kunskap om programmering men man ställer inga krav om kunskap i programmering för den som ska använda programmet. Detta gör att programmeraren måste skriva programmet på ett sätt så att den kan köras av olika användare med olika förväntningar. Antag att vi vill skriva ett program som ska läsa in fem stycken namn och när man har matat in alla fem namnen skrivs de ut i omvänd ordning (dvs sista namnet först). Med den programmeringskunskap du har idag är detta fullt möjligt. Det är bara att använda sig av fem olika variabler för att lagra namnen och sedan skriva ut dem i omvänd ordning, som programmet nedan. (Funktionen raw_input fungerar ungefär som input. Skillnaden är att raw_input inte försöker översätta indata till lämpligt format utan läser in hela raden som en teckensträng som kan bestå av både bokstäver, siffor, mellanslag och andra tecken.) namn1 = raw_input("ange ett namn: ") namn2 = raw_input("ange ett namn: ") namn3 = raw_input("ange ett namn: ") namn4 = raw_input("ange ett namn: ") namn5 = raw_input("ange ett namn: ") print namn5, namn4, namn3, namn2, namn1 Programmeraren har bestämt att 5 och endast 5 namn ska matas in. Programmet fungerar varken för färre eller fler antal namn. Det vore bättre om programmet ställer en fråga om hur många namn som ska matas in i början av programmet och användarens svar på denna fråga avgör om hur många variabler som ska användas till att lagra alla namn. Men programmeraren kan fortfarande inte veta hur många variabler som ska användas eftersom att olika användare kommer att kunna mata in olika antal namn. Hur ska programmeraren göra? Lösningen är att använda en lista. Vad är en lista? En lista är variabel som kan ha flera värden. Varje värde får ett eget index (nummer) som kan användas för åtkomst eller modifiering av värdet. Om en vanlig variabel fungerar som en stol så fungerar en lista som en bänkrad i en biograf när det är numrerad placering. Telefonnummerlistan i din mobil är ett exempel på en lista. Sid 21 av 57

22 Hur använder man en lista? Listor skrivs med hjälp av klamrar [] namnlista = 3*[None] namnlista blir då en variabel som har plats för 3 olika värden. None betyder att alla platserna ska vara lediga. Om man vill tilldela första platsen i variabeln ett värde t ex talet 47 gör man på följande sätt: namnlista[0] = 47 I ovanstående rad är namnlista namnet på listan. [0] specificerar avsedd plats i listan, 0 är ett index som används för specificera första plats. = 47 som vi vet sedan tidigare är en tilldelningssats. Hela raden gör att första plats i listan får värdet 47. Programmerare är lite lustiga på det sättet att 0 betyder första plats i en lista. Detta gäller i flera programspråk, t ex Java och C++. Om man vill tilldela andra plats i listan ett nytt värde t ex "hej" använder man därför indexet 1: namnlista[1] = "hej" För att skriva ut alla värden som finns i listan kan man skriva som nedan: print namnlista Om man endast vill skriva ut värdet på en specifik plats i vektorn får man använda sig av klamrar igen: print namnlista[2] Raden ovan skrivet ut värdet som finns på tredje platsen i listan. Hur många platser har följande lista? Sid 22 av 57

23 bilar = 16*[None] Åter till exemplet Nu när vi har lärt oss lite om listor ska vi försöka skriva programmet som frågar efter ett antal namn och skriver ut dem i omvänd ordning: 1. antal_namn = input("hur många namn vill du mata in? ") 2. namnlista = antal_namn*[none] 3. i = 0 4. while i < antal_namn: 5. namnlista[i] = raw_input("ange ett namn: ") 6. i += 1 7. j = antal_namn while j >= 0: 9. print namnlista[j] 10. j -= 1 I rad 1 frågar programmet efter ett tal (antal namn) inmatningen lagras i variabeln antal_namn. I rad 2 skapar vi en lista som har lika många platser som användarens svar från första raden. I rad 3 använder vi iterationsvariabeln i som ska användas i while-slingan som finns i rad 4-6. Rad 4-6 är en while-slinga som ska upprepa satsen i rad 5 så länge variabeln i är mindre än antalen namn som ska matas in. Rad 5 frågar användaren efter ett namn och svaret kommer att lagras på i:te platsen i namnlista. I rad 6 vi ökar det värde som i har med 1. En sammanfattning av den första while-slingan är att variabeln i startar med värdet 0 och i första varvet i slingan kommer namnlista[i] alltså att motsvara namnlista[0] eftersom i är 0. Alltså tilldelas första plats i listan ett nytt värde. Sedan när i ökas med 1 så får variabeln i värdet 1. Och i andra varvet kommer namnlista[i] motsvara namnlista[1] dvs andra plats i listan osv. Detta upprepas tills i blir lika med antal_namn och alla platser i listan har fått ett värde. När while-slingan i rad 4-6 är klar kommer listan innehålla så många namn som användaren ville mata in. Nu är det dags att programmet skriver ut alla namn i omvänd ordning. För att skriva ut sista namnet först måste vi ta reda på index för det sista namn som matades in. Vi vet att index för första namnet är 0, index för andra namnet är 1 och index för tredje namnet är 2 osv. Men vad är index för det sista namnet? Vi vet att antal namn som har matats in är lika många som värdet antal_namn (rad 1 i programmet). Om antal_namn t ex har värdet 10 så ska sista namnet ha placerats i plats nummer Sid 23 av 57

24 9 (= 10-1). I radnummer 7 vill vi tilldela variabeln j ett startvärde, startvärdet ska vara samma värde som index för sista namnet i listan. Med ovanstående kunskap vet vi att j = antal_namn - 1 kommer att vara index för den sista plats i listan. Rad 8-10 är en while-sats som skriver ut alla element från namnlista i omvänd ordning. Så här fungerar den andra while-satsen: Variabeln j har ett startvärde som är lika med index för sista platsen. While-satsen ska upprepa print-satsen (rad 9) så länge variabeln j har ett värde som är större eller lika med 0. Första varvet i slingan kommer namnlista[j] att motsvara sista namnet som finns i listan eftersom att j har just ett värde som är lika stort som index för sista namnet. På rad 10 kommer värdet av variabeln j minskas med 1. Alltså, j kommer att ha samma värde som index för näst sista namnet i listan och därför i andra varvet i slingan kommer namnlista[j] att motsvar näst sista namn i listan osv. Antag att vi har listan ages med ålder på 50 personer. Vilket av följande är korrekt om man vill komma åt femtonde elementet i listan? 1.ages[14] 2.ages14 3.ages15 4.ages, 14 5.ages[15] 6.ages, 15 Antag att vi har listan ages med ålder på 50 personer. Vilket av följande kodexempel summerar alla element i listan ages? 1. i = 0 sum = 0 while i < 50: sum += ages + i i += 1 2. i = 0 sum = 0 while i < 50: sum += ages[i] i += 1 3. summera(ages) 4. i = 0 Sid 24 av 57

25 sum = 0 while i < 50 sum += i i += 1 Mer om listor Det finns ytterligare några list-kommandon som är bra att känna till. Man kan lägga till ett nytt element i slutet av en lista med hjälp av append(): namn = ["Adam", "Bertil", "Ceasar"] namn.append("david") # Listan namn utökas till ["Adam", "Bertil", "Ceasar", "David"] Man kan också slå samman två listor med hjälp av ett vanligt plus-tecken: a = [1, 2, 3] + [4, 5] # Resultatet blir [1, 2, 3, 4, 5] Slutligen kan man plocka ut dellistor på följande sätt: veckodagar = ["mån", "tis", "ons", "tor", "fre", "lör", "sön"] # plockar ut elementen fr o m index 0 t o m index 4 i listan vardagar = veckodagar[0:5] # plockar ut elementen fr o m index 5 t o m index 6 i listan helgdagar = veckodagar[5:7] Uppslagslistor Ibland så har man en mängd data där det inte är naturligt att numrera elementen som i en vanlig lista. Då kan man istället använda en uppslagslista (dictionary). En uppslagslista består av ett antal poster, där varje post har en nyckel och ett värde. I följande exempel så håller vi reda på antalet dagar per månad med hjälp av en uppslagslista. I varje post så finns det en nyckel, som är en textsträng som innehåller månadens namn, och ett värde, som är ett tal som anger antalet dagar i månaden. Man kan använda både strängar och tal som nycklar och värden. month = {"jan":31, "feb":28, "mar":31, "apr":30, "maj":31, "jun":30, "jul":31, "aug":31, "sep":30, "okt":31, "nov":30, "dec":31} print month["feb"] # Skriver ut 28 month["feb"] = 29 # Ändrar "feb":s värde till 29 print month["feb"] # Skriver ut 29 # Tar bort en post och lägger till två nya i uppslagslistan. del month["feb"] month["feb_vanlig"] = 28 month["feb_skotte"] = 29 Sid 25 av 57

26 # Skriver ut False eftersom månaden "qui" inte finns med i uppslagslistan. # (Quintilis döptes om till juli för att ära Julius Caesar.) print month.has_key("qui") # Metoden keys() ger en lista med alla nycklar i uppslagslistan. # Utskriften blir (observera att en uppslagslista inte är ordnad): # ['mar', 'okt', 'aug', 'sep', 'apr', 'jun', 'feb_vanlig', # 'jul', 'jan', 'feb_skotte', 'nov', 'maj', 'dec'] names = month.keys() print names Slingor Det är så pass vanligt att man går igenom listor eller strängar från början till slut att det finns ett särskilt kommando för detta i Python, den så kallade for-satsen. Utskriften från följande program tanter = ["Brun", "Grön", "Gredelin"] for tant in tanter: print "Tant", tant blir Tant Brun Tant Grön Tant Gredelin For-satsen har alltså följande format for <index> in <lista>: <sats> där <index> är ett variabelnamn, <lista> en lista och <sats> en sats som kommer att utföras en gång för varje element i listan. I det första varvet av listan så kommer variabeln <index> att innehålla det första elementet i listan, i det andra varvet så innehåller den det andra elementet, och så vidare. For-kommandot kan också användas för att gå igenom de flesta ordnade typer, till exempel en sträng. Här är ett exempel där vi använder en for-sats för att kontrollera om tecknet W finns med i en sträng: alfabetet ="ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ" for bokstav in alfabetet: if bokstav == "W": print "Ja, W fanns med i alfabetet!" For-satsen är också mycket användbar om man vill gå igenom en lista av tal, sådana listor kan man nämligen snabbt och lätt skapa med hjälp av kommandot range(). Här är ett exempel: Sid 26 av 57

27 #Skriver ut: for i in range(1, 10): print i, Man anger en range med hjälp av startvärde, slutvärde och uppräkning. Observera att startvärdet finns med i listan, slutvärdet är däremot en övre gräns som inte finns med i listan. Här är ett par exempel: a = range(100) # [0, 1, 2, 3,..., 99] b = range(0, 100, 5) # [0, 5, 10, 15,..., 95] Moduler Stora program delar man upp i mindre delar med bland annat funktioner. Funktionerna kan placeras i olika filer. En fil med en samling av funktioner kallas för modul. För att vi ska kunna använda en viss funktion från en viss modul måste vi importera tillhörande modul innan anropet av funktionen. Importeringen kan man göra med en enkel import-sats som vi förklarar nedan. Man kan ha stort nytta av modularisering i program. Med modularisering kan man återanvända kod vilket gör att man inte behöver lägga tid på och anstränga sig för att skriva en motsvarande kod som redan har skrivits. Dessutom blir stora program med flera tusen rader kod mer överskådliga om de delas upp på ett bra sätt i moduler. I denna kurs tar vi inte upp hur man modulariserar utan vi nöjer oss med att lära hur man anropar funktioner som finns i moduler. När man installerar Python medföljer en hel del moduler. För att använda en funktion som finns i en modul måste man importera modulen. Detta gör man med hjälp av reserverade orden from, import och modulnamnet. Information om vilka moduler som följer med och vilka funktioner finns i varje modul kan man hitta på Anta att vi behöver beräkna roten ur 23 i ett program. Vi har från fått informationen att i modulen math finns en funktion som heter sqrt(x) som beräknar roten ur x och returnerar svaret. För att använda funktionen ska man importera modulen genom att skriva följande sats: from math import * Först nu efter importeringen kan vi anropa funktionen sqrt enligt nedan: sqrt(23) Observera att import-satsen behöver endast vara med en enda gång för att man ska kunna anropa en funktion flera gånger i ett program. Ett bra ställe för import-satser är därför i början av programmet. Vad betyder modularisering? 1. Dela upp ett program i fristående delar. 2. Slå ihop två program till ett. Sid 27 av 57

28 3. Slå ihop flera program till två. 4. Slå ihop tre program till ett. Vad är modularisering bra för? 1. För att man ska kunna återanvända kod. 2. För att man kommer att höja prestanda hos programmet. 3. För att man ska få ett mer överskådligt program. 4. Är ett sätt att gömma undan kod så att andra inte ska kunna förstå programmet. Random Ett exempel på en modul som man kan importera är random som förser programmeraren med slumptal. Ibland vill vi att ett program ska vara oförutsägbart. Dvs det ska inte gå att förutse vad som kommer att hända i nästa stund av programmet. Detta beteende är väldigt vanlig i t ex spel där spelet byter strategier eller beter sig olika vid olika tillfällen. T ex ett äventyrsspel där det plötsligt kan dyka upp ett monster. Detta kan man åstadkomma med hjälp av slumpfunktionen random() som finns i modulen random. En modul är en samling med funktioner och annat som kan vara till användning i många program och är ett sätt att organisera funktioner. För att kunna använda funktionen random() måste man ha importerat modulen random i programmet, detta gör man med den enkla import-satsen: from random import * Efter denna sats kan man anropa funktionen random() som genererar ett slumptal (decimal) från och med 0 till 1. Till exempel: from random import * s_tal = random() s_tal kommer då att ha ett värde som är mindre än 1 och större eller lika med 0. Om man vill generera heltal så kan man använda funktionen randrange() som också finns i modulen random. h_tal=randrange(1,3) Variabeln h_tal kommer att bli heltalet 1 eller heltalet 2. randrange(a,b) betyder att slumpa ett heltal, heltalet kommer att vara större eller lika med a och mindre än b. När skriver följande program texten "Det kommer att bli en solig sommar"? from random import * weather = random() if weather < 0.2 : print "Det kommer att bli en solig sommar" else: print "Det kommer att bli en regnig sommar" Sid 28 av 57

29 1. Alltid. 2. Endast när slumptalet som genererats av weather = random() är större än Endast om det inte regnar när man kör programmet. 4. Aldrig. 5. Endast när slumptalet som genererats av weather = random() är mindre än 0.2. Sid 29 av 57

30 4. Funktioner Vad har man funktioner till? Stora program är besvärligare att konstruera än små. Men man kan göra det enklare för sig genom att dela upp programmet i funktioner. En funktion är som ett litet delprogram i programmet. När man anordnar tävlingar med riktiga sniglar tar det mycket lång tid innan deltagarna kommer i mål. Vi ska istället skriva ett litet program som simulerar en tävling mellan två sniglar: VEM HAR DEN SNABBASTE SNIGELN? Här får din snigel tävla mot en vältränad racersnigel. Skriv in namnet på din snigel så sätter tävlingen igång! Vad heter din snigel? Ebba Klara...färdiga...gå! Ebba: Racersnigeln: Det här loppet tog en oväntad vändning, Ebba vann! Dela upp ett problem i funktioner För att programmet ska bli enklare att skriva bestämmer vi först vilka funktioner vi ska ha. Det är inte alls självklart hur programmet ska delas upp i funktioner; samma problem kan lösas på många olika sätt! Vi vill se till att varje funktion har ett enda uppdrag. Här är ett förslag på uppdelning: 1. Skriv ut informationsrutan och läs in namnet på snigeln 2. Simulera tävlingen och rita upp banorna 3. Skriv ut vem som vann Ettan och tvåan består av flera olika moment. Vi gör det ännu enklare för oss genom att dela upp i ännu mindre delar: 1. Skriv ut informationsrutan 2. Läs in namnet på en snigel 3. Simulera tävlingen 4. Rita upp en snigels bana 5. Skriv ut vem som vann Vi börjar med att skriva in dessa moment som kommentarer i filen snigel.py, för att vi ska hålla reda Sid 30 av 57

31 på vad som är kvar att göra. Då får vi också en kommentar för varje funktion, så att det syns vad som händer var. Fråga: Tänk om vi ville skriva ett program för stavningskontroll, i vilka funktioner skulle vi då dela upp det? Definiera en funktion Först kommer funktionshuvudet (första raden i funktionen). Exempel: def visainformation(): Funktionshuvudet består av fyra delar. Ordet def (talar om att en funktion ska definieras här) Funktionens namn, gärna ett verb som beskriver vad funktionen gör Ett par parenteser () Ett kolon Under funktionshuvudet kommer funktionskroppen, som helt enkelt är en följd av indenterade satser som funktionen ska utföra. Så här ser hela funktionen ut: # Skriver ut informationsrutan def visainformation(): print """ VEM HAR DEN SNABBASTE SNIGELN? Här får din snigel tävla mot en vältränad racersnigel. Skriv in namnet på din snigel så sätter tävlingen igång! """ (För att kunna skriva en sträng som sträcker sig över flera rader så startar och avslutar vi strängen med tre stycken "-tecken. Vanliga strängar, som börjar och slutar med enkelt citattecken, kan nämligen inte innehålla radbrytningar.) Lägg till koden ovan i din fil snigel.py och provkör. Men vad nu - programmet skriver inte ut något alls? Gå vidare till nästa avsnitt för att få reda på varför! Anropa en funktion Satserna i funktionskroppen utförs inte om inte funktionen anropas. Anropet ska stå längst ner i programmet, under funktionsdefinitionerna. Den delen av programmet kallar vi huvudprogrammet. Anropet består bara av funktionens namn följt av ett parentespar. Om du lägger till anropet sist i ditt program ska alltihop se ut så här: Sid 31 av 57

32 # Skriver ut informationsrutan def visainformation(): print """ VEM HAR DEN SNABBASTE SNIGELN? Här får din snigel tävla mot en vältränad racersnigel. Skriv in namnet på din snigel så sätter tävlingen igång! """ # Visa information om tävlingen visainformation() # Läs in namnet på en snigel # Simulera tävlingen # Rita upp en snigels bana # Skriv ut vem som vann Spara i filen snigel.py och provkör! Skicka utdata från en funktion (returvärden) Då ger vi oss på nästa funktion, som ska läsa in namnet på en snigel. Namnet på snigeln är utdata från funktionen. Den som kör programmet och knappar in namnet tycker förstås att det är indata, men ur funktionens synvinkel är det nåt som ska skickas ut. För att skicka ut ett värde ur funktionen skriver vi ordet return följt av den variabel vi vill skicka ut värdet på. Funktionen som läser in namnet kommer att se ut så här: def lasnamn(): namn = raw_input("vad heter din snigel? ") return namn När vi ska anropa funktionen måste vi ta hänsyn till att den returnerar ett värde. Därför skriver vi anropet i en tilldelningssats, med en variabel till vänster som får ta emot det returnerade värdet. Variabeln behöver inte ha samma namn som variabeln i return-satsen inuti funktionen. dinsnigelsnamn = lasnamn() När den här satsen utförs av Python kommer följande att hända. Först anropas funktionen lasnamn, som läser in namnet och returnerar det. Sen kommer det returnerade värdet att lagras i variabel dinsnigelsnamn. Vi lägger in den nya i filen snigel.py och provkör. # Skriver ut informationsrutan def visainformation(): Sid 32 av 57

33 print """ VEM HAR DEN SNABBASTE SNIGELN? Här får din snigel tävla mot en vältränad racersnigel. Skriv in namnet på din snigel så sätter tävlingen igång! """ # Läs in namnet på en snigel def lasnamn(): namn = raw_input("vad heter din snigel? ") return namn # Visa information om tävlingen visainformation() # Läs in namnet på en snigel dinsnigelsnamn = lasnamn() # Simulera tävlingen # Rita upp en snigels bana # Skriv ut vem som vann Men hur ska vi veta om det fungerade eller inte? Jo, vi lägger in en kontrollutskrift print "Din snigel heter alltså", dinsnigelsnamn allra sist i programmet. Kontrollutskrifter är ett enkelt sätt att se om programmet fungerar som det ska, och är till stor nytta när man försöker ta reda på varför programmet inte gör som det ska. Provkör igen. När programmet fungerar kan du ta bort kontrollutskriften! Det här är viktigt, så vi tar ett exempel till, den här gången med två returvärden. Nästa funktion ska simulera tävlingen, på det här viset: Sniglarna startar bägge på startstrecket, dvs vid 0 Vi skriver ut Klara...färdiga...gå Och startar själva tävlingen, som representeras av en while-slinga I varje varv i slingan låter vi sniglarna ta varsitt skutt av slumpmässig längd När någon av sniglarna (eller bägge) passerar mållinjen så avbryter vi Sist returnerar vi bägge sniglarnas slutpositioner def tavling(): snigelbana1 = 0 snigelbana2 = 0 print "Klara...färdiga...gå! \n" while snigelbana1 < DISTANS and snigelbana2 < DISTANS: snigelbana1 += random.randrange(5) snigelbana2 += random.randrange(5) return snigelbana1, snigelbana2 Sid 33 av 57

34 I return-satsen allra sist kan vi se att två värden returneras, åtskilda med kommatecken. Givetvis måste vi då också ta emot två värden i huvudprogrammet. Den distans (i centimeter) som sniglarna ska tillryggalägga representeras av konstanten DISTANS. En variabel som ska ha ett konstant värde under hela programmet brukar man skriva med stora bokstäver, VERSALER. Python bryr sig inte om det, men andra människor som läser programmet kan se vad man menar. Vi definierar DISTANS överst i huvudprogrammet, och frågar oss om den kommer att synas (vara tillgänglig) inuti funktionen? Lägg in den nya funktionen i snigel.py, enligt nedan. Glöm inte att lägga in kontrollutskrifter av snigelbana1 och snigelbana2 innan du provkör! import random # Skriver ut informationsrutan def visainformation(): print """ VEM HAR DEN SNABBASTE SNIGELN? Här får din snigel tävla mot en vältränad racersnigel. Skriv in namnet på din snigel så sätter tävlingen igång! """ # Läser in namnet på användarens snigel def lasnamn(): namn = raw_input("vad heter din snigel? ") return namn # Simulerar en tävling mellan två sniglar def tavling(): snigelbana1 = 0 snigelbana2 = 0 print "Klara...färdiga...gå! \n" while snigelbana1 < DISTANS and snigelbana2 < DISTANS: snigelbana1 += random.randrange(5) snigelbana2 += random.randrange(5) return snigelbana1, snigelbana2 DISTANS = 30 # Visa information om tävlingen visainformation() # Läs in namnet på en snigel dinsnigelsnamn = lasnamn() # Simulera tävlingen snigelbana1, snigelbana2 = tavling() Sid 34 av 57

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

DD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008

DD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008 DD1311 meringsteknik för S1 Laborationer läsåret 2007-2008 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare är Linda Kann, linda@nada.kth.se. Namn... Personnr... Laborationer Labb

Läs mer

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?

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

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

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

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

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

Kort om programmering i Matlab

Kort om programmering i Matlab CTH/GU 25/26 Matematiska vetenskaper Kort om programmering i Matlab Inledning Redan första tillfället gjorde ni ett litet program. Ni skrev ett script eller en skriptfil som beräknade summan 5 i 2 = 2

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 18 Filer och avbildningar

Föreläsning 18 Filer och avbildningar Föreläsning 18 Filer och avbildningar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.11.2011 Avbildningar Hur skulle du göra en: Ordlista

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

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

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

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

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se Mål Så enkelt som möjligt: låg tröskel Ett riktigt programmeringsspråk: inget tak Roliga uppgifter som går

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

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

Laboration: Grunderna i MATLAB

Laboration: Grunderna i MATLAB Laboration: Grunderna i MATLAB 25 augusti 2005 Grunderna i MATLAB Vad är MATLAB? MATLAB är ett interaktivt program för vetenskapliga beräkningar. Som användare ger du enkla kommandon och MATLAB levererar

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

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

Grundkurs i programmering - intro

Grundkurs i programmering - intro Grundkurs i programmering - intro Linda Mannila 4.9.2007 Dagens föreläsning Allmän kursinformation: mål, syfte, upplägg, examination, litteratur, etc. Hur arbetar en dator? Hur vi får datorn att förstå

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

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

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach Föreläsning 1: Intro till kursen och Kursens hemsida http://www.it.uu.se/edu/course/homepage/prog1/esvt10 Studentportalen http://www.studentportalen.uu.se Kursmaterial Kursbok Kursprogramvara Tips: Installera

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

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

Objektorienterad programmering Föreläsning 4

Objektorienterad programmering Föreläsning 4 Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion

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

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

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition): Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,

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

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. 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

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

KURSMÅL WINDOWS STARTA KURSEN

KURSMÅL WINDOWS STARTA KURSEN KURSMÅL WINDOWS Detta är en introduktionskurs för dig som är nybörjare. Du kommer att få bekanta dig med datorns viktigaste delar och lära dig grunderna i operativsystemet Windows, vilket är en förutsättning

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

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

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

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

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

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

Programmeringsolympiaden 2015

Programmeringsolympiaden 2015 Programmeringsolympiaden 2015 TÄVLINGSREGLER FÖR SKOLKVALET Tävlingen äger rum på av skolan bestämt datum under sex timmar effektiv tid. Eleven ska i förväg komma överens med läraren om att använda egen

Läs mer

Introduktion till programmering, hösten 2011

Introduktion till programmering, hösten 2011 Föreläsning 1 Programmering är ett hantverk. Det betyder att man inte kan läsa sig till den förmågan, man måste träna och man tränar genom att skriva mer och mer avancerade program. Programmering förutsätter

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

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript

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

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

TDP002 Imperativ programmering

TDP002 Imperativ programmering TDP002 Imperativ programmering Introduktion till kursen och python Eric Elfving Institutionen för datavetenskap (IDA) Översikt Programmering En introduktion Python Köra och skriva program Python grunderna

Läs mer

TDP002 - Imperativ programmering

TDP002 - Imperativ programmering . TDP002 - Imperativ programmering Introduktion till kursen och Python Eric Elfving Institutionen för datavetenskap 14 augusti 2015 Översikt 2/29 Programmering - en översikt Python - Köra och skriva program

Läs mer

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

Inledande programmering med C# (1DV402) Introduktion till programmering Introduktion till programmering Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt

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

Föreläsning 4: for, while, do-while

Föreläsning 4: for, while, do-while TDA 545: Objektorienterad programmering Föreläsning 4: for, while, do-while Magnus Myréen Chalmers, läsperiod 1, 2014-2015 Evaluering Det är viktigt att ni kan se hur kod körs. ( se = simulera på papper,

Läs mer

Språkteknologi (SV2122) Föreläsning 3: Programmering i Python

Språkteknologi (SV2122) Föreläsning 3: Programmering i Python Språkteknologi (SV2122) Föreläsning 3: Programmering i Python Richard Johansson richard.johansson@svenska.gu.se 29 januari 2014 översikt inledning första stegen grundläggande begrepp större byggstenar

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

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

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

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

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

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

Grundläggande Datalogi

Grundläggande Datalogi s delar Grundläggande Datalogi s delar s delar s delar Dataabstraktion Rekursion Algoritmanalys s delar Sortering Trädstrukturer Grafalgoritmer Optimering Stavning Strängmatchning Datakompression Versionshantering

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

Grundläggande programmering

Grundläggande programmering LUNDS TEKNISKA HÖGSKOLA Programmeringsteknik för D/C Institutionen för datavetenskap 2014/15 Grundläggande programmering 1 Inledning Övningarna i Programmeringsteknik under vecka 1 3 av läsperiod ht1 är

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

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

Innehåll. JavaScript - Grundkurs. Vad är JavaScript? Vad är JavaScript? Vad behövs? Lite historia

Innehåll. JavaScript - Grundkurs. Vad är JavaScript? Vad är JavaScript? Vad behövs? Lite historia JavaScript - Grundkurs Mahmud Al Hakim mahmud@dynamicos.se www.dynamicos.se www.webbacademy.se Innehåll Introduktion till JavaScript JavaScript i HTML-dokument Lite om DOM (Document Object Model) Händelser

Läs mer

Allmänt om programvaror och filer i Windows.

Allmänt om programvaror och filer i Windows. Allmänt om programvaror och filer i Windows. Vart sparade du dokumentet? I Word. Jag har fått detta svar mer än en gång när jag försökt hjälpa någon att hitta ett dokument som de tappat bort i sin dator.

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

Programmering. Den första datorn hette ENIAC.

Programmering. Den första datorn hette ENIAC. Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/vt11 Studentportalen http://www.studentportalen.uu.se Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.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

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

Egna genvägar. Subhashish Pradhan T.C. Hollingsworth Översättare: Stefan Asserhäll

Egna genvägar. Subhashish Pradhan T.C. Hollingsworth Översättare: Stefan Asserhäll Subhashish Pradhan T.C. Hollingsworth Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 4 2 Hantera genvägar och grupper 4 2.1 Lägga till grupper...................................... 4 2.2 Lägga till

Läs mer

Cecilia Ingard. Boksidan

Cecilia Ingard. Boksidan Cecilia Ingard Boksidan Innehåll Vad som händer när datorn startar 3 Hur ser en dator bokstäverna? 12 Vad kan hända när man skriver ett brev 14 Inuti datorlådan 22 Moderkortet 23 Processorn 24 RAM-minnet

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

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

Programmering för alla!

Programmering för alla! Programmering för alla! Inspirationsseminarium för lärare i grundskola och gymnasium Björn Regnell Professor Datavetenskap, LTH, Lunds universitet lth.se/programmera Video http://www.svt.se/nyheter/sverige/krav-pa-att-elever-lar-sig-programmera

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

Objektorientering/1.2. 3 Klasser

Objektorientering/1.2. 3 Klasser 3 Klasser 3.1 Att hantera många objekt 3.2 Klasser 3.3 Krav för att bilda en klass 3.4 Får två objekt vara helt identiska? 3.5 Måste vi använda klasser i objektorientering? 3.6 En klassbeskrivning 3.7

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

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

Kryptering. Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin

Kryptering. Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin Kryptering Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin Inledning Den här rapporten ska hjälpa en att få insikt och förståelse om kryptering. Vad betyder

Läs mer

Elias Castegren. (Version 1, 2012)

Elias Castegren. (Version 1, 2012) Liten Emacs-referens Elias Castegren (Version 1, 2012) Det här är en kort genomgång av några väldigt grundläggande kommandon i Emacs. Dokumentet är inte utförligt eller ens särskilt pedagogiskt, utan jag

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

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

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

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

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

Modul 3 - Modularisering

Modul 3 - Modularisering 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

Läs mer

Linjär algebra med tillämpningar, lab 1

Linjär algebra med tillämpningar, lab 1 Linjär algebra med tillämpningar, lab 1 Innehåll Per Jönsson Fakulteten för Teknik och Samhälle, 2013 Uppgifterna i denna laboration täcker kapitel 1-3 i läroboken. Läs igenom motsvarande kapitel. Sitt

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

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

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Erik Forslin ÓÒ º Ø º Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1 Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4

Läs mer

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund gussk258@student.liu.se. Marcus Widblom marwi026@student.liu.se. Senast ändrad: 13 / 05 / 08

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund gussk258@student.liu.se. Marcus Widblom marwi026@student.liu.se. Senast ändrad: 13 / 05 / 08 JavaRats Kravspecifikation Version 1.1 Gustav Skoglund gussk258@student.liu.se Marcus Widblom marwi026@student.liu.se Senast ändrad: 13 / 05 / 08 Sammanfattning Kravspecifikationen för JavaRats har skrivit

Läs mer

Kapitel 1 Komma i gång... 5

Kapitel 1 Komma i gång... 5 DDS-CAD Arkitekt 10 Komma i gång Kapitel 1 1 Kapitel Sida Kapitel 1 Komma i gång... 5 Är DDS-CAD Arkitekt installerat?... 5 Operativmiljö Windows... 6 Begrepp... 6 Starta DDS-CAD Arkitekt... 6 Starta ett

Läs mer

Föreläsning 13 Testning och strängar

Föreläsning 13 Testning och strängar Föreläsning 13 Testning och strängar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 13.10.2011 Testning Tips för systematisk testning

Läs mer

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

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

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