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

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är

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

Övningar i 2D2050. Per-Anders Staav (kallas Pa) Epost: eller

Övningar i 2D2050. Per-Anders Staav (kallas Pa) Epost: eller Övningar i 2D2050 Per-Anders Staav (kallas Pa) Epost: pasta@kth.se eller pastaav@algonet.se Läser till civilingengör på Elektro 180 p inriktning mot programmering. Har jobbat extra som lärare på Nada sedan

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

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

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

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

Föreläsning 3 Programmeringsteknik och Matlab DD1315. Importering av moduler. randrange

Föreläsning 3 Programmeringsteknik och Matlab DD1315. Importering av moduler. randrange Föreläsning 3 Programmeringsteknik och Matlab DD1315 moduler, Styrstrukturer (if, if-elif,if-else) Slingor () Importering av moduler Det finns en hel del funktioner man kan använda genom att era dem från

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

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

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

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

Inledande programmering med C# (1DV402) Summera med while"-satsen

Inledande programmering med C# (1DV402) Summera med while-satsen Summera med while"-satsen Upphovsrätt för detta verk Inledande programmering med C# (1DV402) Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du få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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

MMA132: Laboration 2 Matriser i MATLAB

MMA132: Laboration 2 Matriser i MATLAB MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk

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

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

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

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

DD1311 Programmeringsteknik för CL1 Laborationer läsåret 2008-2009

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

Läs mer

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Introduktion till programmering SMD180. Föreläsning 9: Tupler Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]

Läs mer

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion Introduktion till programmering D0009E Föreläsning 6: Iteration Multipel tilldelning Helt ok att tilldela en variabel flera gånger: bruce = bruce, bruce = 7 bruce Output: 7 Som tillståndsdiagram: bruce

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

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

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

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

Språket Python - Del 2 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt

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

Datalogi för E Övning 3

Datalogi för E Övning 3 Datalogi för E Övning 3 Mikael Huss hussm@nada.kth.se AlbaNova, Roslagstullsbacken 35 08-790 62 26 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1343/datae06 Dagens program Att skapa egna

Läs mer

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram? Programmeringsteknik och Matlab Övning 2 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

Objektorienterad programmering i Java

Objektorienterad programmering i Java bild 1 Objektorienterad programmering i Java Föreläsning 1 Kapitel 1-3 i kursboken Java Software Solutions bild 2 Läsanvisningar Kapitel 1 är en repetition av det ni förväntas kunna sedan tidigare. Det

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

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

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

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

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar STRÄNGAR En av de mest avancerade av de normala datatyperna är. Här skall vi grundläggande gå igenom hur den datatypen fungerar och vidare flertalet funktioner som hör till datatypen. Låt oss kasta oss

Läs mer

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv Datorlära 6 Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv 1 Arbeta med Strängar Strängar skapas med text inom citattecken, enkla eller dubbla.!>> str=

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

Introduktion till PHP

Introduktion till PHP PHP - Grund Copyright 2016 Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Introduktion till PHP PHP = PHP: Hypertext Preprocessor PHP är ett programmeringsspråk. PHP är ett skriptspråk som körs

Läs mer

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap Hur man programmerar TDDC66 Datorsystem och programmering Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2014-09-05 Översikt Problemlösning: Hur ska man tänka? Datatyper Listor (forsätter

Läs mer

Introduktion till Matlab

Introduktion till Matlab Introduktion till Matlab Inledande matematik, I1, ht10 1 Inledning Detta är en koncis beskrivning av de viktigaste delarna av Matlab. Till en början är det enkla beräkningar och grafik som intresserar

Läs mer

Ordlistor, filhantering och ut på webben. Linda Mannila 20.11.2007

Ordlistor, filhantering och ut på webben. Linda Mannila 20.11.2007 Ordlistor, filhantering och ut på webben Linda Mannila 20.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Funktioner och moduler

Läs mer

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf Föreläsning1 Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf scanf Ni behöver läsa boken både för att

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

Logik och kontrollstrukturer

Logik och kontrollstrukturer Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch

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

1 Iteration. 1.1 for-satsen

1 Iteration. 1.1 for-satsen 1 Iteration Iteration innebär en upprepning, repetition av satser. Vi har nu sett hur en villkorssats kan välja att utföra ett satsblock beroende på om ett villkor är uppfyllt, selektion. För selektion

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

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

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

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och

Läs mer

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Kortfattad programmerings- och Pythonordlista < <= > >= && () + - * / adress algoritm array assignment avlusa bibliotek

Kortfattad programmerings- och Pythonordlista < <= > >= && () + - * / adress algoritm array assignment avlusa bibliotek Kortfattad programmerings- och Pythonordlista = är»tilldelningsoperatorn«(assignment operator) som tilldelar variabeln till vänster om operatorn värdet av uttrycket till höger. == är»lika med«-operatorn

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

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/mafykht11/ λ Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga

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

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

Inledande programmering med C# (1DV402) 27+15=42 1 (22) 27+15=42 1 (22) Variabler 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

Läs mer

Datorteknik 2 (AVR 2)

Datorteknik 2 (AVR 2) Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra

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

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på

Läs mer

Besiktningsprotokollet

Besiktningsprotokollet Besiktningsprotokollet Föreläsning 10 Besiktningsprotokollet 1 2 Informativa utskrifter Programmet ska tala om för användaren vad programmet gör i varje steg och vilken inmatning som förväntas. Ett dåligt

Läs mer

Matematisk Modellering

Matematisk Modellering Matematisk Modellering Föreläsning 1 Anders Heyden Matematikcentrum Lunds Universitet Matematisk Modellering p.1/37 Denna föreläsning (läsvecka 1) Vad handlar kursen om, mål, kurskrav, ide. Matematisk

Läs mer

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2 Föreläsning 2 2.1 Variabler Vi studerar exempel 1 från boken: int main(void) int a,b,c=7; float antal,pris=3.70,laengd; a=34; b=32767; antal=-123.978; pris=89.00; laengd=56; c=-38; laengd=laengd+1; Sex

Läs mer

Editering, Kompilering och Exekvering av Javaprogram

Editering, Kompilering och Exekvering av Javaprogram UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1)

Läs mer

JavaScript del 3 If, Operatorer och Confirm

JavaScript del 3 If, Operatorer och Confirm JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att

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

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

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner Introduktion till programmering 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 med

Läs mer

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

*Pekarvärden *Pekarvariabler & *

*Pekarvärden *Pekarvariabler & * *Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

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

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:

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

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar. Värmdö Gymnasium Programmering A 110123 Lektion C1 Grunder Att programmera handlar mycket om att lära sig att analysera det problem eller den funktion man vill att programmet ska ha, och översätta det

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 teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen fredag 15

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

Programmering för webben

Programmering för webben Programmering för webben Föreläsning 2 Dagens innehåll Varför använda PHP? Var används PHP? Variabler Tilldelning Operatorer Kommentarer Arrayer Varför använda PHP? Var används PHP Där innehåll skräddarsys

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

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

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner KPP053, HT2016 MATLAB, Föreläsning 1 Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner MATLAB Väletablerat Mycket omfattande program GNU OCTAVE Öppen

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

Frekvenstabell över tärningskast med C#

Frekvenstabell över tärningskast med C# Guide Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning

Läs mer

Institutionen för datavetenskap 2014/15

Institutionen för datavetenskap 2014/15 LUNDS TEKNISKA HÖGSKOLA Datorer och datoranvändning Institutionen för datavetenskap 2014/15 ME en dator 1 Inledning ME är en påhittad dator, men den har likheter med riktiga datorer: det finns ett maskinspråk

Läs mer

Övning 6. Ali Tofigh 24 Oktober, 2006

Övning 6. Ali Tofigh 24 Oktober, 2006 Övning 6 Ali Tofigh 24 Oktober, 2006 1 Sortering Att sortera behöver man göra väldigt ofta i programmering. Python tillhandahåller bland annat en metod i listor för detta ändamål. Det enda metoden behöver

Läs mer