Dagens tema. Funksjonelle språk Fortsetter med ML: Typer Unntak Introduksjon til høyere-ordens funksjoner. ML avsluttes etter planen neste uke.
|
|
- Alfhild Bø
- 7 år siden
- Visninger:
Transkript
1 Dagens tema Funksjonelle språk Fortsetter med ML: Typer Unntak Introduksjon til høyere-ordens funksjoner ML avsluttes etter planen neste uke. Ark 1 av 18 Forelesning
2 Funksjonelle (applikative) språk Motivasjon: Matematisk tilnærming til problemene uten tanke på maskinens oppbygning. Abstraksjonsnivå tilpasset programmereren, ikke hardware. Eksempel: Euclids algoritme for å finne største felles divisor Algoritmen: gcd(0, n) = n gcd(m, n) = gcd(n mod m, m) for m > 0 I Java: int gcd(int m, int n) { int prev; while (m!= 0) { prev = m; m = n % m; n = prev; } return n; } I ML: fun gcd(m, n) = if m = 0 then n else gcd(n mod m, m); Forelesning Ark 2 av 18
3 Rent funksjonelle språk Typiske fordeler enkel, elegant kode (se forrige foil) ingen side-effekter aliasing ikke problem kan lett interpreteres automatisk minnehåndtering Typiske ulemper effektivitet mister kontroll med tid og rom input/output (ML gjør dette imperativt) Forelesning Ark 3 av 18
4 Type-deklarasjoner Deklarasjon av en type med navn T uten parametre: type/datatype T = <type-uttrykk>; type tall = int; type talliste = tall list; Deklarasjon av en type med navn T og med parametre: type/datatype <type-parametre> T = <type-uttrykk>; type mintype par = mintype * mintype; type intpar = int par; type boolpar = bool par; Merk: Navnet på en type-parameter må starte med en apostrof. Forelesning Ark 4 av 18
5 Produkt-typer med navn-løse komponenter - type Person = string * int; type Person = string * int - val Ole = ("Ole Olsen", 25); val Ole = ("Ole Olsen", 25) : string * int - #1 Ole; val it = "Ole Olsen" : string - #2 Ole; val it = 25 : int; med navn-gitte komponenter - type Person = {navn:string, alder:int}; type Person = {alder:int, navn:string} - val Ole = {navn="ole Olsen", alder= 25}; val Ole = {alder=25,navn="ole Olsen"} : {alder:int, navn:string} - #navn Ole; val it = "Ole Olsen" : string - #alder Ole; val it = 25 : int Tomt produkt unit minste produkt: type unit = {} Denne typen er predefinert, og har bare én mulig verdi, nemlig () Kan også skrive denne verdien som {} Forelesning Ark 5 av 18
6 Union-typer i ML: datatyper - datatype TallorTekst = tall of int tekst of string; datatype TallorTekst = tall of int tekst of string - val n = tall(5); val n = tall 5 : TallorTekst - val t = tekst("hei"); val t = tekst "Hei" : TallorTekst Både n og t er lovlige, men ulike, verdier av typen TallorTekst. En TallorTekst-verdi x kan analyseres ved et case-uttrykk: case x of tall(i) =>...i... tekst(s) =>...s... - fun neste(x) = case x of tall(i) => tall(i+1) tekst(s) => x; val neste = fn : TallorTekst -> TallorTekst - neste(n); val it = tall 6 : TallorTekst - neste(t); val it = tekst "Hei" : TallorTekst - [n, t]; val it = [tall 5,tekst "Hei"] : TallorTekst list Forelesning Ark 6 av 18
7 Konstanter som alternativer Et alternativ kan også være en konstant, for eksempel: datatype Dag = mandag tirsdag onsdag torsdag fredag lordag sondag; fun ukedag(d:dag):bool= case d of lordag => false sondag => false _ => true; Eksempel: - datatype Data = tall of int no; datatype Data = no tall of int - tall(5); val it = tall 5 : Data - no; val it = no : Data - fun dobbel(x:data):data = case x of tall(i) => tall(i+i) no => no; val dobbel = fn : Data -> Data - dobbel(tall(5)); val it = tall 10 : Data Forelesning Ark 7 av 18
8 Eksempel: Stakk datatype Stakk = empty push of int*stakk; Vi lar top og pop være udefinert for tom stakk (empty). datatype Stakk = empty push of int*stakk; fun nonempty(s:stakk) = case s of empty => false _ => true; fun pop (s:stakk) = case s of push(_,s) => s; fun top (s:stakk) = case s of push(x,_) => x; Appliserer vi top eller pop med empty får vi en feilmelding "pattern matching failed". Bedre å bruke unntak! Forelesning Ark 8 av 18
9 Unntak exception deklarerer et unntak exception feil; raise for å gi unntak fun f(..)=... raise feil...; handle for å fange opp unntak (...f(..)...) handle feil => "Noe gikk galt!" - exception finnesikke; exception finnesikke - fun forste(l) = case l of nil => raise finnesikke x::r => x; val forste = fn : a list -> a - forste([1,2,3]); val it = 1 : int - forste([]); [...] uncaught exception finnesikke [...] - forste([]) handle finnesikke => 0; val it = 0 : int - forste([1,2,3]) handle finnesikke => 0; val it = 1 : int Forelesning Ark 9 av 18
10 Stakk med unntak datatype Stakk = empty push of int*stakk; Merk: øverste stakk-element ligger først i listen. Vi kan nå lage en stakk, for eksempel slik: push(x1, push(x2,...push(xn, empty)...)) fun nonempty (s:stakk) = case s of empty => false _ => true; (* deklarerer exception TomStakk *) exception TomStakk; fun pop (s:stakk) = case s of empty => raise TomStakk (* feil *) push(_,s) => s; fun top (s:stakk) = case s of empty => raise TomStakk (* feil *) push(x,_) => x; Forelesning Ark 10 av 18
11 Rekursive Typer datatype T = T... Eksempel: liste av tall datatype TallListe = tom ikketom of int * TallListe; ikketom(1,ikketom(2,ikketom(3,tom))) Uendelig datatype i ML - datatype Dum = dum of int*dum; - fun makedum(x:int) = dum(x,makedum(x)); val makedum = fn : int -> Dum makedum(1); => dum(1, makedum(1)) => dum(1, dum(1, makedum(1))) =>... Terminerer ikke! En rekursiv datatype må ha minst ett ikke-rekursivt alternativ! Forelesning Ark 11 av 18
12 Mer om lister Lister av vilkårlig type elem: datatype elem Liste = tom ikketom of elem * elem Liste; MLs egen liste-definisjon: datatype elem list = nil :: of elem * elem list; Merk at :: er en infiks operator, mens ikketom er prefiks. Funksjoner over lister repetert - fun finn(x,l) = case l of [] => false y :: r => x = y orelse finn(x,r); val finn = fn : a * a list -> bool - finn(4, [2,4,6]); val it = true : bool - finn("arne", ["Ole","Petter","Arne"]); val it = true : bool - fun fjern(x,l) = case l of [] => [] y :: r => if x = y then fjern(x,r) else y :: fjern(x,r); val fjern = fn : a * a list -> a list - fjern(1,[1,3,4,1,3]); val it = [3,4,3] : int list Forelesning Ark 12 av 18
13 Høyere-ordens funksjoner Høyere-ordens funksjoner er basert på at funksjoner er data på samme måte som tall og tekst er det. Det betyr at de kan sendes som parametre, mottas som returverdier og bindes til variable. Dette kaller vi funksjoner som fullverdige borgere. En høyere-ordens funksjon er altså en funksjon som opererer på andre funksjoner. Forelesning Ark 13 av 18
14 Funksjoner som parametre Motivasjon fun dobbel(x) = x + x; fun dobbelalle(l:int list) = case l of [] => [] x :: r => dobbel(x) :: dobbelalle(r); fun kvadrer(x) = x * x; fun kvadreralle(l:int list) = case l of [] => [] x :: r => kvadrer(x) :: kvadreralle(r); dobbelalle og kvadreralle er veldig like! Kan istedenfor lage en mer generell funksjon som tar en hjelpefunksjon (dobbel/kvadrer) som parameter: fun oppdateralle(f, l:int list) = case l of [] => [] x :: r => f(x) :: oppdateralle(f,r); Hva må typen til f være her? Og hva blir typen til oppdateralle? Forelesning Ark 14 av 18
15 Funksjonen oppdater Verdien til oppdater( f, l) skal være listen vi får ved å anvende f på hvert element i listen l - fun oppdater(f, l) = case l of [] => [] x :: r => f(x) :: oppdater(f, r); val oppdater = fn : ( a -> b) * a list -> b list - fun dobbel(x) = x + x; val dobbel = fn : int -> int - oppdater(dobbel, [1, 2, 3]); val it = [2,4,6] : int list Forelesning Ark 15 av 18
16 Funksjonen plukk Verdien til plukk( f, l) skal være listen av elementer x fra l der f (x) er true. - fun plukk(f, l) = case l of [] => [] x :: r => if f(x) then x :: plukk(f, r) else plukk(f, r); val plukk = fn : ( a -> bool) * a list -> a list - fun negativ(x) = x < 0; val negativ = fn : int -> bool - plukk(negativ, [1, ~1, 2, ~4, ~5]); val it = [~1,~4,~5] : int list Forelesning Ark 16 av 18
17 Funksjonen gjenta g jenta( f, d, l) gjentar 2-arguments funksjonen f over alle elementene i listen l (fra høyre mot venstre). d angir defaultverdi for tom liste. - fun gjenta(f, d, l) = case l of [] => d x :: l => f(x, gjenta(f, d, l )); val gjenta = fn : ( a * b -> b) * b * a list -> b - gjenta(op+, 0, [1, 3, 5]); val it = 9 : int Forelesning Ark 17 av 18
18 Eksempler type stud = string * int; val L1=[("ole",60),("eva",62),("jens",64)]; fun ercm(s:stud):bool = (65 <= #2 s); fun tattin211((n,v):stud):stud = (n,v+3); fun or(x,y) = x orelse y; - val L2 = oppdater(tattin211, L1); val L2 = [("ole",63),("eva",65),("jens",67)] : stud list - val L3 = plukk(ercm, L2); val L3 = [("eva",65),("jens",67)] : stud list - oppdater(#1, L3); val it = ["eva","jens"] : string list - oppdater(#2, L1); val it = [60,62,64] : int list - gjenta(or, false, oppdater(ercm, L1)); val it = false : bool - gjenta(or, false, oppdater(ercm, L2)); val it = true : bool Forelesning Ark 18 av 18
Fortsetter med ML: Repetisjon av lister Typer Unntak Moduler og abstrakte datatyper Introduksjon til høyere-ordens funksjoner
Dagens tema Fortsetter med ML: Repetisjon av lister Typer Unntak Moduler og abstrakte datatyper Introduksjon til høyere-ordens funksjoner ML avsluttes etter planen neste uke. Ark 1 av 21 Forelesning 03.09.2001
DetaljerPlan. Fortsetter med ML: lister og rekursive typer/funksjoner unntak let-uttrykk moduler og abstrakte datatyper høyere-ordens funksjoner
Plan Fortsetter med ML: lister og rekursive typer/funksjoner unntak let-uttrykk moduler og abstrakte datatyper høyere-ordens funksjoner Ark 1 av 19 Forelesning 25.10.1999 Uendelig datatype i ML - datatype
DetaljerPlan. Fortsetter med ML: lister og rekursive typer/funksjoner unntak let-uttrykk moduler og abstrakte datatyper høyere-ordens funksjoner
Plan Fortsetter med ML: lister og rekursive typer/funksjoner unntak let-uttrykk moduler og abstrakte datatyper høyere-ordens funksjoner Ark 1 av 20 Funksjoner over lister Typisk mønster for funksjoner
DetaljerDagens tema. Innføring i ML - del III (Kapittel & ML-kompendiet.) Unntak Abstrakte datatyper i ML Høyere-ordens funksjoner
Dagens tema Innføring i ML - del III (Kapittel 7.4.3 & ML-kompendiet.) Unntak Abstrakte datatyper i ML Høyere-ordens funksjoner 1/14 Forelesning 4 17.9.2003 Unntak exception deklarerer et unntak exception
DetaljerPlan: Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) IN 211 Programmeringsspråk
Plan: Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Innføring i ML: konstanter, enkle funksjoner og typer (Ghezzi&Jazayeri kap. 7.4.3 + ML-komp.) (Fortsetter med ML neste uke) predefinerte typer
DetaljerINF3110 Programmeringsspråk. Dagens tema
Dagens tema Innføring i ML - del II (Kapittel 7.4.3 & ML-kompendiet.) Oppvarming og uttøyning Smart typeanalyse Evalueringsmekanismen i ML Typedeklarasjoner (produkt-, union-, rekursive typer... ) 1/18
Detaljer1-0::[1,2]; 2 - [3,4]; 3 - [1,2] :: [3,4]; 4-1 :: 2 :: 3 :: nil; 5 - "INF" ^ "3110" ^ " er moro"; 6 - rev [1,2,3];
Dagens tema Innføring i ML - del II (Kapittel 7.4. & ML-kompendiet.) Oppvarming og uttøyning Smart typeanalyse Evalueringsmekanismen i ML Typedeklarasjoner (produkt-, union-, rekursive typer... ) Oppvarming
DetaljerPlan: Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk. Innføring i ML. typer enkle funksjoner (Fortsetter med ML i to uker til)
Plan: Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Innføring i ML (Ghezzi&Jazayeri kap. 7.4.3 + ML-komp.) typer enkle funksjoner (Fortsetter med
DetaljerINF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19
Dagens tema Typer (Kapittel 3 frem til 3.3.1.) Innføring i ML (Kapittel 7.4.3 & ML-kompendiet.) 1/19 Forelesning 2 27.8.2003 Typer En (data-)type består av: en mengde verdier en mengde operasjoner man
DetaljerTyper. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning
Dagens tema Typer (Kapittel 3 frem til 331) Innføring i ML (Kapittel 743 & ML-kompendiet) Typer En (data-)type består av: en mengde verdier en mengde operasjoner man kan anvende på disse verdiene Eksempel:
DetaljerPlan. funksjoner som funksjonsverdi funksjoner som datastruktur. funksjoner som parametre. Høyere-ordens funksjoner. ufullstendige kall.
Høyere-ordens funksjoner funksjoner som parametre funksjoner som funksjonsverdi funksjoner som datastruktur ufullstendige kall Curry-ing Plan 1 Generelle liste-funksjoner fun oppdat(f,l) = case l of nil
DetaljerPlan. funksjoner som funksjonsverdi funksjoner som datastruktur. funksjoner som parametre. Høyere-ordens funksjoner. ufullstendige kall.
Høyere-ordens ksjoner ksjoner som parametre ksjoner som ksjonsverdi ksjoner som datastruktur ufullstendige kall Curry-ing Plan 1 Generelle liste-ksjoner 2 oppdat(f,l) = case l of nil => nil x::l' => f(x)::
Detaljer1/28. Forelesning Forelesning / fun f (_,0) = true. 2 f(0,_)=true. 3 f_ =false; 4 val f = fn : int * int -> bool
Dagens tema Innføring i ML - del IV Mønstergjenkjenning Litt om funksjoner & likhetstyper Anonyme funksjoner Begrenset skop - let Litt av hvert - greit å ta med seg Avsluttende kommentarer - spørsmål?
DetaljerDagens tema Innføring i ML - del IV
Dagens tema Innføring i ML - del IV Mønstergjenkjenning Litt om funksjoner & likhetstyper Anonyme funksjoner Begrenset skop - let Funksjonsrom og currierte funksjoner Litt av hvert - greit å ta med seg
DetaljerVariable Man kan bruke variable i ML. ML (kap 5 og 6) Nye datatyper INF3110/4110 INF3110/4110 INF3110/4110 INF3110/4110. Variable i ML.
ML (kap 5 og 6) Variable i ML Nye datatyper Currying Avanserte listeoperatorer Typeanalyse Variable Man kan bruke variable i ML - val = ref 1; val = ref 1 : int ref - := 3*(!)+5; val it = () : unit -!;
DetaljerML (kap 5 og 6) INF3110/4110. Variable i ML. Nye datatyper. Currying. Avanserte listeoperatorer. Typeanalyse
ML (kap 5 og 6) Variable i ML Nye datatyper Currying Avanserte listeoperatorer Typeanalyse Dag Langmyhr,Ifi,UiO: Forelesning 25. oktober 2004 Ark 1 av 22 Variable Man kan bruke variable i ML - val x =
DetaljerPlan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk
Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring
Detaljeri=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4
Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I
DetaljerForelesning inf Java 4
Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette
DetaljerTDT Øvingsforelesning 1. Tuesday, August 28, 12
TDT 4165 Øvingsforelesning 1 Øvingsforelesningene Eksempelbaserte Sikter på å være på et snillere nivå enn øvingene og forelesningene Interaktive - spørsmål og dialog oppfordres Matnyttige- vil ta for
DetaljerLøsningsforslag til eksamen i IN 211 høsten 2002
Løsningsforslag til eksamen i IN 211 høsten 2002 Ragnhild Kobro Runde og Gerhard Skagestein 4. desember 2002 Oppgave 1: Kjøresystemer 1a: Statisk skop Print-setningen vil skrive ut 2, da det i C er main
DetaljerEivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen
Eivind Gard Lund 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen Informasjon Semantikksjekk Kodegenerering Oblig 2 tilgjengelig på kurssiden Bygger på deres oblig 1 kode. Det er lagt ut
DetaljerINF5110, onsdag 19. februar, Dagens tema: Parsering ovenfra-ned (top-down)
INF5110, onsdag 19. februar, 2014 Dagens tema: Kapittel 4 Parsering ovenfra-ned (top-down) Vi har med alle foilene til kap. 4 her, også de som ble gjennomgått mot slutten av forelesning 7. februar Pensum
DetaljerFunksjoner: Kun faste funksjoner. Ikke rekursive kall. Funksjonelle språk (kap 4.4) Bakgrunnen for ML
1. generasjons språk Data var statisk: alle variable eksisterte under hele kjøringen. ML (kap 5) Bakgrunn Litt historikk Eksempler: Fortran, Cobol, Basic. Funksjoner: Kun faste funksjoner. Ikke rekursive
DetaljerDel 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
DetaljerVelkommen til INF2100 Jeg er Dag Langmyhr
Velkommen til Jeg er Dag Langmyhr (dag@ifi.uio.no). Bakgrunn for I INF1000 20 har dere lært å rammere, men bare små rammer (< 1000 linjer). Hensikten med er å gi mer rammeringstrening Dagens tema: Hva
DetaljerINF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene
Dagens tema: INF 2100 8. september 2004 Mer om strukturen i treet og hvordan bygge det Testing av at navn er deklarert og brukt riktig Arbeid i gruppene neste uke: Oppgaver relevant for dette stadiet i
DetaljerProgrammeringsspråket C
Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger
DetaljerINF5110. Oblig 2 presentasjon
INF5110 Oblig 2 presentasjon Informasjon Oppgaven Semantikksjekk Kodegenerering Bytecode-biblioteket Ant-targets Oppsummering Oversikt Informasjon Oblig 2 tilgjengelig på kurssiden Patch med testfiler
DetaljerINF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )
INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) PRAKTISK INFORMASJON 2 Praktisk informasjon Kursansvarlige Ragnhild Kobro Runde (ragnhilk@ifi.uio.no)
DetaljerKapittel 1 En oversikt over C-språket
Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske
DetaljerRepetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive
DetaljerINF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen
INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og
DetaljerDagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 211 Programmeringsspråk Eksamensdag: 4. desember 2002 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 10 sider. Vedlegg: Tillatte
DetaljerML (kap 5) INF3110/4110. Bakgrunn Litt historikk. Funksjonelle språk (kap 4.4) Bakgrunnen for ML. Programmeringsspråket ML Hvordan kjøre ML-programmer
ML (kap 5) Bakgrunn Litt historikk Funksjonelle språk (kap 4.4) Bakgrunnen for ML Programmeringsspråket ML Hvordan kjøre ML-programmer Enkle uttrykk Deklarasjoner Funksjoner Datatyper Mønstre Dag Langmyhr,Ifi,UiO:
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF3110/4110 Programmeringsspråk Eksamensdag: 2. desember 2003 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 7 sider. Vedlegg:
DetaljerKap.4 Funksjoner. Tre viktig ting ifm. funksjoner: parameter (input) oppskrift (body) for å beregne resultat (output)
1 Kap.4 Funksjoner Tre viktig ting ifm. funksjoner: navn parameter (input) oppskrift (body) for å beregne resultat (output) Syntaks: = Deklarerte funksjoner kan brukes i uttrykk
DetaljerINF1000 (Uke 5) Mer om løkker, arrayer og metoder
INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse
DetaljerFiktiv eksamensbesvarelse IN 211 høsten 2001
Fiktiv eksamensbesvarelse IN 211 høsten 2001 Kandidat 1 6. desember 2001 Oppgave 1: Kjøresystemer 1a: Statisk og dynamisk link egne aktiveringsstakken før kallet på P 1b: Parameteroverføring 1. Verdioverføring:
DetaljerKap. 4: Ovenfra-ned (top-down) parsering
Kap. 4: Ovenfra-ned (top-down) parsering Dette bør leses om igjen etter kapittelet: First og Follow-mengder Boka tar det et stykke uti kap 4, vi tok det først (forrige foilbunke) LL(1)-parsering og boka
DetaljerINF 1000 høsten 2011 Uke september
INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første
DetaljerINF1000 undervisningen INF 1000 høsten 2011 Uke september
INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første
DetaljerUNIVERSITETET I OSLO
Eksamen i INF3110/INF4110, 1. desember 2005 Side 1 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF3110/4110 - Programmeringsspråk Eksamensdag: 1. desember 2005 Tid for eksamen:
DetaljerINF Oblig 2 semantikksjekk og kodegenerering
INF5110 - Oblig 2 semantikksjekk og kodegenerering Magnus Haugom Christensen Instituttet for Informatikk Universitetet i Oslo 27. Mars - 2012 Oversikt Informasjon Oppgaven Semantikksjekk Kodegenerering
DetaljerINF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april
INF5110 28. april, 2015 Stein Krogdahl Ifi, UiO Svar på oppgaver til kap. 8 Ble lagt ut 24. april 1 SVAR: Oppgave 8.1.c (fra boka) Lag for hånd TA-kode for følgende uttrykk: a * b + a * b * c Du skal ikke
DetaljerArk 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk
Ark 1 av 18 IN 211 Programmeringsspråk Velkommen til programmeringsspråkenes verden IN 211 Forelesning 20.8.2001 Foreleser Ragnhild Kobro Runde E-post: ragnhilk@ifi.uio.no Kontor: 3345 Treffetid: torsdager
DetaljerRekursjon som programmeringsteknikk
Rekursjon Kap.7 Sist oppdatert 15.02.10 Rekursjon som programmeringsteknikk 10-1 Rekursiv tenkning Rekursjon er en programmeringsteknikk der en metode kan kalle seg selv for å løse problemet. En rekursiv
DetaljerInnhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java
INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:
DetaljerINF5110 V2012 Kapittel 4: Parsering ovenfra-ned
INF5110 V2012 Kapittel 4: Parsering ovenfra-ned (top-down) Tirsdag 7. februar Stein Krogdahl, Ifi, UiO Oppgaver som gjennomgås i morgen, onsdag: -Spørsmålene på de to siste foilene fra onsdag 1/2 (Bl.a.
DetaljerSemantisk Analyse del I
Semantisk Analyse del I Attributtgrammatikker Kapittel 6.1-6.2 26.02.2013 1 Statisk semantisk analyse kapittel 6: Innhold Generelt om statisk semantisk analyse Attributt-grammatikker (kapittel 6.1-6.2)
DetaljerRepetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator
Litt mer om løkker Arrayer le Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i slo Java Repetisjon: operatorene ++ og -- Instruksjon i = i + i = i - Alternativ Prefiks-operator
DetaljerHaskell. Kjetil Ørbekk. Programvareverkstedet, 19. mars 2009
Haskell Kjetil Ørbekk Programvareverkstedet, 19. mars 2009 Imperativ programmering Tilstand Operasjoner function uppercase(list) { x = 1 } while (x < length(list)) { uppercase(list[x]) x = x + 1 } Funksjonell
DetaljerINF1010 notat: Binærsøking og quicksort
INF1010 notat: Binærsøking og quicksort Ragnhild Kobro Runde Februar 2004 I dette notatet skal vi ta for oss ytterligere to eksempler der rekursjon har en naturlig anvendelse, nemlig binærsøking og quicksort.
DetaljerBeskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015
Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den
DetaljerKondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.
Algoritmer og datastrukturer Kondisjonstest Python-oppgaver Onsdag 6. oktober 2004 Her er noen repetisjonsoppgaver i Python. Som alltid er den beste måten å lære å programmere på å sette seg ned og programmere
DetaljerHva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema
va er en algoritme? Vanlig sammenligning: Oppskrift. nput lgoritme NF1020 - ØSTEN 2006 Kursansvarlige Ragnar Normann E-post: ragnarn@ifi.uio.no Output Knuth : tillegg til å være et endelig sett med regler
DetaljerINF1000: Forelesning 7. Konstruktører Static
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter
DetaljerTDT4102 - Prosedyre- og objektorientert programmering
Konteringseksamen i TDT4102 - Prosedyre- og objektorientert programmering Lørdag 8. august 2009 Kontaktperson under eksamen: Hallvard Trætteberg Eksamensoppgaven er utarbeidet av Trond Aalberg Språkform:
DetaljerDagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.
Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet
DetaljerKap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars Dagens tema: Typer og typesjekking
Kap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars 2015 Dagens tema: Typer og typesjekking Hva er nå egentlig en «type» i et programmeringsspråk? Hvordan
DetaljerKort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder
INF1000 : Forelesning 4 Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet
DetaljerINF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:
TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer
DetaljerLitt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator
Litt mer om uttrykk: ++ og -- INF : Forelesning Løkker og arrayer Mye og viktig stoff. Du MÅ løse oppgaver selv for å lære!. september 6 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for
DetaljerIN Notat om I/O i Java
IN1010 - Notat om I/O i Java Mathias J.P. Stang, Tuva Kristine Thoresen, Ingrid Grønlie Guren 17. januar 2018 Dette notatet handler om I/O (input/output) i Java, og tar for seg innlesning fra terminal,
DetaljerINF1000: Forelesning 7
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en
DetaljerHva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }
Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =
DetaljerINF Noen oppgaver til kap. 8
INF5110 2015 Noen oppgaver til kap. 8 Gjennomgås 28. april, 2015 Stein Krogdahl 1 Oppgave 8.1.c (fra boka) Lag for hånd TA-kode for følgende uttrykk: a * b + a * b * c Du skal ikke prøve å optimalisere
DetaljerINF2810: Funksjonell Programmering
INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Erik Velldal Universitetet i Oslo 9. februar 2017 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens prosedyrer
DetaljerKap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO
Kap. 4 del I Top Down Parsering INF5110 v2006 Stein Krogdahl Ifi, UiO 1 Innhold First og Follow-mengder Boka ser på én parseringsmetode først, uten å se på First/Follow-mengder. Vi tar teorien først To
DetaljerProgrammering i C++ Løsningsforslag Eksamen høsten 2005
Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det
DetaljerPensum: Starting out with Python
1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon Matriser (2D-lister) try except rekursjon skrive pent til skjerm Terje Rydland - IDI/NTNU 2 Læringsmål og pensum
Detaljerlage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler
42 Funksjoner Kapittel 4 Funksjoner Etter dette kapitlet skal du kunne lage og bruke enkle funksjoner lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen
DetaljerQuicksort. Fra idé til algoritme.
Quicksort Fra idé til algoritme. Quicksortalgoritme algoritmeidé 1. Del arrayen i to deler, slik at alle elementer i den ene delen er mindre enn alle elementer i den andre delen. Q U I C K S O R T A L
DetaljerLøsnings forslag i java In115, Våren 1998
Løsnings forslag i java In115, Våren 1998 Oppgave 1 // Inne i en eller annen klasse private char S[]; private int pardybde; private int n; public void lagalle(int i) if (i==n) bruks(); else /* Sjekker
DetaljerSemantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!
agens tema Kjøresystemer (Ghezzi&Jazayeri.,.) Innledende om semantikk Operasjonell semantikk / SIMPLESEM Bokholderi og minneorganisering Forskjellige språkklasser... en beskrivelse av hva som skjer når
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
DetaljerVelkommen til. IN1010 Objektorientert programmering Våren 2018
Velkommen til IN1010 Objektorientert programmering Våren 2018 Idag: 1. time: Om IN1010 2. time (+ i morgen og neste uke): Om Java og objekter i Java 1 Stein Gjessing, Siri Jensen og Dag Langmyhr Universitetet
DetaljerINF Noen oppgaver til kap. 8
INF5110 2014 Noen oppgaver til kap. 8 Utvidet utgave lagt ut 24. april Gjennomgås 25. april, 2014 Stein Krogdahl 1 Oppgave 8.1.c (fra boka) Lag for hånd TA-kode for følgende uttrykk: a * b + a * b * c
DetaljerNorsk informatikkolympiade runde
Norsk informatikkolympiade 2015 2016 1. runde Sponset av Uke 46, 2015 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.
DetaljerINF2810: Funksjonell Programmering
INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Erik Velldal Universitetet i Oslo 9. februar 2017 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens prosedyrer
DetaljerEKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består
DetaljerDagens tema: Sjekking
Dagens tema Dagens tema: Sjekking Navnebinding (obligatorisk oppgave 3) Biblioteket Logging Riktig bruk av navn (frivillig) Typesjekking (frivillig) Hele prosjektet Strukturen til kompilatoren vår f.pas
DetaljerRepetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!
Repetisjon: Binære søketrær Dagens plan: Rød-svarte trær (kap. 12.2) B-trær (kap. 4.7) bstrakte datatyper (kap. 3.1) takker (kap. 3.3) For enhver node i et binært søketre gjelder: lle verdiene i venstre
DetaljerINF2810: Funksjonell Programmering
INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Stephan Oepen Universitetet i Oslo 9. februar 2015 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens
DetaljerKap. 8 del 1 kodegenerering INF5110 Vår2007
Kap. 8 del 1 kodegenerering INF5110 Vår2007 Stein Krogdahl, Ifi UiO Forelesninger framover: Tirsdag 8. mai: Vanlig forelesning Torsdag 10. mai: Ikke forelesning Tirsdag 15. mai: Vanlig forelesning (siste?)
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerKort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon
Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: fredrso@ifi.uio.no Utdanning: Dataingeniør, 2000 Cand.Scient,
DetaljerINF225 høsten 2003 Prosjekt del 4: kodegenerering
INF225 høsten 2003 Prosjekt del 4: kodegenerering Thomas Ågotnes 19. november 2003 1 Introduksjon I denne delen av prosjektet skal C- -parseren fra del 3 utvides til å generere maskinkode. Maskinkoden
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 10. juni 2009 Tid for eksamen: 9.00 12.00 Oppgavesettet
DetaljerUke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO
Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier 11. okt. 2011 Siri Moe Jensen Inst. for informatikk, UiO 1 Innhold Eksamen INF1000 Høst 2011: Oppgave 4-7 Tekstmanipulering Metoder med og uten
DetaljerINF2810: Funksjonell Programmering
INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Stephan Oepen Universitetet i Oslo 9. februar 2015 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens
DetaljerPraktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut
Praktisk informasjon INF (Uke 5) Mer om løkker, arrayer og metoder Oblig er lagt ut Frist 8. februar Kan løses etter denne forelesningen Grunnkurs i programmering Institutt for Informatikk Universitetet
DetaljerMetoder med parametre, løkker og arrayer
Metoder med parametre, løkker og arrayer Løse problemer med programmering INF1000, uke3 Ragnhild Kobro Runde METODER MED PARAMETRE Statiske void-metoder med parametre Den typen metoder vi så på forrige
DetaljerOppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.
Høgskoleni Østfold EKSAMEN Emnekode: Emnenavn: ITF20006 Algoritmer og datastrukturer Dato: Eksamenstid: 9. mai 2016 9.00 13.00 Hjelpemidler: Faglærer: Alle trykte og skrevne Jan Høiberg Om eksamensoppgaven
Detaljerløsningsforslag-uke5.txt
INF 1000 LØSNINGSFORSLAG TIL UKEOPPGAVER FOR UKE 5 1) Setningen er kompakt skrivemåte for int[] a; a = new int[50]; hvor den første setningen deklarerer arrayen a, og den andre setningen oppretter et array-objekt
DetaljerKap.4 del I Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO
Kap.4 del I Top Down Parsering INF5110 v2005 Arne Maus Ifi, UiO Innhold Motivering Boka gir først parsering uten First/Follow-mengder og så innfører dem. Vi tar teorien først First og Follow-mengder Fjerning
DetaljerHØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL
HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 15. mai 2003 Varighet: Fagnummer: Fagnavn: Klasse(r): 3 timer LO116D Programmering i Visual Basic FU Studiepoeng:
DetaljerDagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær
Dagens tema INF2220 - Algoritmer og datastrukturer HØSTEN 2007 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 2: Binærtrær og abstrakte datatyper (ADT) Kort repetisjon Generelle trær
DetaljerLøse reelle problemer
Løse reelle problemer Litt mer om løkker, metoder med returverdier og innlesing fra fil INF1000, uke4 Geir Kjetil Sandve Repetisjon fra forrige uke: while Syntaks: while (condition) do1; do2;... Eksempel:
Detaljer