KONTROLLSTRUKTURER. MAT1030 Diskret matematikk. Kontrollstrukturer. Kontrollstrukturer. Eksempel (Ubegrenset while-løkke)

Like dokumenter
Forelesning 2. Flere pseudokoder. Representasjoner av tall. Dag Normann januar 2008 KONTROLLSTRUKTURER. Kontrollstrukturer. Kontrollstrukturer

MAT1030 Diskret Matematikk

MAT1030 Forelesning 2

Oppsummering av Uke 3. MAT1030 Diskret matematikk. Binære tall. Oppsummering av Uke 3

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

Mer om representasjon av tall

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Vi som skal undervise. MAT1030 Diskret matematikk. Hva er diskret matematikk? Hva er innholdet i MAT1030?

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

MAT1030 Diskret Matematikk

Kapittel 3: Litt om representasjon av tall

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk Forelesningsnotater Våren Universitetet i Oslo

MAT1030 Plenumsregning 3

MAT1030 Diskret Matematikk Forelesningsnotater Våren 2010

MAT1030 Diskret Matematikk

Velkommen til MAT1030!

MAT1030 Diskret matematikk

MAT1030 Forelesning 28

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

MAT1030 Diskret matematikk

MAT1030 Plenumsregning 1

Forelesning 1. Algoritmer, pseudokoder og kontrollstrukturer. Dag Normann januar Vi som skal undervise. Hva er diskret matematikk?

Forelesning 30. Kompleksitetsteori. Dag Normann mai Informasjon. Oppsummering

MAT1030 Forelesning 3

Valg av kontaktpersoner/tillitsvalgte. MAT1030 Diskret matematikk. Oppsummering av kapittel 2. Representasjon av hele tall

MAT1030 Diskret Matematikk Forelesningsnotater Våren 2010

MAT1030 Diskret Matematikk Forelesningsnotater Våren 2010

MAT1030 Diskret Matematikk Forelesningsnotater Våren 2010

MAT1030 Diskret Matematikk

I Kapittel 2 lærte vi om tall i alternative tallsystemer, i hovedsak om binære tall, oktale tall og heksadesimale tall.

MAT1030 Diskret matematikk

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

Kapittel 6: Funksjoner

MAT1030 Diskret matematikk

MAT1030 Diskret Matematikk

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Eksempel

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

Oppsummering av Kapittel 3. MAT1030 Diskret matematikk LOGIKK. Logikk. Forelesning 5: Logikk

MAT1030 Diskret Matematikk

Generell induksjon og rekursjon. MAT1030 Diskret matematikk. Generell induksjon og rekursjon. Generell induksjon og rekursjon.

MAT1030 Diskret matematikk

MAT1030 Diskret Matematikk

Representasjon av tall på datamaskin Kort innføring for MAT-INF1100L

Kapittel 3: Litt om representasjon av tall

MAT1030 Diskret matematikk

MAT1030 Forelesning 14

Repetisjon og mer motivasjon. MAT1030 Diskret matematikk. Repetisjon og mer motivasjon

MAT1030 Diskret matematikk

I Kapittel 3 så vi på hvordan data, som hele tall og reelle tall, kan representeres som bitsekvenser

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

Sist forelesning snakket vi i hovedsak om trær med rot, og om praktisk bruk av slike. rot. barn

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen

Rekurrens. MAT1030 Diskret matematikk. Rekurrens. Rekurrens. Eksempel. Forelesning 16: Rekurrenslikninger. Dag Normann

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Roger Antonsen

Kapittel 4: Logikk (fortsettelse)

MAT1030 Diskret Matematikk

Norsk informatikkolympiade runde

Kapittel 6: Funksjoner

MAT1030 Diskret matematikk

Oppgaver fra forelesningene. MAT1030 Diskret matematikk. Oppgave (fra forelesningen 10/3) Definisjon. Plenumsregning 9: Diverse ukeoppgaver

Forelesning 13. Funksjoner. Dag Normann februar Opphenting. Opphenting. Opphenting. Opphenting

Grafteori. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

Forelesning 23. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

MAT1030 Diskret Matematikk

Mengder, relasjoner og funksjoner

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

MAT1030 Diskret matematikk

Vektede grafer. MAT1030 Diskret matematikk. En kommunegraf. En kommunegraf. Oppgave

Generell rekursjon og induksjon. at(n) + bt(n 1) + ct(n 2) = 0

MAT1030 Diskret matematikk

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Norsk informatikkolympiade runde

Rest fra sist. MAT1030 Diskret Matematikk. Rest fra sist. Rest fra sist. Eksempel (Fortsatt) Eksempel. Forelesning 18: Generell rekursjon og induksjon

TALL. Titallsystemet et posisjonssystem. Konvertering: Titallsystemet binære tall. Det binære tallsystemet. Alternativ 1.

Kapittel 6: Funksjoner

Teori og oppgaver om 2-komplement

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Reelle tall på datamaskin

MAT1030 Diskret Matematikk

INF1040 Digital representasjon TALL

Konvertering mellom tallsystemer

MAT1030 Forelesning 4

MAT1030 Forelesning 14

MAT1030 Forelesning 25

MAT1030 Forelesning 18

MAT1030 Forelesning 19

Norsk informatikkolympiade runde

Kapittel 5: Mengdelære

MAT1030 Diskret Matematikk

Tall. Posisjons-tallsystemer. Representasjon av heltall. Tall positive, negative heltall, flytende tall. Tekst ASCII, UNICODE XML, CSS

MAT1030 Diskret Matematikk

MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7.

Forelesning 28: Kompleksitetsteori

Transkript:

KONTROLLSTRUKTURER MAT1030 Diskret matematikk Forelesning 2: Flere pseudokoder. Representasjoner av tall. Dag Normann Matematisk Institutt, Universitetet i Oslo 16. januar 2008 Mandag innførte vi pseudokoder og kontrollstrukturer. Vi hadde tre typer grunn-instruksjoner: Input variabel variabel term Output variabel MAT1030 Diskret matematikk 16. januar 2008 2 Vi hadde fem kontrollstrukturer If then If then While do Repeat until For to do Vi skal se på noen flere eksempler på pseudokoder. Det er ingen som vet om algoritmen som er beskrevet i den neste pseudokoden vil terminere for alle input. Det betyr at den muligens ikke er en algoritme i bokas forstand. Den forutsetter at vi kan skille mellom partall og oddetall. Eksempel (Ubegrenset while-løkke) 1 Input x [x 1 heltall.] 2 While x > 1 do 2.1 if x partall then 2.1.1 x x 2 2.1.2 x 3x + 1 3 Output x MAT1030 Diskret matematikk 16. januar 2008 3 MAT1030 Diskret matematikk 16. januar 2008 4

Vi kan finne en enkel pseudokode for å finne ledd nr. n i følgen av Fibonacci-tall: Eksempel (Fibonacci) 1 Input n [n 1 heltall] 2 x 1 3 y 1 4 For i = 2 to n do 4.1 z x 4.2 x x + y 4.3 y z 5 Output x 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, Parenteser i forskjellige former brukes mye i matematikk, informatikk og spesielt i programmer. Eksempelvis, under utarbeidn av denne beamer- presentasjonen forekommer parenteser som og \begin{center} \end{center} \begin{eksempel} \end{eksempel} en rekke steder, og det er viktig at de står riktig i forhold til hverandre. Dette kontrolleres når råmanuskriptet kompileres. Det neste eksemplet på en pseudokode er en parentes-sjekker. MAT1030 Diskret matematikk 16. januar 2008 5 MAT1030 Diskret matematikk 16. januar 2008 6 Vi kan kontrollere om en liste venstre og høyreparenteser ( ( ) ( ( ) ) ) ( ) ( ( ) ) ) ( ) er lovlig eller ikke, ved å telle opp eller ned - opp ved ( og ned ved ) - fra venstre mot høyre. Hvis vi til slutt ser at vi har like mange parenteser av hvert slag, og aldri underveis har flere ) enn (, er uttrykket i orden. I den neste eksemplet gir vi to input, lengden av uttrykket og sekvensen av parenteser. Vi sjekker uttrykket fra venstre mot høyre. Vi bruker variabelen val til å holde orden på om sekvensen s å langt er i orden. Vi bruker variabelen y til å telle overskuddet av (. 1 Input n [Lengden av uttrykket, antall parenteser totalt] 2 Input x 1 x n [En liste av venstre og høyreparenteser] 3 y 0 4 val JA 5 For i = 1 to n do 5.1 if x i = ( then 5.1.1 y y + 1 5.1.2 if y = 0 then 5.1.2.1 val NEI 5.1.2.2 y y 1 6 if y > 0 then 6.1 val NEI 7 Output val MAT1030 Diskret matematikk 16. januar 2008 7 MAT1030 Diskret matematikk 16. januar 2008 8

TALLMENGDER Hvilke tall vi betrakter er avhengig av hva vi ønsker å bruke dem til. OVER TIL KAPITTEL 2 I MAT1030 vil vi stort sett betrakte følgende typer tall: Naturlige tall N 1, 2, 3, Hele tall Z, 3, 2, 1, 0, 1, 2, Rasjonale tall Q Reelle tall R Tall som kan skrives som en brøk p q alle tallene MAT1030 Diskret matematikk 16. januar 2008 9 MAT1030 Diskret matematikk 16. januar 2008 10 Tallmengder Tallmengder Mange mener at tall er punkter på tall-linja, og at det ikke spiller noen rolle om vi betrakter 2 som et naturlig tall, et heltall, et rasjonalt tall eller et reelt tall. I programmeringsammenheng kan det spille en stor rolle hva slags verdier en variabel kan få lov til å ta, og representasjonen av et tall som et dataobjekt kan variere med hva slags type tall vi betrakter. Dette skal vi se nærmere på siden. Det finnes andre tallmengder som også er av interesse i matematikk og informatikk,eksempelvis Komplekse tall Algebraiske tall Kvaternioner MAT1030 Diskret matematikk 16. januar 2008 11 MAT1030 Diskret matematikk 16. januar 2008 12

REPRESENTASJON AV TALL Representasjon av tall Så langt tilbake vi har informasjon om, har mennesker og kulturer hatt muntlig og skriftlig språk for tall. Romertallet er en alternativ måte å skrive på. MCMXXVIII 1928 De tallene vi bruker til daglig kalles desimaltall, eller tall i 10-tallsystemet. Dette er et plass-siffersystem med basis 10. Det betyr igjen at hvert siffer angir et antall 10 er potenser, og sifferets posisjon forteller oss hvor stor potensen er. Hvis vi blir bedt om å skrive et program for addisjon av to tall, betyr det mye om vi bruker den romerske eller dagens måte å skrive tall på. MAT1030 Diskret matematikk 16. januar 2008 13 MAT1030 Diskret matematikk 16. januar 2008 14 Representasjon av tall Tverrsumtesten Eksempel Tverrsummen til et desimaltall er summen av alle sifrene. Eksempel a) 258 står for b) 3, 14 står for 2 10 2 + 5 10 1 + 8 10 0. 3 10 0 + 1 10 1 + 4 10 2 Tverrsummen til 234 er 2 + 3 + 4 = 9 Tverrsummen til 15987 er 1 + 5 + 9 + 8 + 7 = 30 Tverrsummen til 2825 er 2 + 8 + 2 + 5 = 17 Legg merke til at resten vi får når vi deler tallet på 9 er det samme som vi får når vi deler tverrsummen på 9. Kan dette forklares matematisk? MAT1030 Diskret matematikk 16. januar 2008 15 MAT1030 Diskret matematikk 16. januar 2008 16

Tverrsumtesten Tverrsumtesten Bevis La Påstand (Tverrsumtesten) Hvis vi skriver et tall n på desimalform og lar T (n) være tverrsummen til n, så får vi samme rest når vi deler n på 9 som når vi deler T (n) på 9. være desimalformen til n. Da er a k... a 0 n = a k 10 k + + a 1 10 + a 0 Hvis 1 i k kan 10 i 1 deles på 9, siden sifrene består av bare 9-tall. Vi har at n = T (n) + a k (10 k 1) + + a 1 (10 1) (trenger litt ettertanke), og påstanden følger (trenger litt ettertanke til). MAT1030 Diskret matematikk 16. januar 2008 17 MAT1030 Diskret matematikk 16. januar 2008 18 BINÆRE TALL Det er kulturelt betinget at vi bruke 10 som basis i tallsystemet vårt. Alle tall > 1 kan i prinsippet brukes. I informatikksammenheng er det like naturlig å bruke 2, 8 og 16 som basistall. Bruker vi 2 som basis, sier vi at tallet er på binær form. Eksempel Vi tolker en binær form (hvor alle sifrene er 0 eller 1) omtrent som om det var et desimaltall, bortsett fra at vi erstatter 10 med 2: 1010 2 = 1 2 3 + 0 2 2 + 1 2 1 + 0 2 0 = 8 + 2 = 10 10 11011 2 = 16 + 8 + 2 + 1 = 27 100111001 2 = 256 + 32 + 16 + 8 + 1 = 313 MAT1030 Diskret matematikk 16. januar 2008 19 MAT1030 Diskret matematikk 16. januar 2008 20

er viktige i informatikk fordi digitalisering innebærer at all informasjon skal lagres som 0 er og 1 ere, i bits. Vi skal komme tilbake til hvordan tall representeres i datamaskiner, men bruk av binær representasjon er helt sentral der. Binær representasjon kan selvfølgelig også brukes til desimaltall. 0, 100101 2 = 1 2 + 1 16 + 1 64 = 32+4+1 64 = 100101 2 64 0, 01101 2 = 1 4 + 1 8 + 1 32 = 8+4+1 32 = 01101 2 32 MAT1030 Diskret matematikk 16. januar 2008 21 MAT1030 Diskret matematikk 16. januar 2008 22 Det finnes en enkel prosedyre for å regne ut verdien av et binært tall: 1 Input n [Antall sifre] 2 Input x 1... x n [en sekvens av 0 er og 1 ere] 3 y 0 [Skal bli verdien på sekvensen tolket som et binært tall] 4 For i = 1 to n do 4.1 y 2y 4.2 If x i = 1 then 4.2.1 y y + 1 5 Output y Vi gir et regneeksempel, med input n = 4 og x 1 x 2 x 3 x 4 = 1101, på tavla. MAT1030 Diskret matematikk 16. januar 2008 23 Det finnes også prosedyrer for å regne ut verdien av binære tall på desimalform. Vi skal se på binære tall på formen 0, 100110111000101 og liknende, og hvilken algoritme vi kan bruke for å finne verdien av 0, 100110111000101 2. 1 Input n 2 e 1 3 For i = 1 to n do 3.1 e e 2 4 Input x 1... x n [Det binære tallet som står bak komma] 5 y 0 6 For i = 1 to n do 6.1 y 2y 6.2 If x i = 1 then 6.2.1 y y + 1 7 y y e 8 Output y MAT1030 Diskret matematikk 16. januar 2008 24

Det er selvfølgelig viktig å kunne finne verdien av et tall skrevet på binær form. Det er også viktig å kunne finne binærformen til et tall. Vi skal se på to pseudokoder, en som finner binærformen til et heltall, og en som finner binærformen til et tall mellom 0 og 1. I begge tilfeller vil vi finne siffer nr. k fra komma. Binærformen til et heltall: Skriver ut siffer nr. k i binærformen til n. 1 Input n 2 Input k 3 For i = 1 to k do 3.1 If n like tall then 3.1.1 n n 2 3.1.2 z 0 3.1.3 n n 1 2 3.1.4 z 1 4 Output z MAT1030 Diskret matematikk 16. januar 2008 25 MAT1030 Diskret matematikk 16. januar 2008 26