729g74 it och programmering, grundkurs729g74/kursmaterial/t2-f2-h17.pdf · 729g74 it och...
TRANSCRIPT
729G74 IT och programmering, grundkursTema 2, Föreläsning 2
Jody Foo, [email protected]
Föreläsningsöversikt⁃ Kursinfo: återkoppling Muddy Cards och kompletteringar
⁃ Diskret matematik
⁃ Python: Programmering som informationsbearbetning
Ändra programbeteende baserat på information (villkor och jämförelser)
Bearbetning av sekventiell information (loopar och data i listor)
Återkoppling Muddy Cards (sammanfattning)⁃ Överlag lagom tidsåtgång (med variationer både upp och
ner mellan svar)
⁃ Givande/roligt/bra moment
⁃ Tröskel som nybörjare
⁃ Exempel till diskret matematik
⁃ Vägledning till resurser
⁃ "Jag lär mig", förståelse
⁃ Viss otydlighet/förvirrande upplägg
Programmering som informationsbearbetning
Repetition av datatyper i Python⁃ heltal (integer), int
exempel: 5
⁃ flyttal (floating point numbers), floatexempel: 5.0
⁃ text (string), strexempel: "hejsan"
⁃ lista (list), list exempel: [1, "1", []]
Repetition av funktioner i Python⁃ Definiera funktion med hjälp av nyckelordet def
⁃ En definierad funktion måste ha ett namn
⁃ En funktion kan ta emot noll eller fler namngivna argument
⁃ En funktion returnerar alltid ett värde, om inget returneras explicit, returneras värdet None
Exempel som block
Exempel som python-koddefconcatenate_strings(s1,s2):returns1+s2
Ändra programflöde baserat på information
Nya begrepp från exemplet⁃ Jämförelse: "Är är X lika med Y?"
⁃ Svar på jämförelse: ja/nej – sant/falskt
Nya begrepp från exemplet⁃ Villkor: om ... gör det här
⁃ Villkor: om ... gör det här, men om ... gör det där istället
⁃ Villkor: om ... gör det här, men om ... gör det där istället, om inget stämmer, gör något annat.
Jämförelser⁃ Lika med
⁃ Inte lika med
⁃ Större än
⁃ Mindre än
⁃ Större eller lika med
⁃ Mindre eller lika med
⁃ Svaret på en jämförelse är "ja" eller "nej".
⁃ Mer formellt säger vi att jämförelsen är sann eller falsk
Jämförelser i Python⁃ Lika med: ==
⁃ Inte lika med: !=
⁃ Större än: >
⁃ Mindre än: <
⁃ Större eller lika med: >=
⁃ Mindre eller lika med: <=
⁃ sant: True
⁃ falskt: False
Ny datatyp: sanningsvärdeboolskt värde, (eng. boolean)
Villkor i naturligt språk⁃ Om det är blött på marken, ta med dig ett paraply.
⁃ Om det är blött på marken, ta med dig ett paraply. Om det är soligt ute, ta inte med dig ett paraply.
⁃ Om Stor-affären har öppet, köp en mugg, om Lill-affären har öppet, köp en penna. Annars, köp en pärlplatta.
⁃ Vad finns det för problem med dessa uttalanden?
Köp 12 ägg från affären, om de har bananer, köp 3.Hur många ägg köpte Pikachu?
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 1:
X, Y, Z är sanningsvärden och P, Q, R är instruktioner.
"Om X är sant, utför P".
Om X gör P
Om Y gör Q
Om Z gör R
Här kan utfallet bli att inga, någon eller alla av P, Q, R utförs.
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 1
Om X gör P
Om Y gör Q
Om Z gör R
if x:
p
if y:
q
if z:
r
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 1 som pythonexempel
if6<3:print("Iamolderthanyou!")
if"hej"=="hej":print("Hello,hello")
ifTrue:print("TheTruthisoutthere")
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 2:
X, Y, Z är sanningsvärden och P, Q, R är instruktioner.
"Om X är sant, utför P, annars (dvs om inte X är sant), utför Q".
Om X gör P, annars, gör Q
Här kan utfallet bli att antingen P eller Q utförs.
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 2
Om X gör P, annars, gör Q
if x:
p
else:
q
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 2 som pythonexempel
if6<3:print("Iamolderthanyou!")else:print("Hello,hello")
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 3:
X, Y är sanningsvärden och P, Q är instruktioner.
"Om X är sant, utför P, men om X inte är sant, kolla om Y är sant, i så fall, gör Q".
Om X gör P, annars, om Y gör Q
Här kommer antingen P eller Q, eller ingen av P eller Q att göras. Både P och Q kommer inte att göras.
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 3
Om Y gör Q, annars, om Z gör R
if y:
q
elif z:
r
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 3 som pythonexempel
if6<3:print("Iamolderthanyou!")elif"hej"=="hej":print("Hello,hello")
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 4:
X, Y, Z är sanningsvärden och P, Q, R är instruktioner.
"Om X är sant, utför P, men om X inte är sant, kolla om Y är sant, i så fall, gör Q, men om varken X eller Y är sant, gör R istället".
Om X gör P, annars, om Y gör Q, annars gör R.
Här kommer exakt en av P, Q och R att utföras.
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 4
Om X gör P, annars om Y, gör Q, annars, gör R
if x:
p
elif y:
q
else:
r
Behöver formalisera för att göra det tydligare vad vi menar⁃ Formell struktur 4 som pythonexempel
if6<3:print("Iamolderthanyou!")elif"hej"!="hej":print("Hello,hello")else:print("I'llbehereforyou")
Ändra programflöde baserat på information
Ändrat programflöde baserat på informationdefrate_my_name(name):output=0ifname=='Aaa':output=10elifname=='Bbb':output=20else:output=5returnoutput
print(rate_my_name('Jody'))
Exempel på trinket.iohttps://trinket.io/blocks/dbec76430c
Bearbetning av en sekvens av värdenScenario: en robot ska titta på möjliga saker den skulle kunna göra.
Bearbetning av en sekvens av värden
Loop i Python⁃ Börja med nyckelordet while följt av ett sanningsvärde
⁃ Loopen fortsätter så länge som sanningsvärdet är sant
Loop-exempelwhileFalse:print("Kommeraldrigatthända.")
whileTrue:print("Kommeraldrigattsluta.")
counter=0whilecounter<5:print("Hurmångagångerskrivsjagut?")counter=counter+1
Bearbetning av en sekvens av värden
Ändrat programflöde baserat på informationtask_list=['uppgraderaminnesstorlek','kollanyaskalfärger','laddabatterierna','utforskanyarummet','kompånyttnamntillmigsjälv']
counter=1
whilecounter<=len(task_list):task=task_list[int(counter-1)]print(str('Undraromjagska')+str(task))counter=counter+1
Exempel på trinket.iohttps://trinket.io/blocks/4c4c740880
Bearbetning av en sekvens av värdenScenario: En robot som ska bestämma sig för vad den ska göra
Robot som ska bestämma sig för något att göra
Ändrat programflöde baserat på informationtask_list=[['uppgraderaminnesstorlek',4],['kollanyaskal-färger',1],['laddabatterierna',5],['utforskanyarummet',2],['kompånyttnamntillmigsjälv',3]]
defdecide_what_to_do(input_task_list):globalwhat_to_do,counter,todo_item,task_name,todo_prioritywhat_to_do=['rullatummarna',-1]counter=1
whilecounter<=len(input_task_list):todo_item=input_task_list[int(counter-1)]task_name=todo_item[0]todo_priority=todo_item[-1]
iftodo_priority>what_to_do[-1]:what_to_do=todo_itemcounter=counter+1
returnwhat_to_do
print(str('Jagskakommaihågatt')+str((decide_what_to_do(task_list))[0]))
Exempel på trinket.iohttps://trinket.io/blocks/7acb826d5c
Föreläsningssummering:Nya begrepp och termer⁃ Jämförelser: ==, !=, <, >, <=, >=
⁃ Sanningsvärden: True, False
⁃ Villkorssatser: if, if-else, if-elif, if-elif-else
⁃ Villkorlig loop: while