Planering av ett större program - Funktioner, moduler, if och Boolean. Linda Mannila 2.10.2007



Relevanta dokument
Planering av ett större program, del 2 - for och listor. Linda Mannila

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

Föreläsning 5: Rekursion

Du ska nu skapa ett litet program som skriver ut Hello World.

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Programexempel: tärningsspel

Vad är det och hur definierar vi en Biblioteksfunktioner (math) Top-down-programmering lokala globala variabler Arrays som in-parametrar

VÄRDERINGSÖVNINGAR. Vad är Svenskt?

Programmera en NXT Robot

Kapitel 6. f(x) = sin x. Figur 6.1: Funktionen sin x. 1 Oinas-Kukkonen m.fl. Kurs 6 kapitel 1

Handbok Blinken. Danny Allen Översättare: Stefan Asserhäll

Snabbslumpade uppgifter från flera moment.

Tentamen i Programmering grundkurs och Programmering C

Modul 6: Integraler och tillämpningar

( ostream ) << ( annan datatyp ) : ostream

Lathund, procent med bråk, åk 8

HT 2011 FK2004 Tenta Lärare delen 4 problem 6 poäng / problem

Föreläsning 8: Räkning. Duvhålsprincipen. Kombinatorik

Träning i bevisföring

Statsbidrag för läxhjälp till huvudmän 2016

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument

Väga paket och jämföra priser

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Har vi lösningen för en bättre hemtjänst? Självklart.

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

Idag: Dataabstraktion

Denna talesmannapolicy gäller tillsammans med AcadeMedias kommunikationspolicy. I kommuniaktionspolicyn finns följande formulering:

Sveriges Trafikskolors Riksförbund Film om körkort för nysvenskar Speakertext - Svensk

Programmeringsteknik med C och Matlab

4-6 Trianglar Namn:..

Föreläsning 1 & 2 INTRODUKTION

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Design by. Manual Jossan.exe. Manual. till programmet. Jossan.exe. E-post:

Syftet med en personlig handlingsplan

Något om permutationer

FRÅN A TILL Ö LäraMera Ab / och Allemansdata Ab / FRÅN A TILL Ö

Lathund till Annonsportalen

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

SMD 134 Objektorienterad programmering

Individuellt Mjukvaruutvecklingsprojekt

Jo, Den Talande Boken har så många möjligheter inbyggda, att den kan användas från förskoleklassen och ända upp på högstadiet.

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

SF1620 Matematik och modeller

konstanterna a och b så att ekvationssystemet x 2y = 1 2x + ay = b 2 a b

Variabler och konstanter

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

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

Praktisk programmering

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

P-02/03 säsongen 2016

Fakta om Malala Yousafzai

1. Frekvensfunktionen nedan är given. (3p)

Vi skall skriva uppsats

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Övningshäfte i matematik för. Kemistuderande BL 05

Diskussionsfrågor till version 1 och 2

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

När du som vårdpersonal vill ta del av information som finns hos en annan vårdgivare krävs det att:

Föreläsning 5 Mer om funktioner, villkor

Vid ett flertal tillfällen ställde individer frågor till Edgar Cayce om

Mål Blå kurs Röd kurs

Exempel på tentamensuppgifter i LMA100, del 1

Kiwiböckerna metod och begrepp

Utveckla arbetsmiljö och verksamhet genom samverkan

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

Att koda en magnetremsa i plastkortskrivare med inbyggd magnetkodare.

Administratör Rollbeskrivning och stödjande instruktion. e-tjänst för ansökan om statsbidrag Senast uppdaterad:

Snabbhjälp till. Kristian. elevdata.se

Instruktioner för beställning och kontoadministration för abonnenter av inlästa läromedel

Sammanfattning på lättläst svenska

Elektronen och laddning

Det flippade klassrummet hur uppfattas det av eleverna?

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

Utvärdering APL frågor till praktikant

Vad är en webbläsare?

MR 5 FRÅN FÖRBUD TILL RÄTTIGHET WORKSHOP I KLASSRUMMET TEMA: MÄNSKLIGA RÄTTIGHETER (MR)

Skriva B gammalt nationellt prov

Laboration 1. I. Matlabs fönster, hjälp, variabler och enkla beräkningar. Introduktion

Flera nyanser av diskriminering

CAEBBK01 Drag och tryckarmering

Välkommen till Arbetsförmedlingen! Information till dig som är arbetssökande

ELEV- HANDLEDNING (Ansökan via webben)

Bra att veta om sexuella övergrepp. För barn

Administration Excelimport

1,2C 4,6C 1A. X-kuber. strävorna

Klasser och objekt i C#

Boll-lek om normer. Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö. Innehåll

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

Datorövning 2 Statistik med Excel (Office 2003, engelska)

INSTUDERINGSFRÅGOR TILL PROVET

Det är bra om även distriktsstyrelsen gör en presentation av sig själva på samma sätt som de andra.

Vanliga frågor. LEGOeducation.com. Konceptet. Processen

Presentationsövningar

Att komma igång. Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program

Föreläsning 2 Programmeringsteknik och C DD1316

Konsten att multiplicera (stora) heltal

Hur utvecklar man användbara system? Utvärdering. Användbarhet handlar om kvalitet. Utvärdering. Empiriska mätningar. Metoder

Transkript:

Planering av ett större program - Funktioner, moduler, if och Boolean Linda Mannila 2.10.2007

Vad kan vi nu? Primitiva datatyper grundläggande funktionalitet Utskrift Indata Felhantering

Denna föreläsning Planering av ett större program Intro till funktioner och moduler Kontrollstrukturen if Booleska värden

Större program: Tabellkollare Vad är 6 gånger 7? 49 Tyvärr, rätt svar är 42. Vad är 3 gånger 2? 6 Bra, helt rätt! Vad är 9 gånger 5? 45 Bra, helt rätt! : : Jag ställde 10 frågor och du svarade rätt på 7 av dem. Fint jobbat!

Planera... Vad skall programmet kunna göra? Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord Kontrollera om testpersonens svar är rätt eller inte Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra testpersonen klarat sig

Vad kan vi redan? Vad skall programmet kunna göra? Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord Kontrollera om testpersonens svar är rätt eller inte Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra testpersonen klarat sig

Vad måste vi lära oss? Vad skall programmet kunna göra? Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord Kontrollera om testpersonens svar är rätt eller inte Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra testpersonen klarat sig

Vad är en funktion? Ett miniprogram inne i ett program Indata Utdata min_funktion

Funktioner Python innehåller många färdiga funktioner (inbyggda och i sk moduler) Redan använt en del inbyggda funktioner raw_input input type En funktion är inte ett magiskt ord som vi bara kan använda, utan det finns kod bakom alla funktioner Ett namngivet kodblock som utför en specifik sak och som du kan anropa istället för att skriva om koden varje gång du behöver utföra den.

Varför funktioner? Gör det snabbare att skriva kod Finns mycket sådant som behöver göras ofta (t.ex. inläsning från tangentbordet) Onödigt att alla programmerare skall skriva egen kod för det ändamålet Ist har någon skrivit funktioner som utför dessa uppgifter (input, raw_input) som alla kan använda Förenklar uppdateringar Om samma kod används flera gånger i ett och samma program (t.ex. en beräkning) måste eventuella ändringar göras på alla de ställena Om man ist skapar en funktion som sköter uppgiften räcker det att man ändrar i funktionsdefinitionen för att ändringen skall ske på alla ställen Underlättar själva programmeringen Ett stort program är svårare att skriva än ett litet Med funktioner kan man dela upp program i mindre delar som är lättare att hantera

Batteries included Förutom de inbyggda funktionerna kommer Python med en mängd specialmoduler T.ex. string, math, time, Varje modul innehåller en mängd konstanter och funktioner för det specialområdet Onödigt att ha tillgång till allt hela tiden skulle ta upp plats i datorns minne

Moduler Bättre: Väljer ut de funktioner vi behöver i ett visst program och begär att få tillgång till just dem. Det gör man genom att importera modulen. För att få tillgång till det som finns i en modul skriver man överst i programmet import modulnamn Därefter kan vi använda allt som finns i den modulen genom att skriva modulnamn.funktionsnamn(eventuella parametrar)

Modulen math Matematiska konstanter och funktioner >>> import math >>> dir(math) [' doc ', ' name ', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']

Exempel # Importerar mattemodulen för att få tillgång till # dess funktioner import math # Multipel tilldelning a,b,c = input( Enter the coefficients (a, b, c): ") # Beräknar diskriminanten disc = math.sqrt(b*b-4*a*c) root1 = (-b + disc) / (2*a) root2 = (-b - disc) / (2*a) print "\nthe solutions are:", root1, root2

Modulenrandom random: modul som innehåller funktioner för att generera slumptal import random Vad finns i modulen? >>> import random >>> dir(random) Hjälp om modulen: >>> help(random)

Modulenrandom Flera olika funktioner För att välja ett slumptal i ett givet intervall: randrange(start, stop [,step]) Returnerar ett slumptal mellan start och stop (stop är inte med i intervallet)

Exempel random.randrange(1,100) returnerar ett slumptal mellan 1 och 99. >>> random.randrange(1, 100) 33 >>> random.randrange(1, 100) 58 >>> random.randrange(1, 100) 1

Övning 1. Hur skulle du få Python att skriva ut en rad i stil med Vad är 7 gånger 3? där de två talen väljs slumpmässigt ur intervallet [0, 10]?

Planera... Vad skall programmet kunna göra? Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord Kontrollera om testpersonens svar är rätt eller inte Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra testpersonen klarat sig

Hittills Program med mycket enkel struktur Sekvens av satser Körs (exekveras) i den ordning de kommer i programmet, dvs. från första raden till den sista

men Denna typ av program Är inte så otroligt intressanta! Låter inte användaren upprepa processen, eller ändra på den ordning i vilken satserna körs Program är i allmänhet mer användbara om de gör det möjligt att välja vad som skall ske som följande och upprepa en viss kodsnutt flera gånger

Kontrollstrukturer Programkontroll = att hantera hur ett program köra, t.ex. i vilken ordning instruktionerna körs och hur många gånger. Två kontrollstrukturer: Villkor (det här eller det där?) Repetition (om och om igen)

Villkorssatsen Ger datorn möjlighet att välja vilken instruktion/ vilka instruktioner som skall köras som följande Testa om ett villkor är sant Skrev användaren in rätt ord? Är talet större än 10? Testresultatet bestämmer vad som skall hända Skriv ut "Jajapp" om användaren skriver in rätt ord Om alla tal är större än 10 så addera till 20

if if villkorstest: kod if-raden måste avslutas med ett kolon if är ett nyckelord i Python villkorstest är ett uttryck som antingen är sant eller falskt kod är de instruktioner som skall utföras om villkorstestet är sant. Alla instruktioner som hör till if-satsen måste indenteras

En till datatyp - Boolean Två booleska värden True (tal olika 0) False (0) >>> type(true) <type 'bool'> >>> Olika jämförelseoperatorer Likhet == Olikhet!= Större än > Större än eller lika med >= Mindre än < Mindre än eller lika med <=

Booleska uttryck Operator == Lika med!= Olika, inte lika med > Större än < Mindre än >= Större än eller lika med <= Mindre än eller lika med Exempel 4/4 == 1 4.0/3!= 1 4 > 4 'al' < ax' 4 >= 4 2.3 <= 2.2 True True False True True False

= vs == = operatorn används vid tilldelning och inte när man skall jämföra om två värden är lika x = 12 tilldelar värdet 12 till variabeln x == operatorn används när man vill testa om två värden är lika x == 12 kollar om värdet 12 finns lagrat i variabeln x Python låter dig inte sätta en tilldelning som villkor i en if-sats if x = 12: fel i Python

Logiska operatorer and, or, not Exempel x > 0 and x < 10 n % 2 == 0 or n % 3 == 0 not(x > y) Operator and (True endast då båda operanderna sanna) or (True då minst en operand är sann) not (True då operanden är falsk) Exempel 5 > 5 and 3 <= 3 2 == 2 and 7 > 5 5 > 5 or 3 <= 3 2 == 2 or 7 > 5 not(5 > 5) not(3<=3) False True True True True False

Precendensregler I uttryck med många operatorer sker evalueringen i följande ordning (** har högst precedens, or har lägst) ** *, /, % +, - <, <=, >, >=,!=, == not and or

if: exempel age = input('how old are you? ') if age < 19: Villkorstest: antingen sant eller falskt print 'You are not allowed to drive a car. Den kod som skall utföras om villkoret är sant indenteras.

if - else if villkorstest: kod else: kod else kan aldrig komma före if else körs bara då villkorstestet för if är falskt använd den här konstruktionen när programmet har två alternativ att välja mellan

if-else: exempel if age < 19: print You are not allowed to drive a car." else: car = raw_input( Which car do you want to rent? ) print A, car, has been reserved. Alla satser som indenteras under en kontrollstruktur hör till samma kodblock. Här hör två instruktioner tillif-satsenselse-del.

if else: flödesschema Läs in tal Ja tal % 2 == 0 Nej Skriv ut Talet är jämnt Skriv ut Talet är udda

if else: motsvarande kod tal = input("ge in ett tal: ") if tal % 2 == 0: print "Talet är jämnt" else: print "Talet är udda" Läs in tal Ja tal % 2 == 0 Nej Indenterade Skriv ut Talet är jämnt Skriv ut Talet är udda

if elif - else if villkorstest: kod elif villkorstest: kod else: kod elif kan aldrig komma före if elif är en förkortning för else if kan finnas hur många elif-delar som helst i en och samma if-sats else körs om if-test och alla elif-test är falska Använd elif när du behöver fler än två alternativ i programmet

if elif else: flödesschema Läs in tal Ja tal < 0 Nej tal > 0 Nej Ja Skriv uttal är negativt Skriv uttal är positivt Skriv uttal är noll

if elif else: motsvarande kod tal = input('ge in ett tal: ') if tal < 0: print tal, 'är negativt' elif tal > 0: print tal, 'är positivt' else: print tal, 'är noll'

if elif else: provkörningar Ge in ett tal: 15 15 är positivt Ge in ett tal: -5-5 är negativt Ge in ett tal: 0 0 är noll

Nästlade if-satser if-satser inne i if-satser spela = raw_input('vill du spela schack? (j/n) ') if spela == 'n': print 'OK, hejdå!' else: print 'Nu skall här spelas schack!' etta = raw_input('vill du börja? (j/n) ') if etta == 'j': print 'OK, ge mig ditt bästa drag.' else: print 'OK, bered dig på att förlora.\ Låt mig fundera...' Backslash \ för att skriva ut långa strängar

Exempel: provkörningar Vill du spela schack? (j/n) n OK, hejdå! Vill du spela schack? (j/n) j Nu skall här spelas schack! Vill du börja? (j/n) j OK, ge mig ditt bästa drag. Vill du spela schack? (j/n) j Nu skall här spelas schack! Vill du börja? (j/n) n OK, bered dig på att förlora. Låt mig fundera...

Övningar 1. True eller False a) True and (not False) b) (2 + 4 == 4 + 2) and (5-3 == 3-5) c) (5 <= 5 + 3) or (10 == 5 * 2) or (4 >= 3) d) (5 > 6) or (not (12 == 8 -(-4))) and (1!= 5) e) (1 == 1) and (2!= 3) and (5 <= 14) f) (6 % 2 == 0 ) and ((7-3)/2 == 2) 2. Planera ett program som ber användaren mata in två tal, och sedan meddelar vilket av talen som är större. T.ex. så här: Mata in det första talet: 67 Mata in det andra talet: 56 67 är större än 56.