in1000 - uke 1 · •be datamaskinen om å: •skrive 9+9 på skjermen •skrive hva 9+9 blir på...

47
IN1000 - uke 1 Komme i gang med programmering

Upload: others

Post on 25-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

IN1000 - uke 1Komme i gang med programmering

Page 2: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Under pultene på bakerste rad er det klistret post-it lapper med to tall skrevet på

Et lite oppdrag i bakgrunnen

11

•Alle som mottar en lapp (fra personen bak) gjør det samme som beskrevet over

•Jeg samler senere inn lappene fra fremste rad

•Regn ut summen av to nederste tall, skriv denne summen under de andre tallene, og send lappen til personen foran deg

32

Page 3: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Plan for forelesingen

•Hva er programmering?

•Skrive og kjøre våre første program

•Variabler

•Feilmeldinger

•Innlesing fra tastatur

•Beslutninger (if)

Page 4: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Plan for forelesingen

•Hva er programmering?

•Skrive og kjøre våre første program

•Variabler

•Feilmeldinger

•Innlesing fra tastatur

•Beslutninger (if)

Page 5: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•"The idea behind digital computers may be explained by saying that these machines are intended to carry out any operations which could be done by a human computer" (Alan Turing, 1950)

Hva er en “Computer”?

•Tradisjonell definisjon av “computer”:En ansatt som gjør utregninger ved å blindt følge en liste instruksjoner med penn og papir, så lenge som det trengs, uten at det krever noen form for innsikt (fra 1600-tallet)

•Poeng for oss:Dette faget handler ikke om å få en printer til å virke (puh), men om å sette sammen presise oppskrifter!

Page 6: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89

•Merk at resultatet av denne prosedyren er mye mer avansert enn operasjonen i hvert steg (plusse to tall)

Dere har i mellomtiden regnet ut Fibonaccis tallrekke!

Page 7: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Eller rettere sagt:

•Dere har vært computere

•Jeg har programmert dere

•Oppfordring:

•Forsøk alltid å først løse et problem for hånd, ut fra presis sekvens av enkle operasjoner

Vi har programmert!

Page 8: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•"Software development happens in your head, not in an editor. Programming is all about problem solving. It requires creativity, ingenuity, and invention" (Andy Hunt)

➡ Programmering er utfordrende, men ikke minst kreativt og gøy!

• "Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter" (Eric Raymond)

➡ Forelesningene kan hjelpe dere i gang, men det er gjennom mange timer med egen programming dere virkelig lærer det

Hva er programmering?

Page 9: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Plan for forelesingen

•Hva er programmering?

•Skrive og kjøre våre første program

•Variabler

•Feilmeldinger

•Innlesing fra tastatur

•Beslutninger (if)

Page 10: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Be datamaskinen om å:

•Skrive "Hei IN1000" på skjermen

Et første Python-program

Page 11: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Be datamaskinen om å:

•Skrive 9+9 på skjermen

•Skrive hva 9+9 blir på skjermen

•Skrive hva 1+2+3+4 blir på skjermen

•Skrive på skjermen om det stemmer at 5 er større enn 4

•Skrive på skjermen om det stemmer at 4 er større enn 5

Flere Python-program

Page 12: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Ett Python-program som går over flere linjer

•Skriv på skjermen:

--- Alle linjerkommer samtidig!---

•(flere_linjer.py)

Page 13: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Kommentarer

Page 14: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Plan for forelesingen

•Hva er programmering?

•Skrive og kjøre våre første program

•Variabler

•Feilmeldinger

•Innlesing fra tastatur

•Beslutninger (if)

Page 15: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Variabler er noe av det mest fundamentale i programmering!

•En variabel er et bestemt navn som representerer en verdi

•tall = 13

•Med en variabel kan man holde på en verdi og bruke den igjen senere i et program

•tall = 13

•print("Her kommer det:")

•print(tall)

Variabler

Page 16: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Variabler: eksempel på å holde mellomverdier

•[Areal.py]

Page 17: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Variabler: eksempel på å bruke flere ganger

•[Epler.py]

Page 18: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Tre måter å tenke på variable på (ulike metaforer)

Page 19: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Tre måter å tenke på variable på (ulike metaforer)En navngitt lokasjon i datamaskinens minne hvor en verdi kan lagres

Mest korrekt, men minst nyttig..

Page 20: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Tre måter å tenke på variable på (ulike metaforer)En navngitt lokasjon i datamaskinens minne hvor en verdi kan lagres

En navngitt parkeringsplass hvor en verdi kan parkeres

Mest korrekt, men minst nyttig..

Nyttig metafor, brukt i lærebok

Page 21: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Tre måter å tenke på variable på (ulike metaforer)En navngitt lokasjon i datamaskinens minne hvor en verdi kan lagres

En navngitt parkeringsplass hvor en verdi kan parkeres

En navnelapp som er satt på en verdi

Mest korrekt, men minst nyttig..

Nyttig metafor, brukt i lærebok

Nyttig metafor, populær for Python

Page 22: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Tre måter å tenke på variable på (ulike metaforer)

•En variabel er et navn som representerer en verdi

•En variabel kan bare holde én verdi av gangen*

•Man kan underveis i et program endre hvilken verdi en variabel representerer

Felles for alle tre metaforer:

* verdien kan være et sammensatt objekt

Page 23: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Plan for forelesingen

•Hva er programmering?

•Skrive og kjøre våre første program

•Variabler

•Feilmeldinger

•Innlesing fra tastatur

•Beslutninger (if)

Page 24: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Når noe går galt i et program får man en feilmelding

•Vi kommer mer tilbake til dette i uke 2..

•Et lite eksempel:

•Man kjører et Python-program som består av en linje: Print("hei")

•Dette vil gi en feilmelding bestående av hvor feilen lå (fil og linjenummer), hvilken type feil det var, og akkurat hva som var problemet

Feilmeldinger

Page 25: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Feilmeldinger

Hvor problemet er

(linje 1)Selve problemet

Hvilken type problem/feilmelding

Page 26: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Plan for forelesingen

•Hva er programmering?

•Skrive og kjøre våre første program

•Variabler

•Feilmeldinger

•Innlesing fra tastatur

•Beslutninger (if)

Page 27: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•De fleste program tar en eller annen jevnlig inputt fra brukeren

•Dette gir også mye mer dynamikk i programmene enn det vi har sett på til nå

•Kommunisere med brukeren av et program:

•print gir output til bruker

•input henter inputt fra bruker

•[innlesing.py]

Slipp brukeren til!

Page 28: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Gi brukeren beskjed om å skrive inn et svar

•Brukeren må vite at han/hun skal skrive noe:

•print("Hva heter du? ")

•navn = input()

•input kan skrive beskjed før den venter på svar:

•navn = input("Hva heter du? ")

Page 29: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Plan for forelesingen

•Hva er programmering?

•Skrive og kjøre våre første program

•Variabler

•Feilmeldinger

•Innlesing fra tastatur

•Beslutninger (if)

Page 30: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•For det vi har sett på til nå, har programmet alltid fulgt én bestemt sekvens av instruksjoner

•Vi kan lese ulike startverdier fra tastatur og dermed få ulike resultat, men alltid basert på de samme operasjonene

•Vi trenger mer variasjon!

•Det blir mye artigere å programmere dersom hvilke operasjoner som utføres også kan avhenge av verdier man regner ut

Ikke bare følge strømmen

Page 31: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Problemstilling:

•Vi ønsker å lage et program som kan fortelle hovedstaden til et valgfritt land i nordre Skandinavia(brukeren ber om Norge eller Sverige)

•Vi trenger altså to ulike print

•Vi må imidlertid sørge for at kun én print blir kjørt, hvor hvilken som blir kjørt avhenger av innlest land

Et konkret problem som krever beslutninger

Page 32: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

En uferdig løsning (mangler beslutning)

land = input("Velg land i nordre Skandinavia: ")

print("Oslo")

print("Stockholm")

Page 33: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Syntaksen (skrivemåten) er veldig enkel:

•if land=="Norge": print "Oslo"

•Merk dobbelt likhetstegn

•Merk innrykk

•{hovedstad1.py}

Beslutninger i et program: if

Page 34: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•if land=="Norge" print "Oslo" print("Kjent som byen ved fjorden")

•Merk felles innrykk for alle programlinjer som skal styres sammen (kalles en blokk)

•{hovedstad2.py}

Mange linjer kan styres av samme beslutning (if)

Page 35: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Lage et program som kun ønsker å fortelle hovedstaden til Norge

•{hovedstad3.py}

En mer nasjonalistisk variant

Page 36: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•En veldig begrenset utviding av syntaks:

• if land == "Norge": print("Oslo")else: print("Kunne ikke brydd meg mindre!")

•{hovedstad4.py}

En praktisk kortform: if-else

Page 37: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Kan kombinere if, elif og else:

• if land == "Norge": print("Oslo")elif land == "Sverige": print("Stockholm")elif land == "Danmark": print("Kobenhavn")else: print("Ukjent land")

•elif og else kjøres kun dersom ingenting før slår til

•{hovedstad5.py}

Kombinere ellers med ny if: elif

Page 38: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

if alder<6:

print("Velkommen til bhg")

if alder<3:

print("Du er smaabarn")

else:

print("Du er storbarn")

Man kan nøste sammen flere if

Page 39: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

if alder<6:

print("Velkommen til bhg")

if alder<3:

print("Du er smaabarn")

else:

print("Du er storbarn")

Man kan nøste sammen flere if

Alt dette kun

dersom alder<6

Page 40: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

if alder<6:

print("Velkommen til bhg")

if alder<3:

print("Du er smaabarn")

else:

print("Du er storbarn")

Man kan nøste sammen flere if

Alt dette kun

dersom alder<6 Dersom alder>=3

Page 41: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

if alder<6:

print("Velkommen til bhg")

if alder<3:

print("Du er smaabarn")

else:

print("Du er storbarn")

Man kan nøste sammen flere if

Alt dette kun

dersom alder<6 Dersom alder>=3

(men alder<6 for å komme her..)

Page 42: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

•Hvordan vil du skrive koden?

•Prøv selv med blyant og papir! (3 minutt)

•Etterpå diskuter med nabo (3 minutt)

Et liten oppgave

voksen = input("Er du voksen? (ja/nei)")gravid = input("Er du gravid? (ja/nei)")

#Nøstet beslutning med utskrift..

•Lag en nøstet beslutning hvor voksne som ikke er gravide får beskjed om å kjøre karusell

Page 43: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

En mulig løsning

voksen = input("Er du voksen? (ja/nei)")gravid = input("Er du gravid? (ja/nei)")

if voksen=="ja": print "Du er stor nok," if gravid=="ja": print "men har dessverre ikke lov" else: print "velkommen ombord!"

Page 44: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Og

AND

Page 45: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Eller

OR

Page 46: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Alternativ løsning

voksen = input("Er du voksen? (ja/nei)")gravid = input("Er du gravid? (ja/nei)")

if voksen=="ja" and gravid=="nei": print "velkommen ombord!"

Page 47: IN1000 - uke 1 · •Be datamaskinen om å: •Skrive 9+9 på skjermen •Skrive hva 9+9 blir på skjermen •Skrive hva 1+2+3+4 blir på skjermen •Skrive på skjermen om det stemmer

Konklusjon

•Programmering er en form for kreativ problemløsning

•Variabler lar oss ta vare på verdier gjennom et program

•Beslutninger (if) lar programmene utføre ulike operasjoner avhengig av verdien til en variabel