Frelsning 6 Programmeringsteknik och Matlab DD 1312 Definiering
Föreläsning 6 Programmeringsteknik och Matlab DD 1312 • • • Definiering av egna funktioner Parametrar Lokala och globala variabler Retursats None
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning indata ? utdata 1/20
Översikt Exempel Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning def meny(): print(””” 1. Spela 2. Visa spelregler 3. Avsluta Välj: ”””, end=””) meny() anrop definition 2/20
Översikt Program Syntax för funktion Egen funktion Logiskt fel parametrar Global/ lokal Default parameter� Sammanfattning def funktionensnamn( ): Kod som ska exekveras när funktionen anropas Indragning är viktigt! 3/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning Funktioner • Används för att dela upp ett program i lätthanterliga och återanvändbara delar • En funktion tar oftast indata och ger utdata, men en funktion kan även utföra operationer • Man kan undvika upprepning av kod genom att använda egna funktioner och parametrar • Med hjälp av egna funktioner inför man abstraktion i sitt program 4/20
Översikt Parametrar Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning En funktion med parametrar har större användningsområde än en funktion utan parametrar. Varför? Vilken av följande har större användningsområde? def calc(): print(2*3+3) def calc(a, b): print(a*b+b) calc(2 , 3) 5/20
Översikt return Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning En funktion med parametrar som returnerar ett värde har ännu större användningsområde. def calc(a, b): print(a*b+b) def calc(a, b): return a*b+b calc(2, 3) svar=calc(2, 3) print(svar) 6/20
Översikt Program Egen funktion Logiskt fel parametrar, return och None Global/ lokal Default parameter� Sammanfattning • Indata skickas till funktioner via funktionens parametrar. • Funktioner returnerar utdata med hjälp av return-satsen. • Om en funktion inte har returnsats i kroppen kommer då funktionen att returnera None. (None vilket betyder ingenting i python) 7/20
Översikt Program Egen funktion Exempel Logiskt fel Global/ lokal Default parameter� Sammanfattning def calc(a, b): c = a*b + b return c m=calc(2 , 3) Variabeln m kommer att få värdet 9 vilket att är av typen integer få värdet None 8/20
Översikt Program Exempel Egen funktion Logiskt fel def calc(a, b): Global/ lokal c = a*b + b Default parameter� return c Sammanfattning def comp(a, b): return a > b m=calc(2 , 3. 0) m=comp(2 , 3) Variabeln m kommer att få värdet 9. 0 vilket är av typen float Variabeln m kommer att få värdet False vilket är boolean 9/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning indata f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� utdata Sammanfattning f 1() f 2() f 3() 10/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning Exekverings- och logiskt fel • Exekverings fel: det är ett fel som gör att programmet kraschar innan det hinner att avslutas • Logiskt fel: det är då programmet avslutas men felaktig utdata kommer ut. (denna typ av fel är svårast att spåra) 11/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning brudgummen 12/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning brudgummen 12/20
Översikt Program Egen funktion Exempel på logiskt fel Logiskt fel def BMI( height , weight): return weight/(height*height) Default parameter� Global/ lokal Sammanfattning Vilket av följande anrop är fel? BMI(1. 70, 65) BMI(65, 1. 70) 22. 49 0. 000402 13/20
Översikt Program Egen funktion Logiskt fel Globala och lokala variabler En variabel kan antingen vara global eller lokal, kan alltså inte vara både samtidigt: Default parameter� • Globala variabler: är variabler som lever tills programmet avslutas: Sammanfattning – Globala variabler definieras med nyckelordet global • Lokalvariabel: är variabler som oftast lever en kort stund. – Formella parameter – Lokala variabler som skapas i funktioner – Lokala variabler är känd endast i funktionen och har kortare livslängd än globala variabler Global/ lokal 14/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning Exempel Följande kod är korrekt: def change(): global x x = x/2 x = 10 print(x) change() print(x) Följande kod ger fel: def change(): x = x/2 x=10 change() 15/20
Översikt Program Egen funktion Logiskt fel Exempel Följande kod ger Global/ lokal fel: Default parameter� def change(x): Sammanfattning global x x = x/2 Följande kod är rätt: def change(x): x = x/2 x=10 print(x) change(x) print(x) 16/20
Översikt Program Egen funktion Default-parametrar Logiskt fel • Vid definition av en funktion kan man ge formella parametrar ett default-värde. De parametrar som får Default parameter� ett default-värde kallas för default-parametrar. • Anropsparametrar till en funktion med default. Sammanfattning parametrar kan försummas. • Funktionen använder sig av default-parametrars värde endast när anropsparametrar utelämnas vid anropet. • Om man vill blanda default-parametrar med vanliga default-parametrar måste man se till att defaultparametrar kommer senare i definitionen. Global/ lokal 17/20
Översikt Program Egen funktion Vilket av följande är fel? Logiskt fel Global/ lokal Default parameter� Sammanfattning def correction(pen. Color=”röd”, type): print(type+” har rättats med” + pen. Color+” penna”) def correction(type, pen. Color=”röd”): print(type+” har rättats med”+ pen. Color+” penna”) 18/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning Exempel def correction(pen. Color=”röd”): print (”Tentamen har rättats med ” +pen. Color+” penna”) Kan anropas på följande sätt: • utan anropsparameter : correction() • med anropsparameter: correction(”svart”) 19/20
Översikt Program Egen funktion Logiskt fel Global/ lokal Default parameter� Sammanfattning • Genom att deklarera egna funktioner inför man abstraktion i sitt program, vilket gör att programmet blir lättare att läsa och förstå, dessutom koden blir mer överskådlig • Man kan undvika kod upprepning genom att deklarera egna funktioner • Se till att dina funktioner är fristående och självständiga • Beroende mellan funktioner gör det svårt att modifiera programmet • Undvik att använda globala variabler 20/20
- Slides: 30