Kungliga Tekniska Högskolan Introduktion till programmering med hjälp av Lego Mindstorm Laborationsrapport gällande programmering inom NXC Simon Jansson 31 08 2014 simonjan@kth.se Introduktionskurs i datateknik II1310
Sammanfattning Programmering är en konst som alla datastudenter måste lära sig, och som vissa hade erfarenhet av redan innan de anlände till KTH. Under introduktionskursen i datateknik under mottagningsveckorna så fick studenterna chansen att laborera med hjälp av en Legorobot som kunde styras med hjälp av enkla program. Laborationen bestod till största del av felsökning av ett stycke kod skrivet i språket NXC, samt skrivandet av en labbrapport därefter. Robotens mål var att följa en linje som fanns utritad på laborationssalens golv, men för att kunna göra detta så behövde programmet som drev roboten förbättras, bland annat genom att ta bort onödiga funktioner. Laborationen introducerade även konceptet parprogrammering, för att studenterna skulle få ett hum om hur det är att programmera som ett lag, vilket är den teknik som tillämpas på de flesta IT företag. Mer om detta roliga laborationstillfälle finns beskrivet i rapporten som följer denna sammafattning, och därför bör läsaren nu rikta ögonen ditåt. Innehållsförteckning 1. Inledning..2 1.1 Bakgrund......2 1.2 Syfte och målsättning...2 2. Genomförande....2 3. Resultat....3 4. Analys..4 5. Diskussion...4 Referenser...4 Bilagor.5 KTH Kungliga Tekniska Högskolan Sida 1 av 5
1. Inledning För att förbereda de nya studenterna inför fortsatta studier inom dataområdet, däribland programmering, utfördes en laboration som bestod i att felsöka ett stycke kod skrivet i språket NXC vars syfte var att driva en Legorobot längs en mörk linje på laborationssalens golv. Målet med detta var att upplysa studenterna om grunderna vad gäller programmering, däribland felsökning av kod, samt att ge studenterna en chans att öva på skrivning av laborationsrapport inför sina framtida studier. 1.1 Bakgrund En laboration av denna typ, innehållande bland annat felsökning av programkod, fungerar både som en nyttig introduktion till programmering och dess olika områden, såsom kodning, felsökning, omskrivning och test av sagda kod, samt som en påminnelse för de studenter som tidigare programmerat, men har glömt en del av de kunskaper som krävs inför datastudier på hög nivå. 1.2 Syfte och målsättning Syftet med laborationen var att introducera programmering, då främst konceptet parprogrammering, och grundbegreppen som följer med detta, såsom felsökning, kompilering och funktionsanrop, för de studenter som inte ännu var bekanta med dessa, samt att påminna de studenter som programmerat tidigare om information som de kan ha glömt eller ännu inte lärt sig. Syftet med denna rapport är att träna de nya studenterna i rapportskrivning, vilket de kommer ha stor nytta av under sina framtida studier. 2. Genomförande Genomgång av laborations PM skedde till viss del under den sista föreläsningen innan labben, samt på egen hand via kursens bilda sida. Nedladdning av material och programvara till laborationen, däribland drivrutiner till Legoroboten samt ett antal pdf filer, som till exempel rapportmall och kommentatorsblad, gjordes och via bilda. Den nödvändiga programvaran installerades därefter på egen hand av de laborerande. Under själva laborationen delades eleverna in i par för att öva sig på parprogrammering. Detta koncept gick ut på att den ena eleven synar koden och gör de ändringar som denne tycker verkar korrekta, medan den andra eleven observerar och kommenterar dessa beslut. Detta pågår i ungefär 20 minuter, vartefter eleverna byter plats och fortsätter. Uppgiften under laborationen bestod av att felsöka programmet linefollower, som hade i syfte att driva Legoroboten som delades ut under laborationen längs en svart linje på golvet i laborationssalen, samt att skriva ut gruppmedlemmarnas namn på sin display när den nått linjens slut, i detta fall en vägg. Under felsökningen av koden så upptäcktes ett antal fel, däribland anrop av endast en av robotens motorer, ett felaktigt anropande av ljussensorn samt en komplett onödig funktion, dance, samt anrop av denna. Alla ändringar som gjordes för att eliminera KTH Kungliga Tekniska Högskolan Sida 2 av 5
dessa felkällor och få koden redovisas under sektion 3. Resultat. Efter varje ändring av koden så testkördes roboten för att undersöka om den nu uppnåt full funktionalitet, Denna procedur upprepades ända tills roboten följde linjen och därmed kunde deklareras funktionsduglig. 3. Resultat Efter att laborationen genomförts och koden felsökts återställdes roboten till sitt fullt funktionsdugliga läge och lyckades med hjälp av sina diverse sensorer och skrev därefter ut namnen på gruppens två medlemmar på sin display. Alla ändringar som gjorts i koden redovisas i tabellen nedanför texten. KTH Kungliga Tekniska Högskolan Sida 3 av 5
4. Analys Konceptet att programmera i par visade sig vara till stor hjälp under laborationens gång, då den observerande gruppmedlemmens ögon hjälpte den agerande medlemmen att hitta alla fel i koden, både de simpla och de mer komplicerande, samt att det vid alla tillfällen fanns två personer till hands inför robotens testkörningar. Robotens irrationella beteende visade sig bero på ett antal faktorer, bland annat anropandet av funktionen dance som fick roboten att börja snurra runt och därmed lämna linjen, och att fel anslutningport deklarerats i anropet av ljussensorn, vilket gjorde att roboten var inkapabel att följa linjen. Alla dessa fel finns redovisade i tabellen på föregående sida. Det enda som kan tyckas ha varit av sämre kvalité under denna laboration var det faktum att grupperna delades in relativt slumpartat, vilket resulterade i att vissa grupper bara bestod av studenter med tidigare erfarenhet av programmering, medan andra endast innehöll studenter som famlade i blindo. En bättre urvalsprocess vad gäller bildandet av grupperna kan komma att bli nödvändig. 5. Diskussion Under laborationen så stötte gruppen inte på några stora problem, förutom det faktum att båda gruppmedlemmarna var lite ringrostiga vad gällde felsökning av kod och programmering överlag. På grund av såg gruppen på uppgiften ur en mer systematisk vinkel, vilket ledde till att metoden dom användes för att lösa problemet var att testköra roboten efter varje förändring av koden för att utifrån dess beteende ta reda på vad som skulle eftersökas i koden som källa till sagda beteende. Laborationen var även ett roligt sätt att introducera parprogrammering på, då detta koncept används på de flesta företag som sysslar med arbete av den typen, vilket gruppen antagligen kommer att få stor användning av i framtiden. Då gruppmedlemmarna, bland annat jag själv, tidigare programmerat främst i Java så visade sig NXC vara relativt familjärt, med ändå okänt nog för att vara något av en utmaning. Kompilatorn som användes för att skriva programmet framstår dock som bristfällig jämfört med kompilatorer som används inom andra språk, såsom Eclipse inom Java. Referenser Labb PM: kursmaterialsdelen av kursens sida på bilda.kth.se KTH Kungliga Tekniska Högskolan Sida 4 av 5
Bilagor KTH Kungliga Tekniska Högskolan Sida 5 av 5