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 program måste göra olika saker i olika situationer. För att kunna göra detta måste programmet kunna utföra olika delar av sin kod. Villkorssatser Villkorssatser låter ett program förgrenas. if-satsen är den enklaste villkorssatsen: Den kollar ett villkor (ett booleskt uttryck) och utför en sats om villkoret är sant. Föreläsning 5 Mer om funktioner, villkor 2/14
if-satsen if villkor : Efter detta kommer if-satsens innehåll: en eller flera indenterade satser precis som i def-satsen. Föreläsning 5 Mer om funktioner, villkor 3/14
Exempel Följande program fungerar inte om användaren ger 0 som nämnare. # coding=latin-1 taljare = int(raw_input( Ge täljare: )) namnare = int(raw_input( Ge nämnare: )) print taljare / namnare Föreläsning 5 Mer om funktioner, villkor 4/14
Exempel Vi kollar om användaren matat in noll först! # coding=latin-1 taljare = int(raw_input( Ge täljare: )) namnare = int(raw_input( Ge nämnare: )) if namnare!= 0: print taljare / namnare Föreläsning 5 Mer om funktioner, villkor 5/14
else-delen av if-satsen Vi kan lägga till en del till if-satsen som utförs om villkoret är falskt. else: efterföljt av en eller fler satser som utförs då satsen är falsk. Föreläsning 5 Mer om funktioner, villkor 6/14
Exempel Vi vill ge vårt eget felmeddelande om användaren ger 0 som nämnare. # coding=latin-1 taljare = int(raw_input( Ge täljare: )) namnare = int(raw_input( Ge nämnare: )) if namnare!= 0: print taljare / namnare else: print Division med noll Föreläsning 5 Mer om funktioner, villkor 7/14
Division med noll Skapa en version av ovanstående program som: Utför divisionen om nämnaren inte är noll. Om både täljare och nämnare är noll, påpeka att resultatet är odefinierat. Om endast nämnaren är noll, påpeka att resultatet är oändligt. Föreläsning 5 Mer om funktioner, villkor 8/14
elif else följt av if kan sammandras till elif. Eftersom dubbel indentering inte behövs blir det kortare. Särskilt bra för långa listor av alternativ. Division med noll Skriv om föregående program med elif! Föreläsning 5 Mer om funktioner, villkor 9/14
Funktioner Funktioner med flera return-satser Med villkorssatser är det möjligt att avsluta en funktion på flera olika ställen. Exempel def absolute(x): if (x < 0): return -x else: return x Föreläsning 5 Mer om funktioner, villkor 10/14
Funktioner Funktioner med flera return-satser Gör en funktion compare som tar två tal a och b och returnerar: -1 om a < b 0 om a = b 1 om a > b Föreläsning 5 Mer om funktioner, villkor 11/14
Funktioner och moduler Testkod För att testa ett program kan vi använda en speciell if-sats som bara utförs om modulen inte har importerats utan är huvudprogrammet: if name == main : Då behöver man inte ta bort testkod från ens moduler då man t.ex. lämnar in dem i Goblin. Testkod Skriv tester för compare för att kolla att ni fått den rätt! Föreläsning 5 Mer om funktioner, villkor 12/14
Funktioner och moduler Funktioner och moduler Sätt compare i en ny modul mathtools. Skapa en ny modul guessing_game med funktionen guess. guess tar en parameter: det rätta svaret guess ber användaren gissa vad talet är. Använd compare-funktionen för att kolla om gissningen är rätt och berätta för spelaren om gissningen är för låg, hög eller rätt. Ge guessing_game ett huvudprogram som utför guess med ett lagom intressant tal. Föreläsning 5 Mer om funktioner, villkor 13/14
Slut Nästa föreläsning Rekursion och variablers roller 16.9.2011 14:15 16:00 i U344 Kom ihåg Bilda par och anmäl dem till Goblin före ni lämnar in uppgifter. Rond 1 deadline 20.9. Rond 2 deadline 27.9. Föreläsning 5 Mer om funktioner, villkor 14/14