Aritmetik 3.4 M 8.2 E 2.2. dagens föreläsning operatorer för aritmetik tillämpningar.

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Funktioner och programorganisation
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
Prolog, Mån 16/9 Rebecca Jonson.
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 4: Listor (kap. 4 & 6) Teori –Introducera listor, en viktig rekursiv datastruktur som ofta används.
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
De fundamentala datatyperna
Logikprogrammering Ons, 25/9
1 Ingenjörsmetodik IT & ME 2009 Föreläsare Dr. Gunnar Malm.
Dcg-notation 21.2 G 2.3 M (BBS 8). dagens föreläsning extra argument i dcg-notation prolog-anrop i dcg-notation avslutande kommentarer om dcg.
Operatorer.
Föreläsning 2. Operatorer Tilldelning Kodblock { } if – satsen Logiska uttryck Att programmera.
Grundläggande programmering
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 7: Cut och negation (kap. 10) Teori –Förklarar hur man kontrollerar Prologs backtracking-beteende.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Föreläsning 3: rekursion Teori –Introducera rekursiva definitioner i Prolog –Fyra exempel –Visa att.
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
INTRODUKTION TILL PROGRAMMERING
Programmering B PHP Lektion 3
Föreläsning 11 Arrayer.
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Beräkna en ekvation (metod 1)
Grundlägande statistik,ht 09, AN1 F5 Kombinatorik (KW 1.6) Ex.: På en matsedel finns tre förrätter, två huvudrätter och två efterrätter. På hur många olika.
Grundläggande programmering
1 Mer om Nr 7 Rekursion, listor, typer och funktioner.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Styrteknik: MELSEC FX och numeriska värden PLC2C:1
Namnrum, räckvidd och rekursion Linda Mannila
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
Logikprogrammering 16/ : operatorer Staffan Larsson.
Labgrupper: 2 pers/grupp fr o m lab 2 schema ENKÄT.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Repetitionssatser: do-satsen och for-satsen -Operatorer:
Ackumulatorer CM 3.7 AOP 8.3 (BBS 5.3, 6.2.2). dagens föreläsning rekursion iteration ackumulatorer för effektivitet exempel.
DATABASHANTERING för programmerare Lektion 6 Mahmud Al Hakim
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 9 Logik med tillämpningar Innehåll u Semantiska tablåer i predikatlogiken u Klausulform u Herbrandmodeller u Kapitel 3.5,
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
Föreläsning 2 programmeringsteknik och Matlab 2D1312/ 2D1305
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Pontus Johansson 1 grammatiker 21.1 G 1 (BBS 7)
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
1 Matlab, föreläsning 1 Oktober MATLAB Perspektiv på materialdesign Lina Kjellqvist Rum: K324 Telefon:
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Logikprogrammering ons 4/9 Rebecca Jonson.
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Att räkna med bokstäver
Aritmetik - tal. Delbarhet Ett tal är delbart med ett annat om kvoten blir ett heltal Alla jämna tal är delbara med 2 Alla tal var siffersumman är delbart.
Kajsa Bråting  H. Sollervall: Tal och de fyra räknesätten, Studentlitteratur.
KPP053, HT2015 MATLAB, Föreläsning 4
Aritmetik & algebra Geometri & bevis Förändring & procent Funktioner
Mer om repetionssatser och arrayer
Y Division av bråk 1. Vilket eller vilka bråk på bråktavlan är lika med de här talen?  1 2 a) 1 3 b) 3 4 c) Beräkna med hjälp av.
Presentationens avskrift:

aritmetik 3.4 M 8.2 E 2.2

dagens föreläsning operatorer för aritmetik tillämpningar

aritmetik i prolog aritmetik utförs av inbyggda predikat argumenten är aritmetiska uttryck ett aritmetiskt uttryck kan bestå av: –siffror, –variabler, –funktorer

operatorer i prolog traditionell notation 6+2 = 8 6*2 = = 4 6/2 = 3 prolog 8 is is 6*2. 4 is is 6/2. is/2 tar två argument, varav det andra måste vara ett giltigt aritmetiskt uttryck (med alla variabler instansierade). Det första måste vara antingen en siffra, eller en variabel som representerar en siffra.

exempel ?- X = X = ?- X is X = 5 =matchar isutvärderar (evaluerar)

fler operatorer **upphöjt //heltalsdivision modmodulo (rest vid heltalsdivision) >större än <mindre än >=större el. lika med <=mindre el. lika med =\=inte lika med (evaluerat värde) \=inte lika med

\= och =\= ?- 3 \= 3. no ?- 3 =\= 3. no ?- 3 \= 4. yes ?- 3 =\= 4. yes ?- 3 \= 2+1. yes ?- 3 =\= 2+1. no ’3’ är skilt från ’2+1’? ’värdet av 3’ är skilt från ’värdet av 2+1’?

fler operatorer (forts.) X =:= Y värdet av X är lika med värdet av Y (’forced evaluation’) Jämför med: X = Y matcha X med Y (och instansiera om det går!) ? =:= yes ? = no ’värdet av 1+2’ är lika med ’värdet av 2+1’? ’1+2’ är lika med ’2+1’?

fler operatorer (forts.) X == Yidentitetsrelationen, X och Y är identiska variabler (dvs har samma namn), eller är identiska operationer applicerade på identiska termer

aritmetik i prolog (forts.) aritmetiska uttryck kan ses som datastrukturer för att utvärdera uttrycken ges de som argument till något av de inbyggda predikaten som tvingar utvärdering:

inbyggda predikat som evaluerar Z is X X =:= Y X =\= Y X < Y X > Y X =< Y X >= Y

exempel ?- X = 2, Y is X+1. X = 2, Y = 3 ? ?- X = 2, Y = X+1. X = 2, Y = 2+1 ?- X = 2, Y =:= X+1. Instantiation error in argument 1 of =:= /2 goal: _76=:=2+1 ?- X = 2, 3 =:= X+1. X = 2 ?- X=3, X =:= 2+1, X is 1+2. X = 3

funktioner och relationer aritmetiska operatorer kan delas in i: –funktioner (t ex +, -, max, sqrt, etc.) –relationer (t ex, etc.) relationer utvärderar alltid (is/2 behövs alltså inte) Fler SICStus-specifika operatorer finns i M 8.2. (trigonometri etc.)

sammanfattning Z is X X, som måste vara ett aritmetiskt uttryck, utvärderas och resultatet unifieras med Z. X = Y variablerna X och Y är lika: X är unifierbar med Y. X =:= Y det numeriska värdet av X och Y är lika. X =\= Y de numeriska värdena av X och Y är olika. X == Y identitetsrelationen

sammanfattning (forts.) X < Y Det numeriska värdet av X är mindre än det numeriska värdet av Y. X > Y Det numeriska värdet av X är större än det numeriska värdet av Y. X =< Y Det numeriska värdet av X är mindre eller lika med det numeriska värdet av Y. X >= Y Det numeriska värdet av X är större eller lika med det numeriska värdet av Y.

lite om notation X is 3+2. % ’is’ infix % ’+’ infix X is +(3,2). % ’is’ infix % ’+’ prefix is (X, +(3,2)). % ’is’ prefix % ’+’ prefix is X+ 32

applikation 1 length/2 räknar ut längden av en lista. length([],0). length([_|Tail], N) :- length(Tail, N1), N is 1 + N1. Obs! N1 måste vara instansierat. Alltså det rekursiva anropet först!

körning… ?- length([a,b,c],N). N = 3 ?- length([a,b,[c,d],e],N). N = 4

använd ’=’ ist. f. ’is’ length2([],0). length2([_|Tail], N) :- length2(Tail, N1), N = 1 + N1.

körning… ?- length2([a,b,[c,d],e],N). N = 1+(1+(1+(1+0)))

applikation 2 summera/3 summerar alla heltal mellan två givna tal. summera(N, N, N). summera(N, M, Summa) :- N < M, N1 is N+1, summera(N1, M, Delsumma), Summa is N + Delsumma.

körning… ?- summera(1,10,X). X = 55 ?- summera(1,1000,X). X =

analys summera(1,2,Summa). 1 < 2 N1 is 1+1 summera(2,2,Delsum) Summa is 1+2 Summa = 3 summera(N, N, N). summera(N, M, Summa) :- N < M, N1 is N+1, summera(N1,M,Delsum), Summa is N + Delsum. true! N1=2 Basfallet: Delsum=2 Summa=3

applikation 3 sumlista/2 summerar elementen i en lista sumlista([],0). sumlista([N|Ns], Summa) :- sumlista(Ns,Delsumma), Summa is N+Delsumma.

körning… ?- sumlista([3,4,2,2],S). S = 11

applikation 4 vad kan göras med length/2 och sumlista/2? medel/2 räknar ut medelvärdet av talen i en lista. :- consult('length.pl'). :- consult('sumlista.pl'). medel(Lista, Medel) :- sumlista(Lista,Summa), length(Lista,Antal), Medel is Summa/Antal.

körning… ?- medel([1,2,3,4,5], Avg). Avg = 3.0 ?- medel([0],A). A = 0.0

medel([4,6],X) sumlista ([4,6],Y) length ([4,6],Z) X is Y/Z sumlista ([6],Y1) Y is 4+Y1 sumlista ([],Y2) Y1 is 6+Y2 length ([6],Z1) length ([],Z2) Z is 1+Z1 Z1 is 1+Z2 Y2=0Y1=6+0 Y=4+6 Z2=0Z1=1+0 Z=1+1 X=10/2 sumlista ([4,6],Y) sumlista ([6],Y1) sumlista ([],Y2) Y1 is 6+Y2 Y is 4+Y1 length ([4,6],Z) length ([6],Z1) length ([],Z2) Z1 is 1+Z2 Z is 1+Z1 X is Y/Z medel([4,6],X) X=5 Y=10Z=2

applikation 5 kvadratsumma/2 summerar kvadraten av värdena i en lista. kvadratsumma([],0). kvadratsumma([N|Ns], Summa) :- kvadratsumma(Ns,Delsumma), Summa is N*N + Delsumma.

körning… ?- kvadratsumma([1,2],X). Call: kvadratsumma([1,2],_464) Call: kvadratsumma([2],_996) Call: kvadratsumma([],_1508) Exit: kvadratsumma([],0) Call: _996 is 2*2+0 Exit: 4 is 2*2+0 Exit: kvadratsumma([2],4) Call: _464 is 1*1+4 Exit: 5 is 1*1+4 Exit: kvadratsumma([1,2],5) X = 5 ? Basfallet: Delsumma=0 kvadratsumma([],0). kvadratsumma([N|Ns], Summa) :- kvadratsumma(Ns,Delsumma), Summa is N*N + Delsumma.

nästa föreläsning ackumulatorer litteratur: –CM 3.7 –AOP 8.3 –(BBS 5.3, 6.2.2)