MAT1030 Plenumsregning 1

Like dokumenter
MAT1030 Diskret Matematikk

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

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

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

MAT1030 Diskret Matematikk

Velkommen til MAT1030!

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

MAT1030 Forelesning 2

MAT1030 Diskret Matematikk

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

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

MAT1030 Diskret matematikk

MAT1030 Diskret Matematikk

MAT1030 Diskret Matematikk

MAT1030 Diskret matematikk

Programmering Høst 2017

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

Mer om representasjon av tall

Kapittel 4: Logikk (fortsettelse)

MAT1030 Diskret Matematikk

Øvingsforelesning 1 Python (TDT4110)

MAT1030 Diskret matematikk

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

Ukeoppgaver fra kapittel 3 & 4

MAT1030 Diskret matematikk

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

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

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

MAT1030 Diskret matematikk

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

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

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

Betinget eksekvering og logiske tester i shell

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

MAT1030 Diskret Matematikk

Plenumsregning 9. Diverse ukeoppgaver. Roger Antonsen april Oppgaver fra forelesningene. Oppgave (fra forelesningen 10/3).

Lynkurs i shellprogrammering under Linux

Hangman. Level. Introduksjon

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

TDT4110 IT Grunnkurs Høst 2016

Mengder, relasjoner og funksjoner

Øvingsforelesning 5 Python (TDT4110)

Oppsummering fra sist

TDT4110 IT Grunnkurs Høst 2015

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

MAT1030 Diskret matematikk

Forelesning 30. Kompleksitetsteori. Dag Normann mai Informasjon. Oppsummering

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

Øvingsforelesning 5 Python (TDT4110)

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

Læringsmål og pensum. Oversikt

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

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

MAT1030 Diskret Matematikk

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

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

MAT1030 Diskret matematikk

UNIVERSITETET I OSLO

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 IT Grunnkurs Høst 2016

Skanning del I INF /01/15 1

Skanning del I. Kapittel 2 INF 3110/ INF

Visual Basic. Repetisjon fra onsdag

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

Repetisjon Novice Videregående Python PDF

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

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

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

Norsk informatikkolympiade runde

Løse reelle problemer

Øvingsforelesning i Python (TDT4110)

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.

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Ukeoppgaver fra kapittel 10 & Induksjonsbevis

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Søking i strenger. Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen

Grafteori. MAT1030 Diskret matematikk. Induksjonsbevis

MAT1030 Diskret matematikk

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

Oppgaver uke 1: Løsningsforslag

Hvordan løse problemer med programmering?

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

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Transkript:

MAT1030 Plenumsregning 1 Kapittel 1 Mathias Barra - 16. januar 2009 (Sist oppdatert: 2009-02-02 14:21) Plenumsregning 1 Velkommen til plenumsregning for MAT1030 Fredager 12:15 14:00 Vi vil gjennomgå utvalgte ukeoppgaver, se på eksempler fra boka og repetere stoff fra forelesningene. Spørsmål og svar Viktig for at DU skal ha fullt utbytte: Forsøk på oppgavene selv først! Repetisjon: Algoritmer og pseudokode En algoritme er en oppskrift som forteller oss hvordan vi skritt for skritt skal kunne oppnå et resultat eller løse et problem. Det skal ikke kreves intelligens eller forståelse for å følge den. (Hmm... dette blir litt filosofisk!) En pseudokode er en måte å beskrive en algoritme på. Hvert steg i algoritmen skal være beskrevet på en entydig måte. Eksempel fra boka Eksempel (1.1.1). Skriv en algoritme som regner ut arealet av en sirkel, gitt radiusen. 1. Input r [r er radiusen til sirkelen.] 2. areal πr 2 3. Output areal I dette eksempelet ser vi litt av syntaksen vi benytter: Hvert steg i algoritmen er nummerert. 1

Kommentarer skrives mellom [] (i boken benytter de {}). Symbolet betegner tilordning. Repetisjon: Kontrollstrukturer En kontrollstruktur brukes for å styre hvordan, og hvorvidt, de enkle instruksjonene i en pseudokode skal utføres. For-do 1. sum 0 2. For i = 1 to 6 do 2.1. sum sum + i Steg sum i 1 0 2 0 1 2.1 1 1 2 1 2 2.1 3 2 2 3 3 2.1 6 3 2 6 4 2.1 10 4 2 10 5 2.1 15 5 2 15 6 2.1 21 6 21 If-then 1. If x < 0 then 1.1. x x If-then-else 1. If x 0 then 1.1. y x else 1.2. Output x fins ikke [er kompleks] 2

While-do 1. While svar 1 do 1.1. Input svar Repeat-until 1. i 0 2. Repeat 2.1. i i + 1 2.2. Input x i until x i = 0 Eksempler fra boka Eksempel (1.2.1/1.2.2). Finn det minste tallet i en liste av tall. 1. Input the number of values n 2. Input the list of numbers x 1,..., x n 3. min x 1 4. For i = 2 to n do 4.1. If x i < min then 4.1.1. min x i 5. Output min Steg min i n x 1 x 2 x 3 1 3 2 3 5 4 8 3 5 3 5 4 8 4 5 2 3 5 4 8 4.1 5 2 3 5 4 8 4.1.1 4 2 3 5 4 8 4 4 3 3 5 4 8 4.1 4 3 3 5 4 8 5 4 3 5 4 8 3

Reserverte ord og utrykk i pseudokode If then else For to do While Repeat until and or not Input Output true false [] (eller {} i boka) vanlig matematiske utrykk (f.eks. x < 0 og x) Eksempler fra boka Eksempel (1.2.3). Lag en algoritme som sjekker om en streng c 1 c 2... c n av n tegn består av kun sifre, eller om ikke-sifre forekommer, og skriv ut en passende melding. Hvis input er 12345 skal algoritmen returnere meldingen: Strengen inneholder kun sifre. Hvis input er 123@45 skal algoritmen returnere meldingen: Strengen inneholder tegn som ikke er sifre. Utkast 1 1. i 1; ikkesiffer oppdaget false 2. Repeat 2.1. If c i ikke er et siffer then 2.1.1. ikkesiffer oppdaget true 2.2. i i + 1 until ikkesiffer oppdaget = true Identifikatorer/variable skrives i kursiv uten mellomrom. ikkesiffer oppdaget kalles gjerne for en logisk (eller Boolsk) variabel, siden den kun vil ta verdiene true eller false. Kunne ha skrevet until ikkesiffer oppdaget i siste linje. Denne vil ikke terminere hvis strengen består av kun sifre. Utkast 2 4

1. i 1; ikkesiffer oppdaget false 2. Repeat 2.1. If c i ikke er et siffer then 2.1.1. ikkesiffer oppdaget true 2.2. i i + 1 until ikkesiffer oppdaget = true or i = n + 1 Hvis alle tegn er sifre vil algoritmen terminere når verdien til i er n + 1. Nå gjenstår Input og Output. Utkast 3 1. Input n 2. Input c 1 c 2... c n 3. i 1; ikkesiffer oppdaget false 4. Repeat 4.1. If c i ikke er et siffer then 4.1.1. ikkesiffer oppdaget true 4.2. i i + 1 until ikkesiffer oppdaget = true or i = n + 1 5. If ikkesiffer oppdaget = true then 5.1. Output Strengen inneholder tegn som ikke er sifre. else 5.2. Output Strengen inneholder kun sifre. Men, hva hvis n = 0? Da vil steg 4.1 ikke kunne utføres. Kommentarer Repeat-until-løkken blir alltid utført minst én gang. Et alternativ er å bruke en While-løkke. Da utføres testen i begynnelsen i stedet for på slutten, som med Repeat-until. 1. Input n 2. Input c 1 c 2... c n 3. i 0; ikkesiffer oppdaget false 4. While ikkesiffer oppdaget = false and i < n do 4.1. i i + 1 4.2. If c i ikke er et siffer then 4.2.1. ikkesiffer oppdaget true 5. If ikkesiffer oppdaget = true then 5.1. Output Strengen inneholder tegn som ikke er sifre. else 5.2. Output Strengen inneholder kun sifre. 5

Eksempel (1.3.1). Lag en algoritme som regner ut x n, hvor x er et reellt tall og n er et positivt heltall. (Vi antar at vi har multiplikasjon, men ikke eksponensiering.) 1. Input x, n 2. svar x 3. For i = 1 to n 1 do 3.1. svar svar x 4. Output svar Steg x n i svar 1 2 3 2 2 3 2 3 2 3 1 2 3.1 2 3 1 4 3 2 3 2 4 3.1 2 3 2 8 4 2 3 8 Eksempel (1.3.2). Lag en algoritme som bytter verdien til to variable. Feil 1. x y 2. y x Riktig 1. temp x 2. x y 3. y temp x y x y 2 3 3 3 Steg x y temp 0 2 3 1 2 3 2 2 3 3 2 3 3 2 2 Eksempel (1.3.3). Søkere til en jobb tar en test med 20 spørsmål. Lag en algoritme som returnerer en liste av jobbsøkere (identifisert med tall), deres poengsum og en beskjed om hvorvidt de vurderes for 6

stillingen (de som har mer enn 16 poeng) eller settes på venteliste (de med poengsum fra 12 til 15). Vi bruker antall søkere for å betegne antall søkere. Vi bruker en For-do-løkke, fra 1 til antall søkere, og gjør det samme for hver søker. De 20 svarene som søker i har avgitt betegner vi med a i,1, a i,2,...,a i,20. Det riktige svaret på spørsmål q betegner vi med c q. Vi bruker enda en For-do-løkke for å sjekke svarene. 1. Input antall søkere 2. For i = 1 to antall søkere do 2.1. score 0 2.2. For q = 1 to 20 do 2.2.1. Input a i,q [a i,q er søker is svar på spørsmål q.] 2.2.2. If a i,q = c q then 2.2.2.1. score score + 1 2.3. Output i, score 2.4. If score 16 then 2.4.1. Output Anbefalt else if score 12 then 2.4.2. Output Venteliste En praktisk forkortelse Pseudokode 1. If x > 0 then 1.1. Output Større else 1.2. If x < 0 then 1.2.1. Output Mindre Forkortet pseudokode 1. If x > 0 then 1.1. Output Større else if x < 0 then 1.2. Output Mindre En oppgave 7

Oppgave (1.1). Finn det minste tallet i en liste av tall, samt indeksen til det minste tallet. [Ny kode] 1. Input the number of values n 2. Input the list of numbers x 1,..., x n 3. min x 1 ; indeks 1 4. For i = 2 to n do 4.1. If x i < min then 4.1.1. min x i 4.1.2. indeks i 5. Output min og indeks 8