TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

Like dokumenter
Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Oppsummering fra sist

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning 3 Python (TDT4110)

Læringsmål og pensum. if (be): else (not_to_be):

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

YouTube-kanal ITGK. Læringsmål og pensum

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

TDT4110 IT Grunnkurs Høst 2015

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

TDT4110 IT Grunnkurs Høst 2014

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

Læringsmål og pensum. Intro til returverdifunksjoner: Generering av tilfeldige tall 27/09/16

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

TDT4110 IT Grunnkurs Høst 2016

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

print("hurra!") som ikke har innrykk, er ikke del av løkka, og vil derfor bare bli utført en gang, etter at løkka er ferdig.

Øvingsforelesning 5 Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2016

Hvordan løse problemer med programmering?

Læringsmål og pensum. Oversikt

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Læringsmål og pensum. Designe et program

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Pensum: Starting out with Python

Øvingsforelesning i Python (TDT4110)

Øvingsforelesning 5 Python (TDT4110)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Læringsmål og pensum. v=nkiu9yen5nc

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Designe et program. TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Mål.

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Python: Funksjoner og moduler Kapittel

Excited. Hvordan komme i gang med tekstbasert programmering? Centre for Excellent IT Education. Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Professor Alf Inge Wang

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

Bruk piazza for å få rask hjelp til alles nytte!

Mattespill Nybegynner Python PDF

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

Løse reelle problemer

Øvingsforelesning 1 Python (TDT4110)

Hangman. Level. Introduksjon

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Python: Funksjoner og moduler Kapittel

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

Repetisjon Novice Videregående Python PDF

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

Auditorieøvingstider for alle linjer er postet på forsiden av wikien (under «Siste nytt»). Studenter som ikke kan møte til oppsatt tidspunkt, kan

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

Python: Strenger 3. utgave: Kapittel 8

Løse reelle problemer

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Løkker og arrayer. Løse problemer med programmering. INF1000, uke3 Geir Kjetil Sandve

Programmering Høst 2017

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler Kap 5: Egne moduler + et større eksempel Kap. 7

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

"Hjerneteppe!" er en huskelek hvor du skal huske stadig lengre rekker med bokstaver!

Python: Lister og tupler Gaddis: Kapittel 7

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

INF Obligatorisk innlevering 7 - Hangman

C# (.Net) Tema: Loops (Løkker) Leksjon 7 Kap 18

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Informasjon Prøveeksamen i IN1000 høsten 2018

Leksjon 3. Kontrollstrukturer

Python: Filer og unntak Gaddis: Kapittel 6

JS: Grunnleggende JavaScript Nybegynner

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Objektorientert programmering i Python

TDT4110 Informasjonsteknologi grunnkurs: Uke 48 Oppsummering/Spørretime. Professor Alf Inge Wang

PGZ - Hangman Ekspert Python Lærerveiledning

TDT4110 Informasjonsteknologi, grunnkurs

TDT4105 IT Grunnkurs Høst 2016

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

INF109 - Uke 1b

IN1000 Obligatorisk innlevering 7

Transkript:

1 TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker - 3rd edition: Kapittel 4 Professor Alf Inge Wang

2 Læringsmål og pensum Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum Repetition Structures Starting out with Python 3rd edition: Chapter 4

3 Intro løkker Kapittel 4.1

4 Løkker - gjenta kodelinjer flere ganger Det er nyttig å kunne gjenta en del av et program flere ganger, uten å skrive det samme mange ganger. Til dette bruker man løkker. Dette er tungvindt, bruk heller løkke: print( jeg har vært slem ) print( jeg har vært slem ) print( jeg har vært slem ) print( jeg har vært slem ) print( jeg har vært slem ) print( jeg har vært slem ) print( jeg har vært slem ) print( jeg har vært slem ) Ordet løkke brukes fordi vi skal gjenta noe flere ganger (rundt og rundt)

5 Begreper Løkke: En repeterende struktur som gjør at en kodelinje eller flere kodelinjer blir kjørt flere ganger. Betingelseskontrollert løkke (while): Bruker en True/False betingelse for å bestemme hvor mange ganger kodelinjene skal kjøres Antallkontrollert løkke (for): Repeterer kode et bestemt antall ganger

6 To typer løkker i Python While-løkke Hvis man skal gjenta en kodesnutt flere ganger helt til en betingelse blir oppfylt. Typisk gjentagelse av kode hvor man ikke vet helt hvor mange ganger koden skal gjentas. For-løkke Hvis man skal gjenta en kodesnutt et bestemt antall ganger, bruker man en for-løkke. Typisk hvis man skal gjøre noe med alle elementene i ei liste eller en tabell.

7 while-løkka Kapittel 4.2

8 Flytskjema while-løkke betingelse kode

9 Skrive en while-løkke Generell format for while-løkke i Python: while betingelse: kodelinje1 kodelinje2 kodelinje3 Hvis betingelsen er True vil kodelinje 1 og 2 blir utført helt til betingelsen blir False Kun kode med innrykk hører til while-løkka (altså ikke kodelinje3)

10 Et eksempel på bruk av while La oss summere et vilkårlig antall positive tall ved at brukeren skal skrive inn tall ved hjelp av input() Brukeren avslutter ved å skrive inn 0 og deretter skrives summen ut til konsollet (tekstvinduet) Vi titter på en mulig løsning kode: summer.pytdt4105 IT Grunnkurs

11 Evig løkke Løkker må inneholde kode som gjør at de terminerer (avslutter): Noe inne i while-løkka må føre til at betingelsen blir False Evig løkke: En løkke som ikke har kode som gjør at den stopper Programmet gjentar kode helt til brukeren avbryter programmet Oppstår når programmereren glemmer å inkludere kode som avslutter løkka (gjør betingelsen False)

12 Oppgave: while-løkke Skriv Python-koden til følgende psaudokode: Opprette en variabel n og sette den lik 5 Så lenge at n er større enn 0, gjenta: skriv ut verdien av n til konsoll minsk verdien av n med 1 Hva gjør programmet? kode: oppgave-while-py

13 Og nå, det dere alle har venta på!

14 Dere skal få lære og lage deres eget dataspill!

15

16 Fet grafikk, kult gameplay, bli kjent og masse penger

17 Eller ikke Kanskje et kjempe enkelt tekstspill! HURRA! MYE BEDRE!

18 Et enkelt spill vha while Vi skal lage et enkelt gjettespill, der spilleren skal gjette på ett tilfeldig tall mellom 1 og 100. Hvis man gjetter for lavt eller høyt, skal spilleren få beskjed om dette. Hvis man gjetter riktig, er spillet ferdig. For å få til et tilfeldig tall brukes: import random # Laster inn random bibliotek random.random() #Tilfeldig flyttall mellom 0 og 1 For å gjøre om desimaltall til heltall brukes int() heltall = int(desimaltall) Alternativ for å få et tilfeldig heltall mellom start og slutt: random.randint(start, slutt) kode: gjettespill.py

19 Godt design: kalle funksjon i løkke

20 for-løkka Kapittel 4.3-4.4

21 for-løkker Brukes for å gjenta en blokk et bestemt antall ganger. for-løkke er designet for å jobbe med en sekvens (liste) av dataelementer Gå igjennom sekvensen (liste), element for element Generelt format: for variabel in [verdi1, verdi2, verdi3, osv]: kodelinjer variabel får verdier fra lista fra første element til siste, element for element for hver runde. Koden som blir utført av for-løkka må ha innrykk

22 Hva skjer når man kjører ei for-løkke Kode som skriver ut tallene 1 til 5. Variabelen num får verdier fra lista, element for element, for hver runde løkka kjører

23 for-løkke for variabel som inneholder en liste En for-løkke kan også kjøres på en variabel som inneholder en liste av verdier: navneliste=[ Ole, Per, Oline, Anna, Frida ] for navn in navneliste: print(navn) Skriver ut navnene til skjerm i rekkefølge Ei liste defineres ved å bruke [ ] rundt verdier og komma mellom elementer En for-løkke kan iterere (gå igjennom) ei liste av alle typer verdier (strenger, heltall, flyttall, sannhetsverdier osv).

24 Bruk av range-funksjonen i for-løkker range er en funksjon som gjør det enklere å skrive tellende for-løkker. range-funksjonen lager et objekt av typen iterable. iterable er et objekt som ligner på en liste og inneholder verdier som en liste kan iterere over. range kan ha tre varianter: range(til) range(fra,til) range(fra, til, steg) # tilsvarer [0,1,2,til-1] # tilsvarer [fra, fra+1, fra+ n, til-1] # tilsvarer [fra, fra+steg, fra+2*steg..,til-1]

25 Kodeeksempler på bruk av range og liste Range: Liste: for n in range(5): for n in [0,1,2,3,4]: print(n) print(n) for n in range(1,5): for n in [1,2,3,4]: print(n) print(n) for n in range(1,6,2): for n in [1,3,5]: print(n) print(n) for n in range(10,1,-3): for n in [10, 7, 4]: print(n) print(n)

26 Oppgave: for-løkke Skriv Python-koden en for-løkke som skriver ut: Alle tallene i 3-gangen sammen med kvadratet (3 2, 6 2 ) Det skal være en tabulator mellom 3 gangen og kvadratet. kode: kvadrat.py

27 Avslutningsverdi Kapittel 4.5

28 Endring av verdier i variabler (gi avslutningsverdi i løkker) Lang-form Kompakt-form Hva gjøres x = x + 4 x += 4 Øker verdien av x med 4 x = x 3 x -= 3 Minsker verdien av x med 3 x = x * 10 x *= 10 Multipliserer verdien av x med 10 x = x / 2 x /= 2 Dividerer verdien av x med 2 x = x % 4 x %= 4 Resten av x delt på 4

29 Validering av Input ved hjelp av løkker Kapittel 4.6

30 Validering av input vha løkker Ofte ønsker man å sikre seg at riktig verdier på input fra brukeren før programmet går videre. Dette kan man gjøre vha while-løkke: alder = int(input("hvor gammel er du? ")) while (alder<0 or alder>120): print("feil: Alder må være mellom 0 og 120!") alder = int(input("hvor gammel er du? ")) print("takk for den du!!!") kode: alder.py

31 Nøstede løkker Kapittel 4.7

32 Nøstede løkker En løkke inne i en annen løkke kalles nøstede løkker. Noen fenomener er av en slik art at man trenger en hierarkisk gjennomkjøring av løkke. Tid er et godt eksempel der man teller først 60 sekunder, før man øker minutt med 1 osv. Utskrift av tid som nøstede løkker: for t in range(24): for m in range(60): for s in range(60): print(t,":",m,":",s) kode: tid.py

33 Flytskjema for utskrift av tid

34 Oppgave: nøstede for-løkke Skriv Python-koden til følgende psaudokode: La y løpe igjennom tallene fra 1 til 3 La x løpe igjennom tallene fra 1 til 3 Sett z lik x multiplisert med y Skriv ut verdien av z til konsoll Hva blir skrevet ut til konsoll? kode: oppgave_dobbel_lokke.py

35 Oppsummering while-løkke brukes når en betingelse avgjør antall iterasjoner (gjennomganger): while(betingelse): for-løkke brukes når man skal iterere over en liste eller et bestemt antall ganger: for x in [1,2,3,4]: for y in [ test,3.14,true,9]: for z in range(1,5,2): for i in range(1,5): Nøstede løkker er løkker inne i andre løkker: for x in [1,3,5]: for y in range [5,7,12]: