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 när identisk kod upprepas för att få struktur och överblick Alla språk har även inbyggda funktioner 4
FUNKTIONER Den svarta lådan Indata Funktion Utdata 4, 3 Beräkna 4 3 64 5
FUNKTIONER Parametrar, returvärde och argument Givet noll, en eller flera parametrar utför en funktion en specifik uppgift vilket resulterar i ett returvärde. Parameter En variabel som fått sitt värde vid anropet. Returvärde Ett värde som returneras till den anropande miljön när funktionen avslutas. En funktion anropas med ett antal argument. Varje argument motsvarar en av parametrarna i funktionen. 6 Argument Värden som skickas med vid anrop av en funktion, och som tilldelas funktionens paramterar.
FUNKTIONER Funktionsanrop x = foo(3, hej ) Tilldelning Argument 1 Argument 2 Funktionen foo Parameter 1 Parameter 2 Returvärde 7
FUNKTIONER Skriva egna funktioner Funktionen definieras innan den används Den utgörs av funktionshuvudet med efterföljande kodblock. Funktionshuvudet anger namn på funktionen, samt vilka parametrar den har Avslutas (oftast) med att funktionen returnerar ett resultat. 8
FUNKTIONER Skriva egna funktioner import sys def int_pow(param1, param2): value = 1 for i in range(param2): value = value * param1 return value arg1 = int(sys.argv[1]) arg2 = int(sys.argv[2]) print int_pow(arg1, arg2) 9
Filhantering 10
FILHANTERING Vad innebär filhantering? Ett samlingsbegrepp för att läsa data från och skriva data till filer. Centralt i programmering De flesta språk har smidiga funktioner för att göra detta enkelt. All användning av filer följer samma arbetsordning 1. Öppna filen 2. Använda filen (t.ex. läsa eller skriva till filen) 3. Stänga filen 11
FILHANTERING Öppna en fil Innebär att man gör filen redo för operativsystemet att användas. Se om den existerar, i annat fall eventuellt skapa den Öppna en kanal till filen så att data kan hämtas från eller skickas till den Fyra vanliga sätt att använda en fil Läsa från fil (kräver att den finns) Lägga till mer data i slutet av filen Skriva till fil (skapar filen om den inte finns, annars skriva över gammal) Både läsa och skriva till en fil. 12
FILHANTERING Funktionen open 13 Öppnar en kanal till filen Tar två argument Namnet på filen (sökvägen) Hur filen ska öppnas r read Bara läsning från existerande fil a append Lägga till i slutet av existerande fil w write Bara skriva r+ read and write Läsa och skriva b binary Används tillsammans med de övriga om filen är binär.
FILHANTERING Skriva till fil f = open( file.txt, w ) # oppnar filen f.write( Some text\n ) # Skriv en rad foljt av nyrad f.close() # Stänger filen 14
FILHANTERING Läsa från fil f = open( file.txt, r ) print f.read() f.close() f = open( file.txt, r ) print f.readline() print f.readline() f.close() # Öppnar filen # Läser hela filen i en lång # sträng som skrivs ut # Stänger filen # Öppnar filen # Läser första raden som skr # Läser andra raden som skri # Stänger filen f = open( file.txt, r ) # Öppnar filen for line in f.readlines(): # Läser alla rader radvis print line f.close() # Stänger filen 15
Felhantering 16
FELHANTERING Vad är ett fel? Lika viktigt att planera när det går fel som när det går rätt Finns två typer av fel som får program att stanna Syntaktiska fel Undantag Semantiska fel gör att program gör fel saker, men inte per automatik att de stannar. 17
FELHANTERING Syntaktiska fel Ett fel när man inte följt språket Pythons syntax korrekt. Stavfel av variabler eller funktioner Glömt : eller fel indentering Fel antal argument till funktioner etc. Enkla att åtgärda. 18
FELHANTERING Undantag Undantaget som bekräftar regeln Fel som inträffar när allt inte är som Python förväntar sig 19 Användaren av ett program ger ofta något till programmet att jobba med (värden, filer, argument, musklick) Vad händer när användaren inte ger det som man tänkt sig? Filnamn till filer som inte existerar Värden att dividera med som är noll Hårddisken brinner upp
FELHANTERING Upptäcka och hantera undantag import sys try: f = open(sys.argv[1], r ) # Öppnar filen for line in f.readlines(): # Läser alla rader radv print line f.close() # Stänger filen except: print Kunde inte läsa från filen 20